EASY TEST QUESTIONS (90)

profiledrae34
exercise_questions.rar

Take Test MC Exercises Words Wordy Phrases and Redundancies.mht

Current Location

Take Test: MC Exercises: Words: Wordy Phrases and Redundancies

Content

Assistive Technology Tips [opens in new window]

Instructions

Description
Instructions

Read the following instructions carefully!

In each of the following sentences, replace the underlined terms or phrases with an answer that is neither wordy nor redundant. If the underlined material is most appropriate, select c. No change.

Multiple Attempts This Test allows multiple attempts.
Force Completion This Test can be saved and resumed later.

Collapse Question Completion Status:

1Question Incomplete 2Question Incomplete 3Question Incomplete 4Question Incomplete 5Question Incomplete 6Question Incomplete 7Question Incomplete 8Question Incomplete 9Question Incomplete 10Question Incomplete

Question 1

  1.   In view of the fact that an emergency situation may develop, parents need to have a back-up plan for their children precisely in place. Answer
    Since an emergency situation may develop; back-up plan in place.
    Because an emergency may develop; back-up plan for their children.
    No change

10 points  

Question 2

  1.   Supervisors may be upset if a worker shows up at 10 a.m. in the morning rather than at 9 a.m. Answer
    10 a.m.
    a time that is way too late
    No change

10 points  

Question 3

  1.   As far as some supervisors are concerned, arriving late is never acceptable. Answer
    Some supervisors believe that
    Some supervisors are steadfast in their beliefs; they think that
    No change

10 points  

Question 4

  1.   In the event that a child is sick, most employers are understanding about a parent’s absence or late arrival. Answer
    In view of the fact that a child may become sick,
    If a child is sick,
    No change

10 points  

Question 5

  1.   Although some employees need to get their children to school in the morning, they should try to arrive at work on time. Answer
    In spite of the fact that
    Despite the fact that
    No change

10 points  

Question 6

  1.   Some companies now have day-care centers on site, which helps working parents with young children. Answer
    at this point in time; on site
    in this day and age; on the corporate premises
    No change

10 points  

Question 7

  1.   Due to the fact that most parents work, the policies of many companies are not sufficient enough. Answer
    Because; nearly sufficient enough.
    Because; sufficient.
    No change

10 points  

Question 8

  1.   They speak repeatedly at every employee meeting about the importance of punctuality. Answer
    repeatedly
    nonstop at every single employee meeting
    No change

10 points  

Question 9

  1.   To provide flexibility for parents, other companies let employees work at home on some days. Answer
    In order to provide
    Because they are concerned about providing
    No change

10 points  

Question 10

  1.   Bosses who are not understanding may turn beet red in color because they are so angry that the employee was tardy and showed up late. Answer
    beet red in color; was tardy.
    beet red; showed up late.
    No change

10 points  

 Save and Submit

Click Save and Submit to save and submit. Click Save All Answers to save all answers. Click Close Window to close window.

Links to Test Questions and Answers
Read question 1 Read answers for question 1 Read question 2 Read answers for question 2 Read question 3 Read answers for question 3 Read question 4 Read answers for question 4 Read question 5 Read answers for question 5 Read question 6 Read answers for question 6 Read question 7 Read answers for question 7 Read question 8 Read answers for question 8 Read question 9 Read answers for question 9 Read question 10 Read answers for question 10

@font-face { font-family: Utilicons; src:url(fonts/utilicons/utilicons-web-webfont.eot); } HTML { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } APPLET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OBJECT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IFRAME { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H1 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H2 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H5 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H6 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } P { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ABBR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ACRONYM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ADDRESS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BIG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CITE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CODE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DFN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } EM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } INS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } KBD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } Q { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } S { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SAMP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SMALL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRIKE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRONG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUB { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } VAR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FIELDSET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FORM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LABEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LEGEND { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CAPTION { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TBODY { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TFOOT { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } THEAD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TR { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TH { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } FONT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BACKGROUND: #fff } OL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } UL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } TABLE { BORDER-COLLAPSE: collapse } TH { FONT-WEIGHT: normal } CAPTION { TEXT-ALIGN: left } TH { TEXT-ALIGN: left } TD { TEXT-ALIGN: left } BLOCKQUOTE:before { CONTENT: "" } BLOCKQUOTE:after { CONTENT: "" } Q:before { CONTENT: "" } Q:after { CONTENT: "" } BLOCKQUOTE { QUOTES: "" "" } Q { QUOTES: "" "" } INPUT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } BUTTON { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } SELECT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } .field SELECT { MAX-WIDTH: 100% } .noLabelField SELECT { MAX-WIDTH: 100% } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px !important } .vtbegenerated IMG { FILTER: alpha(opacity=auto) !important; opacity: auto } .vtbegenerated UL { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated OL { LIST-STYLE-TYPE: decimal; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated LI { LIST-STYLE-POSITION: outside; DISPLAY: list-item } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL[type=circle] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type=disc] LI { LIST-STYLE-TYPE: disc } .vtbegenerated UL[type=square] LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 24px } .inlineVtbegenerated { DISPLAY: inline } .hideme { DISPLAY: none !important } .hidden { DISPLAY: none } .clearfloats { CLEAR: both } .hideoff { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; TOP: -1000px; LEFT: -10000px } .altHideoff1 { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; LEFT: -10000px } .boldme { FONT-WEIGHT: bold } .u_inlineStack { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > LI { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > DIV { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStack SELECT { MAX-WIDTH: 300px } .u_resetFont { FONT-SIZE: 100% } .u_reverseAlign { TEXT-ALIGN: right } .u_centerAlign { TEXT-ALIGN: center } .u_normalAlign { TEXT-ALIGN: left } .u_floatThis-right { FLOAT: right } .u_floatThis-left { FLOAT: left } .u_floatWrapper-right > DIV { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-right > LI { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-left > DIV { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LI { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LABEL { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_floatWrapper-right:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_controlsWrapper:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_clearFloatsWrapper > DIV { FLOAT: none !important } .u_clearFloatsWrapper > LI { FLOAT: none !important } .u_controlsWrapper { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .u_indent { MARGIN-LEFT: 24px !important } .u_scrollPanel-vertical { OVERFLOW-Y: auto } .u_panel-short { HEIGHT: 70px; MAX-HEIGHT: 100px } .u_panel-medium { HEIGHT: 70px; MAX-HEIGHT: 150px } .u_panel-long { HEIGHT: 70px; MAX-HEIGHT: 200px } HTML { HEIGHT: 100% } BODY { MIN-WIDTH: 1000px; HEIGHT: 100% } BODY.topFrame { OVERFLOW-Y: hidden; HEIGHT: 89px } BODY.filePicker { MIN-WIDTH: 400px } BODY.popup { MIN-WIDTH: 100% } .content-system-page { MIN-WIDTH: 780px } BODY.popup DIV.locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.csMenuFrame { MIN-WIDTH: 210px; WIDTH: 100% } BODY.popupMenu { MIN-WIDTH: 210px; WIDTH: 100% } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } H1 { FONT-WEIGHT: bold } H2 { FONT-WEIGHT: bold } H3 { FONT-WEIGHT: bold } H4 { FONT-WEIGHT: bold } H5 { FONT-WEIGHT: bold } H6 { FONT-WEIGHT: bold } STRONG { FONT-WEIGHT: bold } B { FONT-WEIGHT: bold } EM { FONT-STYLE: italic } TABLE.bouncer { WIDTH: 100% } TABLE.bouncer TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .brandingImgWrap { OVERFLOW: hidden } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { POSITION: relative; OVERFLOW-Y: hidden } .topTabs-compact { POSITION: relative } .topTabs .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs-compact .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs .tabWrapper-right .appTabs { FLOAT: right } .topTabs-compact .tabWrapper-right .appTabs { FLOAT: right } .breadcrumbs { POSITION: relative } .locationPane { POSITION: relative; MIN-WIDTH: 100%; ZOOM: 1; DISPLAY: inline-block; OVERFLOW: visible } .navigationPane { POSITION: absolute; WIDTH: 200px; ZOOM: 1; CLEAR: both; OVERFLOW: visible; TOP: 0px; LEFT: 0px } .menuWrap { POSITION: relative; ZOOM: 1 } .contentPane { MIN-WIDTH: auto; MARGIN: 0px 14px 0px 212px; ZOOM: 1; DISPLAY: block; OVERFLOW: visible } #puller { Z-INDEX: 3; POSITION: absolute } #puller A { WIDTH: 15px; DISPLAY: block; BACKGROUND: #ccc; HEIGHT: 30px } .contcollapsed { MARGIN-LEFT: 15px } .content { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .container { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .containerPortal { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .popup .container { MIN-HEIGHT: 400px } .container { OVERFLOW: visible } .containerOptions { OVERFLOW: visible } .column-1 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-2 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-3 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-4 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } column-5 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-1 { WIDTH: 100% } .column-2 { WIDTH: 50% } .column-3 { WIDTH: 33.3% } .column-4 { WIDTH: 25% } .column-5 { WIDTH: 20% } #lightbox .column-3 { MARGIN: 0px; MIN-HEIGHT: 200px !important } #lightbox .column-2 { MARGIN: 0px; MIN-HEIGHT: 200px !important } INPUT[type='submit'].submit { FONT-WEIGHT: bold } .mainButton A { FONT-WEIGHT: bold } .actionBarMicro .mainButton A { FONT-WEIGHT: bold } .rumble .mainButton > A { FONT-WEIGHT: bold } .rumble_top .mainButton > A { FONT-WEIGHT: bold } .button-1 { FONT-WEIGHT: bold } .button-1-img { FONT-WEIGHT: bold } .modeSwitchWrap { TOP: 6px; RIGHT: 0px; LEFT: auto } .modeSwitchWrap DIV { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .modeSwitch { POSITION: relative; DISPLAY: block; OVERFLOW: hidden } .read-on { MARGIN-RIGHT: 0px } A.read-off IMG { POSITION: absolute; BOTTOM: 0px; LEFT: 0px } A.read-on IMG { POSITION: absolute; BOTTOM: 0px; RIGHT: 0px } .switcherLabel { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .helpLink { POSITION: relative; TOP: 1px } .helpLink A.browseIcon { DISPLAY: inline-block } .vtbeSwitch { POSITION: relative; FLOAT: right } .vtbeSwitch SPAN { DISPLAY: inline-block } .fileInputWrapper { POSITION: relative; FLOAT: left; OVERFLOW: hidden } .fileInputWrapper INPUT.hiddenInput { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: right; FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 210%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px; opacity: 0 } .fileInputWrapper INPUT[type='file'] { FILTER: alpha(opacity=0) !important } .fileInputWrapper INPUT.visibleInput { Z-INDEX: 1; POSITION: relative; TOP: 0px; RIGHT: 0px } .frameResizeToggle { POSITION: absolute; BOTTOM: 0px; DISPLAY: block; OVERFLOW: hidden; LEFT: 0px; _top: 68px } A.colorChip { DISPLAY: inline-block } A.colorChip SPAN { DISPLAY: inline-block } .clearfix:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfixParent > *:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfix { DISPLAY: block } .clearfixParent > * { DISPLAY: block } INPUT[type='button'] { } INPUT[type='submit'] { } BUTTON { } FORM#content { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } .reorder { POSITION: absolute; CURSOR: move } .contextMenuContainer { ZOOM: 1 } .gbtable .contextMenuContainer { DISPLAY: inline } .gbtable_header .contextMenuContainer { DISPLAY: inline } .gbtable_header TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } .gbtable THEAD TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } A.cmimg { ZOOM: 1 } HTML { FONT: 300 0.78em "Lucida Grande", Arial, sans-serif } H1 { FONT-SIZE: 148% } H2 { FONT-SIZE: 123.1% } H3 { FONT-SIZE: 110% } H1 { MARGIN: 1em 0px } H2 { MARGIN: 1em 0px } H3 { MARGIN: 1em 0px } A { COLOR: #128fa8; TEXT-DECORATION: none } A:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } TABLE { FONT-SIZE: 100% } THEAD TH { FONT-WEIGHT: bold } #contentFrame { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } #schemePreview { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY.topFrame { BACKGROUND: #f7f7f7 } BODY.login-page { POSITION: relative; MIN-HEIGHT: 800px } BODY.popup { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } BODY.csMenuFrame { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } BODY.popupMenu { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } .csMenuFrame { FONT-SIZE: 95% } BODY.my-places-popup { MIN-WIDTH: 300px; WIDTH: auto; BACKGROUND: #fff } BODY.external-breadcrumbs { BACKGROUND-IMAGE: none } BODY.picker { MIN-WIDTH: 400px; BACKGROUND: #fff } .breadcrumbs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 9px; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .locationPane { MARGIN-TOP: 12px } BODY.picker .locationPane { MARGIN: 0px; DISPLAY: block } .csPicker .locationPane { DISPLAY: block } .navigationPane { MARGIN: 0px; WIDTH: 210px; TOP: 0px; LEFT: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .menuWrap { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .contentPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px 0px 222px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portalPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .popup .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .picker .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .course-tools-page #listContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 0px } .picker .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } .popup .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } #puller { Z-INDEX: 3; POSITION: absolute; BOTTOM: 1px; TOP: -1px; RIGHT: -8px; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A { BORDER-BOTTOM: #777 1px solid; POSITION: relative; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 8px; BACKGROUND: url(images/reorder_bg.png) #bbb repeat-y; HEIGHT: 100%; OVERFLOW: visible; BORDER-TOP: #777 1px solid; BORDER-RIGHT: #777 1px solid; opacity: 0; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0; box-shadow: 1px 0 3px rgba(0, 0, 0, 0.4) inset } .menuWrap:hover #puller A { FILTER: alpha(opacity=100); opacity: 1; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A:after { BORDER-BOTTOM: #666 1px solid; POSITION: absolute; FILTER: alpha(opacity=0) !important; BORDER-LEFT: #666 0px solid; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1; BACKGROUND-COLOR: #777; PADDING-LEFT: 1px; PADDING-RIGHT: 6px; DISPLAY: none !important; COLOR: #fff; FONT-SIZE: 180%; BORDER-TOP: #666 1px solid; CONTENT: "\2190"; TOP: 200px; RIGHT: -30px; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 3px; opacity: 0; -webkit-transition: opacity .5s ease-in-out; -moz-transition: opacity .5s ease-in-out; border-radius: 0 12px 12px 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, .5); transition: opacity .5s ease-in-out } .pullcollapsed#puller A { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #00add0; opacity: 1 } #puller A:hover { BACKGROUND-COLOR: #777 } #puller A IMG { POSITION: relative; FILTER: alpha(opacity=0)\9; PADDING-BOTTOM: 3px; PADDING-LEFT: 1px; WIDTH: 12px; PADDING-RIGHT: 6px; BACKGROUND: url(images/menu_expand_rtl.gif) no-repeat 0px 0px; HEIGHT: 24px; TOP: 200px; RIGHT: -9px; PADDING-TOP: 3px } .pullcollapsed#puller A:hover { BACKGROUND-COLOR: #777; -webkit-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller A:after { CONTENT: "\2192"; opacity: 0 } .pullcollapsed#puller A:hover:after { opacity: 1 } #puller A:hover:after { opacity: 1 } .pullcollapsed#puller A:hover IMG { FILTER: alpha(opacity=100) } #puller A:hover IMG { FILTER: alpha(opacity=100) } .pullcollapsed#puller A:hover IMG { BACKGROUND: url(images/menu_collapse_rtl.gif) no-repeat 0px 0px } .navcollapsed { MARGIN-LEFT: -210px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller { RIGHT: -10px; opacity: 1; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navcollapsed .menuWrap { DISPLAY: block !important } .contcollapsed { MARGIN-LEFT: 12px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #topFrame { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .bgBanner { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .brandingImgWrap { HEIGHT: 46px } .brandingImgWrap A { MARGIN: 8px 12px 0px; DISPLAY: inline-block } .bannerImage { MAX-HEIGHT: 35px } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #555; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 89px; PADDING-TOP: 0px; -moz-box-shadow: 0 -6px 17px #333 inset; -webkit-box-shadow: 0 -6px 17px #333 inset } .topTabs-compact { HEIGHT: 47px } .tabWrapper-left { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-center { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-right { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .appTabs { POSITION: relative; WIDTH: auto } .topTabs-compact .tabWrapper-left { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-center { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-right { PADDING-TOP: 20px } #topTab { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A SPAN { BORDER-BOTTOM: transparent 1px dotted; PADDING-BOTTOM: 1px } .topTabs-compact .appTabs A SPAN { PADDING-BOTTOM: 0px } .appTabs A:hover { COLOR: #fff } .appTabs A:focus { COLOR: #fff } .appTabs A:hover SPAN { BORDER-BOTTOM: #fff 1px double } .appTabs A:focus SPAN { BORDER-BOTTOM: #fff 1px double } #topTabActive { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:hover { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:focus { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:hover SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:focus SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .topTabs-compact .appTabs .active .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs .active A:hover .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs A { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:hover { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:focus { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .round1 A { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .round2 A { -moz-border-radius: 12px 12px 0 0; -webkit-border-radius: 12px 12px 0 0; border-radius: 12px 12px 0 0 } .topGlobalLinks { TEXT-ALIGN: right; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); FLOAT: right; FONT-SIZE: 90%; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .topGlobalLinks UL { Z-INDEX: 1001 } .topGlobalLinks UL LI { MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; COLOR: #ccc } .loggedInAs { POSITION: relative; FONT: italic 100% Georgia; COLOR: #999; BORDER-TOP: 0px } .loggedInAs IMG { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 18px !important; PADDING-RIGHT: 1px; DISPLAY: inline-block; HEIGHT: 18px !important; TOP: -2px; RIGHT: -9px; PADDING-TOP: 1px; LEFT: auto } .loggedInAs SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: inline-block; PADDING-TOP: 6px } .topGlobalLinks A { BACKGROUND-IMAGE: none !important; MIN-WIDTH: 18px; TEXT-ALIGN: left; PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline-block; COLOR: #ccc; PADDING-TOP: 6px } .topGlobalLinks UL LI:first-child A { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks UL LI:first-child { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks A .link-icon { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); WIDTH: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; FLOAT: right; HEIGHT: 16px; OVERFLOW: hidden } .topGlobalLinks .myPlaces .link-icon { BACKGROUND-POSITION: -113px 0px } .topGlobalLinks .myPlaces:hover .link-icon { BACKGROUND-POSITION: -113px -16px } .topGlobalLinks .home .link-icon { BACKGROUND-POSITION: -129px 0px } .topGlobalLinks .home:hover .link-icon { BACKGROUND-POSITION: -129px -16px } .topGlobalLinks .logout .link-icon { DISPLAY: none } .topGlobalLinks .logout { PADDING-BOTTOM: 6px; TEXT-INDENT: 0px; PADDING-LEFT: 9px; WIDTH: auto !important; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .topGlobalLinks .help .link-icon { BACKGROUND-POSITION: -145px 0px } .topGlobalLinks .help:hover .link-icon { BACKGROUND-POSITION: -145px -16px } .topGlobalLinks A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topGlobalLinks A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topTabs-compact .loggedInAs SPAN { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks A { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks .logout { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } UL.nav LI.sub UL.narrow LI A { TEXT-INDENT: -5px; FONT-SIZE: 90% } .hotItems { Z-INDEX: 10000; POSITION: relative; WIDTH: 240px; FLOAT: right; HEIGHT: 28px; COLOR: #666; MARGIN-LEFT: 6px; FONT-SIZE: 90% } .topTabs-compact .hotItems { DISPLAY: none } .hotItems .hotLinks { POSITION: absolute; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; MAX-HEIGHT: 46px; OVERFLOW: auto; RIGHT: 0px; PADDING-TOP: 4px; LEFT: 0px; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; border-radius: 0 0 0 4px } .hotItems .hotLinks LI { DISPLAY: inline } .hotItems .hotLinks A { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT: italic 100% Georgia; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; TEXT-DECORATION: none; PADDING-TOP: 3px } .hotItems .hotLinks LI:after { POSITION: relative; COLOR: #999; CONTENT: "\2022"; RIGHT: 1px } .hotItems .hotLinks LI A:hover { COLOR: #eee; TEXT-DECORATION: underline } .path { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px } .breadcrumbs .noToggle { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .simplePath LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .path .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .path .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .simplePath .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .path A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .simplePath A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .path A:hover { COLOR: #333; TEXT-DECORATION: underline } .simplePath A:hover { COLOR: #333; TEXT-DECORATION: underline } .path .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .simplePath .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .path .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .simplePath .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .path .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='course_id']:before { CONTENT: "H" } .simplePath .root A[href*='course_id']:before { CONTENT: "H" } .path .root A[href*='admin']:before { CONTENT: "S" } .simplePath .root A[href*='admin']:before { CONTENT: "S" } .path .root A[href*='tabId=']:before { CONTENT: "m" } .simplePath .root A[href*='tabId=']:before { CONTENT: "m" } .path .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .simplePath .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .simplePath .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .path .root A:hover:before { COLOR: #888 } .simplePath .root A:hover:before { COLOR: #888 } .path .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .simplePath .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .path LI.contextPath { PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contextPath > DIV { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath > DIV:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath:hover > DIV { opacity: 1 } .contextPath:hover > DIV:hover { opacity: 1 } .contextPath A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .courseArrow A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .contextPath A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .contextPath A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow { DISPLAY: inline-block } .courseArrow A { DISPLAY: inline-block } .coursePath:hover .courseArrow { opacity: 1 } .banner + .breadcrumbs { BACKGROUND-COLOR: inherit; MARGIN: 0px } .breadcrumb-controls { FLOAT: right } .content { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #contentArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } #schemePreviewBody { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .contentBox { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .popup .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .picker .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .portal .contentBox { -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15) } #contentArea { MARGIN: 0px; COLOR: #444 } .container { MARGIN: 0px; COLOR: #444 } .containerOptions { MARGIN: 0px; COLOR: #444 } .containerPortal { MARGIN: 0px; COLOR: #444 } .containerPortal { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .portal .container { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .containerOptions .searchbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } .containerOptions .liveArea { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } #addFolderForm { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } DIV.okContainer { POSITION: relative; PADDING-BOTTOM: 60px } DIV.ok DIV.container { POSITION: relative; PADDING-BOTTOM: 60px } .collabContainer { POSITION: relative; PADDING-BOTTOM: 60px } .column-1 { MARGIN: 6px 0px 0px } .column-2 { MARGIN: 6px 0px 0px } .column-3 { MARGIN: 6px 0px 0px } .column-4 { MARGIN: 6px 0px 0px } .column-5 { MARGIN: 6px 0px 0px } .leftColumn-narrow { MARGIN: -20px 0px 0px -30px; WIDTH: 22%; FLOAT: left; OVERFLOW: auto; BORDER-RIGHT: #ccc 3px double } .picker .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .picker #bb-question-discover .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .rightColumn-narrow { WIDTH: 22%; FLOAT: right; MARGIN-LEFT: 1% } .rightColumn-wide { WIDTH: 74%; FLOAT: right } .leftColumn-wide { BORDER-LEFT: #ccc 3px double; WIDTH: 76%; FLOAT: left; MARGIN-LEFT: -3px } .picker .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker #bb-question-discover .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker .leftColumn-wide H1 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #bb-question-discover .leftColumn-wide { BORDER-LEFT: #ccc 3px double; MARGIN: -20px -20px 0px -3px; WIDTH: 80% } #bb-question-discover .leftColumn-wide + .leftColumn-wide { BORDER-LEFT: medium none; MARGIN: 0px; WIDTH: auto } #bb-question-discover .leftColumn-narrow { WIDTH: 24% } .leftColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .rightColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .leftColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .rightColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .columnPalette H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .leftColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .rightColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .leftColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } .rightColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } A.itemHead:hover { TEXT-DECORATION: underline } .leftColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .rightColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .leftColumn-narrow H3.hideoff { MARGIN: 0px } .leftColumn-narrow .columnPalette:first-child { BORDER-TOP: 0px } .paletteGroup { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .columnPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .paletteGroup DIV.columnPalette { BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .paletteItems { MARGIN: 0px 0px 4px; FONT-SIZE: 95% } .paletteItems LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 16px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } .paletteItems DIV { MARGIN: 0px 0px 0px 16px } #searchForm .paletteItems LI { MARGIN: 0px 0px 0px 24px } .paletteItems LI A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 110%; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .paletteItems LI LABEL { PADDING-LEFT: 21px; DISPLAY: inline-block } .picker .paletteItems LI LABEL { FONT-SIZE: 94% } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } UL.paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI:hover { BACKGROUND: #fff } .paletteItems LI A:hover { TEXT-DECORATION: underline } .paletteItems LI.selectedItem { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.selectedItem:hover { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active:hover { BACKGROUND: #fff4bf; COLOR: #000 } .columnActions UL LI A { DISPLAY: block } #copyright { POSITION: relative; MARGIN: 16px 0px 0px 9px; DISPLAY: inline-block; FONT-SIZE: 82% } .newCopyright { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 12px; PADDING-TOP: 20px } .logo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .legal { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .additionalInfo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 0px; MIN-HEIGHT: auto; PADDING-LEFT: 9px; PADDING-RIGHT: 12px; PADDING-TOP: 9px } .logo { POSITION: absolute; MARGIN-TOP: -20px; LEFT: 0px } .logo IMG { WIDTH: 45px } .additionalInfo { FLOAT: none } .legal P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P:first-child { PADDING-BOTTOM: 0px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } .additionalInfo P:first-child:after { POSITION: relative; COLOR: #ccc; CONTENT: "\2022"; RIGHT: -1px } .additionalInfo P:first-child A { PADDING-RIGHT: 12px } .additionalInfo P:first-child A:hover { BACKGROUND: url(images/micro_popup.png) no-repeat right 2px } .productTitle A { TEXT-ALIGN: right; LINE-HEIGHT: 1.1em; DISPLAY: block; COLOR: #333; FONT-SIZE: 125%; FONT-WEIGHT: bold; TEXT-DECORATION: none } .productTitle A:hover { TEXT-DECORATION: underline } .additionalInfo A:hover { TEXT-DECORATION: underline } .copyrightDetailContents { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #777; MARGIN: 0px; MIN-HEIGHT: 5em; PADDING-LEFT: 24px; WIDTH: 740px; PADDING-RIGHT: 24px; DISPLAY: none; COLOR: #fff; CLEAR: left; BORDER-TOP: #555 1px solid; TOP: 0px; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 12px; LEFT: 0px; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); border-radius: 3px } .productImg { MARGIN-TOP: 5px; FLOAT: left } .copyrightDetailContents UL { TEXT-ALIGN: left; MARGIN: 4px 0px 0px 24px; FLOAT: left } .copyrightDetailContents UL LI SPAN { FONT-WEIGHT: bold } A.closeCopyright { POSITION: relative; FLOAT: right; TOP: -5px; RIGHT: -16px } .contentBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 1em; MARGIN: 0px 1em 0.6em; PADDING-LEFT: 1.4em; PADDING-RIGHT: 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0.6em } .contentBlock H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; MARGIN: 0px 0px 1em; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .contentBlock UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentBlock UL.threeCol { WIDTH: 30%; FLOAT: left } .contentBlock UL.threeCol LI { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px 3px; FLOAT: none; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contentBlock UL.threeCol LI A { BACKGROUND-IMAGE: none } .contentBlock UL.threeCol LI A:hover { TEXT-DECORATION: underline } .contentBlock UL.threeCol LI A:focus { TEXT-DECORATION: underline } .contentBlock H3 INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock H3 SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock OL LI INPUT[type='checkbox'] { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .contentBlock H3 A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock INPUT.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } DIV.landingListWrapper { TEXT-ALIGN: center; MARGIN: 1.6em 0px 0px } DIV.landingListWrapper UL.landingList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI { TEXT-ALIGN: left; MARGIN: 0px 0px 1.6em; WIDTH: 50% } DIV.landingListWrapper UL.landingList-2cols LI { TEXT-ALIGN: left; MARGIN: 0px 3em 1.6em 0px; WIDTH: 45%; FLOAT: left } DIV.landingListWrapper UL.landingList LI.restart { MARGIN-TOP: -13.6em } DIV.landingListWrapper UL.landingList LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList-2cols LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList LI UL { LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em } DIV.landingListWrapper UL.landingList LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; CLEAR: left; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #000; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .containerLanding { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } DIV.landing DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } BODY.landingBody DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } .inst-email DIV.landing DIV.container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } DIV.landingPageColumn { PADDING-BOTTOM: 0px; MARGIN: 1.2em 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .twoCol { MARGIN: 1.2em 0px; WIDTH: 49% } .threeCol { MARGIN: 1.2em 0px; WIDTH: 32.5% } .landingPageColumn UL { MARGIN: 0px 0px 0px 30px } .landingPageColumn .outcomesLanding { PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI { TEXT-ALIGN: left; MARGIN: 0px 0px 2.2em } .inst-email .landingPageColumn UL LI { MARGIN: 0px } .landingPageColumn .outcomesLanding LI { MARGIN: 0px 0px 1.2em } .landingPageColumn UL LI A { TEXT-DECORATION: none } .landingPageColumn UL LI A:hover { TEXT-DECORATION: underline } .landingPageColumn H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI H3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 115%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } .landingPageColumn .outcomesLanding LI P { BORDER-TOP: 0px } .landingPageColumn H3 IMG { MARGIN: 0px 0px 0px -12px } .landingPageColumn H3.hiddenlink IMG { POSITION: absolute; FILTER: alpha(opacity=40); TOP: 0px; LEFT: 1.1em; opacity: .4 } .landingPageColumn UL LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em; PADDING-LEFT: 1.6em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #555; PADDING-TOP: 1px } .landingPageColumn UL LI UL LI.more { PADDING-TOP: 3px } .landingPageColumn UL LI UL LI.more A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; COLOR: #555; PADDING-TOP: 0px } .landingPageColumn UL LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn H3.hiddenlink { POSITION: relative; PADDING-BOTTOM: 0.6em; PADDING-LEFT: 4.2em; PADDING-RIGHT: 1.2em; PADDING-TOP: 1em } .landingPageColumn H3.hiddenlink A { COLOR: #777; TEXT-DECORATION: none } .landingPageColumn H3.hiddenlink A:hover { COLOR: #777; TEXT-DECORATION: none } .subhead_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #333; FONT-SIZE: 90%; PADDING-TOP: 0px } .list_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 1.3em; PADDING-RIGHT: 2px; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .landingPageColumn .outcomesLanding .list_text A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 3px; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; HEIGHT: 360px; OVERFLOW: auto; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.datalist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.landingPageColumn UL LI UL.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 250px; OVERFLOW: auto; BORDER-TOP: medium none; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.datalistScroll LI { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: white; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.datalistScroll LI:hover { BACKGROUND-COLOR: #ffc } DIV.landingPageColumn UL LI UL.datalistScroll LI:focus { BACKGROUND-COLOR: #ffc } DIV.datalist TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } DIV.datalistScroll TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } .emptylist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: white; MARGIN: 6px 0px 0px 1.4em; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 12px } DIV.landingPageColumn UL LI UL.subcaret { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.subcaret LI { PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.complete { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_complete_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.inprogress { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_active_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } .iconLegendLabel { MARGIN: 1px 0px 1px 1.6em; FONT-SIZE: 95% } DIV.landingPageColumn UL LI UL.subcaret LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI UL.datalist LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI DIV A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI TABLE A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI P A { TEXT-DECORATION: underline } .genericButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .genericButtonImg { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browse { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browseIcon { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } INPUT[type='submit'].submit { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble_top A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paging A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .itemHeaderControl A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .actionMenuButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paletteSearch .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } H3#cs_search + UL DIV.none:first-child .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .mainButton H2 { MARGIN: 0px; FONT-SIZE: 100% } .secondaryButton H2 { MARGIN: 0px; FONT-SIZE: 100% } #primaryButton { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble_top .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1 { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1-img { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } #secondaryButton { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2 { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2-img { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } #secondaryButton { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .sub A IMG { MARGIN: -2px -4px 0px 0px } .sub .button-1 IMG { MARGIN: -2px -4px 0px 0px } .sub .button-2 IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton A IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton .button-2 IMG { MARGIN: -2px -4px 0px 0px } .mainButton A { DISPLAY: block } .secondaryButton A { DISPLAY: block } .actionBar .button-1 { DISPLAY: block } .actionBar .button-2 { DISPLAY: block } .mainButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .mainButton H2 > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .secondaryButton > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .secondaryButton H2 > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .sub.mainButton A { PADDING-RIGHT: 12px } .sub.secondaryButton A { PADDING-RIGHT: 12px } .mainButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A { FONT-WEIGHT: 600 } .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 30px } .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 30px } .popup .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .popup .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .genericButtonImg { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } INPUT[type='submit'].genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browse { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browseIcon { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .paging A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .itemHeaderControl > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .actionMenuButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } #toolsSearchBox + .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .treeContainer .tree LI A.button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .threadButtons .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .dbThreadInfo .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .containerOptions INPUT.genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-2 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-3 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-4 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'] { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'].submit { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='button'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .genericButtonImg { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-3-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .itemHeaderControl A { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .browseIcon { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .genericButtonImg { DISPLAY: inline-block !important } INPUT[type='submit'].genericButton { FONT-WEIGHT: bold } .button-3 { FONT-WEIGHT: bold } .searchbar INPUT[type='submit'].genericButton { FONT-WEIGHT: normal } .u_reverseAlign#editGradeActionList A.genericButton { DISPLAY: inline-block; MARGIN-BOTTOM: 5px } .genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .threadButtons .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .dbThreadInfo .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img.contextArrow:hover { box-shadow: none } .button-4-img.contextArrow:focus { box-shadow: none } .paletteSearch .button-4:hover { BACKGROUND-IMAGE: none !important } .paletteSearch .button-4:focus { BACKGROUND-IMAGE: none !important } .button-5 { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5-img { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5:hover { BACKGROUND: #ededed; COLOR: black } .button-5-img:hover { BACKGROUND: #ededed; COLOR: black } .button-6 { TEXT-DECORATION: none } .mainButton A.disabled { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .rumble A { DISPLAY: block } .rumble_top A { DISPLAY: block } .rumble .sub A IMG { MARGIN: -2px -1px 0px 3px } .rumble_top .sub A IMG { MARGIN: -2px -1px 0px 3px } .paging A { DISPLAY: inline-block } .rumble_top .inventory_paging .gotolink { DISPLAY: inline-block } .rumble .inventory_paging .gotolink { DISPLAY: inline-block } .listItemSelect { MARGIN: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #555 } #threadArea .listItemSelect { MARGIN: 0px } .rumble_top .listItemSelect { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 4px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .listItemSelect { PADDING-BOTTOM: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .rumble .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble_top .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble .listItemSelect A:hover { TEXT-DECORATION: none } .rumble_top .listItemSelect A:hover { TEXT-DECORATION: none } .listItemSelect LABEL { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline; PADDING-TOP: 0px } .listItemSelect SELECT { FONT-SIZE: 95% } INPUT.calcButton { MARGIN: 2px 0px; WIDTH: 2em; DISPLAY: inline-block } INPUT#width { WIDTH: 5em } INPUT#height { WIDTH: 5em } SELECT#border { WIDTH: 5em } SELECT#controls { WIDTH: 5em } .smallControls INPUT[type='text'].width { WIDTH: 5em } .smallControls INPUT[type='text'].height { WIDTH: 5em } .smallControls SELECT.quality { WIDTH: auto } .smallControls SELECT.controls { WIDTH: auto } .smallControls SELECT.border { WIDTH: auto } .actionBarMicro .mainButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .secondaryButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .mainButton A IMG { MARGIN: 0px } .actionBarMicro .secondaryButton A IMG { MARGIN: 0px } .actionBarMicro A SPAN IMG { VISIBILITY: hidden } .actionBar A SPAN IMG { VISIBILITY: hidden } .actionBarMicro .access-reorder { -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .actionBarMicro A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBar A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBarMicro #quickViewLink A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #shortcutView A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #quickViewLink A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#quickViewLink A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #shortcutView A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#shortcutView A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #addCmItem > A SPAN { BACKGROUND-POSITION: -16px 0px } .actionBarMicro #detailViewLink2 UL LI A { WIDTH: 90px } .actionBarMicro #addCmItem:hover > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro .active#addCmItem > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro #detailViewLink A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #folderView A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #detailViewLink2 A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #folderView A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#folderView A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #courseMapButton A SPAN { BACKGROUND-POSITION: -48px 0px } .actionBarMicro #courseMapButton A:hover SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro .active#courseMapButton A SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro #refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshView A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshMenuLink A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro #refreshView A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshView A SPAN { BACKGROUND-POSITION: -64px -16px } A.access-reorder SPAN { BACKGROUND-POSITION: -80px 0px } A.access-reorder:hover SPAN { BACKGROUND-POSITION: -80px -16px } A.active.access-reorder SPAN { BACKGROUND-POSITION: -80px -16px } .actionBar .sub A .chevron { BACKGROUND-POSITION: -95px 0px } .actionBar .sub:hover A .chevron { BACKGROUND-POSITION: -95px -16px } .actionBar .sub A:focus .chevron { BACKGROUND-POSITION: -95px -16px } .actionBarMicro .active > A { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:hover { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:focus { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } A.liveAreaTab:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub H2 > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .mainButton.sub:hover H2 > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang H2:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang:hover H2:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub:hover > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .actionBarMicro UL:hover + UL .active A:after { DISPLAY: none } A.liveAreaTab:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang H2:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang:hover H2:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .sub:hover > A:after { BORDER-BOTTOM-COLOR: #d1eaef } .columnActions.actionBarMicro { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 3px } .alignPanel LI.sub { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .alignPanel LI.sub A.button-4:after { CONTENT: none } .columnActions UL { MARGIN: 0px 0px 2px } .columnActions .mainButton A { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .columnActions .mainButton A:hover { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .modeSwitchWrap { DISPLAY: inline-block; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; FONT-WEIGHT: bold; BORDER-RIGHT: transparent 1px dotted } .modeSwitch { PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: #ccc; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -moz-border-radius: 16px; -webkit-border-radius: 16px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); border-radius: 16px } .modeSwitch:before { POSITION: relative; LINE-HEIGHT: 0.9; COLOR: #bbb; FONT-SIZE: 22px; VERTICAL-ALIGN: middle; CONTENT: "\2022"; TOP: -1px; FONT-WEIGHT: normal; MARGIN-RIGHT: 2px; LEFT: 0px; font-effect: outline } .read-on { BACKGROUND-COLOR: #777; MARGIN-RIGHT: 0px } .read-on:hover { BACKGROUND: #555 } .read-on { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .read-on:before { COLOR: lime; text-shadow: 0 0 4px lime } .disabled.read-on:before { COLOR: #999 } .disabled.read-on { COLOR: #999 } .read-off:before { COLOR: #999 } .read-off { COLOR: #999 } .read-off.modeSwitch { TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } A.read-off IMG { DISPLAY: none } A.read-on IMG { DISPLAY: none } A.read-on .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } A.read-off .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } .modeSwitch SPAN { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .switcherLabel { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 4px !important; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 2px !important } .vtbeSwitch { TOP: 2px } .vtbeSwitch SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .legacy .vtbeSwitch { HEIGHT: 2.2em } .vtbeSwitch DIV.modeSwitchWrap { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ccc 1px solid; TOP: 2px; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .vtbeSwitch DIV.modeSwitchWrap A SPAN#statusText { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 0px !important } .vtbeSwitch DIV.modeSwitchWrap A.read-off { BACKGROUND-COLOR: #ddd } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover { BACKGROUND-COLOR: #fff } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover SPAN#statusText { COLOR: #000 } TABLE.vtbeTable-legacy { WIDTH: 100% } .vtbeTable-legacy TEXTAREA { WIDTH: 100% } .helpLink { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .helpLink A.browseIcon { BORDER-BOTTOM: 0px; POSITION: relative; TEXT-ALIGN: center; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#777777); BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; BACKGROUND: #777; FONT-SIZE: 115%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; box-shadow: none; border-radius: 12px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .helpLink A.browseIcon IMG { DISPLAY: none } .helpLink A.browseIcon:before { Z-INDEX: 1; POSITION: relative; WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: #fff; CONTENT: "?"; RIGHT: -4px; FONT-WEIGHT: bold } .helpLink A.browseIcon:hover { box-shadow: none } .helpLink A.browseIcon:focus { box-shadow: none } .helpLink A[title*='Off'].browseIcon:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bbbbbb,endColorstr=#bbbbbb); BACKGROUND: #bbb } .helpLink A[title*='Off'] { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } TABLE.reorder { opacity: 1 } .reorder SPAN { DISPLAY: inline-block; HEIGHT: 20px } TABLE.reorder SPAN { HEIGHT: auto } .item .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } .item .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .liItem .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .subList-reorder .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .buttonCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .dndHandle .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .portlet .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder { WIDTH: 16px } .subList-reorder .reorder { WIDTH: 16px } .buttonCm .reorder { WIDTH: 16px } .portlet .reorder SPAN { DISPLAY: block; BACKGROUND-POSITION: -237px -116px; HEIGHT: 24px } .portlet .reorder { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; BOTTOM: -1px; BORDER-TOP: #555 1px solid; TOP: -1px; BORDER-RIGHT: #555 0px solid; LEFT: -19px; opacity: 0; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px } .module-dragstate.portlet .reorder { BORDER-RIGHT-WIDTH: 0px; BOTTOM: -2px; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-LEFT-WIDTH: 2px; TOP: -2px; LEFT: -20px } .reorder IMG { FILTER: alpha(opacity=0); opacity: 0 } .item .reorder IMG { MARGIN: 6px 3px } .portlet .reorder IMG { WIDTH: 18px; HEIGHT: 20px } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .liItem:focus .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .listCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buttonCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .portlet H2:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentListPlain LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentList > LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg { MARGIN: 0px; WIDTH: 16px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -125px; HEIGHT: 16px } TABLE.inventory A.cmimg { FILTER: alpha(opacity=0); opacity: 0 } TABLE.inventory TR:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg:hover { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg:focus { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg IMG { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 15px; PADDING-RIGHT: 0px; HEIGHT: 15px; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .buttonCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .portlet A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } A.cmimg-small { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .listCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .listCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .courseMenu .subhead A.cmimg { TOP: 9px } .buttonCm .courseMenu .subhead .cmimg { TOP: 2px } .portlet A.cmimg { POSITION: relative; TOP: 2px; RIGHT: 0px } .listCm .courseMenu A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .portlet A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .buildList LI .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .item .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .buildList LI .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .item .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .listCm .courseMenu LI:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 3px; BOTTOM: 0px; PADDING-RIGHT: 4px; PADDING-TOP: 4px; -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); border-radius: 0 3px 0 0 } .frameResizeToggle A { WIDTH: 16px; DISPLAY: block; BACKGROUND: url(images/utilicons_sprite_rev.png) no-repeat -158px 0px; HEIGHT: 16px; OVERFLOW: hidden } .frameResizeToggle:hover { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle A.resize-on { BACKGROUND-POSITION: -175px 0px; opacity: .5 } .frameResizeToggle A.resize-off { BACKGROUND-POSITION: -159px 0px; opacity: .8 } .frameResizeToggle A.resize-on:hover { BACKGROUND-POSITION: -159px -16px; opacity: 1 } .frameResizeToggle A.resize-off:hover { BACKGROUND-POSITION: -175px -16px; opacity: 1 } .frameResizeToggle A IMG { WIDTH: 18px; HEIGHT: 18px } A.close { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close-menu { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close { TOP: 0px; RIGHT: 20px } A.close IMG { DISPLAY: none } A.close-menu IMG { DISPLAY: none } .lbAction IMG { DISPLAY: none } A.close:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } .lbAction:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT-SIZE: 14px } A.close:hover:before { COLOR: #888 } A.close-menu:hover:before { COLOR: #888 } .lbAction:hover:before { COLOR: #888 } .builderItem A.close { FILTER: alpha(opacity:0); opacity: 0 } .builderItem:hover A.close { FILTER: alpha(opacity:100); opacity: 1 } .liveArea A.close { TOP: 6px; RIGHT: 6px } .cmdiv A.close-menu { Z-INDEX: 100; POSITION: relative; FILTER: alpha(opacity=100); TOP: 0px; RIGHT: 0px; opacity: 1 } #bb-assessment-canvas [id*='receipt_nested'].receipt A.close { TOP: 6px; RIGHT: 6px } A.colorChip { PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 1px } .pageTitle A.colorChip { PADDING-BOTTOM: 4px; PADDING-LEFT: 7px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } A.colorChip SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -123px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } A.colorChip:hover SPAN { BACKGROUND-POSITION: -320px -141px } A.colorChip SPAN IMG { FILTER: alpha(opacity=0); WIDTH: 16px; HEIGHT: 16px; opacity: 0 } A.colorChip IMG.chipSwatch { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 16px; HEIGHT: 16px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #aaa 1px solid } SPAN.colorChipName { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: inline-block !important; VERTICAL-ALIGN: middle; PADDING-TOP: 0px !important } INPUT[type='text'] { FONT-SIZE: 90% } INPUT[type='password'] { FONT-SIZE: 90% } SELECT { FONT-SIZE: 90% } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .courseMenu INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .courseMenu INPUT[type='text'] { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { MARGIN-LEFT: 0px } #calculatorValue { MARGIN: 3px 0px; WIDTH: 10em } A.microControl { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A.microControl IMG { WIDTH: 12px; HEIGHT: 12px } A.save { BACKGROUND: url(images/controls.png) no-repeat -50px -123px } A.cancel { BACKGROUND: url(images/controls.png) no-repeat -70px -123px } .fileInputWrapper { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; MARGIN-RIGHT: 9px; PADDING-TOP: 0px } .fileInputWrapper INPUT.hiddenInput { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .backLink { POSITION: absolute; MARGIN: 0px; BOTTOM: 0px; RIGHT: 0px } .tocBottom_min .backLink { BOTTOM: 48px } .tocBottom_max .backLink { BOTTOM: 348px } .tocBottom_open .backLink { BOTTOM: 178px } .shortDoc .backLink { POSITION: relative; TEXT-ALIGN: left; MARGIN-TOP: 15px; BOTTOM: 0px; RIGHT: 0px } .backLink A { BORDER-BOTTOM: #cdcdcd 0px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 18px; DISPLAY: inline-block; BACKGROUND: #eee; COLOR: #888; BORDER-TOP: #cdcdcd 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #cdcdcd 0px solid; TEXT-DECORATION: none; PADDING-TOP: 8px; -moz-box-shadow: 1px 1px 4px #DDD inset; -webkit-box-shadow: 1px 1px 4px #ddd inset; -moz-border-radius: 4px 0 4px 0; -webkit-border-radius: 4px 0 4px 0; text-shadow: 0 1px 0 #fff } .shortDoc .backLink A { BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px } .backLink A:before { LINE-HEIGHT: 1.2; COLOR: #999; FONT-SIZE: 120%; CONTENT: "\2190" } .backLink A:hover { BACKGROUND: #ddd; COLOR: #777 } .backLink A:hover:before { COLOR: #00add0 } .sliderWrapper { BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 0px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 13px; BACKGROUND: #fff; FLOAT: left; FONT-SIZE: 85%; PADDING-TOP: 14px; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0 } #sliderHandle { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: -2px 0px 0px; WIDTH: 4px; DISPLAY: block; BACKGROUND: #999; HEIGHT: 4px; BORDER-TOP: #555 1px solid; CURSOR: ew-resize; BORDER-RIGHT: #555 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } #sliderTrack { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 6px; WIDTH: 60px; DISPLAY: inline-block; BACKGROUND: #ededed; HEIGHT: 2px; BORDER-TOP: #ccc 1px solid; TOP: -2px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .itemCounter { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #cdcdcd; FONT-SIZE: 115%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #pageHeader { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitleSmall { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } #pageHeader { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #schemePreviewHead { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitle H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitleError H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #pageHeader { FONT-SIZE: 185% } .pageTitle H1 { FONT-SIZE: 185% } .pageTitleError H1 { FONT-SIZE: 185% } .picker .pageTitle H1 { FONT-SIZE: 160% } .popup .pageTitle H1 { FONT-SIZE: 160% } .pageTitle #titleicon { DISPLAY: inline-block } .pageTitle H1 { DISPLAY: inline-block } .pageTitle A.cmimg { DISPLAY: inline-block } .pageTitle H1 + .contextMenuContainer { POSITION: relative; MARGIN-LEFT: 2px; VERTICAL-ALIGN: top; TOP: 4px } .pageTitle A.cmimg { MARGIN: 0px } .pageTitle #titleicon { MARGIN: 0px 6px 0px 0px; DISPLAY: none } .pageTitle [src*='slideshare']#titleicon { BORDER-BOTTOM: #dedede 1px solid; POSITION: absolute; BORDER-LEFT: #dedede 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; WIDTH: auto; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #fff; HEIGHT: 39px; BORDER-TOP: #dedede 0px solid; TOP: 1px; RIGHT: 7px; BORDER-RIGHT: #dedede 0px solid; PADDING-TOP: 4px; border-radius: 0 4px 0 4px } .pageTitle [src*='youtube']#titleicon { POSITION: absolute; WIDTH: auto; DISPLAY: block; HEIGHT: 44px; TOP: 8px; RIGHT: 14px } .pageTitleSmall H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #fff; FONT-SIZE: 135%; PADDING-TOP: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.9) } #pageHeader { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } #schemePreviewHead { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .hierarchy-page .pageTitle + .container { MARGIN-TOP: -20px; BACKGROUND: #fff } .picker .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popup .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } #pageHeader { BACKGROUND-COLOR: #dedede } #schemePreviewHead { BACKGROUND-COLOR: #dedede } .pageTitleIcon { DISPLAY: table-row } .pageTitle .details { DISPLAY: none } .pageTitle .contextMenuContainer { DISPLAY: inline-block !important } .pageTitle .titleButtons { DISPLAY: inline-block !important } .pageTitleEdit { DISPLAY: inline-block !important } #pageTitleBar { DISPLAY: inline-block; MARGIN-RIGHT: 6px } .pageTitle H2 { MARGIN: 0px; COLOR: #333; CLEAR: both; FONT-SIZE: 100% } .pageTitle H2 SPAN { FONT-WEIGHT: normal } .contextString { COLOR: #777; FONT-WEIGHT: normal } .pageTitle .label { COLOR: #777; FONT-WEIGHT: normal } .error .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#DB0F0F,endColorstr=#FC0202); box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6) inset } .error .pageTitle H1 { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2) } .customBanner { TEXT-ALIGN: center; BACKGROUND-COLOR: transparent; MARGIN: 0px; OVERFLOW: hidden } DIV.localViewToggle + DIV.pageTitle { PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #fafafa inset; border-radius: 0 } DIV#lightboxContent H2 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; FONT-SIZE: 130%; PADDING-TOP: 18px } .helphelp { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .pageTitle P { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .label.details { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .mapTabs + .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .mapTabs ~ .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .helphelp A { BORDER-BOTTOM: #666 1px dotted; COLOR: #666; TEXT-DECORATION: none } .helphelp A:hover { BORDER-BOTTOM-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-TOP-STYLE: solid; BORDER-LEFT-STYLE: solid } DIV.helphelp UL { MARGIN: 6px 0px } .version { MARGIN-TOP: 6px; DISPLAY: inline-block; COLOR: #666; FONT-SIZE: 60%; FONT-WEIGHT: normal } .version I { FONT-STYLE: normal; FONT-WEIGHT: bold } .version SPAN { POSITION: relative; WIDTH: 13px; DISPLAY: inline-block; OVERFLOW: hidden; TOP: -2px; LEFT: -5px } .version SPAN:before { POSITION: relative; COLOR: #00add0; FONT-SIZE: 105%; CONTENT: "+"; TOP: 0px; FONT-WEIGHT: bold; LEFT: 0px } .colophon { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px 14px; PADDING-LEFT: 55px; WIDTH: 30em; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: right; FONT-SIZE: 85%; OVERFLOW: visible; RIGHT: 0px; PADDING-TOP: 0px } .colophon IMG { POSITION: absolute; LEFT: 0px } .installation { LINE-HEIGHT: 1.3em; COLOR: #666 !important } .installation SPAN { FONT-WEIGHT: bold } .actionBar { Z-INDEX: 110; BORDER-TOP: #444 1px solid; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .hierarchy-page .actionBar { MARGIN-TOP: -21px } .hierarchy-page #toolsTabForm .actionBar { MARGIN: -21px -30px 0px } .actionBar UL LI { POSITION: relative } .actionBar UL LI.mainButton { Z-INDEX: 210 } .actionBar UL LI.secondaryButton { Z-INDEX: 209 } .actionBar UL LI.mainButton:hover { Z-INDEX: 112 } .pageTitle + .actionBar { -moz-border-radius: 0; border-radius: 0 } .actionBar .mainButton { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBar .secondaryButton { MARGIN: 0px; FLOAT: right } .actionMenu { Z-INDEX: 111; POSITION: relative } .actionMenuItem { Z-INDEX: 123; POSITION: relative } .actionBarMicro { -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .csMenuFrame .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popupMenu .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .portlet .actionBarMicro { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .portlet .actionBarMicro UL { MARGIN: 2px } .actionBarMicro UL LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBarMicro .mainButton { Z-INDEX: 1000 } .actionBarMicro .secondaryButton { Z-INDEX: 10; FLOAT: right } .actionBar { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .actionBarMicro { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .searchbar { POSITION: relative } .searchbarPicker { POSITION: relative } .subActionBar { POSITION: relative } .searchbarCanvas.searchbar { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN: -24px -30px 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dfdfdf 0px 0px; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #F0F0F0 inset; -webkit-box-shadow: 1px 0 0 #F0F0F0 inset } .picker .searchbarCanvas.searchbar { MARGIN: -24px -20px 20px } .picker .leftColumn-narrow H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } .picker .leftColumn-wide H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } #bb-question-discover .searchbarCanvas.searchbar FIELDSET H2 { DISPLAY: inline-block; FONT-SIZE: 100%; FONT-WEIGHT: normal } .subActionBar { FONT-SIZE: 95% } .searchbar TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE TD TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE FIELDSET { PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 3px } .searchbar TABLE DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .searchbar FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchbarPicker { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .searchbar:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .searchbarPicker:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .receipt A.close { FILTER: alpha(opacity=70); TOP: 1px; RIGHT: 4px; opacity: .7 } .slideshowControls { TEXT-ALIGN: center; MARGIN: 8px auto 12px; FONT-SIZE: 100% } .searchbar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbarPicker FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .subActionBar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbar H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .searchbarPicker H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .picker .searchbar H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbarPicker H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbar .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbarPicker .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .liveArea FIELDSET .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbar OL LI { MARGIN: 5px; FLOAT: left } .searchbarPicker OL LI { MARGIN: 5px; FLOAT: left } .liveArea FIELDSET OL LI { MARGIN: 5px; FLOAT: left } .searchbar OL LI > DIV { MARGIN: 0px 4px 4px 0px; DISPLAY: inline-block } .searchbar OL LI.options { FLOAT: right } .searchbarPicker OL LI.options { FLOAT: right } .liveArea FIELDSET OL LI.options { FLOAT: right } .searchbarPicker SPAN { DISPLAY: inline } .searchbar SPAN.spacer { MARGIN: 0px 4px } .cmImg { TEXT-ALIGN: center; MARGIN: 0px 0px 6px 12px; WIDTH: 180px; OVERFLOW: hidden } .cmImg IMG { WIDTH: 180px } .navDivider { PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; MARGIN: 0px 0px 4px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; LETTER-SPACING: 2px; COLOR: #999; FONT-SIZE: 80%; FONT-WEIGHT: bold; PADDING-TOP: 18px; text-shadow: 0 1px 0 #f9f9f9 } .cmPreviewWrapper { WIDTH: 212px } .navPalette { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .csMenuFrame .navPalette { MARGIN: 0px 0px 18px } .navPalette H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 105%; PADDING-TOP: 0px } .navPaletteTitle { POSITION: relative } .navPaletteTitle H3 + H3 { POSITION: absolute; TOP: 0px; RIGHT: 0px } .navPaletteCol H3 { BORDER-BOTTOM: 0px } .navPalette H4 { MARGIN: 0px; FONT-SIZE: 100% } .navPaletteContent UL LI { POSITION: relative; ZOOM: 1 } .navPaletteContent { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .listCm .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .singleControl .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .tools .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } #courseMenuPalette DIV.navPaletteContent { PADDING-BOTTOM: 14px; PADDING-TOP: 14px; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset } #courseMenuPalette { MARGIN-BOTTOM: 0px } .singleControl .navPaletteContent { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .singleControl { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPalette .discover { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPaletteContent A { PADDING-BOTTOM: 3px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; WORD-BREAK: normal; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 3px } .navPaletteContent A:hover { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A:focus { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A.comboLink { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.open { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.submenuLink { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink_active { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent A.submenuLink_active IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent UL LI:first-child H4 A { BORDER-TOP: medium none } .navPaletteContent UL LI:first-child A { BORDER-TOP: medium none } .navPaletteContent UL LI H4 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPaletteContent H3 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px; text-shadow: 0 1px 0 #f9f9f9 } .navPaletteContent H3 A:hover { TEXT-DECORATION: none } .navPaletteContent H3 A:focus { TEXT-DECORATION: none } #courseMenu { BACKGROUND-COLOR: #0078cb; COLOR: #fff } .controlpanel UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .controlpanel A { BORDER-TOP: #ccc 1px dotted } .controlpanel A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .controlpanel A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { DISPLAY: inline-block } .navPaletteContent H3 A.submenuLink_active { DISPLAY: inline-block } .controlpanel A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .controlpanel A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink_active:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .navPaletteContent H3 A.submenuLink_active:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .controlpanel A.submenuLink:hover:after { COLOR: #aaa } .controlpanel A.submenuLink_active:hover:after { COLOR: #aaa } .tools A.submenuLink:hover:after { COLOR: #aaa } .tools A.submenuLink_active:hover:after { COLOR: #aaa } .navPaletteContent H3 A.submenuLink:hover:before { COLOR: #aaa } .navPaletteContent H3 A.submenuLink_active:hover:before { COLOR: #aaa } .controlpanel A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .tools A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel H4 A.open { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navPaletteContent UL LI:first-child H4 A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore H4 { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel A.comboLink_active { Z-INDEX: 1; POSITION: relative } .tools A.comboLink_active { Z-INDEX: 1; POSITION: relative } .controlpanel H4 A.open { Z-INDEX: 1; POSITION: relative } .treeViewCs .navPaletteContent { } .treeViewCs .bottomRound B { } .courseFilesPalette { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .paletteSearch { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 6px } .classFiles H4#cs_search + UL LI:first-child { BORDER-BOTTOM: #aaa 1px dotted; PADDING-BOTTOM: 6px; MARGIN: 2px 9px 2px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 95%; PADDING-TOP: 0px } .classFiles H4#cs_search + UL LI { BACKGROUND-IMAGE: none } .classFiles A#filesPaletteContentCollectionLink { BACKGROUND-IMAGE: url(images/indicators.png); PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 98% -143px; COLOR: #aaa; PADDING-TOP: 3px } .navPaletteContent .submenu .paletteSearchElement { PADDING-BOTTOM: 9px; MARGIN: 6px 0px 0px -16px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BORDER-TOP: #bbb 1px dotted; PADDING-TOP: 10px } .paletteSearchElement INPUT { WIDTH: 99px } .classFiles UL.tree > LI { BACKGROUND-IMAGE: none !important } .listCm .courseMenu { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .ineditmode DIV.listCm UL.courseMenu { MARGIN: 0px } .ineditmode DIV.listCm UL.courseMenu LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px -1px 0px 0px; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid } .ineditmode DIV.listCm UL.courseMenu LI:hover { BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff !important; -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -moz-transition: border, margin, background, -moz-box-shadow 500ms cubic-bezier(0.420, 0.000, 1.000, 1.000); box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-transition-property: background, border, -webkit-box-shadow; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000); background-clip: padding-box } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder { -webkit-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder:before { -webkit-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .listCm .courseMenu LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .buttonCm LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .buttonCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .listCm .courseMenu A:hover { TEXT-DECORATION: underline } .listCm .courseMenu A:focus { TEXT-DECORATION: underline } .buttonCm LI A:hover { TEXT-DECORATION: underline } .buttonCm LI:focus { TEXT-DECORATION: underline } .listCm .courseMenu > LI:hover A SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:hover { COLOR: #128fa8 !important } .listCm .courseMenu A:focus { COLOR: #128fa8 !important } .listCm .courseMenu A:hover SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:focus SPAN { COLOR: #128fa8 !important } .listCm .courseMenu .here A { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:hover { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:focus { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A.cmimg { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu .here A.cmimg:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .listCm .subhead H3 { PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #courseMenu_folderView H4 A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } #courseMenu_folderView .subhead { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .navPaletteContent .subhead H3 A { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .navPaletteContent .subhead H3 A:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .listCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { BACKGROUND-IMAGE: none !important } .noteditmode .listCm .courseMenu .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .noteditmode .listCm .buttonCm .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .listCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .buttonCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .listCm .courseMenu .collapsed { PADDING-BOTTOM: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; HEIGHT: 2px; PADDING-TOP: 0px } .buttonCm .navPaletteContent { BACKGROUND: none transparent scroll repeat 0% 0% } .buttonCm LI { BACKGROUND-COLOR: transparent; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 12px 0px } .buttonCm .courseMenu .here A { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .buttonCm .courseMenu .here A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .cmLink-hidden { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-empty { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-hidden IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -123px } .cmLink-hidden { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -138px } .buttonCm .invisible .cmLink-hidden { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { RIGHT: 32px } .buttonCm .bottomRound { DISPLAY: none } .pickerMenu { POSITION: absolute; MARGIN: 0px; WIDTH: 150px; TOP: 0px; LEFT: 14px } .pickerMenu UL LI A { BACKGROUND-IMAGE: none } DIV.pickerMenu A.simpleLink { BACKGROUND-IMAGE: none } .pickerMenu A.open { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:hover { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:focus { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .discover .topRound B { } .discover .bottomRound B { } .discover .navPaletteContent { } .singleControl .topRound B { } .singleControl .bottomRound B { } .singleControl .navPaletteContent { } .discover A IMG { DISPLAY: none } .discover.navPalette { MARGIN-BOTTOM: 0px } .singleControl A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .navPalette .discover A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .singleControl A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A.enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .discover A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { COLOR: #3c0; CONTENT: "+" } .discover A:before { COLOR: #eee; CONTENT: "F" } .navPaletteContent .submenu { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; FONT-SIZE: 90%; PADDING-TOP: 0px; -moz-box-shadow: 0 1px 4px #ccc; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore .submenu { BACKGROUND: #fff; FONT-SIZE: 90% } .navPaletteContent .submenu LI { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent .submenu LI UL LI { PADDING-LEFT: 12px } .navPaletteContent .submenu LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } H4#cs_search + UL DIV A { DISPLAY: block; FONT-SIZE: 90% } .controlpanel .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu .emptyMsg { COLOR: #777 } .controlpanel .submenu A:hover { TEXT-DECORATION: underline } .controlpanel .submenu A.here { TEXT-DECORATION: underline } .controlpanel .submenu A:focus { TEXT-DECORATION: underline } .explore .submenu A:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .explore .submenu A:focus { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .tools .submenu { BACKGROUND: #fff } .controlpanel .submenu { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel .submenu LI UL { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND-COLOR: transparent } .navPalette A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .controlpanel A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPalette A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPalette A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPaletteCol H3 A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol H3 A.comboLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol .navPaletteContent H3 { BACKGROUND-IMAGE: none } .navPaletteCol .actionBarMicro { DISPLAY: none } .shortcutViewCs UL LI A { TEXT-ALIGN: center; BORDER-TOP: #ededed 1px dotted } .shortcuts LI A { BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted } .shortcuts LI A:hover { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .shortcuts LI A:focus { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .treeContainer#courseMenu_folderView { OVERFLOW-X: auto } DIV.expTreeContainer { BACKGROUND: #eee } DIV.treeContainer UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.treeContainer > UL.tree { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree > UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.listCm DIV.treeContainer UL.tree { OVERFLOW-X: auto; ZOOM: 1 } DIV.treeContainer UL.tree LI H4 + UL { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; ZOOM: 1; FONT-SIZE: 90%; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .sideTOC UL.tree > LI { OVERFLOW-X: visible } DIV.treeContainer UL.tree LI.last { BACKGROUND-IMAGE: none } UL.tree LI.last { BACKGROUND-IMAGE: none } DIV.treeContainer UL.tree LI.here A { BACKGROUND-COLOR: #ededed } UL.tree LI.here A { BACKGROUND-COLOR: #ededed } DIV.treeContainer UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.open_folder { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: #ebeffa; FONT-SIZE: 95%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.exp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folder.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI A.collapse { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folderopen.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer H4.treehead { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 2px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.treeContainer H4.first { MARGIN: 0px 0px 2px } DIV#userTreeDiv { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead { BACKGROUND-IMAGE: none; MARGIN: 0px; BORDER-TOP: #ccc 1px dotted } DIV.treeContainer UL.tree LI.subhead H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.first A { BORDER-TOP: medium none } DIV.treeContainer UL.tree LI.subhead H4 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 6px } UL.tree LI.subhead:first-child { MARGIN-TOP: 0px } UL.tree LI.subhead:first-child > A { BORDER-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.treeSubhead-collapsed A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: normal } .tableOverflowControl { OVERFLOW-X: auto } .inventory { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 0px; BORDER-SPACING: 0; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-COLLAPSE: separate; BACKGROUND: #fff; COLOR: #000; CLEAR: both; PADDING-TOP: 0px } .inventory CAPTION { TEXT-ALIGN: left; COLOR: #999; FONT-SIZE: 85% } .inventory > THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .splashTable THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .inventory > THEAD TR TH:first-child { BORDER-LEFT: medium none; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .inventory > TBODY { BORDER-BOTTOM: #ccc 2px solid } .inventory > TBODY TR { BORDER-BOTTOM: #ccc 1px solid } .inventory > TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory > TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory#drawerItems TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory#drawerItems TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory > TBODY TR TH { TEXT-ALIGN: left; FONT-WEIGHT: normal } .inventory > TBODY TR TD:first-child { BORDER-LEFT: medium none } .inventory > TBODY .gray TD { BACKGROUND: #fff4bf } .inventory > TBODY .gray TH { BACKGROUND: #fff4bf } .inventory > THEAD TR TH.sorted { BACKGROUND: #ccc } TH.sorted { BACKGROUND: #ccc } .splashTable THEAD TR TH.sorted { BACKGROUND: #ccc } .inventory > TBODY TR TD.sorted { BACKGROUND: #eee } .inventory > THEAD TR TH.sorted A { COLOR: #000 !important; FONT-WEIGHT: bold } .sortable > THEAD TH A { COLOR: #666; MARGIN-RIGHT: 9px } .sortable > THEAD TH A:hover { COLOR: #333; TEXT-DECORATION: underline } .sortable A.sortheader { POSITION: relative; PADDING-RIGHT: 17px; DISPLAY: block; MARGIN-RIGHT: 0px; text-shadow: 0 1px 0 #fff } .sortable .sortarrow { COLOR: #ff0; TOP: 0px; RIGHT: 0px; TEXT-DECORATION: none; LEFT: auto } TR.high { BACKGROUND: #fff4bf } .high { BACKGROUND: #fff4bf } .disabledCell { BACKGROUND-COLOR: #f0f0f0 } .inventory .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .inventory > TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments { WIDTH: 100% } .inventory .dndHandle { POSITION: static; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 5px } .inventory .dndHandle .reorder IMG { HEIGHT: 20px } .inventory .dndHandle .reorder:hover IMG { HEIGHT: 20px } .inventory .dndHandle .reorder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory .dndHandle .reorder:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory TR:hover .dndHandle { BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px } .reorderable > TBODY TR:hover { -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset } .reorderable > TBODY TR:hover TD { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable > TBODY TR:hover TH { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable TBODY TR TD:first-child { BORDER-LEFT: transparent 1px solid } .inventory TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .inventory > TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .attachments TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .attachments TBODY TR { BORDER-TOP: #eee 1px solid } .inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } .attachments TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .attachments TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory > TBODY UL.subtabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } TABLE.inventory > TBODY UL.subtabs LI { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.status { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; BACKGROUND: #f9f9f9; COLOR: #000; FONT-SIZE: 90%; PADDING-TOP: 1px } DIV.status A IMG { VERTICAL-ALIGN: middle } DIV.status P { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left !important; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; LINE-HEIGHT: 10%; MARGIN: 2px auto 4px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } DIV.status P IMG { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #8dafaf; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 8px; PADDING-TOP: 0px } DIV.stopped P IMG { BACKGROUND: url(images/controls.png) #fff no-repeat -20px -180px } DIV.status A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.status DIV { POSITION: relative; TEXT-ALIGN: center } DIV.status A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } TABLE.inventory-simple { MARGIN: 0px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } TABLE.attachments THEAD TR.warningRow { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TABLE.inventory-simple THEAD TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } TABLE.inventory-simple TBODY TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TH { COLOR: #000 } TABLE.inventory-simple .removeCell { BACKGROUND: #ededed; COLOR: #777 } TABLE.inventory-simple .removeCell TD { COLOR: #999 } TABLE.inventory-simple .removeCell TH { COLOR: #999 } TABLE.inventory-simple .removeCell TD A IMG { FILTER: alpha(opacity=40); opacity: .4 } TABLE.inventory-simple .smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.inventory-simple TBODY TR.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TD { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TH { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.stepItems-reorder { BORDER-SPACING: 0; MARGIN-BOTTOM: 12px; FONT-SIZE: 85% } TABLE.gbColumns { ZOOM: 1; FONT-SIZE: 90% } TABLE.stepItems-reorder TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BACKGROUND: #fff; COLOR: #999 } TABLE.gbColumns THEAD TR TH { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TD { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TH.sorted { BORDER-LEFT: #777 1px solid; BACKGROUND: #999; BORDER-RIGHT: #777 1px solid } TABLE.gbColumns THEAD TR TH A { COLOR: #fff } TABLE.gbColumns THEAD TR TD A { COLOR: #fff } TABLE.stepItems-reorder THEAD TR.lowerHeader TH { BORDER-BOTTOM: #ccc 2px solid; COLOR: #333 } TABLE.stepItems-reorder TBODY TR TD.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder THEAD TR TH.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder TR TH.clearCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TD { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TH { BORDER-TOP: 0px } TABLE.stepItems-reorder THEAD TR:first-child { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; TEXT-ALIGN: right; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD SPAN.reorder { POSITION: relative; FILTER: alpha(opacity=100); WIDTH: 18px !important; DISPLAY: block; BACKGROUND: url(images/controls.png) #ededed no-repeat -177px -122px; HEIGHT: 20px; TOP: 2px; CURSOR: move; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; LEFT: auto; opacity: 1; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } TABLE.gbColumns TBODY TR TD SPAN.reorder { BACKGROUND: url(images/controls.png) #ededed no-repeat -237px -122px } TABLE.stepItems-reorder TBODY TR.frozenbar TD SPAN.reorder { TOP: 1px } TABLE.stepItems-reorder TBODY TR TD INPUT { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: 95%; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } TABLE.stepItems-reorder TBODY TR TD.points INPUT { WIDTH: 3em } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=text] { WIDTH: 90% } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=checkbox] { WIDTH: auto } TABLE.stepItems-reorder TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px 4px 0px 0px } TABLE.gbColumns TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px; WIDTH: auto } TABLE.gbColumns TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; PADDING-TOP: 6px } TABLE.gbColumns TBODY TR.frozenbar TD { BACKGROUND: #ccc; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: 0px } TABLE.gbColumns TFOOT TR.lastRow TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #999; HEIGHT: 2px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.frozen TD { BACKGROUND: #ededed } TABLE.gbColumns THEAD TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } TABLE.gbColumns TBODY TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } DIV.areaHighlight TABLE.gbColumns THEAD TR TD.clear { BACKGROUND: inherit } TD.clear { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozen TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TFOOT TR.lastRow TD.clear { BACKGROUND: inherit } TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.gbColumns TBODY TR.placeholder TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.placeholder TD.clear { BACKGROUND: inherit } UL.dragableHighlight LI TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozen TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TFOOT TR.lastRow TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TR.rowdrag { Z-INDEX: 1; BACKGROUND: #ccc } .insertImg { Z-INDEX: 20; POSITION: relative; TOP: 12px } .insertImgUp { Z-INDEX: 20; POSITION: absolute; RIGHT: -10px } TABLE.inventory > TBODY TR TD.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > THEAD TR TH.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > TBODY TR TD.hideCell { DISPLAY: none } TABLE.inventory > THEAD TR TH.hideCell { DISPLAY: none } .clickOrder { DISPLAY: none } TABLE.inventory > TBODY TR TD.clickOrder { BORDER-LEFT: medium none; BACKGROUND-COLOR: #ddd } TABLE.inventory TR TD.endCell { PADDING-BOTTOM: 0px !important; BACKGROUND-COLOR: #ddd !important; PADDING-LEFT: 0px !important; WIDTH: 1px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.inventory TR.orderRow TD.clickOrder { TEXT-ALIGN: center; BACKGROUND-COLOR: #ddd } TABLE.inventory TR.orderRow TD.clickOrder DIV { POSITION: relative } .sortedplus { BACKGROUND-IMAGE: url(images/controls.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 48% -995px } .dragCol { BACKGROUND-COLOR: #999 } TABLE.splashTable { BORDER-BOTTOM: #ccc 2px solid; MARGIN: 3px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.splashTable THEAD TR { COLOR: #999 } TABLE.splashTable THEAD TR TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } TABLE.splashTable THEAD TR TH A { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #666; TEXT-DECORATION: none } TABLE.splashTable THEAD TR TH A:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; TEXT-DECORATION: underline } TABLE.splashTable TBODY TR { BORDER-TOP: #ddd 1px solid } TABLE.splashTable TBODY TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TH { TEXT-ALIGN: left; COLOR: #000 } TABLE.splashTable TH.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.splashTable TD.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } .contentBlock A { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -450px; TEXT-DECORATION: none } .contentBlock A.collapse { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -1045px; TEXT-DECORATION: none } .contentBlock A.collapse:hover { TEXT-DECORATION: underline } .contentBlock A.hover { TEXT-DECORATION: underline } TABLE.reorderCols { MARGIN: 18px 0px 9px; WIDTH: 100%; BORDER-COLLAPSE: collapse; CLEAR: both; FONT-SIZE: 95% } TABLE.reorderCols THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #ededed; BORDER-TOP: #ccc 1px solid; CURSOR: move; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } TABLE.reorderCols THEAD TR TH.noReorderCol { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; CURSOR: default; BORDER-RIGHT: medium none } TABLE.reorderCols TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed; COLOR: #555 } TABLE.reorderCols THEAD TH SPAN.reorderToolTip { BACKGROUND: url(images/controls.png) #ddd no-repeat -347px -122px } TABLE.reorderCols THEAD TR TH.axis { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed 0px 50%; COLOR: #555 } .ghostTd { BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; FONT: 10px arial; BACKGROUND: #eee; HEIGHT: auto; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 2px } TABLE.reorderCols THEAD TH.dragging { BACKGROUND: #ccc } TABLE.reorderCols THEAD TH.hovering { BACKGROUND: #666 } TABLE.reorderCols THEAD TH.hovering IMG { DISPLAY: none } .rumble { MARGIN: 0px 0px 9px; BACKGROUND: url(images/selected_items.png) no-repeat -1974px center } .rumble_top { MARGIN: 12px 0px 0px; BACKGROUND: url(images/selected_items.png) no-repeat 12px center } #mapCanvasForm .rumble_top { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble_top { BORDER-BOTTOM: #eee 2px solid } .noBatchActions { BACKGROUND-IMAGE: none !important; PADDING-BOTTOM: 5px !important; PADDING-LEFT: 5px !important; PADDING-RIGHT: 5px !important; PADDING-TOP: 5px !important } .rumbleBuildList { MARGIN: 0px 0px 0px 18px; BORDER-TOP: #eee 2px solid } .rumbleBuildList UL LI { Z-INDEX: 1000 } .rumbleBuildListTop UL LI { Z-INDEX: 1000 } .rumble_top UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble_top UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .rumble UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .contentListPlain .rumble LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentListPlain .rumble_top LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble_top LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .selectList .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble_top LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble LI.listActionGroup A { DISPLAY: inline } .rumble_top LI.listActionGroup A { DISPLAY: inline } .paging { TEXT-ALIGN: right; FLOAT: right; CLEAR: left } .pagingprefs { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN-TOP: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 3px } .paging SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BORDER-RIGHT: #ccc 1px dotted; PADDING-TOP: 1px } .rumble_top .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .rumble .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .jumptopage INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } .jumptopage INPUT { WIDTH: 2em; FONT-WEIGHT: normal; -moz-border-radius: 0; -webkit-border-radius: 0 } .rumble_top .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .inventory_paging A { DISPLAY: inline-block } .inventory_paging IMG { DISPLAY: inline-block } .inventory_paging SPAN { DISPLAY: inline-block } .inventory_paging DIV { DISPLAY: inline-block } .jumptopage DIV { DISPLAY: inline-block } .inventory_paging A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px } .inventory_paging IMG { MARGIN: 2px 2px 3px } .inventory_paging A.inactive { FILTER: alpha(opacity=40); opacity: .4 } A.jumpToPageOpen { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } A.jumpToPageOpen:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } DIV.jumptopage INPUT#currentpage_bot { WIDTH: auto } DIV.jumptopage INPUT#currentpage_top { WIDTH: auto } INPUT#currentpage_bot { WIDTH: auto } INPUT#currentpage_top { WIDTH: auto } .jumptopage { FLOAT: right } .jumptopage DIV { MARGIN: 0px 0px 0px 3px } .jumptopage BUTTON { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; TOP: -2px; RIGHT: 0px; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .jumptopage BUTTON IMG { MARGIN: 0px } .rumble_top .secondaryControl { FLOAT: right } .rumble .secondaryControl { FLOAT: right } .key-valueTable TR { BORDER-BOTTOM: medium none } .key-valueTable TH { BORDER-BOTTOM: medium none } .key-valueTable TD { BORDER-BOTTOM: medium none } .key-valueTable TBODY { BORDER-BOTTOM: medium none } .key-valueTable TBODY TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TH { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TR:first-child TH { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TR:first-child TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TH { COLOR: #555 } .infoListWrapper .key-valueTable { MARGIN: 3px 9px 6px } TD.removeCell { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A IMG { FILTER: alpha(opacity=30); opacity: .3 } .contentList { MARGIN: -20px -30px } .buildList { MARGIN: -20px -30px } .contentListPlain { MARGIN: -20px -30px } .announcementList { MARGIN: -20px -30px } #bb-assessment-canvas .contentListPlain { MARGIN: 0px -30px } .gradingList { MARGIN: 0px -30px } .buildList#survey { MARGIN: 0px -30px } #manageFormCanvasForm .buildList { MARGIN: 0px -30px } #mapCanvasForm .buildList { MARGIN: 0px 30px } .hierarchy-page #toolSettingsForm #dataCollectionContainer { MARGIN: -10px -30px } .leftColumn-wide .contentListPlain { MARGIN: 0px } .contentList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .buildList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentListPlain > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .announcementList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPageItem { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentList > LI.read:first-child:hover { BORDER-TOP: transparent 1px solid } .buildList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentListPlain > LI:first-child { BORDER-TOP: transparent 1px solid } .announcementList > LI:first-child { BORDER-TOP: transparent 1px solid } #bb-assessment-canvas .contentListPlain > LI:first-child { BORDER-TOP-COLOR: #ccc } #bb-assessment-canvas .contentListPlain > LI { MIN-HEIGHT: 16px; PADDING-LEFT: 42px } #bb-assessment-canvas .contentListPlain > LI .item { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-assessment-canvas .contentListPlain > LI .details { PADDING-BOTTOM: 5px; PADDING-TOP: 12px } .takeQuestionDiv { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='_'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='step'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer H3.submittitle.steptitle { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } .takeQuestionDiv H3 { MARGIN: 0px } .takeQuestionDiv + H3 { PADDING-LEFT: 28px } #assessmentGradeForm #dataCollectionContainer { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .contentList > LI { MIN-HEIGHT: 50px } .buildList > LI { MIN-HEIGHT: 50px } .contentListPlain > LI { MIN-HEIGHT: 50px } .announcementList > LI { MIN-HEIGHT: 50px } .contentPageItem { MIN-HEIGHT: 50px } .liItem:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList > LI:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList LI:first-child:hover { BORDER-TOP-COLOR: #666 } .contentList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .gradingList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .liItem A[onclick*='toggleDetails'] { POSITION: relative; VISIBILITY: hidden; TOP: -6px; RIGHT: -19px } .liItem:hover A[onclick*='toggleDetails'] { VISIBILITY: visible } .liItem A[onclick*='toggleDetails'] IMG { VISIBILITY: hidden } .liItem A[title*='Hide'] { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 0px 0px } .liItem A[title*='Show'] { BACKGROUND: url(images/portlet_expand_alt_rev.png) no-repeat 0px 0px } .contentListPlain .item_icon { DISPLAY: none } .item { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; CURSOR: move; PADDING-TOP: 0px } .contentList .item { PADDING-BOTTOM: 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .gradingList .item { PADDING-RIGHT: 120px } .announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .announcementList-read .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } #announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .item:hover { CURSOR: move } .item:focus { CURSOR: move } .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .announcementList-read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .contentList-slim .read .item { PADDING-LEFT: 48px } .read .item:hover { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .read .item:focus { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .tab-groups H3.item { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 8px; MARGIN: 0px 11em 8px -12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tab-groups H3.item .reorder + SPAN { FONT-STYLE: italic; MARGIN: 0px 4px 0px 0px; FONT-FAMILY: Georgia; COLOR: #999; FONT-SIZE: 90%; FONT-WEIGHT: normal } .item_icon { POSITION: absolute; MARGIN: 0px; TOP: 12px; LEFT: 24px } .read .item_icon { MARGIN: 0px; LEFT: 18px } .item H3 { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item .contextMenuContainer { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item H3 + .contextMenuContainer { POSITION: relative; TOP: 2px } .tab-groups .item .contextMenuContainer { FLOAT: none } .item INPUT[type=checkbox] { MARGIN: 2px 6px 0px -6px; FLOAT: left } .iconsOnly { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 24px auto; WIDTH: 80% } .iconsOnly LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 0px; FLOAT: left !important; PADDING-TOP: 0px } .iconsOnly > LI:first-child { BORDER-TOP-COLOR: #ccc } .iconsOnly .read { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconsOnly .item_icon { PADDING-BOTTOM: 0px; MIN-HEIGHT: 50px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 12px; LEFT: auto } .iconsOnly .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MIN-HEIGHT: 3em; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .iconsOnly .read .item { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .iconsOnly .item H3 { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly .item .contextMenuContainer { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly LI:hover .item_icon { BACKGROUND: #ededed } .iconsOnly LI:hover .item { BACKGROUND: #ededed } .iconsOnly LI:focus .item_icon { BACKGROUND: #ededed } .iconsOnly LI:focus .item { BACKGROUND: #ededed } .iconsOnly .read .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .read .item_icon { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read:hover .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:hover .item { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item { BACKGROUND: none transparent scroll repeat 0% 0% } .buildList LI INPUT { MARGIN: 2px 8px; FLOAT: left } .buildList INPUT.browse { MARGIN: 0px 0px 6px } .buildList INPUT.genericButton { MARGIN: 0px 0px 6px } .buildList INPUT[type=button] { MARGIN: 0px 0px 6px } .contentListRight { POSITION: absolute; RIGHT: 6px; FONT-WEIGHT: normal; LEFT: auto } .pagedContentListRight { TOP: 4px } .contentListRightOffset { MARGIN-RIGHT: 12em } .contentList .details { PADDING-LEFT: 60px } .contentListPlain .contentListRight + .details { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; PADDING-LEFT: 28px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } .announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } #announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } .contentList-slim .read .details { MARGIN-LEFT: 48px } .staffInfoList .details { MARGIN-RIGHT: 160px } .staffInfoList .hasPhoto .details { MIN-HEIGHT: 135px } .details > P { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .details .note { FONT-WEIGHT: bold } .details > P.important { PADDING-BOTTOM: 0px; MARGIN: 3px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .details > P.important SPAN { COLOR: #888; FONT-WEIGHT: normal } .itemDetails { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .itemDetails P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .announcementInfo P SPAN { COLOR: #999 } .announcementInfo SPAN { COLOR: #999 } .itemDetails SPAN { COLOR: #999 } .announcementInfo P SPAN SPAN { FONT-SIZE: 95% !important } .noItems { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } .additional + P .warnFont { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } #listContainer .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .additional + P .warnFont { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { TEXT-ALIGN: center; PADDING-TOP: 100px } .hierarchy-page .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { MARGIN: 0px auto; DISPLAY: block } .additional + P .warnFont { DISPLAY: block; PADDING-TOP: 100px } .details .attachments { WORD-WRAP: break-word; MARGIN-BOTTOM: 9px; WORD-BREAK: normal } .buildList > LI.separator { Z-INDEX: 0; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; MIN-HEIGHT: 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #ededed; TOP: 0px; PADDING-TOP: 14px; LEFT: 0px } .separator H3.item { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .external-breadcrumbs .receipt { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .separator .line { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: relative; MARGIN: 0px 24px 0px 30px; TOP: 6px; LEFT: 0px } .separator .text { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .external-breadcrumbs .receipt { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .buildList .detailList .hidden { DISPLAY: none } .buildList .detailList .tagContainer { POSITION: relative } .buildList .detailList .tagContainer .hidden { DISPLAY: none } .buildList .detailList .tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer .newTagForm { BORDER-LEFT: #999 1px dotted; MARGIN-LEFT: 6px } .tagContainer .newTagForm LABEL { PADDING-LEFT: 6px } .currentTags { Z-INDEX: 100; POSITION: absolute; LINE-HEIGHT: 1.8; WIDTH: 16em; ZOOM: 1; DISPLAY: none; OVERFLOW: hidden; TOP: 1.2em; RIGHT: 0px } .currentTags SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 18px } .currentTags A { FONT-WEIGHT: bold } .currentTags A.closeCloud { POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 1px; LINE-HEIGHT: 1; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; TOP: 0px; PADDING-TOP: 0px; LEFT: 0px } .auto_complete { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; WIDTH: 12em; BACKGROUND: #e2eefe; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid } .auto_complete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .auto_complete UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3%; WIDTH: 96%; PADDING-RIGHT: 1%; OVERFLOW: hidden; CURSOR: pointer; PADDING-TOP: 2px } .auto_complete UL LI.selected { BACKGROUND-COLOR: #fff } .auto_complete UL STRONG.highlight { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .freq1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 90%; PADDING-TOP: 0px } .freq2 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 105%; PADDING-TOP: 0px } .freq3 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 120%; PADDING-TOP: 0px } .freq4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 135%; PADDING-TOP: 0px } .freq5 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 150%; PADDING-TOP: 0px } .freq6 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 165%; PADDING-TOP: 0px } .freq1:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq2:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq3:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq4:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq5:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq6:hover { BACKGROUND: white; TEXT-DECORATION: none } .currentTags A.tagDisabled { FILTER: alpha(opacity=70); FONT-WEIGHT: normal; TEXT-DECORATION: none; opacity: .7 } .currentTags A.tagDisabled:hover { BACKGROUND: none transparent scroll repeat 0% 0% } .tab-groups .tab-group-label { FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #999 } .subList { MARGIN: 3px 0px 6px } .subList-reorder { MARGIN: 3px 0px 6px } .subList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .buildList .detailList { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .subList-reorder LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 6px } .subList-reorder LI:hover { BORDER-BOTTOM-COLOR: #bbb !important; BORDER-TOP-COLOR: #bbb !important; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #bbb !important; BORDER-LEFT-COLOR: #bbb !important } .subList LI A IMG { VERTICAL-ALIGN: middle } .subList-reorder LI A IMG { VERTICAL-ALIGN: middle } .subList LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList-reorder LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList LI P { VISIBILITY: hidden } .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .buildList .detailList LI .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder .itemDetails { DISPLAY: none } .subList-reorder .details { DISPLAY: none } .subList .details { DISPLAY: none } .itemDetails + .details { OVERFLOW: visible; MARGIN-RIGHT: 13em } .subList LI P SPAN { FONT-WEIGHT: bold } .subListArtifact { CLEAR: both } .detailList .subListArtifact { CLEAR: both } .subListArtifact LI { POSITION: static } .detailList .subListArtifact LI { POSITION: static } .detailList .subListArtifact { ZOOM: 1 } .detailList .subListArtifact LI { ZOOM: 1 } .detailList .subListArtifact LI A { ZOOM: 1 } .buildList .detailList { MARGIN: 0px 0px 0.6em 0.7em } .buildList .detailList .subList { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.buildList UL.detailList OL.subList { LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: decimal } UL.buildList UL.detailList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 0.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: table-row; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } UL.buildList UL.detailList LI SPAN { WIDTH: 135px; DISPLAY: block; FLOAT: left; FONT-WEIGHT: bold } UL.buildList UL LI > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; WIDTH: 79%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: 135px; PADDING-TOP: 0px } UL.buildList UL LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } UL.noimg LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } .buildList .pageBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } .buildList .sectionBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } DIV.itemHeaderControl { POSITION: absolute; TOP: 9px; RIGHT: 14.5em } DIV.itemHeaderControl A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.cartMode { PADDING-BOTTOM: 49px } .addedRow { COLOR: #999 } TABLE.sortable TBODY TR.addedRow TH LABEL A { COLOR: #999 } .addedRow TD A { COLOR: #999 } .addedRow { } .addedRow IMG { FILTER: alpha(opacity=50); opacity: .5 } TABLE#datatable2 TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 THEAD TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .itemSelector { MARGIN: 0px auto; WIDTH: 20px; HEIGHT: 20px } .itemSelector INPUT { FILTER: alpha(opacity=0); opacity: 0 } .available { BACKGROUND: url(../../../images/ci/ng/available_ti.png) no-repeat 0px 0px } .inprogress { BACKGROUND: url(../../../images/ci/ng/progress.png) red no-repeat 0px 0px } .remove { BACKGROUND: url(../../../images/ci/ng/remove_ti.png) no-repeat 0px 0px } .itemTray { Z-INDEX: 10000; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 18px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .picker .itemTray { RIGHT: 12px; LEFT: 12px } DIV.itemTrayContentPane { LEFT: 200px } DIV.itemTrayContentPaneWide { LEFT: 0px } .itemTray H2 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H3 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H2 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H3 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H2 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H3 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H2 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray H3 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray DIV.noItems { TEXT-ALIGN: center; COLOR: #777 } .itemTray #cartList { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .itemTray #selectedItemsWrapper { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #777; PADDING-TOP: 4px } .itemTray .cartTableWrapper { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; OVERFLOW-Y: auto; BACKGROUND: #fff; MAX-HEIGHT: 130px; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .sideTOC .cartTableWrapper { OVERFLOW: auto } #count { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .itemTray #numberOfElements { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #progress { Z-INDEX: 300; POSITION: absolute; MARGIN: 300px 50%; WIDTH: 100px; DISPLAY: none } #progress DIV { MARGIN-LEFT: -100% } #cartSubmit { Z-INDEX: 200 } #cartList FIELDSET { PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #f6f6f6; PADDING-TOP: 3px } #cartList FIELDSET UL LI INPUT[type=text] { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 2.3em; PADDING-RIGHT: 0px; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 0px } .itemGallery { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .itemGallery > LI { TEXT-ALIGN: center; MARGIN: 5px 5px 20px; WIDTH: 1.2em; ZOOM: 1; VERTICAL-ALIGN: top; PADDING-TOP: 0.06em; _height: 130px } .itemGallery .stackFix { WIDTH: 100%; HEIGHT: auto } .itemIconHolder { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px auto 0.05em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 1em; PADDING-TOP: 0px } .itemIconHolder A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; ZOOM: 1; DISPLAY: block; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .itemIconHolder A:hover { BORDER-BOTTOM-COLOR: #777; BORDER-TOP-COLOR: #777; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777 } .itemIconWrapper { BORDER-BOTTOM: #f1f1f1 0.02em solid; POSITION: absolute; BORDER-LEFT: #f1f1f1 0.02em solid; MARGIN: 0px 50%; WIDTH: auto; BOTTOM: 0px; BORDER-TOP: #f1f1f1 0.02em solid; BORDER-RIGHT: #f1f1f1 0.02em solid } .x-small LI { WIDTH: 1.8em; FONT-SIZE: 70px } .small LI { FONT-SIZE: 100px } .normal LI { FONT-SIZE: 140px } .large LI { FONT-SIZE: 180px } .x-large LI { FONT-SIZE: 220px } .u_resetFont-px { FONT-SIZE: 12px } .itemIconLink-vertical A { WIDTH: 0.78em; HEIGHT: 0.9em } .itemIconLink-square A { WIDTH: 0.78em; HEIGHT: 0.78em } .itemIconLink-horizontal A { WIDTH: 1em; HEIGHT: 0.78em } .itemIconLink-vertical IMG { WIDTH: 0.8em; HEIGHT: 0.9em; VERTICAL-ALIGN: top } .itemIconLink-square IMG { WIDTH: 0.8em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-horizontal IMG { WIDTH: 1em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-vertical .itemIconWrapper { LEFT: -0.39em } .itemIconLink-square .itemIconWrapper { LEFT: -0.39em } .itemIconLink-horizontal .itemIconWrapper { LEFT: -0.5em } .itemInfo { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-SIZE: 12px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.2em } .itemInfo LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; LINE-HEIGHT: 1.25em; MARGIN: 0px; WIDTH: 100%; FONT-SIZE: 95%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .itemInfo LI SPAN { VERTICAL-ALIGN: top } .itemInfo LI .label { TEXT-ALIGN: right } .itemInfo .cmimg { WIDTH: 18px } .itemInfo .cmimg IMG { WIDTH: 18px } .itemInfo .title { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .itemInfo INPUT[type='text'] { WIDTH: 100% } .itemInfo .high { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; BACKGROUND: #fff1c5; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .lb-content .itemInfo { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 3px } .lb-content .itemInfo LI { LINE-HEIGHT: 1.45em } .lb-content .itemInfo .title { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .iconGallery > LI { MARGIN: 5px 5px 12px; WIDTH: 75px } .iconGallery .itemIconHolder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; HEIGHT: 60px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemIconHolder A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemTitle { COLOR: #666; FONT-SIZE: 85% } .iconGallery .itemIconWrapper { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: auto; PADDING-RIGHT: 4px; BACKGROUND: #fff; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px; LEFT: -30px } .sideTOC_panelMin .container { POSITION: static !important } .sideTOC_panel .container { POSITION: static !important } .sideTOC_panelMax .container { POSITION: static !important } .tocWrapper { Z-INDEX: 200; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 0px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .tocHidden { TOP: -10000px !important } .tocHead { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #333; PADDING-TOP: 10px } .tocHead H2 { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .tocActions { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .sideTOC H2 { FLOAT: none !important; FONT-SIZE: 110%; text-shadow: 0 1px 0 #f0f0f0 } .tocActions { WHITE-SPACE: nowrap } .tocActions A { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions SPAN { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions > IMG { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .actionBar .tocNavText { PADDING-BOTTOM: 13px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; COLOR: #eee; PADDING-TOP: 13px } .actionBar .tocNavText + A { MARGIN-RIGHT: 12px } .actionBar .tocNavText + IMG { MARGIN-RIGHT: 12px } .tocActions SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .tocTreeWrapper { PADDING-BOTTOM: 0px; OVERFLOW-Y: auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .sideTOC .tocTreeWrapper { OVERFLOW: auto } UL#tocTree LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL#tocTree A.itemActive { FONT-WEIGHT: bold; TEXT-DECORATION: none } UL#tocTree SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; COLOR: #555; PADDING-TOP: 0px } .treeNodeIcon { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .sideTOC { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 200px; BOTTOM: auto; PADDING-RIGHT: 0px; BACKGROUND: #ddd; BORDER-TOP: #aaa 1px solid; TOP: 0px; RIGHT: auto; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -2px 0 2px rgba(0, 0, 0, .2) inset, 0px 3px 2px #ddd inset, 0px -3px 2px #ddd inset; -webkit-box-shadow: none; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: none } .sideTOCMinimize { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 9px !important; BOTTOM: auto; PADDING-RIGHT: 0px; BORDER-TOP: medium none; TOP: 0px; RIGHT: auto; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } .sideTOCMinimize .tocActions { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 1px; LEFT: -24px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .sideTOCMinimize .tocActions A { MARGIN: -1px 0px 0px; DISPLAY: block } .tocBottom_pullExpanded { LEFT: 228px } .tocBottom_pullCollapsed { LEFT: 18px } .tocSide_pullExpanded { TOP: 4px; LEFT: 222px } .tocSide_pullCollapsed { LEFT: 13px } .sideTOC_panel { PADDING-LEFT: 201px } .sideTOC_panelMin { PADDING-LEFT: 21px } .sideTOC_panelMax { PADDING-LEFT: 351px } .tocBottom_min { PADDING-BOTTOM: 30px } .tocBottom_max { PADDING-BOTTOM: 330px } .tocBottom_open { PADDING-BOTTOM: 160px } .tocBottom_open .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_max .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_min .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panel .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMax .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMin .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .localViewToggle { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .localViewToggle UL { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .localViewToggle UL LI { FLOAT: right } .localViewToggle UL LI.active { POSITION: relative } .localViewToggle A { PADDING-BOTTOM: 7px; TEXT-TRANSFORM: inherit; MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; DISPLAY: block; FONT-SIZE: 90%; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .localViewToggle A:hover { TEXT-DECORATION: underline } .localViewToggle .active A:hover { TEXT-DECORATION: none } .localViewToggle A.active { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } DIV.localViewToggle H2 { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } .localViewToggle A.active:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } DIV.localViewToggle H2:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .localViewToggle .separator { BORDER-LEFT: #d7bb66 1px dotted; PADDING-LEFT: 6px; MARGIN-LEFT: 6px } .localViewToggle A.miniComboButton { BORDER-BOTTOM: #d7bb66 1px solid; BORDER-LEFT: #d7bb66 1px solid; PADDING-RIGHT: 16px; BACKGROUND: url(images/controls.png) #f5e7bd no-repeat -1px -500px; COLOR: #444; BORDER-TOP: #d7bb66 1px solid; BORDER-RIGHT: #d7bb66 1px solid; TEXT-DECORATION: none !important } .containerTabs { MARGIN: 6px 24px 0px; FONT-SIZE: 100% } .containerTabs LI { POSITION: relative; FLOAT: left } .containerTabs LI A { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI H3 { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs LI H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs .active A { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:hover { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:focus { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active H3 { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .active H3:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .tabhead H3 { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 18px; COLOR: #555; PADDING-TOP: 9px } .collapseTabs .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #d1eaef } .collapseTabs .containerTabs .active A:before { CONTENT: none } .portlet .containerTabs { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 8px } .portlet .containerTabs LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .containerTabs LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } .portlet .containerTabs .active A { MARGIN: 0px } .collapseTabs .containerTabs { MARGIN: 0px } .portlet .containerTabs .active A:before { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:after { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:before { BORDER-BOTTOM-COLOR: #ddd } .portlet .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #fff4bf; BOTTOM: -1px } .mapTabs { POSITION: relative; MARGIN: 20px -30px 0px; BACKGROUND: #d1eaef; CLEAR: both; BORDER-TOP: #aaa 1px solid; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .lesson-plan-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { BORDER-BOTTOM: #bbb 1px solid } .evidence-page .mapTabs LI:before { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:after { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:before { Z-INDEX: 100; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #bbb 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 1px } .evidence-page .mapTabs LI.active + LI:after { BORDER-LEFT-COLOR: #eaeaea } .evidence-page .mapTabs LI:first-child:before { DISPLAY: none } .evidence-page .mapTabs LI:first-child:after { DISPLAY: none } .evidence-page .mapTabs LI A { PADDING-LEFT: 30px } .evidence-page .mapTabs LI.active H3 { PADDING-LEFT: 30px } .mapTabs UL { MARGIN-TOP: 0px; MARGIN-LEFT: 0px } DIV.mapTabs UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mapTabs UL LI.active H3 { POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; BACKGROUND: #eaeaea; FONT-SIZE: 100%; PADDING-TOP: 14px } .mapTabs UL LI.active H3:before { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #eaeaea; BOTTOM: -1px } .mapTabs UL LI.active:first-child H3:after { MARGIN-LEFT: 0px } .mapTabs UL LI.active:first-child H3:before { MARGIN-LEFT: 0px } .lesson-plan-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .hierarchy-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .lesson-plan-page .mapTabs UL LI.active H3:before { DISPLAY: none } .hierarchy-page .mapTabs UL LI.active H3:before { DISPLAY: none } .evidence-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #fff } .mapTabs UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; COLOR: #01869e; FONT-SIZE: 100%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .mapTabs UL LI A:hover { TEXT-DECORATION: underline } .mapTabs UL LI SPAN:hover { BORDER-BOTTOM-STYLE: solid } .mapTabs A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs LI:first-child A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 54px; BACKGROUND-POSITION: 30px 50% } .mapTabs UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI:first-child H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI DIV { PADDING-BOTTOM: 7px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: none; PADDING-TOP: 7px } .mapTabs UL LI.saveTab A { DISPLAY: none } UL.containerTabs LI.saveTab IMG { DISPLAY: none } .mapTabs UL LI.saveFadeIn { FILTER: alpha(opacity=0); opacity: 0 } .mapTabs UL LI.saveTab DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/tab_receipt_back.gif) #44b10e repeat-x center bottom; COLOR: white; FONT-WEIGHT: bold; PADDING-TOP: 5px } DIV.mapHelp { PADDING-BOTTOM: 0px; MARGIN: -1px 0px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff1c5; PADDING-TOP: 4px } UL.setStatus { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 3px; LIST-STYLE-TYPE: none; MARGIN: 15px 0px 9px 30px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #eee 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 3px } UL.setStatus LI { MARGIN: 0px 6px 0px 0px; FONT-SIZE: 95% } UL.setStatus LI INPUT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.setStatus LI LABEL { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 1px 0px } UL.setStatus LI LABEL.complete { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_complete.gif) no-repeat 1px 0px } FORM.mapCanvasForm DIV.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } FORM.mapCanvasForm H3.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } .mapTabs .containerTabs { BORDER-BOTTOM: 0px } #mapCanvasForm { MARGIN: 0px -30px } #mapCanvasForm #containerDiv { MARGIN: 20px 0px } .evidence-page .infoListWrapper H3 A.itemHead { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .infoListWrapper H3 A.itemHeadOpen { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .leftColumn-narrow { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f9f9f9; MARGIN: 0px; PADDING-LEFT: 6px; WIDTH: 26%; PADDING-RIGHT: 6px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; border-radius: 3px 3px 3px 3px } .evidence-page .leftColumn-wide { WIDTH: 69% } .sessionBox { WIDTH: 95% } .sessionBox .key-valueTable { } .sessionBox .key-valueTable TBODY TD { PADDING-RIGHT: 40px } .sessionBox .key-valueTable TBODY TH { PADDING-RIGHT: 40px } .evidence-page .criteriaSummary { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; MARGIN: 0px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 12px } .evidence-page .paletteItems LI { MARGIN-LEFT: 0px } .paneTabs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: -12px 0px 12px; ZOOM: 1; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .subtabs-framed .paneTabs { -moz-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -webkit-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; border-radius: 0 } .paneTabs UL { CLEAR: both } .paneTabs UL LI { Z-INDEX: 200; POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs .active { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs A { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 12px } .paneTabs UL LI:first-child A { BORDER-LEFT: 0px } .paneTabs A:hover { TEXT-DECORATION: underline } .paneTabs .active A:hover { TEXT-DECORATION: none } .paneTabs .active A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:focus { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active H3 { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:after { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #ccc 8px solid; BOTTOM: 0px } .paneTabs .active A:after { BOTTOM: -1px } .paneTabs .activepersonal A { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .activepersonal A:hover { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .personal A { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dedede; TEXT-DECORATION: none; PADDING-TOP: 3px } .paneTabs .external A { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #dedede no-repeat 2px center } .paneTabs .external A:hover { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #fff1c5 no-repeat 2px center } .paneTabs .activepersonal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs .personal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs A.paneTabOptions { DISPLAY: none } .paneTabs .activepersonal:hover A.paneTabOptions { FILTER: alpha(opacity=100); opacity: 1 } .paneTabs A.hiddenTabsLink { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center 6px } .paneTabs A.hiddenTabsLink IMG { FILTER: alpha(opacity=0); WIDTH: 2px; HEIGHT: 2px; opacity: 0 } .panelTabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .panelTabs LI { BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FLOAT: right; TOP: 2px !important; RIGHT: -3px; PADDING-TOP: 0px !important } .panelTabs LI.active { Z-INDEX: 2 } .panelTabs LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI.active A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI A:hover { BACKGROUND-COLOR: #f6f6f6 } .panelTabs LI.active A { BORDER-BOTTOM: 0px; COLOR: #333; FONT-WEIGHT: bold } .panelTabs LI.active A.preview { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 2px solid; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .panelTabs LI.active A.edit { BORDER-BOTTOM: 0px; MARGIN: 0px } .collapseTabs { MARGIN-BOTTOM: 12px } .collapseTabsData { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; BACKGROUND: #d1eaef; PADDING-TOP: 12px; -moz-border-radius: 3px } .containerTabsCollapsed { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .collapseTabs LI A { TEXT-DECORATION: underline } .collapseTabs LI.active { Z-INDEX: 1000 } .sequenceMapHead { MARGIN: 6px 0px } .sequenceMapHead H3 { MARGIN: 12px 0px 6px } .sequenceMapHead P { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 0px } DIV.sequenceMapHead DIV.actionBar { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #fff7de; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.searchResultList-sortOptions { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: right; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; MIN-HEIGHT: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 15px; PADDING-TOP: 10px } DIV.searchResultList-sortOptionsCount { WIDTH: auto; FLOAT: left } DIV.dropzone { BORDER-BOTTOM: #aaa 2px dashed; BORDER-LEFT: #aaa 2px dashed; BORDER-TOP: #aaa 2px dashed; BORDER-RIGHT: #aaa 2px dashed; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -moz-border-radius: 3px; -webkit-border-radius: 3px } .container DIV.dropzone { TOP: 3px !important } .modalOverlay { Z-INDEX: 90; POSITION: fixed; FILTER: alpha(opacity=1); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .01 } .cmdiv { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .menumini { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.quickAddPal { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.keyboardAccess { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .nav .sub UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .gb_currView.nav .sub > UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .menumini UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .keyboardAccess { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } SPAN.currentTags { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea-slim { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .previewArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .jumptopage { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .bcContent .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI IMG + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } DIV.treeContainer UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #learningUnitToc UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #loginLang UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .actionBar .mainButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .secondaryButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBarMicro .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton:first-child .flyout { MARGIN: 0px 0px 0px -2px } DIV.calPicker.quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI IMG + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } DIV.treeContainer UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } #learningUnitToc UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.nestedList { -moz-box-shadow: none; -webkit-box-shadow: none } .liveArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } .previewArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } #addFolderForm { MARGIN: 0px -30px } UL.tree LI A + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI IMG + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } DIV.treeContainer UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #learningUnitToc UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .builderItem .liveArea { Z-INDEX: 100; POSITION: absolute; TOP: 12px; LEFT: 22px } .previewArea { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; MARGIN-TOP: 0px; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .jumptopage { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 8px } .jumptopage LABEL { FONT-SIZE: 90% } .liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.secondaryButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { OVERFLOW: hidden } .actionBar UL LI.secondaryButton A.liveAreaTab { OVERFLOW: hidden } .liveArea-slim { PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 3px } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .columnActions .nav .sub UL { MARGIN-TOP: 0px } .nav .sub UL { POSITION: absolute; DISPLAY: none } .nav .sub .flyout { POSITION: absolute; DISPLAY: none } .nav .sub UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .nav .sub UL UL { DISPLAY: block } .nav .sub .flyout UL { DISPLAY: block } .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .nav .sub:hover .flyout { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { TOP: 18px } .rumble_top .nav .sub:hover UL { TOP: 18px } .rumble .nav .sub:hover UL { TOP: 18px } .quickAddPal { WIDTH: auto } .quickAddColor { WIDTH: 311px } .quickAddColor A.genericButton { MARGIN: 2px 0px; FLOAT: left } .cmdiv { Z-INDEX: 1150 !important; BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .cmdiv UL { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; WIDTH: 180px; PADDING-RIGHT: 4px; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 3px } .cmdiv UL:first-child { BORDER-TOP: medium none } .menumini UL:first-child { BORDER-TOP: medium none } .cmdiv UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .menumini UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .nav .sub UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .menumini A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } #loginLang UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: auto; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .nav .sub UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .nav LI.sub UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .actionBarMicro .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .actionBarMicro .nav LI.sub UL LI A:focus { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:focus { BACKGROUND-IMAGE: none } .nav LI.sub UL LI A:focus { BACKGROUND-COLOR: #fff !important } .cmdiv A:focus { BACKGROUND-COLOR: #fff !important } .menumini A:focus { BACKGROUND-COLOR: #fff !important } .nav .sub UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .paneTabs .nav .sub UL LI A { TEXT-ALIGN: left } .timediv UL LI A:hover { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { BACKGROUND-COLOR: #369; COLOR: #444 } .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; LEFT: 0px } .topTabs-compact .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; RIGHT: 0px; LEFT: auto } .cmdiv LI.contextmenubar_top { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .menumini LI.contextmenubar { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-border-radius: 0; -webkit-border-radius: 0 } .quickAddPal H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .keyboardAccess H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .quickAddPalHeader { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .comText .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .e_expandArea .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess P.paletteHelp { BORDER-BOTTOM: #fc0 1px solid; BORDER-LEFT: #fc0 1px solid; PADDING-BOTTOM: 3px; MARGIN: 6px 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; WHITE-SPACE: normal; BACKGROUND: #fff1c5; FONT-SIZE: 90%; BORDER-TOP: #fc0 1px solid; BORDER-RIGHT: #fc0 1px solid; PADDING-TOP: 3px } .bcMenuDiv-1 { WIDTH: 190px } .bcMenuDiv-2 { WIDTH: 380px } .bcMenuDiv-3 { WIDTH: 570px } .bcMenuDiv-4 { WIDTH: 760px } .bcMenuDiv-5 { WIDTH: 950px } .flyout { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 12px !important; PADDING-RIGHT: 12px !important; PADDING-TOP: 9px !important } .nav .sub .flyout DIV { POSITION: static; PADDING-BOTTOM: 6px; MARGIN: 0px; MIN-HEIGHT: 1px; FLOAT: left } .flyout H3 { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 95% Georgia, serif; LETTER-SPACING: 2px; PADDING-TOP: 0px } .flyout H3 .line { HEIGHT: 1px; BORDER-TOP: #ccc 1px solid } .flyout H3 .text { BACKGROUND: #d1eaef } .nav .sub .flyout UL { Z-INDEX: 1000; BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted; BORDER-RIGHT: 0px; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .nav .sub .flyout DIV H3 + UL { BORDER-TOP: 0px } .nav .sub .flyout DIV UL:first-child { BORDER-TOP: 0px } .nav .sub .flyout A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .quickAddPal .colorlist { MARGIN: 6px 0px 9px 6px; WIDTH: 288px } .quickAddPal .stepcontent .colorlist LI { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 14px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 14px; OVERFLOW: hidden; BORDER-TOP: #333 1px solid; CURSOR: pointer; BORDER-RIGHT: #333 1px solid; PADDING-TOP: 0px } .quickAddPal .colorlist LI A { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:link { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: 12px; HEIGHT: 12px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .quickAddPal .colorlist LI A:active { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A:focus { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:active { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:focus { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorPreview { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: white; PADDING-TOP: 3px } .quickAddPal .colorPreview IMG { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #444 1px solid; MARGIN: 3px; WIDTH: 42px; DISPLAY: block; BACKGROUND: black; FLOAT: left; HEIGHT: 42px; BORDER-TOP: #444 1px solid; BORDER-RIGHT: #444 1px solid } .quickAddPal .colorPreview DIV { WIDTH: 66%; FLOAT: left; MARGIN-LEFT: 3px } .quickAddPal .colorPreview SPAN { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 0px } SPAN.title_color_name { COLOR: #666 } .receipt { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .warning { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .inlineDialog { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .contentPaneWide.tabbedPane .receipt { Z-INDEX: 201; BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; PADDING-BOTTOM: 12px; MARGIN: -12px 0px 10px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .contentPane .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .contentPaneWide .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .container .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px; box-shadow: none } .receipt ~ #editmodeWrapper { Z-INDEX: 1; POSITION: relative } .receipt ~ .contentBox { Z-INDEX: 1; POSITION: relative } .sideTOC_panel .receipt ~ #editmodeWrapper { POSITION: static } .sideTOC_panel .receipt { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .tabbedPane .receipt A.close IMG { DISPLAY: none } .contentPane .receipt A.close IMG { DISPLAY: none } .contentPaneWide .receipt A.close IMG { DISPLAY: none } A.closeCopyright IMG { DISPLAY: none } .tabbedPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPaneWide .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .receipt A.close:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { } .receipt A.close:hover:before { COLOR: #fff } A.closeCopyright:hover:before { COLOR: #fff } .inlineDialog { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .inlineReceipt { POSITION: absolute; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .miniReceipt { Z-INDEX: 300; BORDER-BOTTOM: #bbb 1px solid; POSITION: absolute; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .bad { COLOR: #fff; FONT-WEIGHT: bold } .good { COLOR: #fff; FONT-WEIGHT: bold } .removing { COLOR: #fff; FONT-WEIGHT: bold } .adding { COLOR: #fff; FONT-WEIGHT: bold } .infoReceipt { COLOR: #fff; FONT-WEIGHT: bold } .brokenFileLink { COLOR: #fff; FONT-WEIGHT: bold } .portlet SPAN.warning.due { COLOR: #fff; FONT-WEIGHT: bold } .good A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .removing { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .brokenFileLink { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .portlet SPAN.warning.due { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .container .warningReceipt { PADDING-RIGHT: 24px } .warningReceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.areceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.close:before { } .contentPane .warningReceipt A.close { TOP: 5px; RIGHT: 5px } .warningReceipt A.close:hover:before { } .good { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .adding { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .infoReceipt { BORDER-BOTTOM-COLOR: #62758f; BORDER-TOP-COLOR: #62758f; BACKGROUND: #6d8aaf; BORDER-RIGHT-COLOR: #62758f; BORDER-LEFT-COLOR: #62758f } .attention { BORDER-BOTTOM-COLOR: #fc3; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #fc3; MARGIN: 0px 0px 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff4bf; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; BORDER-LEFT-WIDTH: 2px; FONT-WEIGHT: normal; PADDING-TOP: 4px } .removing { FONT-WEIGHT: normal } .adding { FONT-WEIGHT: normal } .brokenFileLink { FONT-WEIGHT: normal } .portlet SPAN.warning.due { FONT-WEIGHT: normal } .brokenFileLink { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet SPAN.warning.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .infoBox { BORDER-BOTTOM: #afdf61 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #afdf61 1px solid; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #afdf61 1px solid; BORDER-RIGHT: #afdf61 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .infoBox > .message { DISPLAY: block; MARGIN-BOTTOM: 4px } .info-ok { BORDER-BOTTOM-COLOR: #afdf61; BORDER-TOP-COLOR: #afdf61; BACKGROUND: #d9efa4; COLOR: #360; BORDER-RIGHT-COLOR: #afdf61; BORDER-LEFT-COLOR: #afdf61 } .nestedReceipt { Z-INDEX: 1001; PADDING-BOTTOM: 12px !important; MARGIN: 0px 20% 6px 0px; PADDING-LEFT: 12px !important; PADDING-RIGHT: 30px !important; PADDING-TOP: 6px !important } [id*='receipt_nested'].receipt { PADDING-RIGHT: 28px } .columnMsgWrapper { MARGIN-LEFT: 60% } .columnMsgWrapper .column-2 { MIN-HEIGHT: 1px } .smsIssue { POSITION: relative; MARGIN: 3px 3px 9px } .t2vIssue { POSITION: relative; MARGIN: 3px 3px 9px } .bubbleStem-bottom-center { BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: transparent 10px solid; WIDTH: 0px; BOTTOM: -12px; HEIGHT: 0px; MARGIN-LEFT: -8px; BORDER-TOP: #fc3 12px solid; BORDER-RIGHT: transparent 10px solid; LEFT: 50% } .nextStepsReceipt { BACKGROUND-IMAGE: url(images/reorder_bg.png); POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4; BACKGROUND-COLOR: #eee; MARGIN: 10px -30px -20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #545454; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3) } .nextStepsText { PADDING-BOTTOM: 18px; MARGIN: 0px 0px 0px 20px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fefefe; PADDING-TOP: 18px } .nextStepsText H5 { MIN-WIDTH: 6em; LINE-HEIGHT: 2em; DISPLAY: inline-block; COLOR: #545454; text-shadow: 1px 1px 1px #fff } .receiptCollapsed { POSITION: relative; FONT-SIZE: 90% } .external-breadcrumbs .receipt { BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; BORDER-TOP: 0px; TOP: -9px; BORDER-RIGHT: 0px; box-shadow: none } .stepcontent LI.fieldError { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; BACKGROUND: #fff1c5; PADDING-TOP: 2px } .stepcontent LI.fieldError .fieldErrorText { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { DISPLAY: inline; MARGIN-LEFT: 0px } .criteriaSummary { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px -28px 0px 0px; PADDING-LEFT: 12px; BACKGROUND: #f9f9f9 } #bb-question-discover H2 { FONT-SIZE: 110% } #filterContainer H2 { MARGIN-LEFT: 14px } #filterContainer .columnActions { MARGIN-LEFT: 14px } .criteriaSummary H3 { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .criteriaSummary .hidden { DISPLAY: none; VISIBILITY: hidden } .criteriaSummary UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .criteriaSummary UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FLOAT: left; FONT-SIZE: 90%; PADDING-TOP: 3px; border-radius: 12px } .criteriaSummary UL LI:first-child { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG { MARGIN: 0px; DISPLAY: block; FLOAT: left; COLOR: #aaa; FONT-WEIGHT: normal } .receipt-highlight { BACKGROUND: #fff4bf; box-shadow: 0 0 4px #fff } .receipt-default { BACKGROUND: none transparent scroll repeat 0% 0%; box-shadow: none } .criteriaSummary UL LI STRONG:before { POSITION: relative; LINE-HEIGHT: 1; COLOR: #aaa; FONT-SIZE: 120%; CONTENT: "+"; FONT-WEIGHT: bold; LEFT: -2px } .criteriaSummary UL LI SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI A { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI SPAN { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG + SPAN { MARGIN-LEFT: 3px } .criteriaSummary UL LI A { PADDING-RIGHT: 18px; BACKGROUND: url(../../../images/ci/icons/delete_li.gif) #eee no-repeat 96% 2px; TEXT-DECORATION: none } .search-element { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 18px; PADDING-LEFT: 9px; PADDING-RIGHT: 3px; BACKGROUND: #f9f9f9; PADDING-TOP: 18px } .search-element H2 { LINE-HEIGHT: 1; MARGIN: 0px; WIDTH: 0px; DISPLAY: inline-block; HEIGHT: 22px; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; OVERFLOW: hidden; FONT-WEIGHT: normal } .search-element H2:before { POSITION: relative; MARGIN: 0px 3px 6px 0px; FONT: 17px/1 "Utilicons"; COLOR: #aaa; VERTICAL-ALIGN: middle; CONTENT: "F"; TOP: 2px } .search-element INPUT[type='text'] { WIDTH: 60%; -moz-appearance: searchfield; -webkit-appearance: searchfield } .calPicker { Z-INDEX: 1500 !important } .calPicker .calHead { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .calPicker H3 { BORDER-BOTTOM: medium none; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 40px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .calPicker .previous { POSITION: absolute; TOP: 2px; LEFT: 2px } .calPicker .next { POSITION: absolute; TOP: 2px; RIGHT: 2px } .calPicker DIV.calFoot { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; CLEAR: both; PADDING-TOP: 6px } .calPicker A.contextmenubar { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .calPicker A.contextmenubar:hover { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .timediv { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .timediv UL { WIDTH: 8em; HEIGHT: 200px; OVERFLOW: auto } .timediv UL LI.contextmenubar_top { WIDTH: 114px; TOP: -18px } .timediv UL LI A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .csPicker { MIN-WIDTH: 300px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 12px; FONT-SIZE: 95%; PADDING-TOP: 0px } .csPicker .actionBar { FONT-SIZE: 110% } .csPicker .localViewToggle { FONT-SIZE: 110% } .csPicker .contentPaneWide { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .breadcrumbs { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .itemTray { Z-INDEX: 1000 } .csPicker .itemTray .taskbuttondiv { MARGIN: 0px; FONT-SIZE: 105% } .csPicker .itemTray H3 { FONT-SIZE: 115% } .csPicker #titleicon + H1 { MARGIN-TOP: 2px } .csPicker .itemTray #numberOfElements { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.lb-overlay { Z-INDEX: 1001; POSITION: fixed; BACKGROUND-COLOR: #000; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px } DIV.lb-wrapper { Z-INDEX: 1002; POSITION: fixed; OVERFLOW: hidden } DIV.lb-wrapper DIV.lb-header { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #dedede; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } DIV.lb-wrapper DIV.lb-header H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 15px; HEIGHT: 1.23em; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-header A { POSITION: absolute; DISPLAY: block; TOP: 10px; RIGHT: 10px } DIV.lb-wrapper DIV.lb-header A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; VERTICAL-ALIGN: top; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.lb-wrapper DIV.lb-content { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: auto; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-content DIV.lb-loading { BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) no-repeat center center } DIV.lb-wrapper DIV.topRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #lightbox DIV.bottomRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } DIV.lb-wrapper DIV.topRound B { DISPLAY: block; OVERFLOW: hidden } #lightbox DIV.bottomRound B { DISPLAY: block; OVERFLOW: hidden } DIV.lb-wrapper DIV.topRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } #lightbox DIV.bottomRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } #lightbox DIV.bottomRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightbox DIV.bottomRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightboxWrapper { Z-INDEX: 1001; POSITION: absolute; TOP: 0px; RIGHT: 0px; LEFT: 0px } #lightboxWrapper-inner { Z-INDEX: 1002; POSITION: relative; TEXT-ALIGN: center; WIDTH: 100%; TOP: 0px; LEFT: 0px } #lightbox { Z-INDEX: 1003; POSITION: relative; TEXT-ALIGN: left; MARGIN: 40px 0px 0px; DISPLAY: block; TOP: auto; LEFT: auto } .my-places-popup #lightbox { MARGIN: 0px } .my-places-popup #lightboxWrapper { POSITION: relative } #lightbox #lightboxContent { BORDER-BOTTOM: #333 2px solid; POSITION: relative; BORDER-LEFT: #333 2px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff !important; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP: #333 2px solid; BORDER-RIGHT: #333 2px solid; PADDING-TOP: 1px; -moz-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -moz-border-radius: 5px; -webkit-border-radius: 5px } .my-places-popup #lightbox #lightboxContent { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .lb-container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lb-content .container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lbAction { Z-INDEX: 1005; POSITION: absolute; TOP: 9px; RIGHT: 9px } #overlay { Z-INDEX: 1000; POSITION: fixed; FILTER: alpha(opacity=30); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .30 } .done#lightbox #lbLoadMessage { DISPLAY: none } .done#lightbox #lbContent { DISPLAY: block } .loading#lightbox #lbContent { DISPLAY: none } .loading#lightbox #lbLoadMessage { DISPLAY: block } .myPlacesContent { PADDING-BOTTOM: 16px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; HEIGHT: auto !important; MAX-HEIGHT: 500px !important; FONT-SIZE: 95%; OVERFLOW: auto; PADDING-TOP: 16px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .avatar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .myavatar { MARGIN-BOTTOM: 12px; MAX-HEIGHT: 150px; OVERFLOW: hidden } #lightbox .tallPara { PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 14px } #lightbox UL { MARGIN: 4px 0px 12px } #lightbox UL LI { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } #lightbox UL LI A:hover { TEXT-DECORATION: underline } DIV.lbContainer P.taskButtonsContent { MARGIN: 12px 0px 6px } .toBeRemoved { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .toBeRemoved > TD { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .unsavedItem { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD:first-child { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD { BACKGROUND-IMAGE: none } A.selectedItem { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } A.selectedItem:focus { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } TR.inEditMode-row { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TR.inEditMode-row TD { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 6px !important } #dataCollectionContainer { MARGIN: -20px -30px 0px } .popup #dataCollectionContainer { MARGIN: -12px -20px } DIV#dataCollectionContainer DIV.contentBlock { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-question-discover .inventoryListContainerDiv { PADDING-LEFT: 12px } .picker .inventoryListContainerDiv { PADDING-LEFT: 12px } .blogContainer .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV[id*='step'] { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } .submittitle { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #infoStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #taskStatusStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #linkedContentStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } DIV[id*='stepcontent'] { PADDING-BOTTOM: 0px; PADDING-LEFT: 48px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-TOP: 0px } .steptitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { PADDING-BOTTOM: 18px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .steptitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { MARGIN-RIGHT: 3px } #toolSettingsForm .steptitle SPAN { DISPLAY: none } #toolSettingsForm .stepcontent { PADDING-LEFT: 20px } #toolSettingsForm .steptitle { PADDING-LEFT: 9px } #toolSettingsForm .submittitle.steptitle { PADDING-LEFT: 27px } H3.noNumber { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 4px } .stepcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .stepcontent LI { PADDING-BOTTOM: 6px; MARGIN-BOTTOM: 6px } .stepcontent LI LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .stepcontent LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .stepcontent .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepcontent .stepHelp:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .stepcontent .fieldHelp { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 2px } A.browse + .fieldHelp { PADDING-TOP: 9px } .stepcontent .nonHelp { COLOR: #000; FONT-SIZE: 95% } .stepcontent .nestedList LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .nestedListSmall LI { FONT-SIZE: 90% } .nestedSubList { MARGIN: 6px 6px 6px 30px } .stepLite { PADDING-BOTTOM: 12px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 6px } .columnStep .column-3 { MIN-HEIGHT: 200px } .columnStep .column-3 TABLE.attachments { FONT-SIZE: 90% } .columnStep DIV H3 { MARGIN: 6px } .columnStep DIV DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } OL.nestedList LI DIV.imgLabel { WIDTH: auto } OL.nestedList LI DIV.imgLabel SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } OL.nestedList LI DIV.imgLabel SPAN.control { DISPLAY: inline } #title_color_value { PADDING-TOP: 6px } DIV.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.gb_gridCell_inner H3.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.field { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { WIDTH: 100% } DIV.label SPAN.contextMenuContainer { DISPLAY: inline } DIV.noLabelField BR { DISPLAY: none } SPAN.stepHelp BR { DISPLAY: block } SPAN.fieldHelp BR { DISPLAY: block } DIV.field OL P { PADDING-BOTTOM: 3px } DIV.noLabelField UL P { PADDING-BOTTOM: 3px } DIV.field EM { MARGIN-TOP: 5px; DISPLAY: inline-block; FONT: italic 100% Georgia, serif; COLOR: #888 } FIELDSET.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } DIV.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } FIELDSET.info DIV.label { COLOR: #666 } .reqfield { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 40px; PADDING-RIGHT: 0px; FONT: italic 105% Georgia, serif; FLOAT: left; COLOR: #777; PADDING-TOP: 24px } .reqfield:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .required > .label > LABEL:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .reqfield IMG { DISPLAY: none } .required > .label > LABEL IMG { DISPLAY: none } .requiredField { PADDING-BOTTOM: 6px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(../../../images/ci/icons/required.gif) no-repeat 0px center; PADDING-TOP: 6px } DIV.label IMG.indicator { POSITION: absolute; TOP: 0px; LEFT: -18px } .largeText DIV.label { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText DIV.field { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 75% !important; FONT-WEIGHT: normal } .field A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 95% } DIV.editBlock { FLOAT: left; MARGIN-RIGHT: 12px } .largeText DIV.field DIV.editBlock LABEL { FONT-SIZE: 80%; FONT-WEIGHT: normal } .largeText DIV.field DIV.exemptdiv LABEL { FONT-SIZE: 65% } .largeText TEXTAREA { FONT-SIZE: 80% } LI.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; PADDING-TOP: 3px; -moz-border-radius: 6px; -webkit-border-radius: 6px } .e_expandArea { MARGIN-TOP: 21px } #e_groups_menu { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #ceeaee; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .parent-child-listing { WIDTH: 50% } .parent-child-listing .stepHelp { MARGIN-LEFT: 24px } .parent-child-listing UL { BORDER-LEFT: #ccc 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 12px 10px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .parent-child-listing LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .stepcontent .hierarchy { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .stepcontent .hierarchy LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; PADDING-TOP: 0px } OL.hierarchy LI H5 { POSITION: relative; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 11em; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 8px } OL.hierarchy LI H5 SPAN { BORDER-BOTTOM: medium none; DISPLAY: inline; COLOR: #888; FONT-SIZE: 100% } OL.hierarchy LI H5 A { POSITION: absolute; FONT-SIZE: 90%; TOP: 9px; RIGHT: 0px; FONT-WEIGHT: normal } OL.hierarchy LI DIV { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 2px; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } OL.hierarchy LI DIV.gbData SPAN { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 2px } OL.hierarchy LI DIV.gbData SPAN:first-child { BORDER-LEFT: medium none; PADDING-LEFT: 0px; MARGIN-LEFT: 0px } OL.hierarchy LI DIV INPUT.points { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT.points { WIDTH: 2em } OL.hierarchy LI DIV INPUT.name { WIDTH: 16em } LI.parent { PADDING-BOTTOM: 0px !important } OL.hierarchy LI.parent OL LI H5 { BACKGROUND-IMAGE: none } .stepPanels { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .stepPanels LI { BORDER-BOTTOM: medium none } .panelTitle { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 4px 0px 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; CURSOR: pointer; PADDING-TOP: 3px } .mdHead A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { WIDTH: 100%; DISPLAY: block } .panelTitle .date { POSITION: absolute; COLOR: #666; FONT-SIZE: 95%; TOP: 2px; RIGHT: 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none } .panelTitle A SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 2px } .mdHead A SPAN.date { FONT-WEIGHT: normal } .mdList { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel P SPAN { COLOR: #666 } .mdList H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .mdList P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanelControls { FONT-SIZE: 90% } .contentAreaBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px 24px 24px; BACKGROUND: #fff; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .contentAreaBlock #step1 { BORDER-TOP: 0px } .taskbuttondiv { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .taskButtonsContent { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .okbutton { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .picker .taskbuttondiv { PADDING-BOTTOM: 9px; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .container .taskbuttondiv:first-child { MARGIN-TOP: 0px } DIV#dataCollectionContainer .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#dataCollectionContainer .reqfield + .taskbuttondiv { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#containerdiv .mapCanvasForm .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } #customizeDataCollection .taskbuttonhelp { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px } DIV#dataCollectionContainer .taskbuttonhelp + .taskbuttondiv { PADDING-BOTTOM: 18px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 0px } SPAN.stepTitleRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } SPAN.contentListRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } .taskButtonsContent { PADDING-BOTTOM: 0px; MARGIN: 24px -12px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 9px } P.okbutton INPUT { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 100%; PADDING-TOP: 1px } .taskbuttonhelp { PADDING-BOTTOM: 0px; FONT-STYLE: italic; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } #taskbuttondiv P { BORDER-BOTTOM: red 1px solid; TEXT-ALIGN: left; BORDER-LEFT: red 1px solid; FONT-STYLE: italic; MARGIN: 6px 0px; DISPLAY: block; FONT-SIZE: 90%; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .stepTitleRight { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; TOP: -2px; RIGHT: -2px; PADDING-TOP: 6px; LEFT: auto } LEGEND { POSITION: absolute; LINE-HEIGHT: 0; HEIGHT: 0px; TOP: -10000px } FIELDSET OL LI SPAN.tagContainer INPUT { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer A.browse { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.hidden { DISPLAY: none } .contentBlock OL LI SPAN.hidden { DISPLAY: none } .selectItems { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 639px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .selectItems SELECT { MARGIN: 6px 0px 0px; WIDTH: 300px; DISPLAY: block; MAX-WIDTH: 300px; HEIGHT: 115px; FONT-SIZE: 100% } #dataCollectionContainer .noLabelField > .selectItems { POSITION: relative; PADDING-BOTTOM: 15px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 15px } #dataCollectionContainer .noLabelField > .userRoleSelect:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems.userRoleSelect:before { LEFT: 358px } #dataCollectionContainer .noLabelField > .selectItems.cumulativeSelectItems:before { LEFT: 47% } .selectItems INPUT[type=button] { MARGIN: 6px 0px 0px } .selectItems INPUT[type=text] { MARGIN: 6px 0px; WIDTH: 300px; DISPLAY: block; FONT-SIZE: 100% } .selectArrows { POSITION: relative; MARGIN-TOP: 60px } .selectArrows A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectArrows BUTTON { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectItems H4 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px 56px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .userRoleSelect { WIDTH: auto } .userSelectedRoles { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 56px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .userSelectedRoles .selectArrows { POSITION: absolute; MARGIN: 0px; TOP: 28px; LEFT: 20px } .selectItems .available-roles H4 { MARGIN-LEFT: 0px } .selectItems .available-roles SELECT { HEIGHT: 200px } .multiSelect { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .multiSelect > DIV { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; WIDTH: 46%; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } .multiSelect SELECT { WIDTH: 100% } .multiSelect .selectArrows { TEXT-ALIGN: center; MARGIN: 40px 0px; WIDTH: 5% } .widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: 6px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } .widgetControls { FONT-SIZE: 90% } TABLE .widgetControls { FONT-SIZE: 90% } .widget .spellCheck { FLOAT: right } .widget .textBoxItem { FLOAT: right } DIV.liveArea FIELDSET.stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.liveArea FIELDSET.stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.liveArea FIELDSET.stepcontent TEXTAREA { WIDTH: 100% } DIV.liveArea FIELDSET.stepcontent SPAN.inlineHelp { DISPLAY: inline } .quickAddPal .stepcontent { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; PADDING-TOP: 3px } .quickAddPal .stepcontent LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .quickAddPal .stepcontent .label { WIDTH: 30%; PADDING-RIGHT: 2px; OVERFLOW: visible } .quickAddPal .stepcontent .field { WIDTH: 65% } .quickAddPal LI.fieldError .fieldErrorText { DISPLAY: block; COLOR: red; MARGIN-LEFT: 74px; FONT-SIZE: 85%; FONT-WEIGHT: normal } DIV.quickAddPal DIV.field INPUT[type=text] { WIDTH: 100% } DIV.quickAddPal DIV.field SELECT { WIDTH: 100% } DIV.quickAddPal DIV.field TEXTAREA { WIDTH: 100% } DIV.quickAddPal LI.stepHelp { WIDTH: auto } DIV.quickAddPal LI DIV SPAN { WIDTH: auto } DIV.field SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.field SPAN.control { DISPLAY: inline } DIV.quickAddPal DIV.field INPUT.datePickerInput { WIDTH: 8em } DIV.quickAddPal DIV.field INPUT.timePickerInput { WIDTH: 8em } .dtpickerEndDiv { PADDING-TOP: 10px } DIV#texteditor { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } DIV#texteditor TEXTAREA { WIDTH: 450px; DISPLAY: block; MARGIN-LEFT: 0px } DIV#texteditor A.textBoxItem { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 80%; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 2px } SELECT.survey_question { MAX-WIDTH: 100% } .htmlarea .toolbar DIV > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FLOAT: left; HEIGHT: 22px; PADDING-TOP: 0px } .htmlarea IFRAME { MIN-WIDTH: 300px !important } .htmlarea .toolbar A.wikiButton { WIDTH: auto !important } .htmlarea .toolbar A.wikiButton IMG { WIDTH: auto !important } .vtbe_footer { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .vtbe_footer SPAN { FONT-SIZE: 100% } .vtbe_footer INPUT[type=button] { FONT-SIZE: 95% } .vtbe_footer A { MARGIN: 0px 0px 0px 3px } .resize_handle { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BACKGROUND: url(images/controls.png) #ccc no-repeat 50% -1px; HEIGHT: 12px; BORDER-TOP: #ddd 1px solid; CURSOR: n-resize } .resize_handle:hover { BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #bbb; BORDER-TOP-COLOR: #ccc } .resize_handle IMG { WIDTH: 100%; HEIGHT: 8px } .tabGroupsPreview { MARGIN: -11px -12px 24px; FONT-SIZE: 100% } .previewContent { Z-INDEX: 1; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; BACKGROUND: url(images/backgrounds_h.png) #aaa repeat-x 0px -320px; PADDING-TOP: 14px } .previewContent IFRAME { WIDTH: 100%; HEIGHT: 300px } .previewContent .appTabs { TOP: -3px } .tabGroupsPreview TABLE DIV { DISPLAY: block } .previewOverlay { POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=30); TEXT-TRANSFORM: uppercase; WIDTH: 100%; LETTER-SPACING: 10px; COLOR: #555; FONT-SIZE: 300%; TOP: 130px; FONT-WEIGHT: bold } .tabGroupsPreview .previewOverlay { TOP: 40px } .previewOverlay SPAN { FILTER: alpha(opacity=30); PADDING-BOTTOM: 6px; BACKGROUND-COLOR: white; PADDING-LEFT: 24px; PADDING-RIGHT: 12px; PADDING-TOP: 6px; opacity: .30 } P.warning { PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #cf1d19; MARGIN: 12px 0px 24px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 9px } .warning { BACKGROUND: #a7d0df } DIV.tabPreview { Z-INDEX: 1; BORDER-BOTTOM: #cdcdcd 12px solid; POSITION: relative; BORDER-LEFT: #cdcdcd 12px solid; MARGIN: 0px 6px 6px; WIDTH: auto; BACKGROUND: #cdcdcd; BORDER-TOP: #cdcdcd 12px solid; BORDER-RIGHT: #cdcdcd 12px solid } DIV.tabPreview DIV.paneTabs { MARGIN-TOP: 12px } .buttonLibrary { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 207px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .buttonLibrary LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FLOAT: left; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .buttonLibrary LI A { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 3px } .buttonLibrary LI A.selected { FONT-WEIGHT: bold; TEXT-DECORATION: none } .buttonLibrary LI A:hover { TEXT-DECORATION: underline } DIV.menuStyleStep { MARGIN: 9px 40px 0px 0px; WIDTH: 212px; FLOAT: left } DIV.menuDefaultStyleStep { MARGIN: 9px auto; WIDTH: 212px } .schemeWrapper { MARGIN: 0px 12px 0px 0px; FLOAT: left } .buttonLibrary .schemeWrapper { PADDING-BOTTOM: 10px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #fff; FLOAT: none; PADDING-TOP: 10px; -moz-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); border-radius: 4px } .buttonLibrary .selected .schemeWrapper { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #bbb; PADDING-TOP: 10px } #selectedPalette .schemePreview { BORDER-BOTTOM: #bbb 10px solid; BORDER-LEFT: #bbb 10px solid; BORDER-TOP: #bbb 10px solid; BORDER-RIGHT: #bbb 10px solid; -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); border-radius: 4px } .schemeWrapper SPAN { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: italic 100% Georgia; PADDING-TOP: 6px } UL.buttonLibrary LI.selected { POSITION: absolute; TOP: 6px; LEFT: 0px } UL.buttonLibrary LI.selected A.selected { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A.selected SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .schemePreview { PADDING-BOTTOM: 0px; PADDING-LEFT: 16px; WIDTH: 160px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .modulePreview { BORDER-BOTTOM: 0px solid; POSITION: relative; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px !important; MARGIN: 6px 0px 0px auto; PADDING-LEFT: 0px !important; WIDTH: 140px; BOTTOM: 0px; PADDING-RIGHT: 0px !important; HEIGHT: 57px; FONT-SIZE: 85%; BORDER-TOP: 1px solid; RIGHT: 0px; BORDER-RIGHT: 0px solid; PADDING-TOP: 0px !important; LEFT: auto } .schemePreviewHead { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 6px !important } .modulePreviewHead { PADDING-BOTTOM: 4px !important; MARGIN: 0px; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-WEIGHT: bold; PADDING-TOP: 4px !important } .schemePreviewBody { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 3px } .modulePreviewBody { PADDING-BOTTOM: 3px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 4px !important } .moduleList { BORDER-TOP: #ccc 1px solid } .moduleItem { BORDER-BOTTOM: #ccc 1px solid } .module { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } .moduleHeading { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 10px } .module H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 110% } .moduleDescription { WIDTH: 90% } .more { DISPLAY: none } .moduleAction { MARGIN: 10px 0px } .moduleCategory { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .moduleCategory A { FONT-WEIGHT: bold } .moduleSample { PADDING-LEFT: 10px; DISPLAY: none } .expandedModule { BACKGROUND-COLOR: #efefef } .expandedModule .moduleDetails { WIDTH: 47% } .expandedModule .moduleSample { WIDTH: 47% } .expandedModule .more { DISPLAY: inline } .expandedModule .moduleSample { DISPLAY: block } .leftColumn-wide#moduleList .contentListPlain { PADDING-LEFT: 18px } .moduleListActionBar { PADDING-LEFT: 18px } #moduleList .contentListPlain > LI.expandedModule .moduleSample > DIV { MIN-HEIGHT: 50px !important; WORD-WRAP: normal } #moduleBody { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } #moduleBorder { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .portlet { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #efede3; MARGIN: 0px 10px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #444; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 0 2px 4px rgba(0, 0, 0, .05); border-radius: 3px } .containerPortal > DIV:first-child .portlet { MARGIN: 0px 10px 20px 0px } .reorderableModule:hover { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; -webkit-transition-property: border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border, background; -moz-transition-duration: 200ms; -moz-transition-timing-function: ease-in-out } .reorderableModule:hover H2 { COLOR: #000 } .module-dragstate { BORDER-BOTTOM-COLOR: #555; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: 2px; opacity: .9; -moz-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-transition-property: border-width, border-color, background, -webkit-box-shadow; -webkit-transition-duration: 50ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border-width, border-color, background, -moz-box-shadow; -moz-transition-duration: 50ms; -moz-transition-timing-function: ease-in-out } #moduleTitle { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 .moduleTitle { WORD-WRAP: break-word } .portlet H2.dragHandle { PADDING-LEFT: 20px } .portlet H2.dragHandle:hover { CURSOR: move } .portlet H2 A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; COLOR: #fff; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .portlet H2 A:hover { TEXT-DECORATION: underline } .portlet H2 A IMG { VERTICAL-ALIGN: middle } .portlet H2.noTitle { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 1.4em; PADDING-TOP: 0px } .portlet H2.noTitle:hover { BACKGROUND: #ededed } .portlet A { WORD-WRAP: break-word; TEXT-DECORATION: none } .portlet A:hover { TEXT-DECORATION: underline } .edit_controls { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FLOAT: right; PADDING-TOP: 7px } .portlet .edit_controls { VISIBILITY: hidden } .portlet:hover .edit_controls { VISIBILITY: visible } .edit_controls A { Z-INDEX: 201; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 1px; TEXT-DECORATION: none; PADDING-TOP: 0px; verical-align: top } .portlet .edit_controls A:hover { TEXT-DECORATION: none } .portlet:hover .edit_controls A { TEXT-DECORATION: none } .edit_controls .moduleToggleLink { Z-INDEX: 201; POSITION: absolute; FILTER: alpha(opacity=50); PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 14px; PADDING-RIGHT: 3px; HEIGHT: 14px; TOP: 3px; PADDING-TOP: 3px; LEFT: -4px; opacity: .5 } .edit_controls A IMG { DISPLAY: none } .edit_controls A:before { FONT: 16px/1 "Utilicons"; COLOR: #bcbcbc; text-shadow: 0 1px 0 #fff } .edit_controls A:hover:before { COLOR: #888 } .edit_controls A.moduleToggleLink { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px } .edit_controls A[title*='Expand'].moduleToggleLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .edit_controls A.moduleCloseLink:before { CONTENT: "X" } .edit_controls A.moduleDetachLink:before { FONT: 16px/1 "Utilicons"; CONTENT: "w" } .edit_controls A[href*='edit_module']:before { CONTENT: "S" } .collapsible { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px } .collapsible TABLE { BORDER-SPACING: 3px 2px; BORDER-COLLAPSE: separate; FONT-FAMILY: Helvetica, Arial, sans-serif; COLOR: #333; FONT-SIZE: 90% } .collapsible .help { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .imgWrapper { TEXT-ALIGN: center; MARGIN: 6px auto; OVERFLOW: auto } .portlet H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } #lightbox H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.portletBlock H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.blockContents H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .flyout H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 5px } .portlet H4 { PADDING-BOTTOM: 2px; TEXT-INDENT: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 1px } .portlet .portletList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList LI:first-child { BORDER-TOP: medium none } .portlet .portletList LI IMG { DISPLAY: none } .portlet .courseListing LI > A { FONT-WEIGHT: bold } .portlet .courseRole { COLOR: #777 } .portlet .dataBlockLabel { COLOR: #777 } .portlet .eventDate { COLOR: #777 } .portlet .eventList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .eventList LI .date { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f0f0f0; COLOR: #597298; FONT-WEIGHT: bold; PADDING-TOP: 2px; -moz-border-radius: 1px; -webkit-border-radius: 1px; border-radius: 1px } .portlet .eventList LI .event { PADDING-BOTTOM: 2px; PADDING-LEFT: 18px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .portlet .eventList LI .description { FONT-SIZE: 90% } .portlet .eventDate { FONT-SIZE: 90% } .portlet .eventList LI .event A { FONT-WEIGHT: bold } .portlet SPAN.origin { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #999; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet .portletList-img > LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList-img > LI:first-child { BORDER-TOP: medium none; PADDING-TOP: 0px } .portlet .portletList-img > LI IMG { DISPLAY: none } .portlet .courseInformation { PADDING-BOTTOM: 0px; TEXT-INDENT: -16px; MARGIN: 4px 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock { PADDING-BOTTOM: 0px; TEXT-INDENT: -4px; MARGIN: 4px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock UL { MARGIN-TOP: 5px } .portlet .courseDataBlock UL LI { TEXT-INDENT: 0px } .portlet .calculatorModule { TEXT-ALIGN: center } .portlet .calculator { PADDING-BOTTOM: 6px; MARGIN: 0px auto; PADDING-LEFT: 6px; WIDTH: 10em; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .portlet .portletPath { MARGIN: 4px; BACKGROUND: #f0f0f0; FONT-SIZE: 90%; -moz-border-radius: 1px; -webkit-border-radius: 1px } .portlet .portletPath SPAN { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; DISPLAY: inline-block; BACKGROUND: #ddd; COLOR: #666; FONT-WEIGHT: bold; PADDING-TOP: 1px; -moz-border-radius: 1px 0 0 1px; -webkit-border-radius: 1px 0 0 1px } .portlet .courseDataBlock UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px -895px; PADDING-TOP: 0px } .portlet .courseDataBlock A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock LI A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock A:hover { TEXT-DECORATION: underline } .portlet .courseDataBlock LI A:hover { TEXT-DECORATION: underline } .portletHelp { PADDING-BOTTOM: 2px; MARGIN: 4px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #688ba8; FONT-SIZE: 95%; PADDING-TOP: 1px } DIV.module_actions { PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.8em; MARGIN: 4px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.module_actions A:link { BORDER-BOTTOM: #ccc 1px outset; BORDER-LEFT: #ccc 1px outset; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 5px; COLOR: #036; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px outset; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px outset; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.module_actions A:hover { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions A:active { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions IMG { MARGIN: 0px 3px; VERTICAL-ALIGN: middle } DIV.module_actions SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.module_actions LABEL { FONT-WEIGHT: bold } DIV.scroll_div { MAX-HEIGHT: 300px; OVERFLOW: auto } .portlet DIV.scroll_div { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN-BOTTOM: 3px; BACKGROUND: #fff4bf; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .submission_list { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .submission_list LI { PADDING-BOTTOM: 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; PADDING-TOP: 9px } .submission_list LI:first-child { BORDER-TOP: medium none } .submission_list LI A { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .submission_list LI A.label { MARGIN-LEFT: 0px; FONT-SIZE: 100%; FONT-WEIGHT: bold } .submission_list LI DIV.button { MARGIN: 4px 0px 0px; FLOAT: right } .submission_list LI SPAN { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .eudModule { PADDING-BOTTOM: 24px; MARGIN: 0px } .styledModule-dark { PADDING-BOTTOM: 24px; MARGIN: 0px } .portlet .noItems { TEXT-ALIGN: center; FONT-STYLE: italic } .eudModule .eudModule-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .styledModule-dark .module-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .eud-button-wrap { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } IMG.eud-avatar { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 28px; PADDING-RIGHT: 2px; BACKGROUND: #fff; HEIGHT: 28px; PADDING-TOP: 2px; -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -moz-border-radius: 2px; -webkit-border-radius: 2px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } .actionMenuButton { FILTER: none; PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: block; BACKGROUND: #eee; VERTICAL-ALIGN: middle; PADDING-TOP: 3px } DIV[id*='actionMenu_'] { Z-INDEX: 1000; MARGIN-TOP: -4px; MARGIN-LEFT: -3px } .portlet .portletBlock { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 6px } .portlet .portletBlock:first-child { BORDER-TOP: 0px } .moduleActions + .portletBlock { BORDER-TOP: 0px } .blockGroups LI:first-child { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .portlet .memberList { MARGIN: 0px 0px 5px } .itemGroups { PADDING-BOTTOM: 0px; MARGIN: 4px 9px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .itemGroups .itemGroups { MARGIN-BOTTOM: 4px; MARGIN-LEFT: 0px } .portlet .blockGroups LI { FONT-SIZE: 100% } .portlet .itemGroups LI { PADDING-BOTTOM: 7px; LINE-HEIGHT: 120%; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .memberList LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 14px !important; PADDING-TOP: 0px } .portlet .course { DISPLAY: block; FONT-SIZE: 90% } .portlet UL.memberList { DISPLAY: block; FONT-SIZE: 90% } .portlet SPAN.refresh { DISPLAY: block; FONT-SIZE: 90% } .portlet .course { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet SPAN.noIndent { MARGIN-LEFT: 0px !important } .portlet .whatsNew SPAN.course { MARGIN-LEFT: 0px !important } .portlet SPAN.course { MARGIN-LEFT: 0px !important } .portlet UL.hierarchyList { MARGIN-LEFT: 22px } .portlet UL.hierarchyList LI { OVERFLOW-X: visible; TEXT-INDENT: -18px } .portlet UL.hierarchyList LI * { TEXT-INDENT: 0px } .portlet UL.hierarchyList LI.childless { TEXT-INDENT: 0px } .portlet UL LI UL LI SPAN.warning { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.newItemCount { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .flag { BORDER-BOTTOM: #efa495 1px solid; BORDER-LEFT: #efa495 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; BACKGROUND: #ffe4df; COLOR: #c30; FONT-SIZE: 90%; BORDER-TOP: #efa495 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #efa495 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL.memberList SPAN { FONT-SIZE: 100% } .portlet UL.memberList SPAN.newItemCount { FONT-SIZE: 100% } .portletInfoFooter { POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 9px; BOTTOM: 5px; PADDING-RIGHT: 9px; COLOR: #999; FONT-SIZE: 90%; RIGHT: 0px; PADDING-TOP: 2px } .dateSelector { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .blockGroups LI SPAN.newItemCount { COLOR: #999; FONT-WEIGHT: normal } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHead A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .portlet .portletBlock H4 A:hover { BACKGROUND: #eee } .portlet .portletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .portlet .portletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .portlet .subCategories LI A { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead:hover { CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) #fff no-repeat 1px 9px; COLOR: #0099b6 } .blockGroups .itemHeadOpen:hover { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen:focus { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups LI IMG.spacer { WIDTH: 50px; HEIGHT: 0px } .blockGroups LI SPAN.headerText:hover { CURSOR: pointer; TEXT-DECORATION: underline } .viewHeader { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .viewHeader H3 { COLOR: #666; FONT-WEIGHT: bold } DIV.waitingFrame { BACKGROUND: #fff } .moduleControlWrapper { MARGIN: 6px 0px 0px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 6px } .moduleControlWrapper A { POSITION: relative; MARGIN: 0px 2px } .moduleControlWrapper A:after { POSITION: relative; COLOR: #bbb; FONT-SIZE: 14px; CONTENT: "\2192"; RIGHT: 0px; FONT-WEIGHT: bold } .moduleBlock { MARGIN: 6px } .portlet H1 { MARGIN: 6px; FONT-SIZE: 120% } .assessmentPortlet DIV.assessmentPortletBlock { BORDER-BOTTOM-COLOR: #777; PADDING-BOTTOM: 0px; BORDER-TOP-COLOR: #777; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #f9f9f9; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4 A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4 A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet UL.subCategories { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock UL.subCategories LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet UL.subCategories LI A { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead:hover { BACKGROUND-COLOR: #e3efff; TEXT-DECORATION: underline } UL.assessmentBlockGroups LI A.itemHeadOpen { BACKGROUND: #fff no-repeat 3px center } UL.assessmentBlockGroups LI A.itemHeadOpen:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .assessmentPortlet UL.subCategories LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } UL.assessmentBlockGroups LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .assessmentPortlet UL.subCategories LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } UL.assessmentBlockGroups LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } .assessmentPortlet UL.itemGroup LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.assessmentBlockGroups LI UL.itemGroups LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet UL.itemGroup LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI UL.items { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; FONT-SIZE: 110%; PADDING-TOP: 2px } UL.assessmentBlockGroups LI UL.itemGroups LI A { FONT-WEIGHT: normal } UL.itemGroups LI UL.items LI A { FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H3 { MARGIN: 0px } .assessmentPortlet DIV.assessmentPortletBlock H3 A { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f0f0f0; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet DIV.assessmentPortletBlock H3 A:hover { TEXT-DECORATION: none } .assessmentPortlet DIV.assessmentPortletBlock:first-child H3 A { BORDER-TOP: medium none } .assessmentPortlet DIV.assessmentPortletBlock H3 A.open { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/less_options.gif) #e3efff no-repeat 99% center; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet UL.objectList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortletBlock UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .blockContents UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.memberList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet .blockContents UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet .blockContents UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .portlet #loginBoxFull { PADDING-BOTTOM: 16px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull P { MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; COLOR: #444; FONT-SIZE: 0.95em } .portlet #loginBoxFull P.welcome { PADDING-BOTTOM: 0px; MARGIN: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000; FONT-SIZE: 1em; FONT-WEIGHT: bold; PADDING-TOP: 0px } .portlet #loginBoxFull UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } .portlet #loginBoxFull LI LABEL { FONT-SIZE: 100%; FONT-WEIGHT: normal } .portlet #loginBoxFull INPUT[type='text'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='password'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull A { FONT-SIZE: 0.9em } .portlet #loginBoxFull P A { FONT-SIZE: 1em } .portlet #loginBoxFull P.welcome A { FONT-SIZE: 1em } .portlet #loginBoxFull LI + LI + LI { FLOAT: left } .portlet #loginBoxFull LI + LI + LI + LI { TEXT-ALIGN: right; FLOAT: right } .portlet #loginBoxFull LI INPUT.submit { MARGIN: -14px -3px 0px 0px } #body { PADDING-BOTTOM: 60px } #loadstatus { POSITION: relative; HEIGHT: 180px } FIELDSET.highlight { BACKGROUND: #eee } FIELDSET.highlight DIV.input { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .builderItem .item { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FONT-SIZE: 100%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 12px } .builderItem:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } #lessonPlanForm #dataCollectionContainer .contentListPlain LI:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } LI.builderItem { MIN-HEIGHT: auto } .builderItem .close { POSITION: absolute; TOP: 5px; CURSOR: pointer; RIGHT: 5px } .builderItem IFRAME { WIDTH: 100% !important } DIV.subheading { FONT-WEIGHT: bold } DIV.required DIV.inputField { PADDING-LEFT: 1.5em; BACKGROUND: url(../../images/ci/icons/required.gif) no-repeat left 2px; MARGIN-LEFT: -1.5em } .inputOptions { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.5em } .offscreen { POSITION: absolute; HEIGHT: 0px; LEFT: -999em } .label A:hover { CURSOR: pointer } #lessonPlanForm #customFormBuilderDiv { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer .contentListPlain { MARGIN: 0px } .alignPanelLightbox { MIN-WIDTH: 650px; PADDING-BOTTOM: 10px; MIN-HEIGHT: 250px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .alignHeader { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .alignPanel TABLE TD { FONT-SIZE: 90% } .alignPanel TABLE TH { FONT-SIZE: 90% } .alignPanel TABLE TD.descriptionCell { MIN-WIDTH: 120px; WORD-WRAP: break-word } .alignPanel THEAD TH.smallCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .alignPanel THEAD TH { WHITE-SPACE: nowrap } .alignPanel TD.actionCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 4px } .pageBreadcrumb { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #fff; HEIGHT: 1em; PADDING-TOP: 6px } .pageBreadcrumb UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .pageBreadcrumb LI { FLOAT: left; COLOR: #999; MARGIN-LEFT: 3px; FONT-WEIGHT: bold } .pageBreadcrumb LI A { COLOR: #036; FONT-WEIGHT: bold; MARGIN-RIGHT: 3px; TEXT-DECORATION: none } .pageBreadcrumb LI A.active { COLOR: #036; FONT-WEIGHT: bold; TEXT-DECORATION: none } .sStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #063; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .sStatusI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #c00; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .panelList { PADDING-BOTTOM: 0px; MARGIN: 2px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; PADDING-TOP: 0px } .panelList > LI { MARGIN: 0px 0px 1px } .panelNested { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #fff; MARGIN: 4px 0px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; OVERFLOW: hidden; PADDING-TOP: 4px } .panelHead { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; WORD-WRAP: break-word; BACKGROUND: #efefef; PADDING-TOP: 6px } .panelHead A { COLOR: #000; TEXT-DECORATION: none } .panelItem { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 6px } .panelList_leftCol { POSITION: absolute; TOP: 6px; LEFT: 6px } .panelList_rightCol { POSITION: absolute; TOP: 6px; RIGHT: 6px } .panelList_centerCol { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 0px } UL.logMessages { LIST-STYLE-TYPE: none; TEXT-INDENT: -1em; PADDING-LEFT: 1em; MARGIN-LEFT: 0px; LIST-STYLE-IMAGE: none } LI.logError { COLOR: red } LI.logWarning { COLOR: blue } LI.logMessage { MARGIN-TOP: 0.1em } .connectionWrapper { POSITION: relative; MARGIN-TOP: 1px; PADDING-RIGHT: 30px } .connectionWrapper A { POSITION: absolute; MARGIN-TOP: -14px; TOP: 50%; RIGHT: 0px } .invertItems { POSITION: relative; DISPLAY: block !important; MARGIN-RIGHT: 26px } .invertItems A { POSITION: absolute; TOP: -14px; RIGHT: -33px } .subcategories { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 11px !important; PADDING-RIGHT: 11px !important; PADDING-TOP: 6px !important } .subcategories H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.calendarTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.announcementTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.calendarTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.announcementTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.calMonth { PADDING-BOTTOM: 6px; MARGIN: 10px 4px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; OVERFLOW: auto; PADDING-TOP: 2px } DIV.calMonth TABLE { BORDER-BOTTOM: #a8beda 2px solid; BORDER-LEFT: #a8beda 1px solid; MARGIN: 0px auto; BORDER-COLLAPSE: collapse; BORDER-TOP: #a8beda 2px solid; BORDER-RIGHT: #a8beda 2px solid } DIV.calMonth TABLE THEAD TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE TBODY TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE THEAD TD DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TBODY TH DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE THEAD TH { BORDER-BOTTOM: #a0a0a0 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 8em; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; OVERFLOW: hidden; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } DIV.calMonth TABLE TBODY TD { BORDER-BOTTOM: #a8beda 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 8em; PADDING-RIGHT: 0px; BACKGROUND: url(images/backgrounds_h.png) white repeat-x 0px -400px; HEIGHT: 8em; OVERFLOW: hidden; BORDER-RIGHT: #a8beda 1px solid; PADDING-TOP: 0px } DIV.calMonth TABLE TH:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:focus { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:active { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD A.daylink { BORDER-BOTTOM: #a8beda 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; WIDTH: 1.2em; PADDING-RIGHT: 0.2em; DISPLAY: block; BACKGROUND: #e3efff; FLOAT: left; FONT-SIZE: 110%; FONT-WEIGHT: bold; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0.2em } DIV.calMonth TABLE TD A.daylink:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD A.daylink SPAN { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TD.today { BACKGROUND-COLOR: #fff4bf } DIV.calMonth TABLE TD.today A.daylink { BACKGROUND: #fff4bf; FONT-WEIGHT: bold } DIV.calMonth TABLE TD.today A.daylink:hover { BACKGROUND: url(images/backgrounds_h.png) #fff4bf repeat-x 0px -50px } DIV.calMonth TABLE TD.offday { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:hover { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:focus { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD DIV { WIDTH: 8em; CLEAR: both; OVERFLOW: hidden } DIV.calMonth TABLE TD DIV UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.calMonth TABLE TD DIV UL LI { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FONT-SIZE: 90%; PADDING-TOP: 1px } TABLE.calYear { POSITION: relative; MIN-WIDTH: 200px; MARGIN: 6px; BORDER-COLLAPSE: collapse; FONT-SIZE: 95% } TABLE.calYearFloat { MARGIN: 6px 0.66%; WIDTH: 32%; FLOAT: left } TABLE.calYear THEAD TD { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear TBODY TH { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear CAPTION { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 108%; PADDING-TOP: 2px } TABLE.calYear CAPTION A { FONT-WEIGHT: bold; TEXT-DECORATION: none } TABLE.calYear CAPTION A:hover { TEXT-DECORATION: underline } TABLE.calYear THEAD TH { BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } TABLE.calYear TBODY TD { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; WHITE-SPACE: nowrap; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } TABLE.calYear TD A { POSITION: relative; WIDTH: 100%; DISPLAY: block; TEXT-DECORATION: none } TABLE.calYear TD A IMG { FLOAT: left } TABLE.calYear TD:hover { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:focus { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:active { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TH:hover { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:focus { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:active { BACKGROUND-COLOR: #ccc } TABLE.calYear TD.today { BACKGROUND: #999 } TABLE.calYear TD.today:hover { BACKGROUND: #999 } TABLE.calYear TD.today:focus { BACKGROUND: #999 } TABLE.calYear TD.today A { COLOR: #fff; FONT-WEIGHT: bold; text-shadow: 0 -1px 0 #555 } TABLE.calYear TD.today A:hover { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:active { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:focus { BACKGROUND-IMAGE: none } TABLE.calYear TD.offday { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:hover { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:focus { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.hasEvent { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -50px; FONT-WEIGHT: bold } TABLE.calendarDay { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; MARGIN: 10px 0px 0px; WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #cdcdcd 1px solid; BORDER-RIGHT: #cdcdcd 1px solid } TABLE.calendarDay THEAD { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay THEAD TH { POSITION: absolute; TOP: 0px; LEFT: -1000px } UL.calendarWeek LI TABLE.calendarDay { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } TABLE.calendarDay TBODY TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 3px; WIDTH: 6%; PADDING-RIGHT: 12px; BACKGROUND: #f3f3f3; COLOR: #555; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } TABLE.calendarDay TBODY TH:hover { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:focus { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:active { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #fff; VERTICAL-ALIGN: top; BORDER-TOP: #cdcdcd 1px solid; PADDING-TOP: 0px } TABLE.calendarDay TBODY TD.hasEvent { PADDING-LEFT: 6px } TABLE.calendarDay TBODY TD.hasEvent A.jumpToEvent { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay TBODY TR.halfHour TH { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.halfHour TD { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.midday TH { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TBODY TR.midday TD { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TR.notBusinessHours TH { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #f3f3f3; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TABLE.calendarDay TR.notBusinessHours TD { BACKGROUND: #fafafa } TABLE.calendarDay TBODY TR.notBusinessHours TD.hasEvent { BACKGROUND: #fafafa } TABLE.calendarDay TR TH SPAN.ampm { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #bbb; LETTER-SPACING: 0.1em; COLOR: #fff; FONT-SIZE: 75%; TOP: -1.2em; PADDING-TOP: 0px; LEFT: -4px } TABLE.calendarDay TBODY TR:hover { -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calendarDay TBODY TR:hover TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TD DIV DIV { PADDING-BOTTOM: 1px; MARGIN: 0px 4px 0px -6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: #b5ccea; FLOAT: left; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } TABLE.calendarDay TD DIV DIV.contextMenuContainer { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px -3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: none; PADDING-TOP: 0px } TABLE.calendarDay TD DIV SPAN { COLOR: #555; FONT-SIZE: 90% } UL.calendarWeek { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #cdcdcd 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #cdcdcd 1px solid; PADDING-TOP: 0px } UL.calendarWeek LI { BORDER-BOTTOM: #cdcdcd 1px solid; POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } UL.calendarWeek LI UL:first-child { BORDER-TOP: medium none } UL.calendarWeek UL LI:first-child { BORDER-TOP: medium none } UL.calendarWeek LI H3.weekDay { PADDING-BOTTOM: 0.3em; MARGIN: 0px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BACKGROUND: #e3efff; COLOR: #666; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 0.3em } UL.calendarWeek LI H3.weekDay:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.calendarWeek LI UL LI { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ededed 1px solid; PADDING-TOP: 6px } UL.calendarWeek LI UL LI:hover { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:focus { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:active { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI H4 { PADDING-BOTTOM: 1px; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 3px; WIDTH: 10em; PADDING-RIGHT: 3px; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 1px } UL.calendarWeek LI DIV { MARGIN-LEFT: 11em } UL.calendarWeek LI DIV.contextMenuContainer { MARGIN: 0px 0px 0px -3px } UL.calendarWeek LI UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } .diffbox-wrapper { MARGIN: 9px auto; WIDTH: 80% } .legendbox-wrapper { MARGIN: 9px auto; WIDTH: 90% } .legendbox-wrapper > DIV { BORDER-LEFT: #ddd 1px solid } .legendbox-wrapper > DIV:first-child { BORDER-LEFT: medium none } .diffbox-left { FLOAT: left } .diffbox-right { FLOAT: left } .diffbox-arrow { FLOAT: left } .legendbox { FLOAT: left } .diffbox-left { WIDTH: 44% } .diffbox-right { WIDTH: 44% } .legendbox-3 { WIDTH: 33% } .legendbox-2 { WIDTH: 48% } .diffbox-left > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .diffbox-right > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #fff; PADDING-TOP: 3px } .diffbox-right > DIV { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .diffbox-left UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-right UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .legendbox UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-left UL LI:first-child { BORDER-TOP: 0px } .diffbox-right UL LI:first-child { BORDER-TOP: 0px } .legendbox UL LI:first-child { BORDER-TOP: 0px } .diffbox-left .label { WIDTH: 30%; COLOR: #666 } .diffbox-right .label { WIDTH: 30%; COLOR: #666 } .legendbox .label { WIDTH: 30%; COLOR: #666 } .diffbox-left .field { WIDTH: 59% } .diffbox-right .field { WIDTH: 59% } .legendbox .label { WIDTH: 45%; FONT-SIZE: 90% } .legendbox .field { WIDTH: 55% } .diffbox-arrow { TEXT-ALIGN: center; WIDTH: 6%; PADDING-TOP: 50px } .diffLegend-sample { POSITION: static !important; WIDTH: 90px !important; HEIGHT: 17px !important } .addedImg-sample { HEIGHT: 13px !important } .removedImg-sample { HEIGHT: 13px !important } .changedImg-sample { HEIGHT: 13px !important } .diff-html-added { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-removed { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .added-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .removed-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-added { BACKGROUND-COLOR: #cfc } .added-sample { BACKGROUND-COLOR: #cfc } .diff-html-removed { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .removed-sample { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .diff-html-changed { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .changed-sample { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .diff-html-added IMG { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .addedImg-sample { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .diff-html-removed IMG { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .removedImg-sample { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .diff-html-changed IMG { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } .changedImg-sample { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } DIV.diff-removed-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-added-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } .diff-addedImg-sample { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-removed-image { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } .diff-removedImg-sample { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } DIV.diff-added-image { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } .diff-addedImg-sample { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } DIV.blogContainer DIV.wikiPage { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid } DIV.blogContainer DIV.wikiPage H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; FONT-SIZE: 120%; PADDING-TOP: 9px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryDate { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 6px } .editWiki { MARGIN: 9px } .topRound { DISPLAY: none } .bottomRound { DISPLAY: none } .playerControls { POSITION: relative; PADDING-BOTTOM: 6px !important; MARGIN-TOP: 0px; PADDING-LEFT: 6px !important; PADDING-RIGHT: 6px !important; MARGIN-BOTTOM: 2px; PADDING-TOP: 6px !important } IMG.managedPluginStatusIcon { MARGIN: 1px 7px 3px 0px } UL.metaDataList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.metaDataList LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } UL.metaDataList LI H3 { MARGIN: 0px; DISPLAY: inline } .bb-cpgbtd { FONT-SIZE: 90% } .bb-cpgbth { FONT-SIZE: 90% } .bb-cpmgtd { COLOR: #000; FONT-SIZE: 85% } .bb-cpmgth { FONT-SIZE: 85%; FONT-WEIGHT: bold } #resizeHandle { BORDER-BOTTOM: #999 1px solid; POSITION: absolute; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 0px; WIDTH: 3px; BOTTOM: 0px; BACKGROUND: #ddd; BORDER-TOP: #999 1px solid; TOP: 0px; BORDER-RIGHT: #999 1px solid; LEFT: 200px; -moz-border-radius: 1px; -webkit-border-radius: 1px } #resizeHandle:hover { BACKGROUND: #aaa; CURSOR: e-resize } #resizeHandle .collapseControl { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #resizeHandle .pullcollapsed { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .collapseControl:hover { CURSOR: pointer } .caretTitleModifier { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; COLOR: #444; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } .landingPageColumn H3.hiddenlink .linkStatus { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0.4em } TABLE.inventory .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .additional { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .additional .left { FLOAT: left } .additional .right { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: right; COLOR: #777; PADDING-TOP: 2px } .additional .right SPAN.size { COLOR: #000; FONT-WEIGHT: bold } .additional .left SPAN.suboption { DISPLAY: block } A.add { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #b3efb3; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.add:hover { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #e4ffdf; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.remove { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffc4bf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } A.remove:hover { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffd2cf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .listColumnHead { BORDER-BOTTOM: #ccc 1px dotted; MARGIN-BOTTOM: 3px; COLOR: #555; FONT-SIZE: 90%; FONT-WEIGHT: bold } .customFormBuilderLabel { WIDTH: 88%; DISPLAY: block; WORD-WRAP: break-word } .textareaWrapper TEXTAREA { WIDTH: 100% } .textareaWrapper TABLE { WIDTH: 100% } .tools.navPalette { } DIV.instructionData { MARGIN: 0px 0px 12px } DIV.instructionData UL { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } DIV.instructionData UL LI H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 100% } DIV.instructionData UL LI.instructions { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px } DIV.instructionData UL LI.saving { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.instructionData UL LI.instructions A.browse { BORDER-BOTTOM: medium none; BORDER-LEFT: #ccc 1px solid; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .assessmentInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } .assessmentInstructions H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px }

.assessmentPortlet { Z-INDEX: 1; POSITION: fixed; RIGHT: 43px } .assessmentPortlet H3 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.assessmentPortletBlock H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.blockContents H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .savingQuestion { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: none; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #c03; FONT-SIZE: 150%; PADDING-TOP: 2px } TR.dummyVTBEFooter TD { BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 2px } .qIncomplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; COLOR: #333; BORDER-TOP: #999 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } .qComplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; BACKGROUND-COLOR: #ccc; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; FLOAT: left; COLOR: #888; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } DIV.canvasHead { PADDING-BOTTOM: 12px; MARGIN: 0.6em 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #f6f6f6; PADDING-TOP: 6px } DIV.canvasHead UL LI { BORDER-TOP: #eee 1px solid } DIV.canvasHead UL LI:first-child { BORDER-TOP: medium none } DIV.canvasHead UL LI DIV.label { COLOR: #555 } .peer_instructions { MARGIN: 12px 6px } .peerHelp { COLOR: #555 } H2.evaluator { MARGIN: 1em 0px 0.3em } H2.evaluator SPAN { FONT-SIZE: 90%; FONT-WEIGHT: normal } DIV.peerCriteriaStatus { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; BACKGROUND: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 0.3em } DIV.peerCriteriaStatus A.itemHeadOpen { MARGIN: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 90%; FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV.peerCriteriaStatus A.itemHeadOpen:hover { TEXT-DECORATION: underline } DIV.peerCriteriaStatus TD.qStatus { PADDING-BOTTOM: 4px; PADDING-LEFT: 1px; WIDTH: 5%; PADDING-RIGHT: 1px; PADDING-TOP: 4px } DIV.peerCriteriaStatus TD.qStatus A SPAN { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #fff 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 1px solid; PADDING-TOP: 1px } DIV.peerCriteriaStatus TD.qStatus A SPAN.qComplete { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qComplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qIncomplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus A SPAN IMG { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 12px; PADDING-RIGHT: 2px; HEIGHT: 12px; PADDING-TOP: 2px } .questionNumber { FONT-WEIGHT: bold } .questionType { FONT-WEIGHT: bold } .questionNumber { COLOR: #aaa } .questionDiv { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: -1px 0px 6px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.6em } .questionDiv H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: 0px 0px 0.6em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv P { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv DIV.criteriaText { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .questionDiv DIV.submission_text { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; WIDTH: 100%; PADDING-RIGHT: 4px; HEIGHT: 150px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .questionDiv TABLE { WIDTH: 98% } .questionDiv TABLE TABLE { WIDTH: auto } .questionDiv TD.label { WIDTH: 150px; WHITE-SPACE: nowrap } #creceipt { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: red; FONT-WEIGHT: bold; PADDING-TOP: 4px } UL.fileData { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.fileData LI { BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FLOAT: left; PADDING-TOP: 2px } UL.listNav { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: #ddd; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.listNav LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: #ededed; FLOAT: left; COLOR: #2d2680; PADDING-TOP: 0px } UL.listNav LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.listNav LI A:hover { BACKGROUND-COLOR: #dedede; TEXT-DECORATION: underline } UL.listNav LI A.active { BORDER-BOTTOM: #000 2px solid; BORDER-LEFT: #000 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BACKGROUND: #fff; COLOR: #000; BORDER-TOP: #000 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 2px solid; PADDING-TOP: 2px } UL.evaluation { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.evaluation LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 4px } UL.evaluation LI P { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 0px; WIDTH: 79%; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } UL.evaluation H4 { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 4px; WIDTH: 20%; PADDING-RIGHT: 0px; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } UL.evaluation LI P SPAN { COLOR: #555 } DIV.stepPanel DIV.user_html { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.stepPanels H4.defaultCursor { CURSOR: default } H4.defaultCursor { CURSOR: default } .qShow { DISPLAY: block } .qHide { DISPLAY: none } .completionContainer { PADDING-BOTTOM: 6px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainerLarge { PADDING-BOTTOM: 6px; HEIGHT: 75px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainer A IMG { VERTICAL-ALIGN: baseline } .pagedRumble { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 14px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px } .pagedPointsOutsideBar { POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; TOP: 0px; RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 0px; LEFT: auto } .pagedPoints { PADDING-BOTTOM: 6px; LINE-HEIGHT: 100%; MARGIN: -5px 24px -5px -10px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 5px } .designAreaHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaFooter { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaFooter H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaHeader .headertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .designAreaFooter .footertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV#emptyText { MARGIN: 0.6em 16px } .infoListWrapper { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #assessmentGradeForm .infoListWrapper { MARGIN: 0px -12px 18px } .infoListWrapper H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .infoListWrapper H3 A { PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -443px; PADDING-TOP: 3px } .infoListWrapper H3 A.open { BACKGROUND: url(images/indicators.png) no-repeat 0px -1040px } .infoList { MARGIN: 6px 12px } .infoList > LI { PADDING-BOTTOM: 0px !important; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 3px !important } .infoListWrapper .infoList > LI { BORDER-TOP: #cdcdcd 1px dotted } .infoList LI:first-child { BORDER-TOP: medium none } .infoList LI DIV H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .details .infoList { MARGIN-TOP: 0px !important } .infoListFloat { MARGIN: 0px } .infoListFloat LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 3px !important; PADDING-LEFT: 10px !important; PADDING-RIGHT: 10px !important; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 3px !important } .copyQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .linkQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .copyQuestion { BACKGROUND: url(/images/ci/icons/file_copy_ti.png) no-repeat 1px center } .linkQuestion { BACKGROUND: url(/images/ci/icons/file_link_ti.png) no-repeat 1px center } DIV.contentListRight { Z-INDEX: 1000; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 9px; RIGHT: 9px; FONT-WEIGHT: normal; PADDING-TOP: 4px } DIV.contentListRight A { MARGIN-LEFT: 4px; FONT-WEIGHT: bold } DIV.contentListRight SPAN:first-child + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN[style*='none']:first-child + SPAN { DISPLAY: none } DIV.contentListRight SPAN[style*='none']:first-child + SPAN + SPAN { DISPLAY: none } DIV.contentListRight SPAN SPAN { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 9px } DIV.contentListRight STRONG { PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.assessmentHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } DIV.assessmentHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 3px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.assessmentHeader DIV { MARGIN: 3px; COLOR: #555 } .questionShell { WIDTH: 100% } .questionShell > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TBODY > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell > TBODY > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH.labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell .labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell TD.valueCell { WIDTH: 83% } .questionShell .correctAnswer { WIDTH: 2% } .questionShell .field { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 15px; WIDTH: 95%; PADDING-RIGHT: 15px; PADDING-TOP: 0px } .questionShell .field IMG { POSITION: absolute; TOP: 52%; LEFT: -2px } .questionShell .field .vtbegenerated IMG { POSITION: relative; TOP: auto; LEFT: auto } .questionShell .vtbegenerated { WIDTH: 95%; DISPLAY: inline !important } .questionShell TD.valueCell TABLE .vtbegenerated { DISPLAY: inline !important } .takeQuestionDiv .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } #assessmentGradeForm .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } DIV.multiAssign { MARGIN: 3px 0px 9px } DIV.multiAssign UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; LIST-STYLE-IMAGE: none; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI.read { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI P { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } DIV.multiAssign UL LI.label { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.1em; PADDING-LEFT: 0px; WIDTH: 12em; PADDING-RIGHT: 0px; WHITE-SPACE: normal; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #888; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI P SPAN { COLOR: #888 } DIV.multiAssign A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } H3 A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.multiAssign A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.simpleLink { DISPLAY: block; COLOR: #666; FONT-WEIGHT: normal } H3 SPAN.status A.buttonMicro { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } H3 SPAN.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 DIV.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 SPAN.status SPAN { COLOR: #888 } H3 DIV.status SPAN { COLOR: #888 } H3 DIV.status { DISPLAY: inline } .gbtable_header DIV.gbText { text-shadow: 0 -1px 0 #777 } .gbtable THEAD DIV.gbText { text-shadow: 0 -1px 0 #777 } .subActionBar:hover { Z-INDEX: 1000 } .subActionBar DIV.block { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar DIV.button { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar SPAN.block { FLOAT: none } .subActionBar SPAN.button { FLOAT: none } .subActionBar LI.sub { POSITION: relative } .subActionBar FIELDSET LEGEND + DIV.block { BORDER-LEFT: 0px } .subActionBar SELECT { MAX-WIDTH: 180px; VERTICAL-ALIGN: middle } .subActionBar DIV.button { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .subActionBar DIV.last { BORDER-RIGHT: medium none } .subActionBar FIELDSET { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .subActionBar OPTGROUP { FONT-STYLE: normal; MARGIN-TOP: 6px; COLOR: #777; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal } .subActionBar OPTGROUP OPTION { COLOR: #000 } .subActionBar UL LI.sortableSelector A { PADDING-LEFT: 18px } .navPageHeader { TEXT-ALIGN: center; MARGIN: 1em 0px } .navPageHeader H3 { DISPLAY: inline; MARGIN-LEFT: 12px } .navPageHeader SPAN { MARGIN: 0px 6px 0px 0px; COLOR: #888; FONT-WEIGHT: normal } FIELDSET.secondaryActions { FLOAT: right } DIV.secondaryBlock { FLOAT: right } .cellInfoPanel { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #eee 1px solid; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid } .cellStatus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #f6f6f6; FONT-SIZE: 85%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .cellStatus DIV { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 2px } .statusTitle { BACKGROUND: #eee; COLOR: #666 } .statdata { COLOR: #000; OVERFLOW: hidden } .cellStatus DIV.gbTableTimeStamp { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; FLOAT: right; COLOR: #666; PADDING-TOP: 2px } .sortImage { POSITION: absolute; TOP: 9px; LEFT: 6px } .bubble { Z-INDEX: 1000; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } .bubble UL { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #e2eefe; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; OVERFLOW: hidden; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid; PADDING-TOP: 6px } .bubble UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 4px; PADDING-LEFT: 0px; WIDTH: 174px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #666; CLEAR: left; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .bubble UL LI SPAN { WIDTH: 80px; DISPLAY: block; FLOAT: left; COLOR: #666; FONT-WEIGHT: normal; MARGIN-RIGHT: 3px } .bubble UL LI SPAN.icon { WIDTH: 20px; FLOAT: left; OVERFLOW: hidden } .bubble UL LI SPAN.label { WIDTH: 147px; FONT-SIZE: 100%; FONT-WEIGHT: normal } .bubbleStem { POSITION: relative; WIDTH: 190px; HEIGHT: 14px } .bottom .bubbleStem { BOTTOM: 4px } .top .bubbleStem { TOP: -2px } .left .bubbleStem { PADDING-LEFT: 24px } .right .bubbleStem { TEXT-ALIGN: right; RIGHT: 24px } .selectList { Z-INDEX: 100; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #viewList { Z-INDEX: 1000 !important } .selectList LI { Z-INDEX: 101; MARGIN: 0px 4px 0px 0px; FLOAT: left } .selectList .sub A { DISPLAY: block; TEXT-DECORATION: none } .selectList .sub:hover UL { TOP: 20px !important; LEFT: 0px } .selectList .sub UL LI { POSITION: static !important; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .selectList .sub UL LI H4 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #888; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .selectList .sub UL LI H4 { WIDTH: 152px } .selectList .sub UL LI A { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:hover { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:focus { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub A #currentView { BACKGROUND-IMAGE: none } .selectList .sub A #currentSortBy { BACKGROUND-IMAGE: none } .selectList .sub A #currentColSortDir { BACKGROUND-IMAGE: none } UL.selectList LI.sub UL LI.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } UL.selectList LI.sub UL LI.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } DIV.gradeDetails { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 6px } DIV.gradeDetails DIV.label { WIDTH: 15% } SPAN.unstyled { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 0px } @media Print { DIV.hideOnPrint { DISPLAY: none } } DIV.gradeDetailsStep { BORDER-BOTTOM: #ccc 2px solid; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px 0px 6px } .gradeInfoHeader { PADDING-BOTTOM: 3px; MARGIN: 0px -12px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3 { PADDING-BOTTOM: 3px; MARGIN: 0px 4px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 3px } .gradeInfoHeader H3 SPAN { COLOR: #000; FONT-WEIGHT: bold } .gradeInfoHeader H3.root { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #888; COLOR: #fff; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3.root SPAN { COLOR: #fff } UL.gb_currView LI.sub UL LI.favorite A { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } UL.gb_currView LI.sub UL LI.favorite A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } .navStatusButtons .taskbuttondiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.staticFooter DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader { MARGIN: 10px 0px 0px } DIV.staticFooter DIV.details { BORDER-BOTTOM: #ddd 1px solid } .gbColumns_rumble { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ddd 1px solid } .staticHeader { POSITION: relative; ZOOM: 1; CLEAR: both } .staticFooter { POSITION: relative; ZOOM: 1; CLEAR: both } .staticHeader DIV.itemHeaderControl { RIGHT: 0px } .staticFooter DIV.itemHeaderControl { RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { RIGHT: 0px } .staticHeader DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticFooter DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticHeader DIV.itemHeaderControl A { DISPLAY: inline-block } .staticFooter DIV.itemHeaderControl A { DISPLAY: inline-block } UL.gbCategories LI DIV.itemHeaderControl A { DISPLAY: inline-block } UL.dragableHighlight { BORDER-BOTTOM: #999 1px dashed; PADDING-BOTTOM: 3px; MARGIN: 12px -30px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; BORDER-TOP: #999 1px dashed; PADDING-TOP: 12px } UL.gbCategories LI H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticHeader H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticFooter H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } UL.gbCategories LI H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticHeader H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticFooter H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.areaHighlight DIV.container { BACKGROUND: #f9f9f9 } DIV.areaHighlight DIV.bottomRound B { BACKGROUND: #f9f9f9 } UL.dragableHighlight LI H3.item { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .dragableHighlight DIV.details { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } .dbThreadInfo DL { MARGIN: 1em } .dbThreadInfo DT { PADDING-BOTTOM: 0.1em; MARGIN: 0px; PADDING-LEFT: 0.1em; WIDTH: 8em; PADDING-RIGHT: 0.1em; FLOAT: left; COLOR: #999; CLEAR: left; FONT-WEIGHT: bold; PADDING-TOP: 0.1em } .dbThreadInfo DD { PADDING-BOTTOM: 0.1em; MARGIN: 0px 0px 0px 9em; PADDING-LEFT: 0.1em; PADDING-RIGHT: 0.1em; PADDING-TOP: 0.1em } .rating { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 80px; PADDING-RIGHT: 0px; BACKGROUND: url(images/controls.png) no-repeat 0px -20px; HEIGHT: 16px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .star0 { BACKGROUND-POSITION: 0px -20px } .star1 { BACKGROUND-POSITION: 0px -36px } .star2 { BACKGROUND-POSITION: 0px -52px } .star3 { BACKGROUND-POSITION: 0px -68px } .star4 { BACKGROUND-POSITION: 0px -84px } .star5 { BACKGROUND-POSITION: 0px -100px } UL.rating LI { TEXT-INDENT: -999em; CURSOR: pointer } UL.rating LI A { Z-INDEX: 200; POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 0px; TEXT-DECORATION: none; LEFT: 0px } UL.rating LI.one A { LEFT: 0px } UL.rating LI.two A { LEFT: 16px } UL.rating LI.three A { LEFT: 32px } UL.rating LI.four A { LEFT: 48px } UL.rating LI.five A { LEFT: 64px } UL.rating LI A:hover { Z-INDEX: 2; WIDTH: 80px; BACKGROUND: url(images/controls.png) no-repeat -90px -36px; HEIGHT: 16px; OVERFLOW: hidden; LEFT: 0px } UL.rating LI.one A:hover { BACKGROUND-POSITION: -90px -36px } UL.rating LI.two A:hover { BACKGROUND-POSITION: -90px -52px } UL.rating LI.three A:hover { BACKGROUND-POSITION: -90px -68px } UL.rating LI.four A:hover { BACKGROUND-POSITION: -90px -84px } UL.rating LI.five A:hover { BACKGROUND-POSITION: -90px -100px } DIV.collectionViewReadMessageBorder { BORDER-LEFT: #ccc 1px solid; MARGIN-LEFT: 30px } DIV.collectionViewUnreadMessageBorder { BORDER-BOTTOM: #999 3px solid; BORDER-LEFT: #999 3px solid; MARGIN-LEFT: 30px; BORDER-TOP: #999 3px solid; BORDER-RIGHT: #999 3px solid } TABLE.treeframe TR TD { VERTICAL-ALIGN: middle } TABLE.tree_view TR TD IMG { VERTICAL-ALIGN: middle } TABLE.treeframe { MARGIN: 0px } TABLE.treeframe TBODY TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe THEAD TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe TR.high { BACKGROUND-COLOR: transparent } TR.thread TD { VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid } TR.thread TD IMG { VERTICAL-ALIGN: middle } TABLE.unreadmessageborder { BORDER-BOTTOM: #666 3px solid; BORDER-LEFT: #666 3px solid; BORDER-TOP: #666 3px solid; BORDER-RIGHT: #666 3px solid } TABLE.readmessageborder { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TR.show { DISPLAY: table-row } TR.hide { DISPLAY: none } .loadingelipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #ffc; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .gradefield { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 9px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #000; FONT-SIZE: 120%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 4px } .gradefield INPUT { BORDER-BOTTOM: #666 2px solid; BORDER-LEFT: #666 2px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-FAMILY: arial, sans-serif; BACKGROUND: #fff; FONT-SIZE: 110%; VERTICAL-ALIGN: middle; BORDER-TOP: #666 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #666 2px solid; PADDING-TOP: 1px } .gradefield INPUT.inputtypebutton { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; DISPLAY: inline; BACKGROUND: #ededed; HEIGHT: auto; FONT-SIZE: 80%; OVERFLOW: visible; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .gradefield A { FONT-SIZE: 120%; FONT-WEIGHT: bold } .gradefield SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; COLOR: #555; FONT-SIZE: 80%; PADDING-TOP: 0px } .overridegrade { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 3px 0px 3px 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline; FONT-SIZE: 80%; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .overridegrade INPUT.inputtypebutton { MARGIN-TOP: -3px; FONT-SIZE: 70%; VERTICAL-ALIGN: middle; FONT-WEIGHT: normal } DIV.parentmessage { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #ededed; CLEAR: both; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .availability { PADDING-BOTTOM: 1px; FONT-STYLE: italic; MARGIN: 6px 0px; PADDING-LEFT: 3px; WIDTH: auto; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TD.tag_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.msg_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.checkbox_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } TD.prevnextpostarea { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } H3.dbheading { MARGIN-TOP: 0px; DISPLAY: inline; MARGIN-BOTTOM: 0px; FONT-WEIGHT: normal } .dbThread { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa 1px solid; MARGIN: 24px 30px; BACKGROUND: #eee; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 3px 6px #ccc; -webkit-box-shadow: 0 3px 6px #ccc; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbThreadCheckbox { POSITION: absolute } .dbThreadCheckbox INPUT { MARGIN: 10px } .dbThread .dbThreadInfo { PADDING-BOTTOM: 1em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; COLOR: #555; PADDING-TOP: 1em } .dbThreadInfo DL { MARGIN: 0px; WIDTH: 50%; FLOAT: left; FONT-SIZE: 95% } .dbThreadBody { PADDING-BOTTOM: 2em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; BACKGROUND: #fff; PADDING-TOP: 2em } P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbParentPost P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbThreadHeader { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter { PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadHeader .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadFooter .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } .dbThreadHeader .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } DIV.spacerDiv { CLEAR: both } .threadButtons .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .dbThreadInfo .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo P { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.6em } .dbThreadInfo P.detailButtons { FLOAT: right } .dbThreadTree { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MIN-HEIGHT: 80px; MAX-HEIGHT: 200px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #threadArea { PADDING-BOTTOM: 18px; MARGIN: 0px -30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } #message { MARGIN: 0px -30px -20px; BORDER-TOP: #ccc 1px solid } #message_upper { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: -20px -30px 0px } .dbParentPost { BORDER-BOTTOM: #bbb 1px dashed; BORDER-LEFT: #bbb 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -0.6em 0px 1.2em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #bbb 1px dashed; BORDER-RIGHT: #bbb 1px dashed; PADDING-TOP: 0.6em; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbParentPost H4 { MARGIN: 0px 0px 0.6em } .dbParentPost H4 A { WIDTH: 100%; DISPLAY: block } .dbParentPost P { PADDING-BOTTOM: 1.2em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .dbParentPostBody { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; MARGIN-BOTTOM: 0.6em; BACKGROUND: #fcfcfc; CLEAR: both; PADDING-TOP: 0.6em } .loadingElipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: 12px auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #fff7de; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .unreadmessage { FONT-WEIGHT: bold } H3.unreadmessage { FONT-WEIGHT: bold } .unreadmessage.dbheading { FONT-SIZE: 100% } .unread-count { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #128fa8; COLOR: #fff; PADDING-TOP: 2px; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px } #threadArea DIV.checked { BACKGROUND-COLOR: #eee } #threadArea DIV.checked_top { BACKGROUND-COLOR: #eee } #threadArea DIV.checked { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } #threadArea DIV.checked_top { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } DIV.blogContainer { WIDTH: 74%; FLOAT: left } DIV.blogContainer H3.blogHead { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer DIV.blogEntry { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogContainer DIV.blogEntry H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; WORD-WRAP: break-word; BACKGROUND: url(images/small_discussions.gif) no-repeat 8px 9px; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 9px } DIV.blogContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 3px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } DIV.blogContainer DIV.entryDate { COLOR: #444; FONT-SIZE: 95% } DIV.blogContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.blogContainer DIV.entryFooter { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #eaeaea; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.5% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px -12px; DISPLAY: none; BORDER-TOP: #999 1px solid; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.blogContainer DIV.entryFooter DIV.addBlogComment H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .addBlogComment .stepcontent OL { WIDTH: 100% } .addBlogComment .stepcontent OL LI { WIDTH: 100% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment DIV.controls { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.blogContainer UL.entryComments { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eaeaea; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.blogContainer UL.entryComments LI P { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } DIV.blogContainer UL.entryComments LI P.commentDate { Z-INDEX: 10; BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: right; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; MARGIN: 2px 0px -1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bubble_top_thin.gif) no-repeat 15px 100%; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #444; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.blogContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.blogContainer DIV.blogInstructions H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.journalNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.contentAreaNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } .messageCollectionContainer { FLOAT: left } DIV.blogNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { WORD-WRAP: break-word; OVERFLOW: hidden } DIV.blogNav UL.blogArchiveList LI A { WIDTH: 100%; WORD-WRAP: break-word } .indentedWikiList { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 22px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .indentedWikiList IMG { MARGIN: 0px 3px 0px -22px } .blogNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .journalNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .blogNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } .journalNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogNav LI.currentBlog { FONT-WEIGHT: bold } DIV.blogNav LI.currentBlog SPAN { FONT-WEIGHT: normal } DIV.blogContainer .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.blogNav .newItems { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav .gradeStatus { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.blogNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.blogNav UL UL { MARGIN-LEFT: 9px } DIV.blogNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } DIV.journalContainer { WIDTH: 74%; FLOAT: left; MARGIN-RIGHT: 1% } DIV.journalContainer H3.blogHead { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.journalContainer DIV.blogEntry { BORDER-BOTTOM: #eee 3px solid; POSITION: relative; BORDER-LEFT: #eee 0px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 36px; PADDING-RIGHT: 0px; BACKGROUND: url(images/blog_notebook_paper.gif) #fff repeat-y 0px 0px; BORDER-TOP: #eee 3px solid; BORDER-RIGHT: #eee 3px solid; PADDING-TOP: 0px } DIV.journalContainer DIV.blogEntry H4 { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 12px } DIV.journalContainer DIV.entryDate { Z-INDEX: 100; BORDER-BOTTOM: #c0dace 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; PADDING-TOP: 3px } DIV.journalContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; PADDING-TOP: 12px } DIV.journalContainer DIV.entryFooter { PADDING-BOTTOM: 12px; MARGIN: 0px 0px 0px -31px; PADDING-LEFT: 43px; PADDING-RIGHT: 12px; ZOOM: 1; BACKGROUND: url(images/blog_notebook_paper_bot.gif) repeat-x center bottom; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.35% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment { DISPLAY: none; MARGIN-BOTTOM: 6px } DIV.journalContainer UL.entryComments { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #c0dace 1px solid; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.journalContainer UL.entryComments LI P { PADDING-BOTTOM: 0px; MARGIN: 4px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI P.commentDate { COLOR: #444; MARGIN-LEFT: 19px; FONT-SIZE: 90% } DIV.journalContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: url(images/small_blog_comment.gif) no-repeat 0px 3px; COLOR: #000; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 3px } DIV.journalContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.journalContainer DIV.blogInstructions H4 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.blogInstructions P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { OVERFLOW: hidden } DIV.journalNav LI.currentBlog { FONT-WEIGHT: bold } DIV.journalNav LI.currentBlog SPAN { FONT-WEIGHT: normal } .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.journalNav .newItems { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.journalContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.journalNav UL UL { MARGIN-LEFT: 9px } DIV.journalNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } #blogNavLinks { POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 6px; RIGHT: 6px; PADDING-TOP: 0px } .contentAreaPalette UL#aboutBlog LI.currentBlogView { BORDER-BOTTOM: #0078cb 2px solid; BORDER-LEFT: #0078cb 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; MARGIN-BOTTOM: 3px; BACKGROUND: #eff6ff; BORDER-TOP: #0078cb 2px solid; BORDER-RIGHT: #0078cb 2px solid; PADDING-TOP: 2px } .currentBlogView A { COLOR: black; TEXT-DECORATION: none } UL.blogArchiveList { MARGIN-LEFT: 16px } UL.blogArchiveList LI { PADDING-BOTTOM: 4px } #gradeWidget SPAN#blogGradeValue { POSITION: relative; PADDING-LEFT: 6px } #blogGradeValue IMG { POSITION: absolute; TOP: 0px; LEFT: 0px } .contentAreaNav A.itemHead { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 6px } .contentAreaPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } DIV.blogNav .contentAreaPalette:first-child { BORDER-TOP: 0px } DIV.journalNav .contentAreaPalette:first-child { BORDER-TOP: 0px } .rightColumn-narrow .contentAreaPalette:first-child { BORDER-TOP: 0px } .contentAreaPalette UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .contentAreaPalette LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 0px } .contentAreaPalette LI LI { FONT-SIZE: 100% } DIV.iconLegendBlog { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .contentAreaNav A#blogListLink { PADDING-RIGHT: 48px } #loginPageContainer { MARGIN: 0px auto; MIN-HEIGHT: 100%; HEIGHT: auto !important } #loginHeader { POSITION: absolute; TOP: 0px; RIGHT: 0px } #loginHeader UL LI { POSITION: relative; MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; BACKGROUND: #888; VERTICAL-ALIGN: top; BORDER-TOP: 0px } #loginHeader UL LI A { PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 12px; WIDTH: 28px; PADDING-RIGHT: 12px; DISPLAY: inline-block; HEIGHT: 18px; PADDING-TOP: 6px } #loginHeader UL LI:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang H2:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang:hover H2 { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginHeader UL LI:first-child { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI:first-child A { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI IMG { DISPLAY: none } #loginHeader UL LI.font-size:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.contrast:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.font-size A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast:before { CONTENT: "c" } #loginHeader UL LI:hover:before { COLOR: #fff; CURSOR: pointer } #loginHeader UL LI.contrast { BORDER-LEFT: #777 1px solid; MARGIN-LEFT: -4px } #loginLang { POSITION: absolute; TOP: 0px; LEFT: 0px } #loginLang H2 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; BACKGROUND: #888; HEIGHT: 17px; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 4px; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0 } #loginLang H2 SPAN { TEXT-INDENT: -999px; WIDTH: 0px; DISPLAY: inline-block; OVERFLOW: hidden } #loginLang H2:before { FONT: 140%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "W"; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginLang H2:hover:before { COLOR: #fff } #loginLang UL { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 150px; PADDING-RIGHT: 6px; TOP: -1000px; PADDING-TOP: 6px; LEFT: -1000px } #loginLang:hover UL { WIDTH: 175px; TOP: 28px; LEFT: 0px; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0 } #loginLang H2:hover:after { Z-INDEX: 100 } #loginLang:hover H2:after { Z-INDEX: 100 } #loginLang UL LI A { WIDTH: auto } DIV.loginBody { PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BACKGROUND: url(images/Bb_learn_small.png) no-repeat 94px 94px; PADDING-TOP: 260px } DIV.loginBody .receipt { PADDING-BOTTOM: 14px; MARGIN: 0px auto 16px; PADDING-LEFT: 19px; WIDTH: 409px; PADDING-RIGHT: 4px; PADDING-TOP: 12px } #loginBox { TEXT-ALIGN: center } #loginBox UL { MARGIN: 0px auto; WIDTH: 415px } #loginBox LI { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #loginBox LI + LI + LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } #loginBox LI + LI + LI + LI { POSITION: relative; TEXT-ALIGN: right; DISPLAY: block } #loginBox LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #loginBox LI INPUT { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100%; PADDING-RIGHT: 10px; FONT-SIZE: 140%; PADDING-TOP: 10px; -moz-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1) } #loginBox INPUT[type='text'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='password'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='text']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox LI INPUT[type='submit'] { PADDING-BOTTOM: 7px; MARGIN: -31px -9px 0px 12px; PADDING-LEFT: 22px; WIDTH: auto; PADDING-RIGHT: 22px; FONT-SIZE: 130%; PADDING-TOP: 7px } #loginFormTitle { POSITION: absolute; DISPLAY: none } #loginFormText { POSITION: absolute; DISPLAY: none } DIV.portlet #loginFormTitle { POSITION: static; DISPLAY: block } DIV.portlet #loginFormText { POSITION: static; DISPLAY: block } #loginOptions { TEXT-ALIGN: center; MARGIN: 38px auto 26px; WIDTH: 600px } #loginOptions H2 { MARGIN: 10px } #loginOptions P { MARGIN: 10px; COLOR: #444; FONT-SIZE: 0.85em } #loginOptions UL LI { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI.subOption { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } #loginOptions UL LI.subOption A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } .forgot A { BORDER-BOTTOM: #0099b6 1px dotted } #loginOptions UL LI A:hover { BORDER-BOTTOM-STYLE: solid } #loginOptions UL LI.subOption A:hover { BORDER-BOTTOM-STYLE: solid } .forgot A:hover { BORDER-BOTTOM-STYLE: solid } #loginText { TEXT-ALIGN: center; PADDING-BOTTOM: 18px; PADDING-LEFT: 80px; PADDING-RIGHT: 80px; DISPLAY: none; BACKGROUND: #5f6062; BORDER-TOP: #777 1px solid; PADDING-TOP: 12px } #loginText P SPAN { COLOR: #fff; FONT-SIZE: 105%; FONT-WEIGHT: bold } #loginText P { MARGIN: 0px; COLOR: #ededed; FONT-SIZE: 95% } #loginImage { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } #loginImage IMG { MARGIN: 0px auto } #loginAnnouncements { PADDING-BOTTOM: 7px; MARGIN: 0px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 24px } #loginAnnouncements H3 { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 9px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: none; COLOR: #555; FONT-SIZE: 110%; PADDING-TOP: 6px } #loginAnnouncements UL { TEXT-ALIGN: center; MARGIN: 0px auto; WIDTH: 800px } #loginAnnouncements UL LI:before { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:after { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:before { LEFT: 8px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } #loginAnnouncements UL LI:after { RIGHT: 8px; -moz-transform: rotate(2deg); -webkit-transform: rotate(2deg) } #loginAnnouncements LI { POSITION: relative; TEXT-ALIGN: justify; PADDING-BOTTOM: 24px; MARGIN: 0px 0px 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; ZOOM: 1; BACKGROUND: #fff; COLOR: #666; FONT-SIZE: 95%; VERTICAL-ALIGN: top; PADDING-TOP: 18px; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15) } #loginAnnouncements UL LI STRONG:first-child { MARGIN: 0px 0px 12px; FONT-FAMILY: Georgia, serif; FLOAT: left; COLOR: #000; FONT-SIZE: 115% } #loginAnnouncements UL LI STRONG + EM { TEXT-ALIGN: right; MARGIN: 0px; DISPLAY: block; FONT-FAMILY: Georgia; FLOAT: right } #loginAnnouncements UL LI STRONG + EM + BR { DISPLAY: none } #loginAnnouncements UL LI .vtbegenerated { LINE-HEIGHT: 1.38; CLEAR: both } #loginAnnouncements UL LI:first-child { BORDER-TOP: 0px } #loginAnnouncements A { BORDER-BOTTOM: #128fa8 1px dotted } #loginAnnouncements A:hover { BORDER-BOTTOM-STYLE: solid } #loginAnnouncements A:focus { BORDER-BOTTOM-STYLE: solid } #loginHeader H1 { DISPLAY: none } #loginHeader H2 { DISPLAY: none } #loginHeader .productLogo { DISPLAY: none } #loginOptions #gatewayButtonsTitle { DISPLAY: none } #loginOptions #gatewayButtonsInstructions { DISPLAY: none } .login-page #copyright { POSITION: absolute; TEXT-ALIGN: center; MARGIN-TOP: 24px; WIDTH: 900px; BOTTOM: 24px; MARGIN-LEFT: -450px; LEFT: 50% } #loginAnnouncements + #copyright { POSITION: relative } .loginCopyright { WIDTH: 580px !important } .login-page #copyright .logo { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; PADDING-TOP: 0px } .login-page #copyright .newCopyright { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .loginCopyright .legal { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .additionalInfo { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .legal { BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; WIDTH: 24.5em; PADDING-RIGHT: 12px; PADDING-TOP: 3px } #loginPane + #copyright .legal P { MARGIN: 0px; DISPLAY: inline } #loginPane + #copyright .additionalInfo P { MARGIN: 0px; DISPLAY: inline } .login-page .copyrightDetailContents { MIN-HEIGHT: 6.5em; MARGIN-LEFT: -394px; LEFT: 50% } H1.pageTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .caliperTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .discoverTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .unitHomePageTitle { MARGIN: -60px -30px 5px } .caliperTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .unitHomePageTitle H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .discoverTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } .unitHomePageTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .caliperTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .unitHomePageTitle A.browseNoImg { PADDING-BOTTOM: 3px; PADDING-TOP: 2px } .reports { MIN-WIDTH: 810px; BACKGROUND: #f0f0f0 } .reports .navigationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .container { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports #dataCollectionContainer { MARGIN: 0px } .reports DIV[id*='step'] { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .reports UL { MARGIN: 12px } .reports .stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports UL LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; PADDING-TOP: 0px } .reports .label { COLOR: #777 } .reports .field { COLOR: #000 } .reports UL LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .reports H1 { PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 9px } .reports H2 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; PADDING-TOP: 3px } .reports H3 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .reports H3 A IMG { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .reports H3.steptitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; LETTER-SPACING: 0px; COLOR: #fff; FONT-SIZE: 110%; PADDING-TOP: 4px } .reports H4 { PADDING-BOTTOM: 3px; MARGIN: 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; COLOR: #fff; FONT-SIZE: 115%; PADDING-TOP: 3px } .reports H5 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 6px; MARGIN: 12px -12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .reports .attachments { MARGIN: 0px } .reports t.wide { MARGIN: 0px; WIDTH: 100% } #toc { LIST-STYLE-POSITION: outside; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: decimal; MARGIN: 12px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #toc UL { MARGIN: 0px 24px 24px } .toc_div { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; PADDING-BOTTOM: 4px; MARGIN: 6px 18px 18px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid; PADDING-TOP: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .toc_div OL LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports .toc_div H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .toc_div H2 A IMG { MARGIN-RIGHT: 6px } .toc_div A.toggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #f6f6f6; FLOAT: right; FONT-SIZE: 95%; TOP: -4px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .toc_div A.toggle:hover { BACKGROUND: #fff } .backtotop { FLOAT: right } .dateofreport { FLOAT: right } .dateofreport { MARGIN: 6px 18px 12px 0px } .reports .block { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 18px 24px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px 4px 0 4px; -webkit-border-radius: 4px 4px 0 4px } .backtotop { POSITION: relative; MARGIN-BOTTOM: -40px; FLOAT: right; MARGIN-RIGHT: -1px } .backtotop A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f6f6f6; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .backtotop A:hover { BACKGROUND: #fff } .backtotop A IMG { MARGIN-RIGHT: 5px } DIV.fontPreview { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 4px; MARGIN: 3px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 4px } .textareaDiv { PADDING-BOTTOM: 6px } .textareaDiv TABLE { WIDTH: 98% } .textareaDiv TABLE TABLE { WIDTH: 100% } .textareaDiv TABLE TABLE TABLE { WIDTH: 100% } .textareaDiv TEXTAREA { WIDTH: 100%; BORDER-TOP: #666 2px solid } DIV.textToolbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 97.7%; PADDING-RIGHT: 0px; BACKGROUND: #f6f6f6; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } DIV.textToolbar A { WHITE-SPACE: nowrap; FONT-SIZE: 90% } DIV.textToolbar LABEL { PADDING-LEFT: 4px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.textToolbar SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } .previewTextArea { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #999 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 459px; PADDING-RIGHT: 0px; DISPLAY: none; BACKGROUND: #fff; HEIGHT: 112px; OVERFLOW: auto; BORDER-TOP: #999 2px solid; BORDER-RIGHT: #999 2px solid; PADDING-TOP: 0px } .previewTextArea DIV.previewTitle { BORDER-BOTTOM: #eee 2px solid; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; PADDING-TOP: 2px } .previewTextArea DIV.previewTitle A { FLOAT: right } .previewTextArea DIV.previewTitle H6 { MARGIN: 0px; FLOAT: left; FONT-SIZE: 90% } .previewTextArea DIV.previewContent { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .messageContainer H6 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .messageContainer P { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .messageVariable { BORDER-BOTTOM: #ed9 1px solid; BORDER-LEFT: #ed9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; BORDER-TOP: #ed9 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ed9 1px solid; PADDING-TOP: 0px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .myPlaces .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .explore .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .myPlaces A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .myPlaces A:hover { TEXT-DECORATION: underline } .myPlaces A:focus { TEXT-DECORATION: underline } .myPlaces A.home { PADDING-RIGHT: 20px } .myPlaces SPAN.homeIconWrap { POSITION: absolute; BACKGROUND: url(/images/ci/icons/clphomepage/home_ti.gif) no-repeat 0px 0px; TOP: 3px; RIGHT: 3px } .myPlaces SPAN.homeIconWrap IMG { WIDTH: 16px; HEIGHT: 16px } .myPlaces A.unit { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.course { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.ee { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.program { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.workspace { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.unit { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.unit:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.course { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.course:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.ee { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.ee:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.program { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.program:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.workspace { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .myPlaces A.workspace:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .explore A { PADDING-LEFT: 30px; BACKGROUND: url(images/indicators.png) no-repeat 9px -1489px } .explore H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .wizardBody .locationPane { MARGIN: 0px; DISPLAY: block } .wizardBody .breadcrumbs .courseName { DISPLAY: none } .wizardBody .breadcrumbs .courseId { DISPLAY: none } .wizardBody .breadcrumbs { HEIGHT: 24px } .wizardBody .path .root A:before { POSITION: relative; FONT-FAMILY: "Pictos"; COLOR: #aaa; FONT-SIZE: 20px; CONTENT: "H"; TOP: -2px; FONT-WEIGHT: normal } .wizardBody .modeSwitchWrap { POSITION: absolute; TOP: 15px; RIGHT: 12px } .wizardBody { BACKGROUND: #fff } .wizardBody .container { POSITION: static } .wizardBody #contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 210px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 10px; PADDING-TOP: 12px } .wizardBody FORM#contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .topRound { DISPLAY: none } .wizardBody > .locationPane > .contentPaneWide > .topRound { POSITION: absolute; DISPLAY: block; TOP: 60px } .wizardBody #pageTitleDiv IMG { DISPLAY: none } .wizardBody .reqfield { MARGIN: 0px 0px 6px -6px; FLOAT: none } .wizardBody #containerdiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardHead H2 { MARGIN: 0px; FONT-SIZE: 110% } .wizardHead .helphelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .contentPaneWide > .contentBox > .pageTitle H1 { FONT-SIZE: 150% } .wizardBody .containerWizard { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .wizardBody .contentPaneWide > .contentBox > .pageTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 18px; MARGIN: -13px -12px 24px -224px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .wizardBody .contentPaneWide > .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .wizardHead { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; MARGIN-BOTTOM: 24px; BACKGROUND: #efede3; PADDING-TOP: 12px } .wizardBody #dataCollectionContainer { MARGIN: 0px } .wizardHead + .container { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px 4px 4px 4px } .wizardBody .containerWizard .container { HEIGHT: auto } .wizardBody .containerWizard .locationPane { MARGIN-TOP: 12px } .wizardBody UL.contentList LI DIV.details { OVERFLOW-X: visible } .wizardFinishText { MARGIN: 6px 0px 150px } .wizardSubmit { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px -79px -210px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #ccc 1px solid; TOP: 18px; PADDING-TOP: 18px } .wizardSubmit INPUT[name='cancel'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='Previous'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='finish'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='cancel']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='cancel']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[type=image] { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .wizardSubmit SPAN { MARGIN: 0px 18px; COLOR: #999 } .wizardSubmit SPAN STRONG { COLOR: #000 } .wizardBottomRound B.inner { BACKGROUND: #fff1c5 } .wizardBottomRound B.outer { BACKGROUND: #fff1c5 } .wizardBottomRound B.middle { BACKGROUND: #fff1c5 } .navigationPaneWizard { PADDING-BOTTOM: 0px; MARGIN-TOP: 63px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .navigationPaneWizard DIV B.inner { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.middle { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.outer { MARGIN-RIGHT: 0px !important } .navigationPaneWizard .navPalette { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .wizardBody #courseMenuPalette { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .wizardBody #courseMenuPalette DIV.navPaletteContent { -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navigationPaneWizard H2 { PADDING-BOTTOM: 6px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; LETTER-SPACING: 0.2em; COLOR: #00add0; FONT-SIZE: 90%; FONT-WEIGHT: 100; PADDING-TOP: 6px } .navigationPaneWizard .navPalette SPAN { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #ededed; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .navigationPaneWizard .navPalette LI { PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #777; FONT-SIZE: 95%; PADDING-TOP: 6px } .navigationPaneWizard .navPalette UL LI:first-child { POSITION: relative; BORDER-TOP: medium none } .navigationPaneWizard .navPalette UL LI.currentStep { COLOR: #000; FONT-WEIGHT: bold } .navigationPaneWizard .navPalette UL LI.currentStep:after { POSITION: absolute; LINE-HEIGHT: 0.5; COLOR: #999; FONT-SIZE: 18px; CONTENT: "?"; TOP: 9px; RIGHT: 0px } .containerWizard .controlPanel .navPaletteContent A { PADDING-BOTTOM: 4px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(../../../images/ci/ng/portlet_expand.gif) no-repeat 2px 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 4px } .containerWizard .navPaletteContent H2 { MARGIN: 0px; FONT-SIZE: 105% } .containerWizard .navPaletteContent H2 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px } .containerWizard .controlpanel LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #logDetail { OVERFLOW-Y: auto; HEIGHT: 300px } .totalMsgs { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 14px !important; PADDING-RIGHT: 6px !important; COLOR: #555; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 11px !important } .latestEntry { FLOAT: right !important; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal } .log-summary { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } .log-summary A { MARGIN: 0px 3px; DISPLAY: inline-block } .log-summary LI { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .sis-seperator { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .log-summary LI:first-child { BORDER-LEFT: medium none } .log-type { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; COLOR: #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .log-summary .log-type { FONT-SIZE: 120% } .log-error { BACKGROUND: #ef3e36 } .log-warning { BACKGROUND: #fcb040 } .log-message { BACKGROUND: #0b9444 } .log-debug { BACKGROUND: #00aeef } .log-header { MARGIN: 0px 0px 9px } .attachments .log-type { MIN-WIDTH: 6em; TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; LETTER-SPACING: 0.1em; FONT-SIZE: 90%; FONT-WEIGHT: normal } .table-scroll-wrapper TABLE { MARGIN: 0px } .table-scroll-wrapper TBODY { OVERFLOW-Y: auto; HEIGHT: 200px; OVERFLOW: hidden } .row-selected { BACKGROUND-COLOR: #e2eefe !important } .log-search > DIV > DIV { PADDING-BOTTOM: 0px !important; MARGIN: 6px 6px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 9px !important; DISPLAY: inline-block; BORDER-RIGHT: #bbb 1px dotted; PADDING-TOP: 0px !important } .answerSavedButton { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavingButton { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .timeUpWarning { COLOR: #cf0c0c } .thirtySecondWarning { COLOR: #cf0c0c } .oneMinuteWarning { COLOR: #cf0c0c } .fiveMinuteWarning { COLOR: #000 } .halfTimeWarning { COLOR: #000 } .headerForProgressBar { Z-INDEX: 100; POSITION: relative } DIV.assessmentPortletBlock H3.headerForProgressBar A { BACKGROUND: none transparent scroll repeat 0% 0% } .progressBar { Z-INDEX: 90; POSITION: absolute; BOTTOM: 0px; TOP: 0px; LEFT: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .progressBarStyle { BACKGROUND: #b6f796 } .progressBarStyleOneMin { BACKGROUND: #ffe79f } .progressBarStyleThirtySec { BACKGROUND: #ffafaf } .progressBarStyleOvertime { BACKGROUND: #ffafaf } .timerBar { BORDER-BOTTOM: #fff 2px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: #fff 2px solid; PADDING-BOTTOM: 3px; MARGIN: 4px 14px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; FONT-SIZE: 105%; BORDER-TOP: #fff 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 2px solid; PADDING-TOP: 3px; -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 9px; -webkit-border-radius: 9px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timer STRONG { Z-INDEX: 100; POSITION: relative } .timerText { PADDING-BOTTOM: 6px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; PADDING-TOP: 6px } .liveArea.timer { PADDING-BOTTOM: 9px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 6px } .questionStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 3px } .timedQuestionStatus { PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 2px groove; PADDING-TOP: 3px } .completionContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .questionStatus .questionStatusLabel { MARGIN: 0px; LETTER-SPACING: 0px; FONT-WEIGHT: normal } .questionStatus .questionStatusLabel A { COLOR: #666; TEXT-DECORATION: none } .questionStatus .questionStatusLabel A:hover { COLOR: #000; TEXT-DECORATION: underline } .timerMessage { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 2px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timeLabel { COLOR: #666; FONT-WEIGHT: normal } .timeValue { FONT-SIZE: 120% } .timer-collapsed.timer-toggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 0px 2px; PADDING-TOP: 0px } .timer-expanded.timer-toggle { POSITION: absolute; WIDTH: 20px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 3px 4px; HEIGHT: 20px; TOP: 5px; LEFT: 4px } .timerBar .timerLabel:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .timerMessage:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .progressBarStyleOvertime + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "t" } .progressBarStyleOneMin + .timerLabel:before { COLOR: #7f6b2f; CONTENT: "!" } .progressBarStyleThirtySec + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "!" } .timerMessage:before { CONTENT: "t" } .halfTimeWarning:before { COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } #collabRubricList .collabRubricListTypeContainer { MARGIN: 4px } .rubricGradingTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricGradingTable TH { COLOR: #45586f } .rubricTable TH { COLOR: #45586f } .rubricTable THEAD TH { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .rubricTable THEAD TH:first-child { BORDER-LEFT: medium none } .rubricGradingTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .rubricGradingTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH LABEL { FONT-WEIGHT: normal } .rubricTable TBODY TH INPUT { FONT-WEIGHT: normal } .rubricTable TBODY TH > SPAN { FONT-WEIGHT: normal } .rubricGradingTable .rubricCellHeader { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rubricGradingTable .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricSelectedValue { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricCellDescription { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingList .radioLabel { PADDING-BOTTOM: 3px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT-WEIGHT: bold; PADDING-TOP: 3px } .rubricGradingTable .rubricCellContainer { POSITION: relative; MIN-HEIGHT: 30px; OVERFLOW: hidden } .rubricCellRadio { POSITION: absolute; TOP: 6px } .rubricGradingList .rubricCellRadio { POSITION: absolute; TOP: 2px } .selectedCell .rubricCellRadio { TOP: -60px } .pointContainer { FONT-WEIGHT: bold } .rubricGradingTable .feedback { DISPLAY: none } .rubricGradingTable .selectedCell .feedback { DISPLAY: block } .rubricGradingTable .feedback TEXTAREA { WIDTH: 99% } .rubricGradingTable .selectedCell { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px; COLOR: #000; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .3); box-shadow: 0 0 6px rgba(0, 0, 0, .3) } .rubricGradingList .selectedCell { BACKGROUND: url(images/button_ok_ti.png) no-repeat 4px 3px } .rubricGradingTable TBODY TD:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #d1eaef; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .rubricTable TBODY TD:hover { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricGradingTable TBODY .selectedCell:hover { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px } .rubricCriteriaHead { WIDTH: 15% !important } .rubricInlineEdit { POSITION: relative } .rubricInlineEdit > DIV { Z-INDEX: 100; POSITION: absolute; WHITE-SPACE: nowrap } .gridActionBar { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gridActionBar .data TH { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .stepcontent .gridActionBar LI { PADDING-BOTTOM: 0px; MARGIN-BOTTOM: 0px } .rubricGradingTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricSelectedValue { DISPLAY: block; FONT-SIZE: 130%; FONT-WEIGHT: bold } .rangePercent { COLOR: #666; FONT-SIZE: 90%; FONT-WEIGHT: normal } .selectedCell .rangeValue { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #aaa 1px dashed; PADDING-TOP: 6px } .rubricControlContainer .containerTabs { MARGIN: 0px } .rubricControlContainer .contentAreaBlock { MARGIN: 0px } .rubricGradingList .rubricGradingCell { POSITION: relative; MARGIN: 1px 0px; OVERFLOW: hidden } .rubricGradingList .feedback { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .rubricGradingList .feedback TEXTAREA { WIDTH: 99% !important } .rubricGradingList H4 { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .rubricGradingList H4 SPAN { POSITION: absolute; PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 0px; RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 1px } .rubricGradingTotalPoints { MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingOverride { PADDING-BOTTOM: 6px; MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingComments .editor { MARGIN-TOP: 20px } .rubricGradingComments .rubricVtbeLabel { DISPLAY: block; MARGIN-BOTTOM: 10px } .alignmentPanel TR { COLOR: #555 } .alignmentPanel .gradingRubric { BACKGROUND-COLOR: #ffd; COLOR: #000 } .alignmentPanel .gradingRubric .title { FONT-WEIGHT: bold } .alignmentPanel UL.nav SPAN { PADDING-LEFT: 3px } .rubricPanel THEAD TR TH { WHITE-SPACE: normal !important } .rubricPopupContainer .rubricControlContainer { MARGIN: 0px 0px 10px } .rubricPopupContainer .onlyOne.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .onlyOne.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .last.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricGradingCell .pointRangeEdit { DISPLAY: none } .selectedCell.rubricGradingCell .pointRangeView { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .last.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricGradingTable .pointRangeView { DISPLAY: block; FONT-WEIGHT: bold } .selectedCell.rubricGradingCell .pointRangeEdit { DISPLAY: block; FONT-WEIGHT: bold } TD[align='right'] { TEXT-ALIGN: right !important } TD[align='left'] { TEXT-ALIGN: left !important } TR[align='right'] { TEXT-ALIGN: right !important } TR[align='left'] { TEXT-ALIGN: left !important } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: small; PADDING-TOP: 0px !important } .vtbegenerated P { MARGIN-BOTTOM: 4px } .vtbegenerated ADDRESS { FONT-STYLE: italic; DISPLAY: block } .vtbegenerated IMG { FILTER: alpha(opacity = auto) !important; opacity: auto } .vtbegenerated UL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated OL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated LI { LIST-STYLE-POSITION: inside } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated H5 { FONT-SIZE: 90% } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 35px } .vtbegenerated UL[type='circle'] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type='square'] LI { LIST-STYLE-TYPE: square } .vtbegenerated UL[type='disc'] LI { LIST-STYLE-TYPE: disc } .inlineVtbegenerated { DISPLAY: inline } .tree .treeNodeIcon { WIDTH: 16px; HEIGHT: 16px } .navPaletteContent .submenu LI.favorite { PADDING-LEFT: 10px } .navPaletteContent UL[id*='files_groupContents'] .favorite { PADDING-LEFT: 0px } .columnPalette H5 { MARGIN: 6px 0px 3px; COLOR: #555 } .blogNav .stepcontent { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .button-split-left { DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #f6f6f6 2px solid; -webkit-border-bottom-right-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -moz-border-radius-bottomright: 0 } .button-split-left:hover { BORDER-RIGHT: #555 2px solid } .button-split-right { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FLOAT: left; MARGIN-LEFT: -1px; PADDING-TOP: 4px; -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0 } .full_evaluation_view_component H3 { MARGIN: 18px 0px 3px } .full_evaluation_view_component H3:first-child { MARGIN: 9px 0px 3px } .gradeSide_panel .container { POSITION: relative; PADDING-RIGHT: 45% } .gradeSide_panel .contentListPlain { MARGIN: -20px 0px 0px -30px } .collabContainer { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .gradeSide { WIDTH: 36%; TOP: 20px; RIGHT: 20px } .gradeSide { BORDER-BOTTOM: #555 3px solid; POSITION: absolute; BORDER-LEFT: #555 3px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; BOTTOM: auto; PADDING-RIGHT: 4px; BACKGROUND: #888 0px 0px; BORDER-TOP: #555 3px solid; TOP: 20px; RIGHT: 20px; BORDER-RIGHT: #555 3px solid; PADDING-TOP: 4px; LEFT: auto; border-radius: 4px } .collapseTabsData A.close { TOP: 4px; RIGHT: 4px } .evalColumn .taskbuttondiv { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .gradeItemsWrapper { OVERFLOW: visible } .gradeSide .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .evalColumn { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 18px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2) } .evalColumn .liveArea { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .column-wrapper { POSITION: relative; OVERFLOW: visible !important } .column-nav { WIDTH: 190px; FLOAT: left } .colspan2 { POSITION: relative; MARGIN-LEFT: 190px } .colspan2#standards-column { BORDER-LEFT: #ccc 3px double; PADDING-BOTTOM: 12px; MARGIN-BOTTOM: -41px; TOP: -20px; LEFT: -3px } .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; COLOR: #555; PADDING-TOP: 18px } .column-nav .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; PADDING-TOP: 18px } .pageHead-2 H2 { MARGIN: 0px; FONT-SIZE: 120%; FONT-WEIGHT: normal } .pageHead-2 SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .pageHead-2 SPAN:first-child { BORDER-RIGHT: #aaa 1px dotted } .column-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .column-nav-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .category-column .column-nav-inner { BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee',endColorstr = '#cccccc',GradientType = 1); BORDER-LEFT: medium none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #column_lrn_std_category { BORDER-RIGHT: #ccc 3px double } .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 18px !important; BACKGROUND: #fff; PADDING-TOP: 6px !important } #standards-column .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 6px !important } .column-nav .column-inner { DISPLAY: none } .navmenu-list-item { BORDER-BOTTOM: #777 1px solid; POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 21px; DISPLAY: block; WORD-WRAP: break-word; PADDING-TOP: 12px } .navmenu-list > LI:hover { BACKGROUND: #777 } .navmenu-list > LI > A { COLOR: #f6f6f6; FONT-SIZE: 110%; FONT-WEIGHT: 200; TEXT-DECORATION: none } .navmenu-list A SPAN { DISPLAY: none } .navmenu-list .active { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active:hover { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active A { COLOR: #000 } .column2-nav .category-column .navmenu-list LI > A { PADDING-LEFT: 24px } .column-wrapper .actionBar > UL > LI > A { PADDING-BOTTOM: 8px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; COLOR: #333; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 8px } .column-wrapper .actionBar > UL > LI > A:hover { BACKGROUND: #ccc } .standards .button-2 { COLOR: #444 } .standards .button-2:hover { BORDER-BOTTOM-COLOR: #aaa; BORDER-TOP-COLOR: #aaa; BORDER-RIGHT-COLOR: #aaa; BORDER-LEFT-COLOR: #aaa } .category-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .category-column .navmenu-list-item { BORDER-BOTTOM-COLOR: #d6d6d6; BORDER-TOP-COLOR: #d6d6d6; BORDER-RIGHT-COLOR: #d6d6d6; BORDER-LEFT-COLOR: #d6d6d6 } .category-column .navmenu-list-item A { COLOR: #333 } .category-column .navmenu-list-item:hover { FILTER: alpha(opacity = 100) !important; BACKGROUND-COLOR: #e0e0e0; opacity: 1 } .category-column .navmenu-list .active { Z-INDEX: 1001; BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; RIGHT: -4px; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; -moz-box-shadow: -4px 3px 5px #DDD; -webkit-box-shadow: -4px 3px 5px #DDD; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #DDD; border-radius: 4px 0 0 4px } .navmenu-list .inactive { FILTER: alpha(opacity = 75); opacity: .75 } .standards .actionBar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 32px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .actionBar#actionbarlrn_std_doc { BORDER-BOTTOM-COLOR: #777 } .actionBar#actionbarlrn_std_doc > UL > LI > A { COLOR: #f0f0f0; -moz-border-radius: 4px 0 0 0; -webkit-border-radius: 4px 0 0 0; border-radius: 4px 0 0 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .actionBar#actionbarlrn_std_doc > UL > LI > A:hover { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_doc > UL > LI:hover > A { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_category > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std_category > UL > LI > A:hover { BACKGROUND: #ccc; COLOR: #000 } .actionBar#actionbarlrn_std { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 9px 0px 20px; BACKGROUND: #f0f0f0; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .actionBar#actionbarlrn_std > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std > UL > LI > A:hover { BACKGROUND: #ddd; COLOR: #000 } .standards .actionBar > UL { MARGIN: 0px; HEIGHT: 32px } .standards .actionBar UL LI { FLOAT: left } .standards .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .standards .searchbar .selectedItem LABEL SPAN { FONT-SIZE: 90% } .navmenu-actions-1 { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #f0f0f0; BORDER-TOP: #ccc 1px solid; TOP: 4px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px; LEFT: -4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .active .navmenu-actions-1 { LEFT: -4px } .navmenu-actions-2 { POSITION: absolute; PADDING-BOTTOM: 1px !important; PADDING-LEFT: 1px !important; PADDING-RIGHT: 1px !important; TOP: 22px; PADDING-TOP: 1px !important; LEFT: -4px } .navmenu-list-item .contextMenuContainer { POSITION: absolute; MARGIN-TOP: -8px; TOP: 50%; RIGHT: 9px; opacity: 0 } .navmenu-list .active .contextMenuContainer { opacity: 1 } .navmenu-list .active:hover .contextMenuContainer { opacity: 1 } .navmenu-list-item:hover .contextMenuContainer { opacity: .5 } .navmenu-list-item:hover .contextMenuContainer:hover { opacity: 1 } .standards .column-1 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-3 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 1%; WIDTH: 46%; PADDING-RIGHT: 1%; PADDING-TOP: 0px } .standards .column-3 { MARGIN: 0px; WIDTH: 31% } .standardForm > H3 + DIV.column-2 { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standards .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .standards .stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standardForm { POSITION: absolute !important; TOP: 38px; LEFT: 6px } .inline-form-title { MARGIN: 6px 0px } .docs-column .column-nav-inner { BORDER-BOTTOM: #777 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#999999',endColorstr = '#777777',GradientType = 1); BORDER-LEFT: #777 1px solid; MIN-HEIGHT: 400px; BACKGROUND: #999; COLOR: #fff; BORDER-TOP: #777 1px solid; BORDER-RIGHT: medium none; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px } .docs-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .iconToggleWrapper { ZOOM: 1; DISPLAY: inline-block } .iconToggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px -5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .quickAddPal .iconToggle { MARGIN: 0px 0px 0px -1px } .iconToggle:first-child { MARGIN: 0px; -moz-border-radius: 2px 0 0 2px; -webkit-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px } .iconToggle:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #e8f0fe; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .stepcontent .iconToggle .fieldHelp { Z-INDEX: 100; BORDER-BOTTOM: #555 1px solid; POSITION: absolute; MIN-WIDTH: 200px; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #fff; FONT-SIZE: 90%; BORDER-TOP: #555 1px solid; TOP: 100%; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 3px; LEFT: 0px; -moz-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .iconToggle:hover .fieldHelp { Z-INDEX: 10; DISPLAY: block } .iconToggleWrapper .selectedItem { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #cdcdcd; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset } .iconToggle LABEL SPAN { DISPLAY: none; COLOR: #555 } .selectedItem LABEL SPAN { DISPLAY: inline } .selectedItem .fieldHelp STRONG { DISPLAY: none } #lrn_std .panelHead { PADDING-BOTTOM: 9px; PADDING-LEFT: 25px; PADDING-RIGHT: 16px; PADDING-TOP: 9px } #lrn_std .sHeader { MARGIN-LEFT: -21px } #lrn_std .contextMenuContainer { } .lb-content .itemTray { POSITION: absolute } .lb-drawer { PADDING-BOTTOM: 54px } .lb-noTitleBar #pageTitleBar { DISPLAY: none } .lb-locationPane { MARGIN: 0px } .lb-locationPane #contentPanel { MARGIN: 0px } .lb-contentBox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none; border-radius: 0 } .overSoftLimit { COLOR: red } .autocomplete_pos { TOP: 15px !important; LEFT: 0px !important } .autocomplete { Z-INDEX: 5; BORDER-BOTTOM: #888 1px solid; POSITION: absolute; BORDER-LEFT: #888 1px solid; BACKGROUND-COLOR: #fff; WIDTH: 250px; BORDER-TOP: #888 1px solid; BORDER-RIGHT: #888 1px solid; box-shadow: 0 0 3px rgba(0, 0, 0, .3) } .autocomplete .selected { BACKGROUND-COLOR: #ccc } .autocomplete UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; CURSOR: pointer; PADDING-TOP: 2px } .quickAddPal .field { POSITION: relative } .quickAddPal .noLabelField { POSITION: relative } .renameCategory { Z-INDEX: 1200; POSITION: absolute; BOTTOM: 0px; DISPLAY: block; TOP: 0px; RIGHT: 0px; LEFT: 0px } .renameCategory A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } LI SPAN.labelMenuItem { COLOR: #000; FONT-WEIGHT: bold } #toolSettingsWrapper_table TBODY TR { BORDER-TOP: #ddd 1px dashed } #toolSettingsWrapper_table TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #toolSettingsWrapper_table TBODY TR.rowTitle TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle { BACKGROUND-COLOR: #ebebeb; BORDER-TOP: #ddd 1px solid } #toolSettingsWrapper_table TBODY TR.rowTitle H3 { MARGIN: 0.5em 0px } .tooltipContainer { POSITION: relative; TEXT-DECORATION: none } .tooltip { DISPLAY: none; WORD-WRAP: break-word } .tooltip-top { DISPLAY: none; WORD-WRAP: break-word } .tooltipContainer:hover .tooltip { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltipContainer:hover .tooltip-top { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltip:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip-top:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 1px; COLOR: #3b3b3b; LEFT: 1px; -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); -khtml-transform: rotate(90deg) } .tooltip-top:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: auto; COLOR: #4f4f4f; TOP: 0px; LEFT: -2px; -moz-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -o-transform: rotate(-90deg); -khtml-transform: rotate(-90deg) } .paddedMetadata { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 6px !important; PADDING-TOP: 6px !important } .quickAddPal .colorlist LI A.transparent { BACKGROUND-IMAGE: url(/images/swatches/transparent.gif); BACKGROUND-POSITION: -1px -1px; COLOR: transparent } .quickAddPal .colorlist LI A.transparent:hover { BACKGROUND-POSITION: -2px -2px } DIV.checkListActions { PADDING-BOTTOM: 10px } .quickAddPal .colorlist LI A.transparent:active { BACKGROUND-POSITION: -3px -3px } .quickAddPal .colorlist LI A.transparent:focus { BACKGROUND-POSITION: -3px -3px } .theme_scrollbar_content H2 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; FONT-STYLE: italic; MARGIN: -35px 0px 15px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; LETTER-SPACING: 0.06em; COLOR: #333; FONT-SIZE: 130%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #wizard .theme_scrollbar_content H2 { COLOR: #ccc } .theme-switch-wrapper { DISPLAY: inline-block } .theme-switch { POSITION: relative; MARGIN: -14px 9px -14px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-RIGHT: #ccc 1px solid } .theme-switch .sub > A { PADDING-BOTTOM: 14px; LINE-HEIGHT: 1; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; OVERFLOW: hidden; PADDING-TOP: 14px } .theme-switch .sub > A:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .theme-switch .sub:hover > A { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .dummy-switch.theme-switch:hover { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .theme-switch A SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch SPAN SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:after { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM-COLOR: #999; TOP: -8px } .theme-switch .nav .sub UL { WIDTH: 180px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .theme-switch .nav .sub UL LI H4 { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#999999,endColorstr=#333333); PADDING-BOTTOM: 4px; MARGIN-TOP: 5px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #fff; PADDING-TOP: 4px } .theme-switch .nav .sub UL A { PADDING-BOTTOM: 4px; PADDING-LEFT: 18px; WIDTH: 142px; PADDING-RIGHT: 4px; FONT-SIZE: 95%; PADDING-TOP: 4px } BODY DIV.lb-overlay { BACKGROUND: url(images/reorder_bg.png) #bbb -10px 0px } #wizard { Z-INDEX: 1100; BORDER-BOTTOM: #666 1px solid; POSITION: fixed; BORDER-LEFT: #666 1px solid; WIDTH: 900px; BACKGROUND: #555; MARGIN-LEFT: -450px; BORDER-TOP: #666 1px solid; TOP: 5px; BORDER-RIGHT: #666 1px solid; LEFT: 50%; box-shadow: 0 11px 20px rgba(0, 0, 0, .7); border-radius: 9px; background-clip: content-box } #wizard H1 { BORDER-BOTTOM: #666 1px solid; PADDING-BOTTOM: 10px; MARGIN: 1px 0px 0px 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #494949; COLOR: #bbb; FONT-SIZE: 110%; PADDING-TOP: 10px; box-shadow: 0 -1px 0 #363636 inset; border-radius: 9px 9px 0 0; text-shadow: 0 -1px 0 #111 } #wizard .accordion-wrapper { MARGIN: 0px 30px; BACKGROUND: none transparent scroll repeat 0% 0%; border-radius: 0 0 6px 6px } #wizard .accordion_toggle { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_content { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_toggle { POSITION: relative; TEXT-ALIGN: right; PADDING-RIGHT: 60px; COLOR: #aaa; FONT-SIZE: 90%; BORDER-TOP: #444 1px solid; CURSOR: pointer; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .accordion_toggle .accordionTabLabel { FLOAT: left; COLOR: #eee; FONT-SIZE: 125%; TEXT-DECORATION: none } #wizard .accordion_toggle SPAN#selectedStructureName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle SPAN#selectedThemeName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle_help { TEXT-ALIGN: left } #wizard .accordion_toggle A#unselectStructure { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectTheme { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectStructure:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectTheme:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectStructure:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle A#unselectTheme:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle:first-child { BORDER-TOP: 0px; box-shadow: none } #wizard .accordion_content { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #3d3b3b; HEIGHT: 245px; OVERFLOW: hidden; PADDING-TOP: 0px } #wizard .accordion_content A { COLOR: #1ec8ea } #wizard .accordion_toggle_addstructure .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-1.png) no-repeat } #wizard .accordion_toggle_choosetheme .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-2.png) no-repeat } #wizard .accordion_toggle_help .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-4.png) no-repeat } #wizard .right-image { POSITION: absolute; WIDTH: 30px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center center; HEIGHT: 30px; TOP: 6px; RIGHT: 8px; opacity: .5 } #wizard .previewArea { PADDING-BOTTOM: 5px; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #474747; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 235px; MAX-HEIGHT: 235px; FONT-SIZE: 85%; OVERFLOW: hidden; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 5px } .course_welcome_help_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } .selected.course_welcome_help_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.course_welcome_help_scrollbar_handle { } .course_welcome_help_container { POSITION: relative } #wizard .previewArea .introduction { WIDTH: 80% } #wizard .previewArea .helplink { WIDTH: 80% } #wizard .previewArea .customHelp { WIDTH: 80% } #wizard .previewArea .conclusion { POSITION: absolute; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #3d3b3c; PADDING-LEFT: 10px; WIDTH: 20%; BACKGROUND-ATTACHMENT: fixed; PADDING-RIGHT: 10px; COLOR: #bbb; FONT-SIZE: 90%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } #wizard .previewArea .customHelp { PADDING-BOTTOM: 1em; MARGIN-TOP: 0.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; COLOR: #bbb; FONT-SIZE: 90%; BORDER-TOP: #555 1px dotted; PADDING-TOP: 1em } #wizard .previewArea H3 { MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 3px; FONT-SIZE: 140%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN { TEXT-TRANSFORM: uppercase; DISPLAY: block; COLOR: #888; FONT-SIZE: 65%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN SPAN { TEXT-TRANSFORM: lowercase; FONT-STYLE: italic; DISPLAY: inline; FONT-SIZE: 95% } #wizard .helplink .easylist { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN-TOP: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 0px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } #wizard .helplink .easylist LI { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; WIDTH: 46%; PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #555 2px dotted; PADDING-TOP: 3px } #wizard .helplink .easylist LI H3 { FONT-FAMILY: Georgia, serif } #wizard .helplink .easylist LI P { PADDING-LEFT: 0px } #wizard .helplink .easylist LI P { COLOR: #ddd } #wizard .log-summary { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; box-shadow: 0; border-radius: 0 } #wizard .conclusion H3 { TEXT-TRANSFORM: uppercase; MARGIN-TOP: 10px; COLOR: #888; FONT-SIZE: 100%; FONT-WEIGHT: normal } #wizard .conclusion UL { MARGIN-BOTTOM: 15px } #wizard .conclusion UL LI { MARGIN-BOTTOM: 5px } #wizard .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #wizard .content-inner { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #3d3b3b; BORDER-TOP: 0px; BORDER-RIGHT: 0px } #wizard .introtext { PADDING-BOTTOM: 1em; LINE-HEIGHT: 1.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 2em; FLOAT: left; COLOR: #ccc; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 1em } #wizard .introtext LABEL { FONT-STYLE: italic; DISPLAY: none; MARGIN-LEFT: 15px; FONT-SIZE: 85% } #wizard .introtext INPUT { FONT-STYLE: italic; FONT-FAMILY: Georgia, serif; MARGIN-BOTTOM: 10px; FONT-SIZE: 200% } #wizard .introtext .courseNameAndDescription TABLE TABLE { WIDTH: 99%; MARGIN-LEFT: 7px } #wizard .introtext TEXTAREA { FONT-SIZE: 110% } #wizard .introtext INPUT { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext TEXTAREA { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext .courseNameAndDescription { WIDTH: 60%; PADDING-RIGHT: 0.8em; FLOAT: left; MARGIN-RIGHT: 1em; BORDER-RIGHT: #666 3px dotted } #wizard .introtext P { LINE-HEIGHT: 1.4em; FONT-STYLE: italic; MARGIN: 55px 20px 0px 0px; FONT-FAMILY: Georgia, serif; FONT-SIZE: 90% } .themes .horizontal-block { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 8px; MARGIN: 35px 10px 0px; PADDING-LEFT: 0px; WIDTH: 230px; PADDING-RIGHT: 0px; HEIGHT: 184px; BORDER-TOP: #ddd 1px solid; CURSOR: pointer; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 8px } #wizard .themes .horizontal-block { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555 } .help .horizontal-block { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 250px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .themes .horizontal-block IMG { MARGIN: 0px auto; WIDTH: 203px; HEIGHT: 152px } .theme-selector { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 26px; PADDING-RIGHT: 26px; PADDING-TOP: 10px } .structure .theme-selector { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .theme-selector SPAN { FONT-SIZE: 110%; FONT-WEIGHT: bold } #wizard .selected .theme-selector SPAN { COLOR: #333 } .selected .theme-selector SPAN { COLOR: #fff } .structure .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } .themes .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } #wizard .structure .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard .themes .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected A { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard LI.selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .themes .selected.horizontal-block:hover { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } DIV.scroller { HEIGHT: 200px; OVERFLOW: hidden } .themes DIV.scroller { HEIGHT: 245px } DIV.scroller DIV.section { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: 780px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 225px; OVERFLOW: hidden; PADDING-TOP: 0px } .horizontal-block { TEXT-ALIGN: left; PADDING-BOTTOM: 6px; MARGIN: 8px 0px 0px 7px; PADDING-LEFT: 18px; WIDTH: 167px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: none; HEIGHT: 214px; FONT-SIZE: 80%; VERTICAL-ALIGN: top; PADDING-TOP: 3px; border-radius: 5px } .horizontal-block UL { MARGIN-LEFT: 4px } .structure .horizontal-block { HEIGHT: 178px; CURSOR: pointer } #wizard .gotocourse { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; PADDING-RIGHT: 2px; COLOR: #ccc; BORDER-TOP: #444 1px solid; PADDING-TOP: 10px; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .gotocourse LABEL { WIDTH: auto; DISPLAY: inline-table } #wizard .gotocourse LABEL SPAN { DISPLAY: block; COLOR: #999; FONT-SIZE: 10px } #wizard .gotocourse .button-2 { BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 8px; BORDER-TOP-COLOR: #333; MARGIN-BOTTOM: 7px; BORDER-RIGHT-COLOR: #333; FONT-SIZE: 115%; BORDER-LEFT-COLOR: #333; MARGIN-RIGHT: 25px; PADDING-TOP: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 1px 1px 0 #fefefe inset, -1px -1px 0 #888 inset; text-shadow: 0 1px 0 #BBB } #wizard .gotocourse .button-2:hover { BORDER-BOTTOM-COLOR: #222; BORDER-TOP-COLOR: #222; BORDER-RIGHT-COLOR: #222; BORDER-LEFT-COLOR: #222 } #wizard .number { POSITION: relative; LINE-HEIGHT: 1; FLOAT: left; COLOR: #999; FONT-SIZE: 150%; VERTICAL-ALIGN: middle; TOP: -1px; FONT-WEIGHT: bold; MARGIN-RIGHT: 18px } #wizard .accordion_toggle_help .number { TEXT-INDENT: -9999px; WIDTH: 20px; BACKGROUND: url(/images/ci/icons/step_star_light.png) no-repeat; HEIGHT: 20px; MARGIN-RIGHT: 14px; opacity: .4; background-size: 100% 100% } #wizard .gotocourse .secondary.button-2 { COLOR: #555; FONT-WEIGHT: normal; text-shadow: none } #wizard .gotocourse #welcomePageCancelButton { MARGIN-RIGHT: 10px } #wizard A.wizard-close:before { FONT: 150% "Utilicons"; CONTENT: "X" } #wizard A.wizard-close { POSITION: absolute; COLOR: #888; TOP: 8px; RIGHT: 13px } .theme_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 2px } #wizard .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { } .theme_scrollbar_content { TEXT-ALIGN: center; HEIGHT: 245px; OVERFLOW: hidden } .structure_scrollbar_container { POSITION: relative } .structure_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } DIV.courseStructureDescriptions .structure_scrollbar_track { MARGIN: 1px 3% 1px 0px; TOP: 10px } #wizard .structure_scrollbar_track { MARGIN: 1px 0px; TOP: 0px } #wizard .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } #wizard .selected.structure_scrollbar_handle:hover { BACKGROUND-COLOR: #777 } .selected.structure_scrollbar_handle { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle { } .selected.structure_scrollbar_handle:hover { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle:hover { } .structure_scrollbar_content { MARGIN-TOP: 30px; HEIGHT: 370px; OVERFLOW: hidden } #wizard .structure_scrollbar_content { MARGIN-TOP: 22px; HEIGHT: 200px } .courseStructureOuterDiv { MIN-WIDTH: 800px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 10px; PADDING-TOP: 0px } #wizard .courseStructureOuterDiv { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #3d3b3b; MIN-HEIGHT: 250px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .courseStructureNameScroller { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #fff; MARGIN: 10px 0px 0px; WIDTH: 170px; FLOAT: left; HEIGHT: 400px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; box-shadow: -1px 0 4px #CCC; border-top-left-radius: 4px; border-bottom-left-radius: 4px } #wizard .courseStructureNameScroller { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0px; HEIGHT: 220px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none; border-radius: 0 } .courseStructureNameScroller OL LI { MARGIN-BOTTOM: 3px; CURSOR: pointer } .courseStructureNameScroller OL LI:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .courseStructureNameScroller OL LI.courseStructureChoiceLink:focus { OUTLINE-COLOR: #fff; -moz-box-shadow: inset 0 0 6px #128FA8; -webkit-box-shadow: inset 0 0 6px #128FA8; box-shadow: inset 0 0 6px #128FA8 } #wizard .courseStructureNameScroller OL LI { MARGIN-LEFT: 13px } .courseStructureHeader { PADDING-BOTTOM: 5px; FONT-STYLE: italic; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #999; FONT-SIZE: 85%; CURSOR: default !important; PADDING-TOP: 15px } #structureDescription H3 { TEXT-ALIGN: center; MARGIN-TOP: 110px; FONT: italic 100% Georgia, serif } #wizard .courseStructureHeader { PADDING-LEFT: 0px; COLOR: #aaa; PADDING-TOP: 0px; text-shadow: 0 0 1px #222 } .courseStructureChoiceLink { PADDING-BOTTOM: 5px; PADDING-LEFT: 33px; PADDING-RIGHT: 5px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 5px } #wizard .courseStructureChoiceLink { PADDING-LEFT: 20px } .courseStructureChoiceSelected { BACKGROUND-COLOR: #f5f4ef; COLOR: #3d3b3b; border-top-left-radius: 4px; border-bottom-left-radius: 4px } .courseStructureChoiceSelected A { COLOR: #333 } #wizard .courseStructureChoiceSelected A { COLOR: #333 } .courseStructureDescriptions { POSITION: relative; HEIGHT: 400px; MARGIN-LEFT: 170px } #wizard .courseStructureDescriptions { POSITION: relative; MARGIN: 10px 0px 10px 170px; HEIGHT: 225px } .courseStructureDescriptionAndMenu { BORDER-BOTTOM: #ccc 1px solid; POSITION: static; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; BACKGROUND-COLOR: #f5f4ef; MARGIN: 10px 0px 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 20px; WIDTH: 95%; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 400px; COLOR: #333; FONT-SIZE: 12px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px } #wizard .courseStructureDescriptionAndMenu { BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; MARGIN-TOP: 0px; MIN-HEIGHT: 225px; WIDTH: 635px; HEIGHT: 225px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .courseStructureDescriptions P { MARGIN-BOTTOM: 15px } .courseStructureDescriptions H3 { TEXT-ALIGN: center; MARGIN-TOP: 30px; MARGIN-BOTTOM: 0px; COLOR: #666; FONT-SIZE: 120% } .courseStructureDescriptions BR { DISPLAY: none } .structureIncludeSampleContentCheck { BACKGROUND-COLOR: #f4f1e3; PADDING-LEFT: 15px; WIDTH: 100%; DISPLAY: block; HEIGHT: 40px; MARGIN-LEFT: -20px; PADDING-TOP: 10px; box-shadow: -10px 0 6px #CCC inset } #wizard .structureIncludeSampleContentCheck { Z-INDEX: 1; POSITION: absolute; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 7px; WIDTH: 630px; PADDING-RIGHT: 0px; HEIGHT: 25px; MARGIN-LEFT: -12px; BORDER-TOP: #ccc 1px solid; TOP: 185px; PADDING-TOP: 7px; box-shadow: 0 0 2px #999; border-radius: 5px 5px 0 0 } #wizard .accordion_content .useSelectedStructure { MARGIN-RIGHT: 15px } #wizard .accordion_content .useSelectedStructure { COLOR: #333 } #wizard .accordion_content .useExistingMenu { COLOR: #333 } #wizard .courseStructureDescriptions .structure_scrollbar_track { RIGHT: 15px } .courseStructureMenu { POSITION: relative; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; MARGIN: 0px 0px 0px 20px; MIN-HEIGHT: 400px; PADDING-LEFT: 10px; WIDTH: 200px; PADDING-RIGHT: 10px; FLOAT: right; OVERFLOW: hidden; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-top-right-radius: 5px; border-bottom-right-radius: 5px } #wizard .courseStructureMenu { PADDING-BOTTOM: 35px; MIN-HEIGHT: 265px } .courseStructureMenu .listCm .courseMenu A { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .courseStructureMenu .listCm .courseMenu .divider { PADDING-BOTTOM: 6px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 6px } .courseStructureMenu .topRound { DISPLAY: none } .courseStructureMenu .actionBarMicro { DISPLAY: none } .courseStructureMenu .bottomRound { DISPLAY: none } .courseStructureMenu #courseMenuPalette DIV.navPaletteContent { PADDING-TOP: 0px } .arrow_guide { POSITION: absolute; WIDTH: 156px; BACKGROUND: url(/images/ci/icons/left-arrow-point.png) no-repeat; HEIGHT: 34px; LEFT: 3% } #wizard .arrow_guide { TOP: 81% } .courseStructureDescription IMG { TEXT-ALIGN: center; MARGIN: 10px 0px 5px } .courseStructureDescription P.existing_text { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription P.existing_icon { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription A.button-3 { COLOR: #333; MARGIN-RIGHT: 15px } .courseStructureDescription A.existingstructure.unselectStructureButton { MARGIN-TOP: 5px; MARGIN-RIGHT: 37% } .courseStructureNameScroller .current-value { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png); BORDER-BOTTOM: #555 1px solid; POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 17px; WIDTH: 130px; BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-POSITION: 0px 20%; FONT-SIZE: 85%; TOP: 5px; FONT-WEIGHT: normal; LEFT: 15px; box-shadow: 0 -1px 0 #333 inset } #wizard .courseStructureNameScroller .current-value { TOP: 0px } .noSectionDivider { BORDER-TOP: medium none } .dividerRow { PADDING-BOTTOM: 0px !important; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 5px !important } .keyboardAccess .selectArrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .selectArrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess LABEL { DISPLAY: inline-block; FONT: italic 100% Georgia, serif; MARGIN-BOTTOM: 3px; COLOR: #777 } .keyboardAccess .selectArrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .keyboardAccess .y-arrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .access-reorder-block { MIN-WIDTH: 200px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 0px } .access-reorder-block SELECT { MIN-WIDTH: 200px } .y-arrows { TEXT-ALIGN: center; CLEAR: both } .brandingImgWrap IMG[src*='header_institution'] { POSITION: absolute; MAX-HEIGHT: 60px; TOP: 0px; LEFT: 12px } .sample-content { FONT: 113% Georgia, serif; BACKGROUND: url(images/bg_chalk_dark_s.png) 0px 0px } .sample-content .item H3 SPAN { FONT: bold 120% Georgia, serif; COLOR: #25bfcb !important } .sample-content TABLE { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated UL { MARGIN: 4px 0px } .sample-content .vtbegenerated P { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sample-content .vtbegenerated BR { HEIGHT: 1px } .sample-content.liItem:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } .buildList > LI.sample-content:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } DIV.loading-overwrite { Z-INDEX: 10000; POSITION: absolute; TEXT-ALIGN: center; WIDTH: 100%; BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) white no-repeat center 100px; HEIGHT: 100%; TOP: 0px; LEFT: 0px; opacity: 100 } DIV.loading-overwrite SPAN { POSITION: relative; FONT-SIZE: 200%; TOP: 10px } .sample-content DL { MARGIN: 0px } .sample-content DT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 9em; PADDING-RIGHT: 0px; FLOAT: left; FONT-WEIGHT: bold; PADDING-TOP: 0px } .sample-content DD { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 10em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .dueDate { COLOR: #063 } .dueDatePassed { COLOR: #900 } .inventory_paging A.inactive { opacity: .4 } .inactive { opacity: .4 } .linkLeftSpacesp { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .codeFragment { FONT-FAMILY: "Courier New" } .filteredTextHeader { BORDER-BOTTOM: 1px dotted; TEXT-ALIGN: center; BORDER-LEFT: 1px dotted; PADDING-BOTTOM: 5px; LINE-HEIGHT: 150%; BACKGROUND-COLOR: lightyellow; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline-block; BORDER-TOP: 1px dotted; BORDER-RIGHT: 1px dotted; PADDING-TOP: 5px } .filteredText { BACKGROUND-COLOR: lightyellow; COLOR: red } .floatedReceipt { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 10px !important; LINE-HEIGHT: 1.3em; BACKGROUND-COLOR: #fcfbd1 !important; MARGIN: 0px 0px 6px; PADDING-LEFT: 10px !important; WIDTH: 300px; PADDING-RIGHT: 22px !important; FONT-FAMILY: Helvetica, serif; COLOR: #333 !important; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal !important; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 10px !important; box-shadow: 1px 1px 5px #666; border-radius: 4px } .floatedReceipt A.close:before { } .floatedReceipt A.close:hover:before { } .floatedReceipt EM { FONT-WEIGHT: bold } .floatedReceipt A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: url(none); COLOR: #333 !important; BORDER-TOP: 0px; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important } .floatedReceipt A:hover { TEXT-DECORATION: none !important } .floatedReceipt#receipt_floated_theme { Z-INDEX: 1001; POSITION: absolute; TOP: 50px; RIGHT: 45px } .floatedReceipt#receipt_floated_courseMenu { Z-INDEX: 1201; POSITION: absolute; LEFT: 180px } .floatedReceipt .arrow { BORDER-BOTTOM: transparent 15px dashed; POSITION: absolute; BORDER-LEFT: transparent 15px dashed; HEIGHT: 0px; FONT-SIZE: 0px; BORDER-TOP: transparent 15px dashed; BORDER-RIGHT: transparent 15px dashed } .pointTop.floatedReceipt .arrow { BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #fcfbd1; TOP: -30px; LEFT: 58% } .pointLeft.floatedReceipt .arrow { BORDER-RIGHT-STYLE: solid; BORDER-RIGHT-COLOR: #fcfbd1; TOP: 10px; LEFT: -30px } .nav .sub .flyout .slideoutLink { FONT-WEIGHT: bold } .nav .sub .slideoutLink IMG { WIDTH: 16px; BACKGROUND: url(images/utilicons_arrows_dark.png) 16px 16px; FLOAT: right; HEIGHT: 16px } .nav .sub .slideoutLink-active { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; box-shadow: -3px 0 3px rgba(0, 0, 0, .3); border-radius: 0 } .nav .sub .slideoutLink-active IMG { BACKGROUND: url(images/utilicons_arrows_dark.png) 0px 16px } .slideoutOpen { MARGIN-LEFT: -1px !important; BORDER-RIGHT: #ccc 1px solid } .statusFilter { POSITION: relative; PADDING-LEFT: 8px; FONT-SIZE: 13px } LABEL.statusFilter { TOP: 0px } SPAN.statusFilter { TOP: 1px } .collapsible TABLE.reportcard TR TD:first-child { DISPLAY: block !important } #loginRedirectProviders H3 { MARGIN: 10px } #loginRedirectProviderList LI { MARGIN: 0px 10px 5px 0px; DISPLAY: inline-block } #loginRedirectProviderList LI IMG { WIDTH: 16px; HEIGHT: 16px } .paletteItems LABEL { MAX-WIDTH: 90%; WORD-WRAP: break-word } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems .inactive { MARGIN: 0px; opacity: .4 } DIV.comments DIV DIV.collabComments { BACKGROUND-COLOR: white; MAX-HEIGHT: 100px; OVERFLOW: auto !important } DIV.studentGradesCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetEditTabCommentPreview { WIDTH: 110px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetHistTabCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } .tooltip_show:focus { POSITION: static; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible } .radio-list { PADDING-LEFT: 20px } .radio-list LI { PADDING-BOTTOM: 4px !important; TEXT-INDENT: -26px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .radio-list LI INPUT[type=radio] { VERTICAL-ALIGN: bottom; MARGIN-RIGHT: 6px } .radio-list LI .button-4 { MARGIN-LEFT: 4px } .cartMode.csPicker #copyright { DISPLAY: none } .details .key-valueTable + .vtbegenerated { MARGIN-TOP: 12px !important } .ondemand-module { POSITION: relative; MARGIN: 14px 3px } .ondemand-module DIV { MARGIN-BOTTOM: 12px } .ondemand-module DIV A { PADDING-BOTTOM: 10px; PADDING-LEFT: 4%; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 10px; border-radius: 5px } .ondemand-module DIV A:hover { BACKGROUND: #00b3be; TEXT-DECORATION: none; box-shadow: 0 0 12px #2cb673; text-shadow: 0 -1px 0 rgba(0, 0, 0, .4) } .ondemand-module DIV A > SPAN { DISPLAY: block; MARGIN-BOTTOM: 3px; FONT-SIZE: 80%; FONT-WEIGHT: normal } .ondemand-module SPAN.release { BORDER-BOTTOM: #00add0 1px solid; POSITION: absolute; BORDER-LEFT: #00add0 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 13px; PADDING-RIGHT: 10px; BACKGROUND: #9dddea; COLOR: #000; FONT-SIZE: 85%; BORDER-TOP: #00add0 1px solid; TOP: -7px; RIGHT: -4px; BORDER-RIGHT: #00add0 1px solid; PADDING-TOP: 3px; border-radius: 12px 12px 12px 12px; text-shadow: 0 1px 0 rgba(255, 255, 255, .3) } .ondemand-module P { MARGIN: 0px 13px; FONT: italic 93%/1.45 Georgia, serif; COLOR: #666 }

@import url( theme1.css?v=9.1.90132.0 ); @import url( theme2.css?v=9.1.90132.0 );

BODY { HEIGHT: auto } HTML { HEIGHT: auto } BODY { MIN-WIDTH: 0px } DIV.topGlobalLinks { MIN-WIDTH: 0px } .navigationPane { DISPLAY: none } .contentPane { MARGIN: 0px 14px } .questionDiv .submission_text { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainerLarge { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry H4 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry .entryText { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogContainer .entryComments LI P { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .journalNav UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE THEAD TH { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TBODY TD { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TD DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .modeSwitch { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } A.cmimg-small { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .fileInputWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .field { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .noLabelField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .liveArea .stepcontent TEXTAREA { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonLibrary { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .previewTextArea { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .rating LI A:hover { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .dbThreadTree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .nav .sub UL LI A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmdiv A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .menumini A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .timediv UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentTags { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .auto_complete UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-header H2 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-content { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myPlacesContent { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myavatar { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble .detailComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeDetailsStep { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tableOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .inventory { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .brandingImgWrap { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList-read .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentListPlain .contentListRight + .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .landingPageColumn UL LI UL.datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .panelNested { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .module { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .moduleHeading { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .collapsible { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .imgWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .scroll_div { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .eudModule .eudModule-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .styledModule-dark .module-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet .itemGroups LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet UL.hierarchyList LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .customBanner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .loggedInAs { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #loggedInUserName { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .topTabs .hotItems UL.hotLinks { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmImg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemTray .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemIconHolder A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .title { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .high { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .navPaletteContent A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu H3 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .expTreeContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeContainer .tree LI H4 + UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #pickerPalette .tree > LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeScrollable { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #logDetail { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .table-scroll-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gridOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeItemsWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeSide .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV UL LI DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.comments DIV DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.studentGradesCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetEditTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetHistTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .u_scrollPanel-vertical { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentScore { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable_header DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gc_info UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI SPAN { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cumulativeSelectItems .selected_items .itemList { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .flynav UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .overrow DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .weightField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .criteriaItem { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important }

/* ================================================================== * General i18n functions * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ // internal methods function _escape(string) { // ?= does not seem to work return (''+string).replace(/^'|([^\\])'/g, "$1\\'").replace(/\n/g, "&crlf;"); } function _unescape(string) { return string.replace(/&crlf;/g, "\n"); } function _substitute(string, parameters) { for ( var key in parameters) { if ( parameters.hasOwnProperty( key ) ) { string = eval( "string.replace(/\\{" + key + "\\}/g, '" + _escape(parameters[key]) + "')" ); } } return _unescape(string); } // Public methods: these methods are instance methods of dynamically generated // Javascript bundle objects. See Java class blackboard.platform.intl.JsResource // and Perl module CI::L10n::JsResource. // Get a string from a resource bundle function i18n_get_string(key) { return this[key]; } // Get string and perform substitution using positions (arrays) or names (object) function i18n_get_formatted_string(key, parameters) { var string = this.getString(key); if (string && parameters) { // Convert to object keyed by string representation of array index if ( parameters.constructor.toString() == [].constructor.toString() ) { var array = parameters; parameters = {}; for (var i = 0; i < array.length; ++i) { parameters[''+i] = array[i]; } } string = _substitute(string, parameters); } return string; }

/* Prototype JavaScript framework, version 1.7 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key], type = typeof value; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError(); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (object.hasOwnProperty(property)) { results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toJSONEx: toJSON, // Leaving this in here to assist in debugging odd stringify issues in IE if we see them again in other contexts. toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); } function unescapeHTML() { return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#<Enumerable:' + this.toArray().inspect() + '>'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); }, hasResponder: function( callback ) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { return true; } }); return false; } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState]; // quite a high number of Interactive events can be generated on some browsers // triggering a memory issue in FF3 when building the response object. So if there is no // registered listener, quick return // see https://bugzilla.mozilla.org/show_bug.cgi?id=453709 if ( state == 'Interactive' ) { if ( this.notListeningToInteractive ) { if ( this.notListeningToInteractive.value ) return; } else { this.notListeningToInteractive = new Object(); this.notListeningToInteractive.value = ( !this.options['onInteractive'] && !Ajax.Responders.hasResponder( state ) ); if ( this.notListeningToInteractive.value ) return; } } var response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $s(element) { if (Object.isString(element)) { return document.getElementById(element); } return element; } function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { function shouldUseCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement('<input name="x">'); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCache(tagName, attributes) ? cache[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.idCounter = 1; Element.cache = { }; Element._purgeElement = function(element) { var uid = element._prototypeUID; if (uid) { Element.stopObserving(element); element._prototypeUID = void 0; delete Element.Storage[uid]; } } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, // only extend the element if it is a string - otherwise we don't need to extend the element remove: function(element) { if (Object.isString(element)) { element = $(element); } if (element.parentNode) { element.parentNode.removeChild(element); } return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = "<option value=\"test\">test</option>"; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = "<link>"; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var purgeElement = Element._purgeElement; var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) { while (element.firstChild) { element.removeChild(element.firstChild); } var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); nodes.each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(), value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType == 1) elements.push(Element.extend(element)); if (elements.length == maximumLength) break; } return elements; }, // Collect items without extending them all: rawRecursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) { elements.push(element); } return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === 1) { results.push(Element.extend(child)); } child = child.nextSibling; } return results; }, // Find the immediate descendents of the given element without extending them all rawImmediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).rawNextSiblings()); return []; }, previousSiblings: function(element, maximumLength) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, // Find the next siblings without actually extending them all rawNextSiblings: function(element) { return $(element).rawRecursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Prototype.Selector.find(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.previousSiblings(), expression, index); } else { return element.recursivelyCollect("previousSibling", index + 1)[index]; } }, next: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.nextSiblings(), expression, index); } else { var maximumLength = Object.isNumber(index) ? index + 1 : 1; return element.recursivelyCollect("nextSibling", index + 1)[index]; } }, select: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); }, adjacent: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element.parentNode).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $s(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, makePositioned: function(element) { element = $s(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source), delta = [0, 0], parent = null; element = $(element); if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className', forProp = 'for', el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'), f; el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if (element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(), fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html, force) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; var workaround = false; if (t) workaround = true; else if (force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = '&nbsp;' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) { div = div.firstChild; } } else { div.innerHTML = html; } return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')); Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); if (document.documentElement.hasAttribute) { Element.hasAttribute = function(element, attribute) { return element.hasAttribute(attribute); }; } else { Element.hasAttribute = Element.Methods.Simulated.hasAttribute; } Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = Element.Storage.UID++; uid = element._prototypeUID; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); }, purge: function(element) { if (!(element = $(element))) return; var purgeElement = Element._purgeElement; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } }); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = element.getStyle(property); } if (value === null) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value); var whole = null; var position = element.getStyle('position'); var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) { return number; } return number + 'px'; } function isDisplayed(element) { var originalElement = element; while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._prepared) return; var element = this.element; if (isDisplayed(element)) { this._prepared = true; return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = element.getStyle('position'), width = element.getStyle('width'); if (width === "0px" || width === null) { element.style.display = 'block'; width = element.getStyle('width'); } var context = (position === 'fixed') ? document.viewport : element.parentNode; element.setStyle({ position: 'absolute', visibility: 'hidden', display: 'block' }); var positionedWidth = element.getStyle('width'); var newWidth; if (width && (positionedWidth === width)) { newWidth = getPixelValue(element, 'width', context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getPixelValue(element, 'width', context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._prepared = true; }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._prepared = false; }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#<Element.Layout>"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } // Implementing a new method to avoid retesting the entire application with clientHeight function getDimensionsEx(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display != 'none') { // Safari bug return {width: element.clientWidth, height: element.clientHeight}; } return getDimensions(element); } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { element = $(element); var valueT = 0, valueL = 0, docBody = document.body; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getDimensions: getDimensions, getDimensionsEx: getDimensionsEx, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); Prototype._original_property = window.Sizzle; /*! * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; var origContext = context = context || document; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), soFar = selector; while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) selector += parts.shift(); set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { var ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { var ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { var cur = parts.pop(), pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { throw "Syntax error, unrecognized expression: " + (cur || selector); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set, match; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.match[ type ].exec( expr )) != null ) { var filter = Expr.filter[ type ], found, item; anyFound = false; if ( curLoop == result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr == old ) { if ( anyFound == null ) { throw "Syntax error, unrecognized expression: " + expr; } else { break; } } old = expr; } return curLoop; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part, isXML){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag && !isXML ) { part = part.toUpperCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part, isXML){ var isPartStr = typeof part === "string"; if ( isPartStr && !/\W/.test(part) ) { part = isXML ? part : part.toUpperCase(); for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName === part ? parent : false; } } } else { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context, isXML){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { if ( !inplace ) result.push( elem ); } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ for ( var i = 0; curLoop[i] === false; i++ ){} return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); }, CHILD: function(match){ if ( match[1] == "nth" ) { var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return /h\d/i.test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 == i; }, eq: function(elem, i, match){ return match[3] - 0 == i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } } return true; } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; case 'nth': var first = match[2], last = match[3]; if ( first == 1 && last == 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first == 0 ) { return diff == 0; } else { return ( diff % first == 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value != check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 ); } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return 0; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } (function(){ var form = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = "<a name='" + id + "'/>"; var root = document.documentElement; root.insertBefore( form, root.firstChild ); if ( !!document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = "<a href='#'></a>"; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "<p class='TEST'></p>"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; if ( !seed && context.nodeType === 9 && !isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ var div = document.createElement("div"); div.innerHTML = "<div class='test e'></div><div class='test'></div>"; if ( div.getElementsByClassName("e").length === 0 ) return; div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) return; Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ){ elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ) { elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } var contains = document.compareDocumentPosition ? function(a, b){ return a.compareDocumentPosition(b) & 16; } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; var isXML = function(elem){ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; while (element) { if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { return Element.extend(element); } element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { if (eventName === "beforeunload") { responder = function(event) { Event.extend(event, element); return handler.call(element, event); }; } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K, translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { return (translations[eventName] || eventName); }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (!registry) return element; if (!eventName) { registry.each( function(pair) { var eventName = pair.key; stopObserving(element, eventName); }); return element; } var responders = registry.get(eventName); if (!responders) return element; if (!handler) { responders.each(function(r) { stopObserving(element, eventName, r.handler); }); return element; } var i = responders.length, responder; while (i--) { if (responders[i].handler === handler) { responder = responders[i]; break; } } if (!responder) return element; if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } var _getElementsByClassName = instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return _getElementsByClassName( parentElement || document.body, className ); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#<Selector: " + this.expression + ">"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); /* * * Copyright (c) 2007 Andrew Tetlaw * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * * * * FastInit * http://tetlaw.id.au/view/javascript/fastinit * Andrew Tetlaw * Version 1.4.1 (2007-03-15) * Based on: * http://dean.edwards.name/weblog/2006/03/faster * http://dean.edwards.name/weblog/2006/06/again/ * Help from: * http://www.cherny.com/webdev/26/domloaded-object-literal-updated * */ var FastInit = { onload : function() { if (FastInit.done) { return; } FastInit.done = true; for(var x = 0, al = FastInit.f.length; x < al; x++) { FastInit.f[x](); } }, addOnLoad : function() { var a = arguments; for(var x = 0, al = a.length; x < al; x++) { if(typeof a[x] === 'function') { if (FastInit.done ) { a[x](); } else { FastInit.f.push(a[x]); } } } }, listen : function() { if (/WebKit|khtml/i.test(navigator.userAgent)) { FastInit.timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(FastInit.timer); delete FastInit.timer; FastInit.onload(); }}, 10); } else if (document.addEventListener) { document.addEventListener('DOMContentLoaded', FastInit.onload, false); } else if(!FastInit.iew32) { if(window.addEventListener) { window.addEventListener('load', FastInit.onload, false); } else if (window.attachEvent) { return window.attachEvent('onload', FastInit.onload); } } }, f:[],done:false,timer:null,iew32:false }; /*@cc_on @*/ /*@if (@_win32) FastInit.iew32 = true; document.write('<script id="__ie_onload" defer src="' + ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); document.getElementById('__ie_onload').onreadystatechange = function(){if (this.readyState == 'complete') { FastInit.onload(); }}; /*@end @*/ FastInit.listen(); /** * Only include the contents of this file once - for example, if this is included in a lightbox we don't want to re-run * all of this - just use the loaded version. (i.e. rerunning would clear page.bundle which would remove all the * language strings for the current page) */ if (!window.page) { var page = {}; page.isLoaded = false; /** * Utility for adding and using localized messages on the page. */ page.bundle = {}; page.bundle.messages = {}; page.bundle.addKey = function( key, value ) { page.bundle.messages[key] = value; }; page.bundle.getString = function( key /*, arg1, arg2, ..., argN */ ) { var result = page.bundle.messages[key]; if ( !result ) { return "!!!!" + key + "!!!!!"; } else { if ( arguments.length > 1 ) { for ( var i = 1; i < arguments.length; i++ ) { result = result.replace( new RegExp("\\{"+(i-1)+"\\}","g"), arguments[i] ); } } return result; } }; /** * Provides support for lazy initialization of javascript behavior when a certain * event happens to a certain item. */ page.LazyInit = function( event, eventTypes, initCode ) { var e = event || window.event; var target = Event.element( event ); // This is because events bubble and we want a reference // to the element we registered the handlers on. target = page.util.upToClass(target, "jsInit"); for (var i = 0; i < eventTypes.length; i++ ) { target['on'+eventTypes[i]] = null; } eval( initCode ); //initCode can reference "target" }; /** * Evaluates any <script> tags in the provided string in the global scope. * Useful for evaluating scripts that come back in text from an Ajax call. * If signalObject is passed then signalObject.evaluatingScripts will be set to false when done. */ page.globalEvalScripts = function(str, evalExternalScripts, signalObject) { //Get any external scripts var waitForVars = []; var scriptVars = [ { script: 'bb_htmlarea', variable: ['HTMLArea'] }, { script: 'w_editor', variable: ['WebeqEditors'] }, { script: 'wysiwyg.js', variable: ['vtbe_attchfiles'] }, { script: 'gradebook_utils.js', variable: ['gradebook_utils'] }, { script: 'rubric.js', variable: ['rubricModule'] }, { script: 'gridmgmt.js', variable: ['gridMgmt'] }, { script: 'calendar-time.js', variable: ['calendar'] }, { script: 'widget.js', variable: ['widget'] }, { script: 'vtbeTinymce.js', variable: ['tinyMceWrapper'] }, { script: 'WhatsNewView.js', variable: ['WhatsNewView'] }, { script: 'tiny_mce.js', variable: ['tinymce','tinyMCE'] } ]; if (evalExternalScripts) { var externalScriptRE = '<script[^>]*src=["\']([^>"\']*)["\'][^>]*>([\\S\\s]*?)<\/script>'; var scriptMatches = str.match(new RegExp(externalScriptRE, 'img')); if (scriptMatches && scriptMatches.length > 0) { $A(scriptMatches).each(function(scriptTag) { var matches = scriptTag.match(new RegExp(externalScriptRE, 'im')); if (matches && matches.length > 0 && matches[1] != '') { var scriptSrc = matches[1]; if (scriptSrc.indexOf('/dwr_open/') != -1) { // dwr_open calls will ONLY work if the current page's webapp == the caller's webapp, // otherwise we'll get a session error. THis will happen if a lightbox is loaded with // dynamic content from a different webapp (say /webapps/blackboard) while the main page // is loaded from /webapps/discussionboard. To avoid this, rewrite the url to use the // webapp associated with the current page. var newparts = scriptSrc.split('/'); var oldparts = window.location.pathname.split('/'); newparts[1] = oldparts[1]; newparts[2] = oldparts[2]; scriptSrc = newparts.join('/'); } var scriptElem = new Element('script', { type: 'text/javascript', src: scriptSrc }); var head = $$('head')[0]; head.appendChild(scriptElem); for ( var i = 0; i < scriptVars.length; i++ ) { if ( scriptSrc.indexOf( scriptVars[i].script ) != -1 ) { scriptVars[ i ].variable.each( function( s ) { waitForVars.push( s ); } ); break; } } } }); } } page.delayAddExtractedScripts(str.extractScripts(), waitForVars, signalObject); }; // Evaluate any inline script - delay a bit to give the scripts above time to load // NOTE that this is not guaranteed to work - if there are delays loading and initializing // the scripts required then code in these scripts might fail to find the required variables // If it is for our code then updating waitForVars appropriately per script will work page.delayAddExtractedScripts = function (scripts, waitForVars, signalObject) { var count = 0; if (waitForVars.length === 0) { page.actuallyAddExtractedScripts(scripts, signalObject); } else { new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( page.allVariablesDefined(waitForVars) ) { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } } else // give up if it takes longer than 5s to load { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } }.bind(this), 0.05 ); } }; page.allVariablesDefined = function(vars) { var result = true; for ( var i = 0; i < vars.length; i++ ) { if ( !window[vars[i]] ) { result = false; break; } } return result; }; page.actuallyAddExtractedScripts = function (scripts, signalObject) { var scriptExecutionDelay = 0; if( signalObject ) { scriptExecutionDelay = signalObject.delayScriptExecution; } scripts.each(function(script) { if ( script != '' ) { if ( Prototype.Browser.IE && window.execScript ) { ( function() { window.execScript( script ); }.delay( scriptExecutionDelay ) ); } else { ( function() { var scriptElem = new Element( 'script', { type : 'text/javascript' } ); var head = $$( 'head' )[ 0 ]; script = document.createTextNode( script ); scriptElem.appendChild( script ); head.appendChild( scriptElem ); head.removeChild( scriptElem ); }.delay( scriptExecutionDelay ) ); } } } ); if (signalObject) { signalObject.evaluatingScripts = false; } }; page.setIframeHeight = function () { try { var iframeElements = $$('iframe.cleanSlate'); iframeElements.each( function( iframeElement ) { if ( iframeElement.contentWindow && iframeElement.contentWindow.document && iframeElement.contentWindow.document.body ) { iframeElement.style.height = iframeElement.contentWindow.document.body.scrollHeight + 50 + 'px'; } }); } catch( e ){} }; page.onResizeChannelIframe = function( channelExtRef ) { var frameId = 'iframe' + channelExtRef; var listId = 'list_channel' + channelExtRef; var f = $( frameId ); f.style.height = f.contentWindow.document.getElementById( listId ).scrollHeight + 15 + "px"; }; /** * Contains page-wide utility methods */ page.util = {}; /** * Returns whether the specific element has the specified class name. * Same as prototype's Element.hasClassName, except it doesn't extend the element (which is faster in IE). */ page.util.hasClassName = function ( element, className ) { var elementClassName = element.className; if (elementClassName.length === 0) { return false; } if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) { return true; } return false; }; page.util.fireClick = function ( elem ) { if (Prototype.Browser.IE) { elem.fireEvent("onclick"); } else { var evt = document.createEvent("HTMLEvents"); evt.initEvent("click", true, true); elem.dispatchEvent(evt); } }; page.util.useARIA = function () { if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); var ffversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ffversion >= 1.9) { return true; } } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; var ieversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ieversion>=8) { return true; } } return false; }; // Find an element with the given className, starting with the element passed in page.util.upToClass = function ( element, className ) { while (element && !page.util.hasClassName(element, className)) { element = element.parentNode; } return $(element); }; page.util.isRTL = function () { var els = document.getElementsByTagName("html"); var is_rtl = (typeof(els) != 'undefined' && els && els.length == 1 && els[0].dir == 'rtl' ); return is_rtl ; }; page.util.allImagesLoaded = function (imgList) { var allDone = true; if (imgList) { for ( var i = 0, c = imgList.length; i < c; i++ ) { var animg = imgList[i]; // TODO - this doesn't appear to work on IE. if ( !animg.complete ) { allDone = false; break; } } } return allDone; }; // Exposes (display but keep invisible) an invisible element for measurement // recursively traverses up the DOM looking for // a parent node of element whose display == 'none' // If found, sets its style to: display:block, position:absolute, and visibility:hidden // and saves it as element.hiddenNode so it can be easily unexposed page.util.exposeElementForMeasurement = function ( element ) { element = $(element); var e = element; var hiddenNode; // find parent node that is hidden while ( !hiddenNode && e && e.parentNode) { if ( $(e).getStyle('display') === 'none') { hiddenNode = $(e); } e = $(e.parentNode); } if ( hiddenNode ) { // save original style attributes: visibility, position, & display element.hiddenNode = hiddenNode; var style = hiddenNode.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') { newStyles.position = 'absolute'; } hiddenNode.originalStyles = originalStyles; // set new style for: visibility, position, & display hiddenNode.setStyle( newStyles ); } }; // undo previous call to exposeElementForMeasurement page.util.unExposeElementForMeasurement = function ( element ) { element = $(element); if ( element && element.hiddenNode && element.hiddenNode.originalStyles ) { Element.setStyle( element.hiddenNode, element.hiddenNode.originalStyles ); element.hiddenNode.originalStyles = null; element.hiddenNode = null; } }; /** * Returns whether any part of the two elements overlap each other. */ page.util.elementsOverlap = function ( e1, e2 ) { var pos1 = $(e1).cumulativeOffset(); var a = { x1: pos1.left, y1: pos1.top, x2: pos1.left + e1.getWidth(), y2: pos1.top + e1.getHeight() }; var pos2 = $(e2).cumulativeOffset(); var b = { x1: pos2.left, y1: pos2.top, x2: pos2.left + e2.getWidth(), y2: pos2.top + e2.getHeight() }; return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; }; /** * To handle the case where the focus is visible but too close to the bottom of the page, scroll the page up a bit. */ page.util.focusAndScroll= function(elem) { elem.focus(); return page.util.ensureVisible(elem); }; page.util.ensureVisible= function(elem) { var scrolltop = document.viewport.getScrollOffsets().top; var mytop = elem.cumulativeOffset()[1]; var height = document.viewport.getDimensions().height; var realtop = mytop - scrolltop; var thirty = height * 0.3; if (realtop > (height-thirty)) { window.scrollBy(0,thirty); } return false; }; page.util.processJSProtoString = function (string, checkToken) { // This value must match the value passed as the 2nd parameter to this string. // The goal is to pass a known value, as a constant, through the javascript: pseudo-protocol // handler. We can then examine the result to determine the decoding method used by the current // browser. var sniffToken = '%C3%A9'; // There are three known decoding cases, non-translated, UTF8, and unescape if (checkToken === unescape(sniffToken)) { // Unescape decoded return decodeURIComponent(escape(string)); } else if (checkToken === sniffToken) { // Non-translated return decodeURIComponent(string); } else { // UTF8 Decoded/Unknown return string; } }; /** * Find the first action bar that precedes sourceElement * Returns the action bar div element if found, null otherwise * * @param sourceElement */ page.util.findPrecedingActionBar = function( sourceElement ) { var actionBar = null; // Loop through each ancestor of sourceElement, // starting with parent, until an action bar is found sourceElement.ancestors().each( function( item ) { actionBar = item.previous('div.tabActionBar') || item.previous('div.actionBarMicro') || item.previous('div.actionBar'); if (actionBar) { throw $break; } }); return actionBar; }; page.util.getLargestDimensions = function (element) { var width = 0; var height = 0; var dim; while (element != document) { dim = $(element).getDimensions(); if (dim.width > width) { width = dim.width; } if (dim.height > height) { height = dim.height; } element = element.up(); } return { width: width, height: height }; }; /* * Resize the current window so that it will fit the largest dimensions found for the given element. * Will also reposition on the screen if required to fit. Will not size larger than the screen. * NOTE that this will only work for popup windows - main windows are typically in a tabset in * the browser and they don't allow resizing like this. That's OK because the main use case * for this method is to make sure popup windows are resized appropriately for their content. */ page.util.resizeToContent = function (startElement) { var dim = page.util.getLargestDimensions(startElement); var newWidth = dim.width; newWidth += 25; // TODO: Haven't figured out why I need this extra space yet... if (window.innerWidth > newWidth) { newWidth = window.innerWidth; } if (newWidth > screen.width) { newWidth = screen.width; } var newHeight = dim.height; newHeight += 100; // TODO: Haven't figured out why I need this extra space yet if (window.innerHeight > newHeight) { newHeight = window.innerHeight; } if (newHeight > screen.height) { newHeight = screen.height; } var left = 0; var top = 0; if ( window.screenLeft ) { left = window.screenLeft; top = window.screenTop; } else if ( window.screenX ) { left = window.screenX; top = window.screenY; } if (left + newWidth > screen.width) { left = screen.width - newWidth; if (left < 0) { left = 0; } } if (top + newHeight > screen.height) { top = screen.height - newHeight; if (top < 0) { top = 0; } } window.moveTo(left,top); window.resizeTo(newWidth,newHeight); }; /** * Sets the css position of all li elements that are contained in action bars on the page. * Since z-index only works on positioned elements, this function can be used to ensure that * divs with a higher z-index will always appear on top of any action bars on the page. * * @param cssPosition */ page.util.setActionBarPosition = function( cssPosition ) { $$( 'div.actionBar', 'div.tabActionBar', 'div.actionBarMicro' ).each( function( actionbar ) { actionbar.select( 'li' ).each( function( li ) { li.setStyle( {position: cssPosition} ); }); }); }; /** * Class for controlling the course menu-collapser. Also ensures the menu is * the right height */ page.PageMenuToggler = Class.create(); page.PageMenuToggler.prototype = { /** * initialize */ initialize: function( isMenuOpen,key,temporaryScope ) { page.PageMenuToggler.toggler = this; this.key = key; if (temporaryScope) { this.temporaryScope = temporaryScope; } else { this.temporaryScope = false; } this.isMenuOpen = isMenuOpen; this.puller = $('puller'); this.menuPullerLink = $(this.puller.getElementsByTagName('a')[0]); this.menuContainerDiv = $('menuWrap'); this.navigationPane = $('navigationPane'); this.contentPane = $('contentPanel') || $('contentPane'); this.navigationPane = $('navigationPane'); this.locationPane = $(this.navigationPane.parentNode); this.breadcrumbBar = $('breadcrumbs'); this.menu_pTop = parseInt(this.menuContainerDiv.getStyle('paddingTop'), 10); this.menu_pBottom = parseInt(this.menuContainerDiv.getStyle('paddingBottom'), 10); this.loc_pTop = parseInt(this.locationPane.getStyle('paddingTop'), 10); if ( this.breadcrumbBar ) { this.bc_pTop = parseInt(this.breadcrumbBar.getStyle('paddingTop'), 10); this.bc_pBottom = parseInt(this.breadcrumbBar.getStyle('paddingBottom'), 10); } else { this.bc_pTop = 0; this.bc_pBottom = 0; } this.toggleListeners = []; this.onResize( null ); // fix the menu size // Doesn't work in IE or Safari.. //Event.observe( window, 'resize', this.onResize.bindAsEventListener( this ) ); Event.observe( this.menuPullerLink, 'click', this.onToggleClick.bindAsEventListener( this ) ); }, /** * Adds a listener for course menu toggle events */ addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, /** * Notifies all registered toggle event listeners that a toggle has occurred. */ _notifyToggleListeners: function( isOpen ) { this.toggleListeners.each( function( listener ) { listener( isOpen ); }); }, notifyToggleListeners: function( isOpen ) { // we call once the toggle is complete and the DOM in its new state. 2012 themes add transition, which seems // to collide with the logic to get dimensions of dom element, so the delay is a 1 sec to let time for those // transitions to be done. this._notifyToggleListeners.bind( this, isOpen ).delay( 1 ); }, /** * getAvailableResponse */ getAvailableResponse : function ( req ) { var originalMenuOpen = this.isMenuOpen ; if ( req.responseText.length > 0 ) { if ( req.responseText == 'true' ) { this.isMenuOpen = true; } else { this.isMenuOpen = false; } } if ( originalMenuOpen != this.isMenuOpen ) { this.notifyToggleListeners( this.isMenuOpen ); this.menuContainerDiv.toggle(); this.puller.toggleClassName("pullcollapsed"); this.contentPane.toggleClassName("contcollapsed"); this.navigationPane.toggleClassName("navcollapsed"); } }, /** * Expands the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ expand : function () { this.menuContainerDiv.show(); this.puller.removeClassName("pullcollapsed"); this.contentPane.removeClassName("contcollapsed"); this.navigationPane.removeClassName("navcollapsed"); this.isMenuOpen = true; var msg = page.bundle.messages[ "coursemenu.hide" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( true ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, true ); } else { UserDataDWRFacade.setStringPermScope( this.key, true ); } }, /** * Collapses the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ collapse : function () { this.menuContainerDiv.hide(); this.puller.addClassName("pullcollapsed"); this.contentPane.addClassName("contcollapsed"); this.navigationPane.addClassName("navcollapsed"); this.isMenuOpen = false; var msg = page.bundle.messages[ "coursemenu.show" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( false ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, false ); } else { UserDataDWRFacade.setStringPermScope( this.key, false ); } }, /** * Event triggered when the puller toggle control is clicked. Changes the * menu from open to closed or closed to open depending on existing state. */ onToggleClick: function( event ) { if ( this.isMenuOpen ) { this.collapse(); } else { this.expand(); } Event.stop( event ); }, /** * onResize */ onResize: function( event ) { var menuHeight = this.menuContainerDiv.getHeight(); var contentHeight = this.contentPane.getHeight(); var maxHeight = ( menuHeight > contentHeight ) ? menuHeight : contentHeight; this.contentPane.setStyle({height: maxHeight + 'px'}); this.navigationPane.setStyle({height: maxHeight + 'px'}); } }; page.PageMenuToggler.toggler = null; /** * Class for controlling the page help toggler in the view toggle area */ page.PageHelpToggler = Class.create(); page.PageHelpToggler.prototype = { initialize: function( isHelpEnabled, showHelpText, hideHelpText, assumeThereIsHelp ) { page.PageHelpToggler.toggler = this; this.toggleListeners = []; this.isHelpEnabled = isHelpEnabled; this.showText = showHelpText; this.hideText = hideHelpText; this.contentPanel = $('contentPanel') || $('contentPane'); var helperList = []; if ( this.contentPanel && !assumeThereIsHelp) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { helperList.push( $(el) ); } } } var helpTextToggleLink = $('helpTextToggleLink'); if ( ( !helperList || helperList.length === 0) && !assumeThereIsHelp ) { if ( helpTextToggleLink ) { helpTextToggleLink.remove(); } } else { if ( !isHelpEnabled ) { helperList.invoke( "toggle" ); } if ( !this.showText ) { this.showText = page.bundle.getString("viewtoggle.editmode.showHelp"); } if ( !this.hideText ) { this.hideText = page.bundle.getString("viewtoggle.editmode.hideHelp"); } this.toggleLink = helpTextToggleLink; this.toggleImage = $(this.toggleLink.getElementsByTagName('img')[0]); Event.observe( this.toggleLink, "click", this.onToggleClick.bindAsEventListener( this ) ); $(this.toggleLink.parentNode).removeClassName('hidden'); this.updateUI(); } }, addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, _notifyToggleListeners: function() { this.toggleListeners.each( function( listener ) { listener( this.isHelpEnabled ); }); }, notifyToggleListeners: function() { // we notify once the whole menu collapse/expand is done, so the DOM is in final state this._notifyToggleListeners.bind( this ).delay( ); }, updateUI: function( ) { if ( this.isHelpEnabled ) { $("showHelperSetting").value = 'true'; this.toggleImage.src = "/images/ci/ng/small_help_on2.gif"; this.toggleLink.setAttribute( "title", this.showText ); this.toggleImage.setAttribute( "alt", this.showText ); } else { $("showHelperSetting").value = 'false'; this.toggleImage.src = "/images/ci/ng/small_help_off2.gif"; this.toggleLink.setAttribute( "title", this.hideText ); this.toggleImage.setAttribute( "alt", this.hideText ); } }, onToggleClick: function( event ) { // Toggle all elements that have the css class "helphelp" var helperList = []; if ( this.contentPanel ) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { $(el).toggle(); } } } if ( this.isHelpEnabled ) { this.isHelpEnabled = false; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "false" ); } else { this.isHelpEnabled = true; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "true" ); } this.updateUI(); this.notifyToggleListeners(); Event.stop( event ); } }; /** * Class for controlling the display of a context menu. */ page.ContextMenu = Class.create(); page.ContextMenu.prototype = { initialize: function( contextMenuContainer, divId, forceMenuRefresh ) { this.displayContextMenuLink = contextMenuContainer.down("a"); this.contextMenuContainer = contextMenuContainer; this.forceMenuRefresh = forceMenuRefresh; this.uniqueId = this.displayContextMenuLink.id.split('_')[1]; this.contextMenuDiv = this.displayContextMenuLink.savedDiv; if ( !this.contextMenuDiv ) { this.contextMenuDiv = contextMenuContainer.down("div");//$('cmdiv_' + this.uniqueId); this.displayContextMenuLink.savedDiv = this.contextMenuDiv; page.ContextMenu.hiddenDivs.set(divId,this.contextMenuDiv); } this.originalContextMenuDiv = this.contextMenuDiv.cloneNode(true); $(this.contextMenuDiv).setStyle({zIndex: 200}); this.displayContextMenuLink.appendChild( this.contextMenuDiv ); // Temporarily add the menu back where it started this.closeContextMenuLink = contextMenuContainer.down(".contextmenubar_top").down(0); this.contextParameters = contextMenuContainer.readAttribute("bb:contextParameters"); this.menuGeneratorURL = contextMenuContainer.readAttribute("bb:menuGeneratorURL"); this.nav = contextMenuContainer.readAttribute("bb:navItem"); this.enclosingTableCell = contextMenuContainer.up("td"); this.menuOrder = contextMenuContainer.readAttribute("bb:menuOrder"); this.overwriteNavItems = contextMenuContainer.readAttribute("bb:overwriteNavItems"); this.beforeShowFunc = contextMenuContainer.readAttribute("bb:beforeShowFunc"); if (this.beforeShowFunc) { this.beforeShowFunc = eval(this.beforeShowFunc); } if ( this.menuOrder ) { this.menuOrder = this.menuOrder.split(','); } if ( !this.contextParameters ) { this.contextParameters = ""; } if ( !this.menuGeneratorURL ) { this.menuGeneratorURL = ""; } if ( !this.nav ) { this.nav = ""; } this.dynamicMenu = false; if ( this.menuGeneratorURL ) { this.dynamicMenu = true; } if (this.dynamicMenu) { Event.observe( this.displayContextMenuLink, "click", this.generateDynamicMenu.bindAsEventListener( this ) ); } else { Event.observe( this.displayContextMenuLink, "click", this.onDisplayLinkClick.bindAsEventListener( this ) ); } Event.observe( this.closeContextMenuLink, "click", this.onCloseLinkClick.bindAsEventListener( this ) ); Event.observe( this.contextMenuDiv, "keydown", this.onKeyPress.bindAsEventListener( this ) ); // adding nowrap to table cell containing context menu // If no enclosing td is found, try th if ( !this.enclosingTableCell ) { this.enclosingTableCell = contextMenuContainer.up("th"); } if ( this.enclosingTableCell ) { if ( !this.enclosingTableCell.hasClassName("nowrapCell") ) { this.enclosingTableCell.addClassName("nowrapCell"); } // if label tag is an immediate parent of context menu span tag, it needs nowrap as well if ( this.enclosingTableCell.down("label") && !this.enclosingTableCell.down("label").hasClassName("nowrapLabel")) { this.enclosingTableCell.down("label").addClassName("nowrapLabel"); } } if ( !this.dynamicMenu ) { var contexMenuItems = contextMenuContainer.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; // remove the context menu div from the page for performance reasons - add it back when we need to show it Element.remove( this.contextMenuDiv ); }, onKeyPress: function( event ) { var elem, children, index; var key = event.keyCode || event.which; if ( key == Event.KEY_UP ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_ESC ) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_TAB ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( (!event.shiftKey && index == children.length - 1) || (event.shiftKey && index === 0)) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } } else if ( key == Event.KEY_RETURN ) { if ( this.useARIA ) { elem = Event.element ( event ); (function() { page.util.fireClick( elem ); }.bind(this).defer()); Event.stop( event ); } } }, onAnchorFocus: function ( event ) { Event.element( event ).setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { Event.element( event ).setStyle({ backgroundColor: '' }); }, afterMenuGeneration: function( req ) { if ( this.dynamicMenu ) { var result; this.dynamicMenu = this.forceMenuRefresh; try { result = req.responseText.evalJSON( true ); if ( result.success == "true" ) { // append uniqueId to each li var menuHTML = result.contentMenuHTMLList.replace(/(<li.*?id=")(.*?)(".*?>)/g,"$1$2_"+this.uniqueId+"$3"); if ( this.forceMenuRefresh ) { this.contextMenuDiv.innerHTML = this.originalContextMenuDiv.innerHTML; } this.contextMenuDiv.insert({bottom:menuHTML}); $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); var contexMenuItems = this.contextMenuDiv.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } else { new page.InlineConfirmation("error", result.errorMessage, false ); } } catch ( e ) { new page.InlineConfirmation("error", result.errorMessage, false ); } } this.showMenu(); //focus on the first menu item (function() { this.contextMenuDiv.down("a").focus(); }.bind(this).defer()); }, appendItems: function( items, menuItemContainer ) { if (!menuItemContainer) { var uls = this.contextMenuDiv.getElementsBySelector("ul"); menuItemContainer = uls[uls.length-1]; } items.each( function ( item ) { if ( item.type == "seperator" ) { if (menuItemContainer.getElementsBySelector("li").length === 0) { return; } var ul = new Element('ul'); menuItemContainer.parentNode.appendChild( ul ); menuItemContainer = ul; return; } if ( !this.menuItemTempate ) { var menuItems = this.contextMenuDiv.getElementsBySelector("li"); this.menuItemTempate = menuItems[menuItems.length-1]; } var mi = this.menuItemTempate.cloneNode( true ); var a = mi.down('a'); var name = item.key ? page.bundle.getString( item.key ) : item.name ? item.name : "?"; a.update( name ); a.title = item.title ? item.title : name; a.href = "#"; menuItemContainer.appendChild( mi ); Event.observe( a, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( a, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( a, 'click', this.onItemClick.bindAsEventListener( this, item.onclick ) ); }.bind( this ) ); }, onItemClick: function( evt, func ) { this.onCloseLinkClick(); func(); Event.stop( evt ); }, setItems: function( items ) { // rather than try to match up new items with existing items, it's easier to delete the existing items // (except for the close item) and then add the new items // remove existing menu items, except close menu var menuItems = this.contextMenuDiv.getElementsBySelector("li").each( function (li ) { if ( !li.hasClassName("contextmenubar_top") ) { if (!this.menuItemTempate) { this.menuItemTempate = li; } li.stopObserving(); li.remove(); } }.bind( this ) ); // should only be one menuItemContainer var menuItemContainers = this.contextMenuDiv.getElementsBySelector("ul").each( function (ul) { if ( !ul.down("li") ) { ul.remove(); } }.bind( this ) ); this.appendItems(items, menuItems[0].parentNode); }, showMenu : function() { if (this.beforeShowFunc) { this.beforeShowFunc(this); } page.ContextMenu.registerContextMenu( this ); this.reorderMenuItems(); if ( this.useARIA ) { this.initARIA(); } var offset = this.displayContextMenuLink.cumulativeOffset(); var scrollOffset = this.displayContextMenuLink.cumulativeScrollOffset(); var viewportScrollOffset = document.viewport.getScrollOffsets(); if ( this.displayContextMenuLink.up( 'div.lb-content' ) ) { // Fix offset for context menu link inside a lightbox offset[0] = offset[0] + viewportScrollOffset[0]; offset[1] = offset[1] + viewportScrollOffset[1]; } else { // Fix the offset if the item is in a scrolled container offset[0] = offset[0] - scrollOffset[0] + viewportScrollOffset[0]; offset[1] = offset[1] - scrollOffset[1] + viewportScrollOffset[1]; } document.body.appendChild( this.contextMenuDiv ); this.contextMenuDiv.setStyle({display: "block"}); var width = this.contextMenuDiv.getWidth(); var bodyWidth = $(document.body).getWidth(); if ( page.util.isRTL() ) { offset[0] = offset[0] + this.displayContextMenuLink.getWidth() - width; } if ( offset[0] + width > bodyWidth ) { offset[0] = offset[0] - width + 30; } if ( this.keepMenuToRight ) { // In case the link is very wide (i.e. gradecenter accessible mode cell link for really wide cell) // make sure the menu renders to the right side of the link var linkWidth = this.displayContextMenuLink.getDimensions().width; if (linkWidth > width) { // Only worry if the link is actually wider than the menu offset[0] += (linkWidth-width); } } // Don't start the menu off the left side of the window if ( offset[0] < 0 ) { offset[0] = 0; } var height = this.contextMenuDiv.getHeight(); var bodyHeight = $(document.body).getHeight(); var ypos = offset[1] + this.displayContextMenuLink.getHeight() + 17; if ( ( height + ypos ) > bodyHeight ) { ypos -= height; ypos -= 34; } // Don't start the menu off the top of the screen if (ypos < 0 ) { ypos = 0; } if (height > bodyHeight) { // If the menu is too big to fit on the screen, set it to the height of the screen and allow scrollbars inside the menu this.contextMenuDiv.setStyle({ height: bodyHeight + "px", overflowY: "auto", overflowX: "hidden", left: offset[0] + "px", top: ypos + "px" }); } else { this.contextMenuDiv.setStyle({ left: offset[0] + "px", top: ypos + "px"}); } if ( !this.shim ) { this.shim = new page.popupShim( this.contextMenuDiv ); } this.shim.open(); }, initARIA: function() { if ( !this.initializedARIA ) { this.displayContextMenuLink.setAttribute( "aria-haspopup", "true" ); this.displayContextMenuLink.setAttribute( "role", "menubutton" ); this.contextMenuDiv.setAttribute( "role", "menu" ); this.contextMenuDiv.down( "ul" ).setAttribute( "role", "presentation" ); $A( this.contextMenuDiv.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval( decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "0"; link.setStyle( {cursor: 'pointer'} ); // make it look like a link. } }); this.initializedARIA = true; // Only initialize once. } }, reorderMenuItems : function() { if ( !this.menuOrder || this.menuOrder.length < 2 ) { return; } var orderMap = {}; var closeItem = null; var extraItems = []; // items not in order // Gather up all of the <li> tags in the menu and stick them in a map/object of id to the li object $A(this.contextMenuDiv.getElementsByTagName("li")).each( function( listItem ) { if (listItem.hasClassName("contextmenubar_top")) { closeItem = listItem; } else { if (this.menuOrder.indexOf(listItem.id) > -1) { orderMap[listItem.id] = listItem; // add item to map } else { extraItems.push(listItem); // listItem id not specified in menuOrder, so add listItem to extraItems } } }.bind(this) ); // Remove all the content from the context menu div $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list ) { Element.remove(list); }.bind(this) ); // Re-add the special "close" item as the first item. var ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); ulElement.insert({bottom:closeItem}); // Loop through the order, adding a <ul> at the start, and starting a new <ul> whenever a "*separator*" // is encountered, and adding the corresponding <li> for each of the ids in the order using the map/object this.menuOrder.each( function( id ) { if (id == "*separator*") { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); } else { ulElement.insert({bottom:orderMap[id]}); } }.bind(this) ); // Add any extraItems to thier own ul if (extraItems.length > 0) { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); extraItems.each( function( lineItem ) { ulElement.insert({bottom:lineItem}); }.bind(this) ); } // Remove any empty ULs and ensure that the added <ul>s have id of form "cmul${num}_${uniqueId}" $A(this.contextMenuDiv.getElementsByTagName("ul")).findAll( function( list ) { if ( list.childElements().length === 0 ) { list.remove(); return false; } else { return true; } }).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); this.menuOrder = null; // only re-order once }, generateDynamicMenu : function(event) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { var context_parameters = this.contextParameters; var menu_generator_url = this.menuGeneratorURL; var nav = this.nav; var overwriteNavItems = this.overwriteNavItems; if ( context_parameters ) { context_parameters = context_parameters.toQueryParams(); } else { context_parameters = {}; } var params = Object.extend({nav_item: nav }, context_parameters ); params = Object.extend( params, { overwriteNavItems : overwriteNavItems } ); new Ajax.Request(menu_generator_url, { method: 'post', parameters: params, onSuccess: this.afterMenuGeneration.bind( this ) }); } else { this.afterMenuGeneration(this); } $(event).preventDefault(); }, onDisplayLinkClick: function( event ) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { this.generateDynamicMenu(event); this.dynamicMenu = false; } else { this.showMenu(); //focus on the first menu item (function() { if (this.contextMenuDiv.style.display != 'none') { this.contextMenuDiv.down("a").focus(); } }.bind(this).defer()); $(event).preventDefault(); } }, onCloseLinkClick: function( event ) { this.close(); // grade center hides displayContextMenuLink onMouseOut, so we need to check if it is visible // before setting focus or IE will complain. Need to do funky visibility check because IE8 // sets display to empty string when removing parent container class (bug?) var disp = this.displayContextMenuLink.style.display; if ( disp != 'none' && disp != '' ) { this.displayContextMenuLink.focus(); } if (event) { Event.stop( event ); } }, close: function() { this.contextMenuDiv.style.display = "none"; // Delay the removal of the element from the page so firefox will continue to process // the click on the menu item chosen (otherwise it stops processing as soon as we remove the // element resulting in the menu not actually working) (function() { Element.remove( this.contextMenuDiv ); }.bind(this).delay(0.1)); if ( this.shim ) { this.shim.close(); } }, closeNow: function() { if (this.contextMenuDiv.style.display != "none") { this.contextMenuDiv.style.display = "none"; Element.remove( this.contextMenuDiv ); if ( this.shim ) { this.shim.close(); } } } }; /** * Function called to change the 'arrow' of a breadcrumb to face downward when they are clicked for the * contextual menu. * @param uniqId - unique number which identifies the crumb which was clicked * @param size - the size of the breadcrumb * @return */ page.ContextMenu.changeArrowInBreadcrumb = function (uniqId, event) { page.ContextMenu.alignArrowsInBreadcrumb(event); $('arrowContext_'+uniqId).addClassName('contextArrowDown').removeClassName('contextArrow'); //Stop the click event to propagate anymore -else all arrows will be aligned again Event.stop( event ); return false; }; //To align all breadcrumb arrows in one direction page.ContextMenu.alignArrowsInBreadcrumb = function (event) { if ($('breadcrumbs') !== null){ var bList = $($('breadcrumbs').getElementsByTagName('ol')[0]); var bs = bList.immediateDescendants(); if (bs.length !== null && bs.length >1){ for (var i = 2; i <= bs.length; i++) { var arrowSpan = $('arrowContext_'+i); if (arrowSpan !== null ){ $('arrowContext_'+i).addClassName('contextArrow').removeClassName('contextArrowDown'); } } } } return false; }; // "static" methods page.ContextMenu.LI = function(event, divId, forceMenuRefresh) { page.LazyInit(event,['focus','mouseover'],'new page.ContextMenu(page.util.upToClass(target,\'contextMenuContainer\'), \'' + divId + '\',' + forceMenuRefresh + ');'); }; page.ContextMenu.contextMenus = []; // _Open_ context menus page.ContextMenu.registerContextMenu = function( menu ) { page.ContextMenu.contextMenus.push( menu ); }; page.ContextMenu.hiddenDivs = $H(); // All the menu divs on the page - only needed for cases such as view_spreadsheet2.js where we try to modify the menus outside this framework page.ContextMenu.hideMenuDiv = function( uniqueId) { var linkId = 'cmlink_' + uniqueId; var link = document.getElementById(linkId); if (link && !link.savedDiv ) { var elementId = 'cmdiv_' + uniqueId; var element = link.nextSibling; // Should be the text between the link and div but check anyways if ( !element || element.id != elementId) { element = element.nextSibling; if ( !element || element.id != elementId) { element = document.getElementById(elementId); } } if (element) { link.savedDiv = element; page.ContextMenu.hiddenDivs.set(uniqueId,element); Element.remove( element ); } } }; page.ContextMenu.addDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { document.body.appendChild(ele); }); }; page.ContextMenu.removeDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { Element.remove(ele); }); }; page.ContextMenu.closeAllContextMenus = function( event ) { var deferClose = false; if ( event ) { var e = Event.findElement( event, 'a' ); if ( e && e.href.indexOf("#contextMenu") >= 0 ) { Event.stop( event ); return; } deferClose = true; } page.ContextMenu.contextMenus.each( function( menu ) { if ( menu != this ) { if (deferClose) { menu.close(); } else { menu.closeNow(); } } }); page.ContextMenu.contextMenus = []; }; /** * Enables flyout menus to be opened using a keyboard or mouse. Enables * them to be viewed properly in IE as well. */ page.FlyoutMenu = Class.create(); page.FlyoutMenu.prototype = { initialize: function( subMenuListItem ) { this.subMenuListItem = $(subMenuListItem); this.menuLink = $(subMenuListItem.getElementsByTagName('a')[0]); //special case to render iframe shim under new course content build menu if (this.subMenuListItem.hasClassName('bcContent')) { var buildContentDiv = this.subMenuListItem.down("div.flyout"); if ( !buildContentDiv ) { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } else { this.subMenu = buildContentDiv; } } else { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } this.menuLink.flyoutMenu = this; // calculate the next/previous tab stops this.previousSibling = this.subMenuListItem.previous(); while ( this.previousSibling && (!this.previousSibling.down('a') || !this.previousSibling.visible()) ) { this.previousSibling = this.previousSibling.previous(); } this.nextSibling = this.subMenuListItem.next(); while ( this.nextSibling && (!this.nextSibling.down('a') || !this.nextSibling.visible()) ) { this.nextSibling = this.nextSibling.next(); } var rumble = $(this.subMenuListItem.parentNode.parentNode); this.inListActionBar = rumble && ( rumble.hasClassName("rumble_top") || rumble.hasClassName("rumble") ); Event.observe( this.menuLink, 'mouseover', this.onOpen.bindAsEventListener( this ) ); Event.observe( subMenuListItem, 'mouseout', this.onClose.bindAsEventListener( this ) ); Event.observe( this.menuLink, 'click', this.onLinkOpen.bindAsEventListener( this ) ); Event.observe( this.subMenuListItem, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); $A( this.subMenu.getElementsByTagName('li') ).each ( function( li ) { $A(li.getElementsByTagName('a')).each( function( link ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( link, 'click', this.onLinkClick.bindAsEventListener( this, link ) ); }.bind( this ) ); }.bind( this ) ); // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; if ( this.useARIA ) { this.initARIA(); } this.enabled = true; }, initARIA: function() { var inListActionBar = this.inListActionBar; if ( inListActionBar ) { this.subMenuListItem.up('ul').setAttribute( "role", "menubar" ); } this.subMenuListItem.setAttribute( "role", "menuitem" ); this.subMenu.setAttribute( "role", "menu" ); if ( !this.menuLink.hasClassName("notMenuLabel") ) { this.subMenu.setAttribute( "aria-labelledby", this.menuLink.id ); } $A( this.subMenu.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); // List action bars have onclick handlers that prevent submission of the page // if no items are selected, so we can't register new onclicks here because // otherwise we can't stop them from executing. if ( !inListActionBar ) { if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval(decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "-1"; link.style.cursor = 'pointer'; // make it look like a link. } } }); }, setEnabled: function( enabled ) { this.enabled = enabled; if ( !enabled ) { this.subMenu.setStyle({ display: '' }); } }, onKeyPress: function( event ) { if (!this.enabled) { return; } var key = event.keyCode || event.which; var elem = Event.element ( event ); var children, index, link; if ( key == Event.KEY_UP ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } else if ( index === 0 ) { children[children.length - 1].focus(); // wrap to bottom } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index == -1 ) { this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); } else if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } else if ( index == ( children.length - 1 ) ) { children[0].focus(); // wrap to top } Event.stop( event ); } else if ( key == Event.KEY_LEFT ) { if ( !this.previousSibling || ( this.previousSibling.hasClassName("mainButton") || this.previousSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, true ); } else if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( !link || !this.previousSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_RIGHT ) { if ( !this.nextSibling || ( this.nextSibling.hasClassName("mainButton") || this.nextSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, false ); } else if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( !link || !this.nextSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_ESC ) { this.close(); this.menuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_RETURN && this.useARIA && !this.inListActionBar ) { page.util.fireClick( elem ); Event.stop( event ); } else if ( key == Event.KEY_TAB && this.useARIA ) { this.executeTab( event, false, event.shiftKey ); } }, executeTab: function( event, forceMenuLinkTab, shift ) { var elem = Event.element ( event ); var link; if ( ( elem != this.menuLink ) || forceMenuLinkTab ) { if ( shift ) { // Go to previous menu if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } else { // Go to next menu if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } this.close(); Event.stop( event ); } }, onOpen: function( event ) { if (!this.enabled) { return; } this.open(); }, onClose: function( event ) { var to = $(event.relatedTarget || event.toElement); if ( !to || to.up('li.sub') != this.subMenuListItem ) { this.close(); } }, onLinkOpen: function( event ) { if (!this.enabled) { return; } this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); Event.stop( event ); }, resizeAfterShowHide: function() { // TODO - ideally this would just resize the outer div, but closing and opening 'works' this.close(); this.open(); }, open: function() { var alreadyShown = this.subMenu.getStyle('display') === 'block'; // If the menu is already showing (i.e. as_ce4 theme, we don't need to position it) if ( !alreadyShown ) { // Set position of action bar elements to static to enable z-index stack order page.util.setActionBarPosition( 'static' ); var menuTop = this.subMenuListItem.getHeight(); if ( this.subMenu.hasClassName( 'narrow' ) ) { menuTop = 0; } this.subMenuListItem.setStyle( {position: 'relative'} ); this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: menuTop+'px', left: '0px', width: '', height: '', overflowY: '' }); var offset = Position.cumulativeOffset( this.subMenuListItem ); var menuDims = this.subMenu.getDimensionsEx(); var menuHeight = menuDims.height; var popupWidth = this.subMenu.getWidth(); var subListItemDims = this.subMenuListItem.getDimensions(); var menuWidth = subListItemDims.width; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); var offsetTop = offset[1] - scrollOffsets.top; this.subMenu.flyoutMenu = this; if ( (offsetTop + menuHeight + subListItemDims.height) > viewportDimensions.height) { if ( (offsetTop - menuHeight) > 0 ) { // if menu goes below viewport but still fits on-page, show it above button this.subMenu.setStyle({ top: '-'+menuHeight+'px' }); } else { // we need to create scrollbars var newWidth = this.subMenu.getWidth() + 15; popupWidth = newWidth + 5; var newMenuHeight = viewportDimensions.height - (offsetTop + subListItemDims.height) - 20; var newMenuTop = menuTop; if (newMenuHeight < offsetTop) { // More space above than below newMenuHeight = offsetTop; newMenuTop = -offsetTop; } this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: newMenuTop+'px', left: '0px', width: newWidth + 'px', height: newMenuHeight + 'px', overflowY: 'auto' }); } } var offsetLeft = offset[0] - scrollOffsets.left; if ( (offsetLeft + popupWidth) > viewportDimensions.width ) { var subMenuWidth = this.subMenuListItem.getWidth(); var newLeft = popupWidth - (viewportDimensions.width-offsetLeft); if ((newLeft > 0) && (newLeft < offsetLeft)) { newLeft = -newLeft; } else { newLeft = -offsetLeft; } this.subMenu.setStyle({ left: newLeft+'px' }); } if ( page.util.isRTL() ) { var newRight = 0; if ( (offsetLeft + menuWidth) - popupWidth < 0 ) { newRight = (offsetLeft + menuWidth) - popupWidth; } this.subMenu.setStyle({ left: '', right: newRight+'px'}); } if (!this.shim) { this.shim = new page.popupShim( this.subMenu); } this.shim.open(); } }, close: function() { // Reset position of action bar elements to relative page.util.setActionBarPosition( 'relative' ); this.subMenuListItem.setStyle({position: ''}); this.subMenu.setStyle({ display: '', top: '', left: '', width: '', height: '', overflowY: '' }); if ( this.shim ) { this.shim.close(); } }, onLinkClick: function( event, link ) { if (!this.enabled) { return; } setTimeout( this.blurLink.bind( this, link), 100); }, blurLink: function( link ) { link.blur(); if (page.util.hasClassName( link, "donotclose" )) { link.focus(); } else { this.close(); } }, onAnchorFocus: function ( event ) { if (!this.enabled) { return; } var link = Event.element( event ); link.setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { var link = Event.element( event ); link.setStyle({ backgroundColor: '' }); } }; /** * Class for providing functionality to menu palettes */ page.PaletteController = Class.create(); page.PaletteController.prototype = { /** * Constructor * * @param paletteIdStr Unique string identifier for a palette * @param expandCollapseIdStr Id value of anchor tag to be assigned * the palette expand/collapse functionality * @param closeOtherPalettesWhenOpen Whether to close all other palettes when this one is open */ initialize: function( paletteIdStr, expandCollapseIdStr, closeOtherPalettesWhenOpen, collapsed ) { // palette id string this.paletteItemStr = paletteIdStr; // palette element this.paletteItem = $(this.paletteItemStr); // default id string to palette contents container element this.defaultContentsContainerId = page.PaletteController.getDefaultContentsContainerId(this.paletteItemStr); // the currently active palette contents container element this.activeContentsContainer = $(this.defaultContentsContainerId); // expand/collapse palette toggle element this.paletteToggle = $(expandCollapseIdStr); if (this.paletteToggle) { Event.observe(this.paletteToggle, 'click', this.toggleExpandCollapsePalette.bindAsEventListener(this)); } this.closeOtherPalettesWhenOpen = closeOtherPalettesWhenOpen; page.PaletteController.registerPaletteBox(this); if (collapsed) { this.collapsePalette(true); } }, /** * Set the currently active palette contents container element * * @param container palette contents container element */ setActiveContentsContainer: function ( container ) { this.activeContentsContainer = container; }, /** * Get the currently active palette contents container element * * @return palette contents container element */ getActiveContentsContainer: function () { return this.activeContentsContainer; }, /** * Expands the palette if it's not already expanded. * * @return palette contents container element */ expandPalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display == "none" ) { itemList.style.display = "block"; itemPalClass.length = itemPalClass.length - 1; this.paletteItem.className = itemPalClass.join(" "); lastDiv.className = "bottomRound"; firstDiv.className = "topRound"; h2.className = ""; var itemTitle = expandCollapseLink.innerHTML.stripTags().trim(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_collapse.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.collapse.section.param', itemTitle); } if ( doNotPersist ) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Collapses the palette if it's not already collapsed. * * @return palette contents container element */ collapsePalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display != "none" ) { itemList.style.display = "none"; itemPalClass[itemPalClass.length] = 'navPaletteCol'; this.paletteItem.className = itemPalClass.join(" "); if (itemPalClass.indexOf('controlpanel') != -1) { lastDiv.className = "bottomRound controlpanelCol"; // colors the bottomRound to match the h2 background } if (itemPalClass.indexOf('listCm')!=-1) { lastDiv.className = "bottomRound listCmCol"; // colors the bottomRound to match the h2 background firstDiv.className = "topRound listCmCol"; // colors the topRound to match the h2 background h2.className = "listCmCol"; // colors h2 background (removes background image) } if (itemPalClass.indexOf('tools') != -1) { lastDiv.className = "bottomRound toolsCol"; firstDiv.className = "topRound listCmCol"; h2.className = "toolsCol"; } var itemTitle = expandCollapseLink.innerHTML.stripTags(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags().trim(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_expand.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.expand.section.param', itemTitle); } if (doNotPersist) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Takes in a key value pair to save to the session as sticky data. * * @param key The key that will have the current course id appended to it to be saved to the session. * @param value The value to the key. */ saveSessionStickyInfo: function( key, value ) { /* Get the course id off of the global variable if exists, so that data is saved per * user session per course. If course doesn't exist, use empty string. */ var current_course_id = window.course_id ? window.course_id : ""; UserDataDWRFacade.setStringTempScope( key + current_course_id, value ); }, /** * Whether the first tag has js onclick event binding on it for palette collapse/expand * * @param h2 */ useFirstTagForExpandCollapse: function ( h2 ) { return h2.getElementsByTagName('a')[0].id.indexOf( "noneExpandCollapseTag" ) > -1 ? false : true; }, /** * Toggles a palette from expand to collapse and vice versa. * * @param event Optional event object if this method was bound to event. */ toggleExpandCollapsePalette: function ( event, doNotPersist ) { // To prevent default event behavior if ( event ) { Event.stop( event ); } if ( this.activeContentsContainer.style.display == "none" ) { // palette is currently closed, so we will be expanding it if ( this.closeOtherPalettesWhenOpen ) { // if closeOtherPalettesWhenOpen is set to true for this palette, close all other palettes page.PaletteController.closeAllOtherPalettes(this.paletteItemStr, doNotPersist); } this.expandPalette( doNotPersist ); } else { // palette is currently expanded, so we will be collapsing it this.collapsePalette( doNotPersist ); } } }; // "static" methods page.PaletteController.paletteBoxes = []; page.PaletteController.registerPaletteBox = function( paletteBox ) { page.PaletteController.paletteBoxes.push( paletteBox ); }; /** * Get the palette controller js object by palette id * * @param paletteId */ page.PaletteController.getPaletteControllerObjById = function( paletteId ) { return page.PaletteController.paletteBoxes.find( function( pb ) { return ( pb.paletteItemStr == paletteId ); } ); }; /** * Closes all palettes except the specified one * * @param paletteToKeepOpen */ page.PaletteController.closeAllOtherPalettes = function( paletteToKeepOpen, doNotPersist ) { for(var i = 0; i < page.PaletteController.paletteBoxes.length; i++) { var paletteItem = page.PaletteController.paletteBoxes[i]; if (paletteToKeepOpen !== paletteItem.paletteItemStr) { paletteItem.collapsePalette( doNotPersist ); } } }; /** * Toggles (expand/collapse) the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.toggleExpandCollapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.toggleExpandCollapsePalette( null, doNotPersist); }; /** * Collapses the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.collapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.collapsePalette( doNotPersist); }; /** * Expand the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.expandPalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.expandPalette( doNotPersist); }; /** * Set the active palette contents container (element containing the body * contents of a palette). The active contents container is used to toggle * visibility when expanding and collapsing menu palettes. * * @param paletteId * @param paletteContentsContainer Optional container to set. * If not given, the palette's active * container will not be changed. * @return The new active palette contents container element. * If no paletteContentsContainer element was passed, * The current active palette contents container element * will be returned. */ page.PaletteController.setActivePaletteContentsContainer = function( paletteId, paletteContentsContainer ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); if ( paletteContentsContainer ) { paletteObj.setActiveContentsContainer( paletteContentsContainer ); } return paletteObj.getActiveContentsContainer(); }; /* * Get the default palette contents container id string * * @param paletteId */ page.PaletteController.getDefaultContentsContainerId = function( paletteId ) { return paletteId + "_contents"; }; /** * Class for providing expand/collapse functionality (with dynamic loading) */ page.ItemExpander = Class.create(); page.ItemExpander.prototype = { /** * Constructor * - expandLink - the link that when clicked will expand/collapse the item * - expandArea - the actual area that will get expanded/collapsed (if the item is dynamically loaded, this area will be populated dynamically) * - expandText - the text to show as a tooltip on the link for expanding * - collapseText - the text to show as a tooltip on the link for collapsing * - expandTitleText - the customized text for link title afer expanding the item; if null/undefined, use expandText * - collapseTitleText - the customized text for link title after collapsing the item;if null/undefined, use collapseText * - dynamic - whether the contents are dynamically loaded * - dynamicUrl - the URL to get the contents of the item from * - contextParameters - additional URL parameters to add when calling the dynamicUrl * - sticky - load/save expand state from UserData; true if null/undefined * - expanded - initially expanded; false if null/undefined */ initialize: function( expandLink, expandArea, expandText, collapseText, dynamic, dynamicUrl, contextParameters, expandTitleText, collapseTitleText, sticky, expanded ) { this.expandLink = $(expandLink); this.expandLinkImage = this.expandLink.down('img'); this.expandArea = $s(expandArea); // Register the expander so it can be found page.ItemExpander.itemExpanderMap[this.expandLink.id] = this; this.expandText = expandText.unescapeHTML(); this.collapseText = collapseText.unescapeHTML(); if ( expandTitleText !== null && expandTitleText !== undefined ) { this.expandTitleText = expandTitleText.unescapeHTML(); } else { this.expandTitleText = this.expandText; } if ( collapseTitleText !== null && collapseTitleText !== undefined ) { this.collapseTitleText = collapseTitleText.unescapeHTML(); } else { this.collapseTitleText = this.collapseText; } this.dynamic = dynamic; this.dynamicUrl = dynamicUrl; if ( contextParameters !== null && contextParameters !== undefined ) { this.contextParameters = contextParameters.toQueryParams(); } else { this.contextParameters = {}; } this.sticky = ( sticky !== null && sticky !== undefined ) ? sticky : true; this.expanded = ( expanded !== null && expanded !== undefined ) ? expanded : false; this.hasContents = !this.dynamic; if ( this.sticky ) { // get the course id off of the global variable if exists, because data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.getStringTempScope( this.expandLink.id + current_course_id, this.getAvailableResponse.bind( this ) ); } this.expandCollapse( !this.expanded ); Event.observe( this.expandLink, "click", this.onToggleClick.bindAsEventListener( this ) ); }, getAvailableResponse : function ( response ) { var originalExpanded = this.expanded ; var cachedExpanded = false; if ( response.length > 0 ) { if ( response == 'true' ) { cachedExpanded = true; } else { cachedExpanded = false; } } if ( originalExpanded != cachedExpanded ) { //because we want the menu to be in the cached state, //we pass in the opposite so that expandCollapse changes the menu state. this.expandCollapse(originalExpanded); } }, onToggleClick: function( event ) { if ( event ) { Event.stop( event ); } this.expandCollapse(this.expanded); if ( this.sticky ) { // get the course id off of the global variable if exists, so that data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.setStringTempScope( this.expandLink.id + current_course_id, this.expanded ); } }, expandCollapse: function(shouldCollapse) { var combo; if ( shouldCollapse ) //Collapse the item { $(this.expandArea).hide(); this.expandLink.title = this.expandTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.expandText; this.expandLinkImage.src = "/images/ci/icons/generic_expand.gif"; } if ( this.expandLink.hasClassName("comboLink_active") ) { combo = this.expandLink.up("li").down(".submenuLink_active"); this.expandLink.removeClassName("comboLink_active"); this.expandLink.addClassName("comboLink"); if ( combo ) { combo.removeClassName("submenuLink_active"); combo.addClassName("submenuLink"); } } else { this.expandLink.removeClassName("open"); } this.expanded = false; } else //Expand the item { if ( this.hasContents ) { $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.collapseText; this.expandLinkImage.src = "/images/ci/icons/generic_collapse.gif"; } if ( this.expandLink.hasClassName("comboLink") ) { combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } } else if ( this.dynamic ) { this.loadData(); } this.expanded = true; } }, loadData: function() { new Ajax.Request( this.dynamicUrl, { method: "post", parameters: this.contextParameters, requestHeaders: { cookie: document.cookie }, onSuccess: this.afterLoadData.bind( this ) }); }, afterLoadData: function( req ) { try { var result = req.responseText.evalJSON( true ); if ( result.success != "true" ) { new page.InlineConfirmation("error", result.errorMessage, false ); } else { this.hasContents = true; this.expandArea.innerHTML = result.itemContents; $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; this.expandLinkImage.alt = this.collapseText; if ( this.expandLink.hasClassName("comboLink") ) { var combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } this.expanded = true; } } catch ( e ) { //Invalid response } } }; page.ItemExpander.itemExpanderMap = {}; /** * Class for controlling the "breadcrumb expansion" (i.e. the "..." hiding the inner * breadcrumbs) */ page.BreadcrumbExpander = Class.create(); page.BreadcrumbExpander.prototype = { initialize: function( breadcrumbBar ) { var breadcrumbListElement = $(breadcrumbBar.getElementsByTagName('ol')[0]); var breadcrumbs = breadcrumbListElement.immediateDescendants(); if ( breadcrumbs.length > 4 ) { this.ellipsis = document.createElement("li"); var ellipsisLink = document.createElement("a"); ellipsisLink.setAttribute("href", "#"); ellipsisLink.setAttribute("title", page.bundle.getString('breadcrumbs.expand') ); ellipsisLink.innerHTML = "..."; this.ellipsis.appendChild( ellipsisLink ); this.ellipsis = Element.extend( this.ellipsis ); Event.observe( ellipsisLink, "click", this.onEllipsisClick.bindAsEventListener( this ) ); this.hiddenItems = $A(breadcrumbs.slice(2,breadcrumbs.length - 2)); breadcrumbListElement.insertBefore( this.ellipsis, this.hiddenItems[0] ); this.hiddenItems.invoke( "hide" ); } // Make sure the breadcrumbs don't run into the mode switcher var breadcrumbContainer = $(breadcrumbListElement.parentNode); var modeSwitcher = breadcrumbBar.down('.modeSwitchWrap'); if ( modeSwitcher ) { var containerWidth = breadcrumbContainer.getWidth(); var containerOffset = breadcrumbContainer.cumulativeOffset(); var modeSwitcherOffset = modeSwitcher.cumulativeOffset(); var modeSwitcherWidth = modeSwitcher.getWidth(); if ( page.util.isRTL() ) { if ( modeSwitcherOffset[0] + modeSwitcherWidth > containerOffset[0] ) { breadcrumbContainer.setStyle({ paddingLeft: ( modeSwitcherOffset[0] + modeSwitcherWidth ) + 'px'} ); } } // else //{ // breadcrumbContainer.setStyle({ paddingRight: ( containerWidth - ( modeSwitcherOffset[0] - containerOffset[0] ) ) + 'px'} ); //} } }, onEllipsisClick: function( event ) { this.hiddenItems.invoke( "show" ); this.ellipsis.hide(); Event.stop( event ); } }; /** * Dynamically creates an inline confirmation. */ page.InlineConfirmation = Class.create(); page.InlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, oneReceiptPerPage ) { var receiptId = $s('receipt_id'); // do not insert a duplicate receipt, if one already exists if(receiptId && oneReceiptPerPage) { return; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if ( type == "warning" ) { cssClass = "warningReceipt"; } var contentPane = $('contentPanel') || $('portalPane'); var receiptHtml = '<div id="receipt_id" class="receipt '+ cssClass +'">'+ '<a name="inlineReceipt" tabindex="-1" style="color:#FFFFFF">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } receiptHtml += '<a class="close" href="#close" title="'+ page.bundle.getString("inlineconfirmation.close") +'" onClick="Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="'+ page.bundle.getString("inlineconfirmation.close") +'" src="/images/ci/ng/close_mini.gif"></a></div>'; contentPane.insert({top:receiptHtml}); // use aria live region to announce this confirmation message rather than setting focus to it. (Too many things are fighting over setting focus) // Note: if this confirmation is invoked from a menu handler, it may not announce if focus is lost when the menu closes. See how courseTheme.js sets focus before invoking. var insertedA = contentPane.down('a[name="inlineReceipt"]'); insertedA.setAttribute("aria-live","assertive"); insertedA.parentNode.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced } }; page.NestedInlineConfirmationIdCounter = 0; page.NestedInlineConfirmation = Class.create(); page.NestedInlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, previousElement,showCloseLink, extracss, insertBefore, oneReceiptPerPage, fadeAway, focusDiv, fadingTime, insertTop, receiptDivId, focusOnRender ) { if ( Object.isUndefined( focusOnRender ) ) { focusOnRender = true; } var receiptId = $s('receipt_nested_id'); // do not insert a duplicate receipt, if one already exists var newDivId = 'receipt_nested_id'; if(receiptId) { if (oneReceiptPerPage) { return; } newDivId = newDivId + (page.NestedInlineConfirmationIdCounter++); } if (receiptDivId) { // Remove the old message with the same receiptDivId if there is one before adding a new one if ( $( receiptDivId ) != null ) $( receiptDivId ).remove(); newDivId = receiptDivId; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if (type == "warning") { cssClass = "warningReceipt"; } if (!extracss) { extracss = ""; } var arrowSpan = ''; if (extracss.indexOf( "point", 0 ) != -1) { arrowSpan = '<span class="arrow"></span>'; } var contentPane = $(previousElement); if (!contentPane) { // TODO - if we can't find the element we wanted to insert before, is it OK to just drop the notification? return; } var receiptHtml = '<div id="'+newDivId+'" style="display:none" class="receipt '+ cssClass +' '+extracss +'">'+arrowSpan+ '<a name="inlineReceipt" class="areceipt" tabindex="-1">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } if (showCloseLink) { // either this is a JS Snippet to execute on close or a simple true in which case we do nothing extra var onCloseFunction = ""; if ( typeof showCloseLink === "string" || showCloseLink instanceof String ) { if ( !page.closeReceiptLinkCounter ) { page.closeReceiptLinkCounter = 0; } else { ++page.closeReceiptLinkCounter; } onCloseFunction = "onReceiptClosed" + page.closeReceiptLinkCounter; receiptHtml += "<script type='text/javascript'>window." + onCloseFunction + " = function( ) { " + showCloseLink + " ; }; </script>"; onCloseFunction += "( );" } receiptHtml += '<a class="close" href="#close" style="z-index:1000" title="' + page.bundle.getString("inlineconfirmation.close") + '" onClick="' + onCloseFunction + 'Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="' + page.bundle.getString("inlineconfirmation.close") + '" src="/images/ci/ng/close_mini.gif"></a></div>'; } if ( insertBefore ) { contentPane.insert({before:receiptHtml}); } else if (insertTop) { contentPane.insert({top:receiptHtml}); } else { contentPane.insert({after:receiptHtml}); } this.insertedDiv = insertBefore?contentPane.previousSibling:(insertTop?contentPane.firstChild:contentPane.nextSibling); $(this.insertedDiv).show(); var insertedA = $(this.insertedDiv).down('a[name="inlineReceipt"]'); var fadingDuration = fadingTime ? fadingTime : 5000; if ( focusOnRender ) { try { ( function() { try { if ( focusDiv ) { page.util.focusAndScroll( $( focusDiv ) ); } else { page.util.focusAndScroll( insertedA ); } } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } }.defer() ); } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } } else { // not setting focus to this confirmation, so we make it an aria live region so it will be announced to the screen reader if ( focusDiv ) { page.util.ensureVisible( $( focusDiv ) ); } else { page.util.ensureVisible( insertedA ); } insertedA.setAttribute("aria-live","assertive"); this.insertedDiv.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced (needed for jaws 12) } if ( fadeAway ) { setTimeout( function() { Element.fade( contentPane.nextSibling, { duration : 0.3 } ); }, fadingDuration ); } }, close: function() { if ( this.insertedDiv ) { this.insertedDiv.remove(); } } }; page.NestedInlineFadeAwayConfirmation = Class.create(); page.NestedInlineFadeAwayConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; page.NestedInlineFadeAwaySingleConfirmation = Class.create(); page.NestedInlineFadeAwaySingleConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time, newDivId ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore, false /*only one instance*/, null, null, null, null, newDivId ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; /** * Make sure the container as position: relative so that the offset can work */ page.MiniReceipt = Class.create(); page.MiniReceipt.prototype = { initialize: function( message, containerElement, top, left, time ) { var visibleDuration = time ? time : 2000; var top = top?top:-22; // usually show receipt above var left = left?left:0; var alreadyExistingReceipt = $( containerElement ).down( "div.miniReceipt" ); if ( alreadyExistingReceipt ) { alreadyExistingReceipt.hide( ); } var receiptHtml = '<div class="miniReceipt adding" style="display: none; top:' + top + 'px; left:'+ left + 'px" role="alert" aria-live="assertive">' + message + '</div>'; var receiptElement = $( containerElement ).insert( { top:receiptHtml } ).firstDescendant( ); receiptElement.show( ); setTimeout( function() { Element.fade( receiptElement, {duration:0.3, afterFinish: function() { receiptElement.remove() } } ); }, visibleDuration ); } }; page.extendedHelp = function( helpattributes, windowName ) { window.helpwin = window.open('/webapps/blackboard/execute/viewExtendedHelp?' + helpattributes,windowName,'menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); window.helpwin.focus(); }; page.decoratePageBanner = function() { var bannerDiv = $('pageBanner'); var containerDiv = $('contentPanel') || $('contentPane'); if ( bannerDiv && containerDiv ) { // append hasTopBanner class to container div to hide topRound containerDiv.addClassName('hasTopBanner'); // hide empty title bar if ( !$('pageTitleText') && $('pageTitleDiv') ) { $('pageTitleDiv').hide(); } } }; page.initializeSinglePopupPage = function( pageId ) { // Initialize the single popup page, make sure the window will be closed by clicking submit or cancel, and the parent // window will be refreshed after submit. var items = document.forms; for ( var i = 0; i < items.length; i++ ) { var formItem = items[ i ]; formItem.observe( 'submit', function() { (function() { window.close(); if( window.opener.refreshConfirm ) { window.opener.refreshConfirm(pageId); } }.defer()); } ); if ( formItem.top_Cancel ) { Event.observe( formItem.top_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } if ( formItem.bottom_Cancel ) { Event.observe( formItem.bottom_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } } }; page.openLightbox = function( link, title, url, width, height ) { var lightboxParam = { defaultDimensions : { w : width ? width : 1000, h : height ? height : 800 }, contents : '<iframe src="' + url + '" width="100%" height="100%"/>', title : title, closeOnBodyClick : false, showCloseLink : true, useDefaultDimensionsAsMinimumSize : true }; var lightboxInstance = new lightbox.Lightbox( lightboxParam ); lightboxInstance.open(); }; page.printAndClose = function() { (function() { window.print(); window.close(); }.defer()); }; /** * Utility for data collection step manipulation */ page.steps = {}; page.steps.HIDE = "hide"; page.steps.SHOW = "show"; /** * Hide or show an array of steps given the step ids and * renumber all visible steps on the page. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepIdArr - string array of step ids */ page.steps.hideShowAndRenumber = function ( action, stepIdArr ) { // hide or show each of the step ids given ($A(stepIdArr)).each( function( stepId ) { page.steps.hideShow( action, stepId ); }); // get all H3 elements that contain css class of "steptitle" var stepTitleTags = []; $A(document.getElementsByTagName('h3')).each( function( tag ) { if ( page.util.hasClassName( tag, 'steptitle' ) ) { stepTitleTags.push( $(tag) ); } }); // starting at number 1, renumber all of the visible steps var number = 1; stepTitleTags.each(function( stepTitleTag ) { if ( stepTitleTag.up('div').visible() ) { stepTitleTag.down('span').update(number); number++; } }); }; /** * Hide or show a single step given the step id. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepId - string identifier to a single step */ page.steps.hideShow = function ( action, stepId ) { if ( action == page.steps.SHOW ) { $(stepId).show(); } else if ( action == page.steps.HIDE ) { $(stepId).hide(); } }; page.showChangeTextSizeHelp = function( ) { page.extendedHelp('internalhandle=change_text_size&helpkey=change_text_size','change_text_size' ); return false; }; page.showAccessibilityOptions = function() { var win = window.open('/webapps/portal/execute/changePersonalStyle?cmd=showAccessibilityOptions', 'accessibilityOptions','menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); win.focus(); }; page.toggleContrast = function( ) { new Ajax.Request('/webapps/portal/execute/changePersonalStyle?cmd=toggleContrast', { onSuccess: function(transport, json) { var fsWin; if (window.top.nav) { fsWin = window.top; } else if (window.opener && window.opener.top.nav) { fsWin = window.opener.top; window.close(); } if (fsWin) { fsWin.nav.location.reload(); fsWin.content.location.reload(); } else { window.top.location.reload(); } } }); return false; }; /** * IFrame-based shim used with popups so they render on top of all other page elements (including applets) */ page.popupShim = Class.create(); page.popupShim.prototype = { initialize: function( popup ) { this.popup = popup; }, close: function( ) { this.toggleOverlappingEmbeds( false ); }, open: function( ) { this.toggleOverlappingEmbeds( true ); }, toggleOverlappingEmbeds: function( turnOff ) { ['embed','object','applet','select'].each( function( tag ) { var elems = document.getElementsByTagName( tag ); for ( var i = 0, l = elems.length; i < l; i++ ) { var e = $(elems[i]); if ( !turnOff || ( page.util.elementsOverlap( this.popup, e ) && !e.descendantOf( this.popup ) ) ) { elems[i].style.visibility = ( turnOff ? 'hidden' : '' ); } } }.bind( this ) ); } }; /** * Class for controlling the vtbe enable toggle. */ page.VTBEToggle = Class.create(); page.VTBEToggle.prototype = { initialize: function( vtbeDiv, vtbeOnOffToolKey ) { var toggleFunc = this.toggleVTBE.bindAsEventListener( this ); this.vtbeOnOffToolKey = ( vtbeOnOffToolKey ) ? vtbeOnOffToolKey : "textbox.wysiwyg"; var vtbeDivs = null; if ( vtbeDiv ) { // autowire the specified vtbe vtbeDivs = [ vtbeDiv ]; } else { // autowire all vtbe divs on the page vtbeDivs = document.getElementsByTagName('div'); } $A(vtbeDivs).each( function( div ) { // add toggle listener for each vtbe switch if ( page.util.hasClassName(div, 'vtbeSwitch') ) { div = $(div); if ( div.up('form') ) { var anchor = div.down('a'); page.VTBEToggle.form = div.up('form'); Event.observe( anchor, 'click', toggleFunc ); // save original form data so we can detect unsaved data when toggling VTBE if ( page.VTBEToggle.form && !page.VTBEToggle.origFormData ) { page.VTBEToggle.origFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); } } } }); }, toggleVTBE: function( event ) { // Stop the event to handle firefox behavior when posting into a page. Event.stop(event); // check & warn user of modified form data if ( page.VTBEToggle.form && page.VTBEToggle.origFormData ) { var origFormData = page.VTBEToggle.origFormData; if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var currentFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); for(var i in origFormData) { if ( origFormData.hasOwnProperty( i ) ) { var origVal = origFormData[i]; var currVal = currentFormData[i]; if ( currVal && typeof currVal != 'object' && ( ( typeof currVal != 'string' && origVal != currVal ) || ( typeof currVal == 'string' && origVal.trim() != currVal.trim().replace("&nbsp;","") ) ) ) { if (!confirm( page.bundle.getString("wysiwyg.visual.editor.confirm.unsaved.changes") )) { return; } break; } } } } // get current state of vtbe, toggle it, then reload page UserDataDWRFacade.getStringPermScope( this.vtbeOnOffToolKey, function( wysiwyg ) { UserDataDWRFacade.setStringPermScope( this.vtbeOnOffToolKey, (wysiwyg == 'Y') ? 'N' : 'Y', function() { // If there's a lightbox open, give it a chance to update itself instead of reloading the window if (!window.lightbox || !lightbox.deferUpdateLightboxContent()) { window.location.reload(); } }); }.bind( this )); } }; /** * Looks through the children of the specified element for links with the specified * class name, and if it finds any, autowires lightboxes to them. If lightbox.js/effects.js * hasn't already been loaded, load it. */ page.LightboxInitializer = Class.create( { initialize: function( className, parentElement ) { this.className = className; var links = parentElement.getElementsByTagName('a'); for ( var i = 0, l = links.length; i < l; i++ ) { if ( page.util.hasClassName( links[i], className ) ) { if ( window.lightbox && window.Effect) { this._autowire(); } else { this._load(); } break; } } }, _autowire: function() { lightbox.autowireLightboxes( this.className ); }, _load: function() { var h = $$('head')[0]; var scs = ( !window.lightbox ? ['/javascript/ngui/lightbox.js'] : []).concat( !window.Effect ? ['/javascript/scriptaculous/effects.js'] : [] ); scs.each( function( sc ) { var s = new Element('script', { type: 'text/javascript', src: sc } ); h.appendChild( s ); }); this._wait(); }, _wait: function() { var count = 0; new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( window.lightbox && window.Effect ) { pe.stop(); this._autowire(); } } else // give up if it takes longer than 5s to load lightbox.js/effects.js { pe.stop(); } }.bind(this), 0.05 ); } }); page.YouTubeControls = { toggleAXControls : function( playerid, openYtControlsId, event ) { if( $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display != 'block' ) { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'block'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'block'; $( openYtControlsId ).addClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } else { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'none'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'none'; $( openYtControlsId ).removeClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } Event.stop( event ); }, formatTime : function ( sec ) { var duration = parseInt( sec, 10 ); var totalMinutes = Math.floor( duration / 60 ); var hours = Math.floor( totalMinutes / 60 ); var seconds = duration % 60; var minutes = totalMinutes % 60; if ( hours > 0 ) { return hours + ':' + this.padZero( minutes ) + ':' + this.padZero( seconds ); } else { return this.padZero( minutes ) + ':' + this.padZero( seconds ); } }, padZero : function ( number ) { if (number < 10) { return "0" + number; } else { return number; } }, updateButtonLabels : function ( ytplayer, muteBtnId, playBtnId, status ) { if( ytplayer.isMuted() ) { $( muteBtnId ).update( page.bundle.getString( 'yt.unmute' ) ); } else { $( muteBtnId ).update( page.bundle.getString( 'yt.mute' ) ); } if( status == 1 ) { $( playBtnId ).update( page.bundle.getString( 'yt.pause' ) ); } else { $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); } } }; function onYouTubePlayerReady( playerid ) { var ytplayer = $( playerid ); if( !ytplayer ) { //ie fix: grab object tag instead of embed tag var objTagId = playerid.sub( 'ytEmbed', 'ytObject' ); ytplayer = $( objTagId ); } var playBtnId = playerid.sub( 'ytEmbed', 'playVideo' ); Event.observe( $( playBtnId ), 'click', function( event ) { if( ytplayer.getPlayerState() == 1 ) { ytplayer.pauseVideo(); } else { ytplayer.playVideo(); } Event.stop( event ); } ); var stopBtnId = playerid.sub( 'ytEmbed', 'stopVideo' ); Event.observe( $( stopBtnId ), 'click', function( event ) { ytplayer.pauseVideo(); ytplayer.seekTo( "0" ); $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); Event.stop( event ); } ); var volUpBtnId = playerid.sub( 'ytEmbed', 'volUp' ); Event.observe( $( volUpBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol > 89 ) { ytplayer.setVolume( 100 ); } else { ytplayer.setVolume( currVol + 10 ); } Event.stop( event ); } ); var volDownBtnId = playerid.sub( 'ytEmbed', 'volDown' ); Event.observe( $( volDownBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol < 11 ) { ytplayer.setVolume( 0 ); } else { ytplayer.setVolume( currVol - 10 ); } Event.stop( event ); } ); var muteBtnId = playerid.sub( 'ytEmbed', 'mute' ); Event.observe( $( muteBtnId ), 'click', function( event ) { if( ytplayer.isMuted() ) { ytplayer.unMute(); } else { ytplayer.mute(); } Event.stop( event ); } ); var timeDivId = playerid.sub( 'ytEmbed', 'currentTime' ); var statusDivId = playerid.sub( 'ytEmbed', 'currentStatus'); var dtTime = new Date(); new PeriodicalExecuter( function( pe ) { //lightbox closed, so stop this PeriodicalExecuter if( !$( timeDivId ) ) { pe.stop(); return; } //update the current time $( timeDivId ).update( page.YouTubeControls.formatTime( ytplayer.getCurrentTime() ) ); //update the current status var status = ytplayer.getPlayerState(); var statusStr = page.bundle.getString( 'yt.stopped' ); switch( status ) { case -1 : statusStr = page.bundle.getString( 'yt.stopped' ); break; case 0 : statusStr = page.bundle.getString( 'yt.ended' ); break; case 1 : statusStr = page.bundle.getString( 'yt.playing' ); break; case 2 : statusStr = page.bundle.getString( 'yt.paused' ); break; case 3 : statusStr = page.bundle.getString( 'yt.buffering' ); break; case 5 : statusStr = page.bundle.getString( 'yt.cued' ); break; } page.YouTubeControls.updateButtonLabels( ytplayer, muteBtnId, playBtnId, status ); $( statusDivId ).update( statusStr ); }.bind(this), 0.5 ); //wire the open/close controls wrapper var openYtControlsId = playerid.sub( 'ytEmbed', 'openYtControls' ); Event.observe( $( openYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); var closeYtControlsId = playerid.sub( 'ytEmbed', 'closeYtControls' ); Event.observe( $( closeYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); } page.util.flyoutMenuMainButtonKeyboardHandler = function( event ) { var key = event.keyCode || event.which; if (key == Event.KEY_LEFT || key == Event.KEY_RIGHT) { var elem = Event.element( event ); var target = elem.up( 'li' ); while ( true ) { if ( key == Event.KEY_LEFT ) { target = target.previous(); } else if ( key == Event.KEY_RIGHT ) { target = target.next(); } if ( !target || page.util.hasClassName( target, 'sub' ) || page.util.hasClassName( target, 'mainButton' ) || page.util.hasClassName( target, 'mainButtonType' ) ) { break; } } if ( target ) { var menuLinks = $A( target.getElementsByTagName( 'a' ) ); if ( menuLinks && menuLinks.length > 0 ) { menuLinks[ 0 ].focus(); Event.stop( event ); } } } }; page.util.initFlyoutMenuBehaviourForListActionMenuItems = function( container ) { //Initialize accessible flyout menu behavior if ( !container ) { container = document; } var uls = document.getElementsByTagName('ul'); if (uls) { var numUls = uls.length; for (var i = 0; i < numUls; i++) { var ul = uls[i]; if (page.util.hasClassName(ul, 'nav')) { var lis = ul.getElementsByTagName('li'); if (lis) { var numLis = lis.length; for (var j = 0; j < numLis; j++) { var li = lis[j]; if (page.util.hasClassName(li, 'sub')) { new page.FlyoutMenu($(li)); } else if (page.util.hasClassName(li, 'mainButton') || page.util.hasClassName(li, 'mainButtonType')) { var menuLinks = $A($(li).getElementsByTagName('a')); if (menuLinks && menuLinks.length > 0) { Event.observe(menuLinks[0], 'keydown', page.util.flyoutMenuMainButtonKeyboardHandler.bindAsEventListener(menuLinks[0])); } } } } } } } }; page.subheaderCleaner = { init : function( entityKind ) { var allHidden = true; var firstUl = null; var className = 'portletList-img courseListing ' + entityKind; $A( document.getElementsByClassName( className ) ).each( function( ul ) { if ( !ul.down() ) { ul.previous( 'h3' ).hide(); ul.hide(); if ( !firstUl ) { firstUl = ul; } } else { allHidden = false; } }); if ( allHidden && firstUl ) { firstUl.previous( 'div' ).show(); } } }; /** * Set up any JavaScript that will always be run on load (that doesn't depend on * any application logic / localization) here. * * Please leave this at the bottom of the file so it's easy to find. * */ FastInit.addOnLoad( function() { Event.observe( document.body, "click", page.ContextMenu.closeAllContextMenus.bindAsEventListener( window ) ); Event.observe( document.body, "click", page.ContextMenu.alignArrowsInBreadcrumb.bindAsEventListener( window ) ); Event.observe( document.body, 'keydown', function(event) { var key = event.keyCode || event.which; if ( key == 116 ) // reload current page on F5 key press { Event.stop( event ); // prevent browser from reloading complete frameset if ( Prototype.Browser.IE ) { event.keyCode = 0; } (function() { window.location.reload( true ); }.defer()); return false; } }); page.util.initFlyoutMenuBehaviourForListActionMenuItems(); if ( $('breadcrumbs') ) { new page.BreadcrumbExpander($('breadcrumbs')); // If we're in the content wrapper, hide the content wrapper breadcrumb frame // so that we don't get stacked breadcrumbs. if ( window.name === 'contentFrame' ) { var parent = window.parent; if ( parent ) { var frameset = parent.document.getElementById( 'contentFrameset' ); if ( frameset ) { frameset.rows = "*,100%"; } } } } var contentPane = $('contentPanel') || $('portalPane'); if ( contentPane ) { new page.LightboxInitializer( 'lb', contentPane ); } // add a label for inventory table checkboxes, if needed $A(document.getElementsByTagName("table")).each( function( table ) { if ( !page.util.hasClassName( table, 'inventory' ) ) { return; } var rows = table.rows; if ( rows.length < 2 ) { return; } for (var r = 0, rlen = rows.length - 1; r < rlen; r++) { var cells = rows[r+1].cells; // skip header row for (var c = 0, clen = cells.length; c < clen; c++) { var cell = $(cells[c]); var inp = cell.down('input'); if ( !inp || ( inp.type != 'checkbox' && inp.type != 'radio' ) ) { // We're only looking for checkbox/radio cells to label, so move on continue; } var lbl = cell.down('label'); if (lbl && !lbl.innerHTML.blank()) { break; // skip cells that already have a non-blank label } if ( !lbl ) { // add new label to checkbox lbl = new Element('label', {htmlFor: inp.id} ); lbl.addClassName('hideoff'); cell.insert({bottom:lbl}); } var headerCell = $(cell.parentNode).down('th'); if ( !headerCell ) { break; // skip rows without header cell } // create a temporary clone of the header cell and remove any hidden divs I.e. context menus var tempCell = $(headerCell.cloneNode(true)); var tempCellDivs = tempCell.getElementsByTagName("div"); for ( var i = 0; i < tempCellDivs.length; i++ ) { var d = tempCellDivs[i]; if ( d && !$(d).visible() ) { d.remove(); } } var lblBody = tempCell.innerHTML.replace( /<\/?[^>]*>/g, '' ); // strip html tags from header lblBody = page.bundle.getString('inventoryList.select.item', lblBody); lbl.update( lblBody ); // set label to header contents (minus tags) break; } } }); //set default font sizes to display text. hack to fix IE7 default font size issue. var sizes = {1:'xx-small', 2:'x-small', 3:'small', 4:'medium', 5:'large', 6:'x-large', 7:'xx-large'}; var fonts = document.getElementsByTagName('font'); for ( var i = 0; i < fonts.length; i++ ) { var font = fonts[i]; if ( font.size ) { // Since some font elements may be manually created by end users we have to handle random // values in here. if (!font.size.startsWith("+") && !font.size.startsWith("-")) { var fsize = parseInt(font.size, 10); if (fsize > 0 && fsize < 8) { font.style.fontSize = sizes[fsize]; } } } } try { if ( top && top.document.getElementById( 'bbFrameset' ) && window.name != 'nav' ) { top.document.getElementsByName('content')[0].title = page.bundle.getString( "frameset.contentframe.title" ) + " : " + document.title; } } catch ( err ) { // When Content System is loaded within a Vista popup window, cross-site security will prevent // accesses to top.document. Ignore this error and continue } page.scrollToEnsureVisibleElement(); page.isLoaded = true; }); /** * Class for adding an insertion marker within a list */ page.ListInsertionMarker = Class.create(); page.ListInsertionMarker.prototype = { initialize: function( listId, position, key, text ) { var list = $(listId); var listElements = list.childElements(); // create a marker list item var marker = new Element('li',{'id':listId+':'+key, 'class':'clearfix separator' }); marker.update('<h3 class="item" id=""><span class="reorder editmode"><span><img alt="" src="/images/ci/icons/generic_updown.gif"></span></span><span class="line"></span><span class="text">'+text+'</span></h3>'); //marker.setStyle({ position: 'relative', minHeight: '10px', padding: '0px', background: '#CCCCCC' }); position = ( position > listElements.length ) ? listElements.length : position; // add marker to list if (listElements.length == 0) { list.insert({top:marker}); // add marker to top of empty list } else if (listElements.length == position) { list.insert({bottom:marker}); // add marker after last element } else { listElements[position].insert({before:marker}); // add marker before element at position } var select = $('reorderControls'+listId).down('select'); // add a option for the marker to the keyboard repostioning select, if any if (select) { var option = new Element('option',{'value':key}).update( '-- '+text+' --' ); if (listElements.length == 0) { select.insert({top:option}); } else if (listElements.length == position) { select.insert({bottom:option}); } else { $(select.options[position]).insert({before:option}); } } } }; page.scrollToEnsureVisibleElement = function( ) { var params = window.location.search.parseQuery(); var ensureVisibleId = params.ensureVisibleId; if ( !ensureVisibleId ) { return; } var ensureVisibleElement = $(ensureVisibleId); if ( !ensureVisibleElement ) { return; } var pos = ensureVisibleElement.cumulativeOffset(); var scrollY = pos.top; var bodyHeight = $( document.body ).getHeight(); if (scrollY + ensureVisibleElement.getHeight() < bodyHeight) { return; // element is already visible } var receipt = $('inlineReceipt_good'); if ( receipt && receipt.visible() ) // pin receipt to top { var offset = receipt.cumulativeOffset(); offset.top = 0; var w = parseInt(receipt.getStyle('width'), 10); if ( Prototype.Browser.IE ) // width in IE includes border & padding, need to remove it { var bw = parseInt(receipt.getStyle('borderLeftWidth'), 10) + parseInt(receipt.getStyle('borderRightWidth'), 10); var pw = parseInt(receipt.getStyle('paddingLeft'), 10) + parseInt(receipt.getStyle('paddingRight'), 10); w = w - bw - pw; } receipt.setStyle({ position:"fixed", zIndex:"1000", left: offset.left + "px", top: offset.top + "px", width: w + "px"}); scrollY = scrollY - 2 * receipt.getHeight(); } // scroll window to show ensureVisibleElement window.scrollTo(0, scrollY ); }; /** * Recursively walks up the frameset stack asking each window to change their * document.domain attribute in anticipation of making a cross-site scripting * call to an LMS integration. * * <p>This should only be called from popup windows, as changing the document.domain * value of a window that is going to be reused later could do surprising things. * * @param domain Domain name shared by the Learn and LMS servers. */ page.setLmsIntegrationDomain = function( domain ) { if ( '' == domain ) { return; } try { if ( parent.page.setLmsIntegrationDomain ) { parent.page.setLmsIntegrationDomain( domain ); } } catch ( err ) { /* Ignore */ } document.domain = domain; }; page.refreshTopFrame = function() { if ( window.top.nav ) { window.top.nav.location.reload(); } }; page.rewriteTaskStatusUntilDone = function( spanId, taskId) { var theSpan = $(spanId); if (theSpan) { new Ajax.Request("/webapps/blackboard/execute/getSystemTaskStatus?taskId=" + taskId, { method: 'post', onSuccess: function(transport, json) { var result = transport.responseText.evalJSON( true ); theSpan = $(spanId); // reload it just in case it was removed between the request and response if (theSpan) { theSpan.update(result.text); if (result.complete == "false") { setTimeout(function() {page.rewriteTaskStatusUntilDone(spanId, taskId);}, 3000); } } }, onFailure: function(transport, json) { theSpan = $(spanId); //reload the span as above if (theSpan) { theSpan.hide(); $(spanId+'error').show(); } } }); } }; /* * Clean up the task id which associated with the specified course, so that the inline warning does not show up again */ page.cleanTaskId = function( courseId ) { //we don't care about the result, at worse it will display again on the next page new Ajax.Request("/webapps/blackboard/execute/courseMain?action=cleanTaskId&course_id=" + courseId, { method: 'post' }); }; } /* ================================================================== *The JavaScript Validation objects to be used in form validation. * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ /** * General purpose DOM utility methods. There's probably a better place for this. * Private methods and properties have names prefixed with "_". */ var bbDomUtil = { _inputTypes: [ 'input', 'textarea', 'select', 'button' ], _maxRecursion: 500, /** * @param elName name of the form input element (the request parameter name). * @return an array of two or more elements, a single element, or null. */ getInputElementByName: function( elName ) { var elArray = this._getInputElementsByNameInSection( 'dataCollectionContainer', elName ); if ( elArray.length === 0 ) { elArray = this._getInputElementsByName( elName ); } return ( elArray.length === 0 ) ? null : ( elArray.length == 1 ? elArray[ 0 ] : elArray ); }, /* * @param sectionId the ID of any element inside a form * @return the enclosing form element or null */ getEnclosingForm: function( sectionId ) { var form = null; if ( sectionId ) { var count; var section = document.getElementById( sectionId ); while ( section ) { ++count; if ( count > this._maxRecursion ) { break; } if ( section.tagName && section.tagName.toLowerCase() == "form" ) { form = section; break; } section = section.parentNode; } } return ( !form ) ? ( document.forms.length === 0 ? null : document.forms[ 0 ] ) : form; }, /** * Adds some additional processing to account for an IE bug * @param id the ID of an element */ getElementById: function( id ) { var el = $( id ); try { if ( el && /msie|internet explorer/i.test( navigator.userAgent ) && el.attributes.id && el.attributes.id.value != id && document.all ) { // IE usually returns item at 0 for ( var i = 0; i < document.all[ id ].length; ++i ) { if ( document.all[ id ][ i ].attributes.id && document.all[ id ][ i ].attributes.id.value == id ) { return $( document.all[ id ][ i ] ); } } } } catch ( e ) { // Ignore all exceptions } return el; }, syncCheckboxToInput: function( checkboxElement, inputElement ) { var checkbox = $( checkboxElement ); var input = $( inputElement ); if ( checkbox && input ) { var checkIfNotEmpty = function( ) { checkbox.checked = ( input.value.strip?input.value.strip( ):input.value )?true:false; } input.observe( 'change', checkIfNotEmpty ); input.observe( 'blur', checkIfNotEmpty ); } }, /** * @param sectionId the ID of an element that restricts the scope of elements. Cannot be null. * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name in the scope of the specified parent element. */ _getInputElementsByNameInSection: function( sectionId, elName ) { var result = []; if ( sectionId ) { var section = document.getElementById( sectionId ); if ( section ) { for ( var i = 0; i < this._inputTypes.length; ++i ) { var elements = section.getElementsByTagName( this._inputTypes[ i ] ); for ( var j = 0; j < elements.length; ++j ) { if ( elements[ j ].name == elName ) { result.push( elements[ j ] ); } } } } } return result; }, /** * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name. */ _getInputElementsByName: function( elName ) { var result = []; var elArray = document.getElementsByName( elName ); var formName = null; for ( var i = 0; i < elArray.length; ++i ) { if ( elArray[ i ].tagName.match( /^(input|select|textarea|button)$/i ) ) { if ( elArray[ i ].form !== null ) { if ( !formName ) { formName = elArray[ i ].form.name; } else if ( formName != elArray[ i ] .form.name ) { // Ignore elements that don't belong to the same form as the first one found. continue; } result.push( elArray[ i ] ); } } } return result; } }; /************************************************************ * Object formCheckList. Use this object to hold form objects * to be validated and perform form validation ************************************************************/ var addElement, removeElement, removeAllElements, getElement, checkForm, CheckGroup; var formCheckList = new formCheckList(); var dblSubmit = false; var skipValidation=false; function formCheckList() { this.checkList = []; this.addElement = addElement; this.removeElement = removeElement; this.removeAllElements = removeAllElements; this.getElement = getElement; this.check = checkForm; } function addElement(element) { if ( typeof element.group != 'undefined' ) { for ( var i=0; i < this.checkList.length;i++ ) { if ( this.checkList[i].name == element.group ) { this.checkList[i].addElement(element); return; } } var grp = new CheckGroup(element); grp.addElement(element); this.checkList[this.checkList.length] = grp; return; } this.checkList[this.checkList.length] = element; } function removeElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { this.checkList.splice(i, 1); } } } function getElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { return this.checkList[i]; } } } function removeAllElements() { var valSize = this.checkList.length; this.checkList.splice(0, valSize); } function checkForm() { if ( typeof(window.invalidAnswersTmp)!='undefined' ) { window.invalidAnswersTmp=[]; } var valid =true; for ( var i=0;i<this.checkList.length;i++ ) { if ( this.checkList[i].canValidate && !this.checkList[i].canValidate() ) { // cannot validate the input so skip it and continue onto the next input continue; } if ( !this.checkList[i].check() ) { if ( this.checkList[i].answerChk ) { valid=false; } else { return false; } } } return valid; } ///////////////////End of object formCheckList//////////////// /************************************************************ * Object: inputText. Use this object to validate text input in * your form (for input type == text|password|textarea|BUT NOT FILE!!! (FILE IS READ-ONLY)) ************************************************************/ function inputText(h) { if (h.id) { this.element = bbDomUtil.getElementById( h.id ); } else { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; } this.shouldFocus = h.shouldFocus; if ( h.shouldFocus === undefined ) { this.shouldFocus = true; } if ( this.shouldFocus ) { this.formatElement = 'bbDomUtil.getInputElementByName("'+h.display_format+'")'; this.focusElement = h.focus_element; // override element for focus in case of error } this.fieldName = h.name; this.disable_script = h.disable_script; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.minlength = h.minlength; this.maxlength = h.maxlength; this.trim = h.trim; this.regex = h.regex; this.regex_msg = h.regex_msg; this.regex_match = h.regex_match; this.verify = h.verify; this.check = inputTextCheck; this.valid_number = h.valid_number; this.min_value = h.min_value; this.max_value = h.max_value; this.nonnegative = h.nonnegative; this.valid_float = h.valid_float; this.allow_negative_float = h.allow_negative_float; this.valid_percent = h.valid_percent; this.allow_negative_percent = h.allow_negative_percent; this.valid_efloat = h.valid_efloat; // float with optional exponent this.valid_email = h.valid_email; this.valid_url = h.valid_url; this.required_url = h.required_url; this.invalid_chars = h.invalid_chars; // eg: /[%&#<>=+,]/g this.cmp_element = 'bbDomUtil.getInputElementByName("'+h.cmp_field+'")'; this.cmp_ref_label = h.cmp_ref_label; this.xor = h.xor; this.cmp_required = h.cmp_required; this.activeX = h.activeX; // synch activeX to hidden field before submission this.isHtmlDoc = h.isHtmlDoc; // is portfolio with body and html this.img_check = h.img_check; this.empty_value_warn = h.empty_value_warn; this.valid_system_role_id = h.valid_system_role_id; this.required = h.required; this.canValidate = h.canValidate; // callback function to determine whether the inputtext should be validated if (h.ref_and_regex === undefined) { this.ref_and_regex = true; } else { this.ref_and_regex = h.ref_and_regex; } if ( document.all && document.getElementById(h.name+'_ax') ) { this.axobj = document.getElementById(h.name+'_ax'); } // Add here anything you need to validate } function isAnEmptyVtbe(val) { // Different browsers populate an 'empty' VTBE with a different blank line - look for any of the known combinations and ignore them. // NOTE: Changes to this method need to be reflected in AssessmentDisplayControl.isAnEmptyVtbe return ( !val || !val.replace(/<p><\/p>/gi,'').trim() || !val.replace(/<br \/>/gi,'').trim() || !val.replace(/&nbsp;/gi,'').trim()); } // Do actual check here function inputTextCheck() { if ( this.shouldFocus === undefined ) { this.shouldFocus = true; } var element = eval(this.element); var cmp_element = eval(this.cmp_element); if ( element ) { // don't validate disabled elements if (element.disabled) { return true; } var focusElement = element; if ( this.axobj ) { focusElement = this.axobj; } this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.custom_alert_cmp = (typeof this.custom_alert_cmp != 'undefined') ? this.custom_alert_cmp : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( isAnEmptyVtbe(val) ) { val=''; } var trimmedVal, numVal, isValidNum, re; if ( this.activeX && isEmptyWysiwyg(element) ) { element.value = ''; val = ''; } if ( typeof eval(this.formatElement) != "undefined" && eval(this.formatElement) !== null ) { //Check if it is a mathml where; if ( /<APPLET ID="(\d+)" NAME="(\w+)"/.test(element.value) ) { if ( getRadioValue(eval(this.formatElement)) == 'P' ) { if ( !confirm(JS_RESOURCES.getString('validation.plain_text.confirm')) ) { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } } if ( this.trim ) { val = val.trim(); element.value = val; } //Remove leading & trailing spaces if needed if ( typeof cmp_element != 'undefined' ) { if ( this.xor ) { if ( val.trim()=='' ^ cmp_element.value.trim()=='' ) { if ( val.trim()=='' ) { alert( this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } } else { alert(this.custom_alert_cmp ? this.custom_alert_cmp : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.cmp_ref_label, this.ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } } return false; } } } if ( this.disable_script ) { if ( typeof eval(this.formatElement) == "undefined" || getRadioValue(eval(this.formatElement)) != 'P' ) { re = /<\s*script/ig; var re1 = /<\s*\/\s*script\s*>/ig; val = val.replace(re,'<disabled-script'); val = val.replace(re1,'</disabled-script>'); var re2 = /href\s*=\s*(['"]*)\s*javascript\s*:/ig; val = val.replace(re2,"href=$1disabled-javascript:"); element.value = val; } } if ( this.valid_number ) { trimmedVal = val.trim(); //added this check bcoz for numeric fields which are not required, this function was not working if ( trimmedVal!="" ) { var numLocalizer = new NumberLocalizer(); if ( numLocalizer === undefined ) { numVal = parseInt(trimmedVal, 10); } else { numVal = numLocalizer.parseNumber( trimmedVal ); } isValidNum = !isNaN(numVal); if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if (this.nonnegative && numVal<0) { alert(JS_RESOURCES.getFormattedString('validation.negative', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if ( ( (this.min_value || this.min_value === 0) && numVal < this.min_value ) || ( this.max_value && ( numVal > this.max_value ) ) ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_value', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_float ) { trimmedVal = val.trim(); var numFormat; if ( this.allow_negative_float ) { numFormat = LOCALE_SETTINGS.getString('float.allow.negative.format'); } else { numFormat = LOCALE_SETTINGS.getString('float.format'); } if ( numFormat ) { //hand parse for l10n re = new RegExp( numFormat ); isValidNum = trimmedVal.search( re ) === 0; } else { //try to use platform native (non-localized) numVal = parseFloat(trimmedVal); isValidNum = !isNaN(numVal); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test(trimmedVal.substring(numVal.toString().length)); } } if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_percent ) { if ( this.allow_negative_percent ) { if ( !isValidNegativePercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.allow_negtive.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { if ( !isPercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_efloat ) { if ( !isNumeric(val) ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { focusElement = (this.focusElement ? this.focusElement : this.element); if ( focusElement.focus ) { safeFocus( focusElement ); } } return false; } } if ( this.valid_email ) { if ( val.trim() == '' ) { if ( confirm(JS_RESOURCES.getString('warning.email')) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { re = /^(['`a-zA-Z0-9_+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; if ( !re.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.email', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } // confirms via javascript pop-up if input field is empty; // user can click Ok to proceed or cancel to go back with the element focused // the message that pops up is the message passed in with ref_label if ( this.empty_value_warn ) { if ( val.trim() == '' ) { if ( confirm(this.ref_label) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } var extra = 0; if (navigator.appName=="Netscape" && parseInt(navigator.appVersion, 10 )>=5) { var index = val.indexOf('\n'); while(index != -1) { extra += 1; index = val.indexOf('\n',index+1); } } if ( this.maxlength < val.length + extra ) { var newlength = val.length + extra; if ( (newlength - this.maxlength) > 1 ) { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.plural', [this.ref_label,this.maxlength,(newlength-this.maxlength)])); } else { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.singular', [this.ref_label,this.maxlength])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } // required_url, unlike valid_url, flags empty strings as invalid URLs. if ( this.required_url ) { if ( val.trim() == '' ) { alert(JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } if ( !isValidUrl(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_url ) { if ( val.trim()=='' ) { return true; } var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; if ( !oRegExp.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( typeof(this.regex) == 'string' ) { this.regex=eval(this.regex); } if ( (typeof(this.regex) == 'object' || typeof(this.regex) == 'function') && val.trim() != '' ) { re =this.regex; if ( this.regex_match && val.search(re) == -1 ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } if ( !this.regex_match && re.test(val) ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.invalid_chars ) { // if string was passed, convert to regular expression object if( Object.isString( this.invalid_chars ) ) { var stringToParse = this.invalid_chars; var firstSlashPos = stringToParse.indexOf("/"); var lastSlashPos = stringToParse.lastIndexOf("/"); var pattern = stringToParse.substring( ++firstSlashPos, lastSlashPos ); var modifier = stringToParse.substring( ++lastSlashPos, stringToParse.length ); this.invalid_chars = new RegExp( pattern, modifier ); } var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.verify ) { var chk_field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'_chk')); var field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'')); if ( chk_field.value != val ) { alert(JS_RESOURCES.getFormattedString('validation.mismatch', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( chk_field ); } return false; } // Encode password if ( element.type == 'password' ) { element.value = element.value.trim(); if ( element.value != '' ) { element.value = field.value = chk_field.value = calcMD5(element.value); } else { alert(JS_RESOURCES.getString('validation.password')); element.value = field.value =''; if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.cmp_required && element.value.trim()!='' ) { if ( !cmp_element.value.trim().length ) { alert(JS_RESOURCES.getFormattedString('validation.cmp_field.rejected', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } return false; } } if ( this.img_check ) { return image_check(element); } //AS-102122, if a image tag without ALT properties <img src="1.jpg">, add a null ALT for it. <img src="1.jpg" alt=""> imgTag_check(element,0); // System role ids cannot begin with "BB" as of 7.2; such ids are reserved for solely for Blackboard use // Checks field to see if string begins with "BB" case-insensitive and if so, alert the user if ( this.valid_system_role_id ) { if ( element.value.indexOf('BB') === 0 || element.value.indexOf('bb') === 0 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.system_role.reserve', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } else { return true; } } } return true; } ///////////////////End of object inputText/////////////////// //check ALT propertity for <img tag, if there isn't ALT propertiry, add ALT="" for this tag function imgTag_check(element , start){ var imgStart = element.value.indexOf("<img",start); // img: <img src=... > if (imgStart > -1 ){ var end = element.value.indexOf(">",imgStart); if (end == -1 ){ return; } var imgData = element.value.substring(imgStart, end+1); // <img src=... > if(imgData.indexOf("alt") == -1){ imgData = "<img alt=\"\" " + imgData.substring(4); element.value = element.value.substring(0,imgStart) + imgData + element.value.substring(end+1); } imgTag_check(element, end); } } function image_check(element) { var ext = element.value.match(/.*\.(.*)/); ext = ext ? ext[1] :''; var re = /gif|jpeg|png|tif|bmp|jpg/i; if ( ! re.test(ext) && element.value ) { if ( ! confirm(JS_RESOURCES.getFormattedString('validation.image_type', [ext])) ) { element.focus(); return false; } } return true; } /************************************************************ * Object: inputDate. Use this object to validate that the * associated date fields are not empty ************************************************************/ var inputDateCheck; function inputDate(h) { this.element_mm = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mm")'; this.element_dd = 'bbDomUtil.getInputElementByName("'+h.name+'_0_dd")'; this.element_yyyy = 'bbDomUtil.getInputElementByName("'+h.name+'_0_yyyy")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputDateCheck; // Add here anything you need to validate } // Do actual check here function inputDateCheck() { var element_mm = eval(this.element_mm); var element_dd = eval(this.element_dd); var element_yyyy = eval(this.element_yyyy); if ( typeof element_mm != 'undefined' && element_dd !='undefined' && element_yyyy !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = ( this.ref_label ) ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_mm.name]); if ( element_mm.selectedIndex == -1 || element_dd.selectedIndex == -1 || element_yyyy == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.date.required', [this.ref_label])); if ( element_mm.selectedIndex == -1 ) { element_mm.focus(); } else if ( element_dd.selectedIndex == -1 ) { element_dd.focus(); } else { element_yyyy.focus(); } return false; } } return true; } ///////////////////End of object inputDate/////////////////// /************************************************************ * Object: inputTime. Use this object to validate that the * associated time fields are not empty ************************************************************/ var inputTimeCheck; function inputTime(h) { this.element_hh = 'bbDomUtil.getInputElementByName("'+h.name+'_0_hh")'; this.element_mi = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mi")'; this.element_am = 'bbDomUtil.getInputElementByName("'+h.name+'_0_am")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputTimeCheck; // Add here anything you need to validate } // Do actual check here function inputTimeCheck() { var element_hh = eval(this.element_hh); var element_mi = eval(this.element_mi); var element_am = eval(this.element_am); if ( typeof element_hh != 'undefined' && element_mi !='undefined' && element_am !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_hh.name]); if ( element_hh.selectedIndex == -1 || element_mi.selectedIndex == -1 || element_am == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.time.required', [this.ref_label])); if ( element_hh.selectedIndex == -1 ) { element_hh.focus(); } else if ( element_mi.selectedIndex == -1 ) { element_mi.focus(); } else { element_am.focus(); } return false; } } return true; } ///////////////////End of object inputTime/////////////////// /************************************************************ * Object: inputSelect. Use this object to validate that the * associated select field is not empty ************************************************************/ var inputSelectCheck; function inputSelect(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.minSelected = h.minSelected; this.maxSelected = h.maxSelected; this.title = h.title; this.isMultiSelect = h.isMultiSelect; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputSelectCheck; // Add here anything you need to validate } // Do actual check here function inputSelectCheck() { var element = eval(this.element); var checked = 0; if ( typeof element != 'undefined' ) { if ( this.isMultiSelect) { if( this.minSelected ) { //check that at least minSelected number of options is selected //bsomala checked = element.options.length; if(checked < this.minSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.minItems', [this.minSelected])); element.focus(); return false; } } checked = 0; if ( this.maxSelected ) { checked = element.options.length; if(checked > this.maxSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.maxItems', [this.maxSelected])); element.focus(); return false; } } } else { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); if ( (element.selectedIndex == -1) || (element.options[element.selectedIndex].value == "") ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); element.focus(); return false; } } } return true; } ///////////////////End of object inputSelect/////////////////// /************************************************************ * Object: inputFile. Use this object to validate that the file upload is not empty. IMPORTANT: file type is READ ONLY ************************************************************/ var inputFileCheck; function inputFile(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.invalid_chars = h.invalid_chars; this.minlength = h.minlength; this.img_check = h.img_check; this.check = inputFileCheck; // Add here anything you need to validate } // Do actual check here function inputFileCheck() { var element = eval(this.element); if ( typeof element != 'undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( this.invalid_chars ) { var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); shiftFocus( element, false); return false; } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } return false; } if ( this.img_check ) { return image_check(element); } } return true; } ///////////////////End of object inputFile/////////////////// /************************************************************ * Object: Check_EventTime. Use this object to make sure * that the end time is not before the start time, confirm pastdue time, * check duration of the event. *************************************************************/ var Check_EventTime_check; function Check_EventTime(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check; } function Check_EventTime_check() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( (document.forms[0].restrict_start && document.forms[0].restrict_end)|| (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end) ) { if ( (document.forms[0].restrict_start && document.forms[0].restrict_end && document.forms[0].restrict_start.checked && document.forms[0].restrict_end.checked) || (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end && document.forms[1].restrict_start.checked && document.forms[1].restrict_end.checked) ) { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } } else { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end && end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /* * SCR 17696 * This validation check should be used in the date widgets instead of the earlier one * as that has the chackboxes names hardcoded in them. The existing date wodgets * use it, but going ahead this should be the used. It helps specially when there are * multiple date widgets on the same page. */ var Check_EventTime_check_multiple; function Check_EventTime_multiple(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check_multiple; } function Check_EventTime_check_multiple() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( restr && cmp_restr ) { //This block has been aded due to SCR 17696. //Reason : if this method is directly called from a JSP page which is not a part of // the existing date widgets, and the parameters of stsrt date, end date, start checkbox and // end checkbox are passed, and additionally the page has another if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /*We always need time in our favorite format */ function sql_datetime(dat) { var year = dat.getFullYear(); var mon = dat.getMonth(); mon++; mon = (mon<10)?'0'+mon:mon; var day = dat.getDate(); day = (day<10)?'0'+day:day; var hh = dat.getHours(); hh = (hh<10)?'0'+hh:hh; var mi = dat.getMinutes(); mi = (mi<10)?'0'+mi:mi; var ss = dat.getSeconds(); ss = (ss<10)?'0'+ss:ss; return year+'-'+mon+'-'+day+' '+hh+':'+mi+':'+ss; } ///////////////////End of object Check_EventTime///////////// /******************************************************************************** * Object DoubleSubmit(): * Use this object to prevent multiple times form submission * Second argument is wait image source; first argument is image name (string) or * instance of ImageSwapper object created for submit button (if it has rollovers) *********************************************************************************/ var checkDoubleSubmit; // Prevent multiple form submission function DoubleSubmit() { this.submitted = 0; this.check = checkDoubleSubmit; } function checkDoubleSubmit() { if ( this.submitted > 0 ) { alert (JS_RESOURCES.getString('notification.submit')); return false; } else { this.submitted++; } return true; } ///////////////////End of Object DoubleSubmit()////////////////// /******************************************************************************** * Object RadioCheckBox(): * Use this object to make sure that at least one item is selected from the group of * radio/checkbox groups. Just attach this code to checkbox/radio group (refered below as 'element'): * formCheckList.addElement(new RadioCheckBox({name:'element or subgroup name',group:'group name',ref_label:"group label in alerts"})); *********************************************************************************/ var groupAddElement, checkGroupChecked, groupIsChecked; // Constructor function function RadioCheckBox(h) { return h; } function CheckGroup(h) { this.name = h.group; this.ref_label = h.ref_label; this.elements = []; this.addElement = groupAddElement; this.check = checkGroupChecked; } function groupAddElement(h) { this.elements[this.elements.length] = h.name; } function checkGroupChecked() { var list = this.elements; var chk = false; for ( var i = 0; i < list.length; i++ ) { if ( groupIsChecked(list[i]) ) { return true; } } var msg = null; var group = bbDomUtil.getInputElementByName(list[0]); group = (typeof group[0] != 'undefined') ? group[0]:group; if ( group.type == "radio" ) { msg = JS_RESOURCES.getFormattedString('validation.radio.required', [this.ref_label]); } else { msg = JS_RESOURCES.getFormattedString('validation.option.required', [this.ref_label]); } alert(msg); group.focus(); return false; } function groupIsChecked(groupName) { var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var checked = false; if ( typeof group != 'undefined' ) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( group[i].checked ) { checked = true; return checked; } } } else { if ( group.checked ) { checked = true; return checked; } } } return checked; } ///////////////////End of Object CheckGroup()//////////////////// /******************************************************************************** * Object selector(): * Use this object to make sure that at least one item is available in the Selector element (see PickerElement.java) * For use when Selector is marked Required: * formCheckList.addElement(new CheckSelector({name:'element or subgroup name',ref_label:"group label in alerts"})); *********************************************************************************/ var selectorCheck, selectorElementAvailable; // Constructor function function selector(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.required = h.required; this.check = selectorCheck; // Add here anything you need to validate } // Do actual check here function selectorCheck() { if(this.required) { var isAvailable = selectorElementAvailable(this.fieldName); this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element.name]); if ( !isAvailable ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } } return true; } function selectorElementAvailable(groupName) { // we need at least one "Remove" checkbox to be present and unchecked (one element is added but not removed) var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var available = false; if ( typeof group != 'undefined' && group !== null) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( !group[i].checked ) { available = true; return available; } } } else { if ( !group.checked ) { available = true; return available; } } } return available; } ///////////////////End of Object CheckSelector()//////////////////// //////////////// Start some useful generic functions //////////// /* Function ltrim(): Remove leading spaces in strings: Usage:trimmedString = originalString.ltrim(); */ function ltrim() { return this.replace( /^\s+/g,''); } String.prototype.ltrim = ltrim; /* Function rtrim(): Remove trailing spaces in strings: Usage:trimmedString = originalString.rtrim(); */ function rtrim() { return this.replace( /\s+$/g,''); } String.prototype.rtrim = rtrim; /* Function trim(): Remove leading and trailing spaces in strings: Usage:trimmedString = originalString.trim(); */ function trim() { return this.rtrim().ltrim(); } String.prototype.trim = trim; /* Function invalidChars(): Returns an array of illegal chars Usage: var listOfChars = myStringToSearch.invalidChars(regularExpression); regularExpression = /[illegal chars]/g; Sample re = /[! &^$#]/g */ function invalidChars (re) { var chrs = this.match(re); if ( chrs ) { for ( var j=0;j<chrs.length;j++ ) { if ( chrs[j]===' ' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.space'); } else if ( chrs[j]==',' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.comma'); } else if ( chrs[j]=='\\' ) { chrs[j]='\\\\'; } } } return chrs; } String.prototype.invalidChars = invalidChars; /** Function getRadioValue(): Returns selected value for group of radio buttons * Usage: var selectedValue = getRadioValue(radio); radio - reference to radio group */ function getRadioValue(radio) { for ( var i=0;i< radio.length;i++ ) { if ( radio[i].checked ) { return radio[i].value; } } } /** Function isEmptyWysiwyg(): Checks WYSIWYG control for value */ function isEmptyWysiwyg(field) { // first remove any HTML tags from the value, then check if it's empty (all spaces or &nbsp;s) // explicitly adding the unicode non-breaking space and line feed/break since IE and safari // don't seem to include them in \s var EMPTY_REGEXP = /^(\s|\u00A0|\u2028|\u2029|&nbsp;)*$/i; // Input is not empty if it contains one of the following tags: img/object/embed var SPECIALTAGS = /(<\s*(img)|(object)|(embed)|(hr)|(input)|(applet))/i; if ( field && typeof(field.value) == 'string' && field.value ) { var notags = field.value.replace(/<.*?>/g,''); var result = EMPTY_REGEXP.test(notags); return ( result && !SPECIALTAGS.test(field.value) ); } return true; } /** Function isValidUrl(): Checks if given string is in the general URL format */ var VALID_URL_REGEXP = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; function isValidUrl(string) { return( VALID_URL_REGEXP.test(string) ); } /** Numeric */ var EFLOAT_REGEXP = LOCALE_SETTINGS.getString('efloat.format'); var THOUSANDS_SEP = LOCALE_SETTINGS.getString('thousand.sep.format'); /*rejectThousandSep: if true then the presence of the thousands-separator is an error (non-numeric) * e.g. we don't accept it for point, since point/score is rarely in thousands range. */ function isNumeric(string, rejectThousandSep ) { string = string.trim(); if ( rejectThousandSep !== null && rejectThousandSep ) { var hasThousands = ( string.search( new RegExp( THOUSANDS_SEP ) ) !== -1 ) ; if (hasThousands) { return false; } } string = string.replace(new RegExp(THOUSANDS_SEP, 'g'), ''); if ( string.search( new RegExp(EFLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return !isNaN(floatValue); } return false; } /** Float between 0 and 100 */ var FLOAT_REGEXP = LOCALE_SETTINGS.getString('float.format'); function isPercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= 0 && floatValue <= 100 ); } return false; } /** Float between -100 and 100 */ var FLOAT_ALLOW_NEGATIVE_REGEXP = LOCALE_SETTINGS.getString('float.allow.negative.format'); function isValidNegativePercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_ALLOW_NEGATIVE_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= -100 && floatValue <= 100 ); } return false; } /*Function submitForm() Call this function to validate and submit form @param form the name of the form or the DOM object representing the form. If null or undefined, submits first form on page. */ function submitForm(form) { if ( validateForm() ) { if (form) { if ( typeof( form ) == "string" ) { document.forms[ form ].submit(); } else { form.submit(); } } else { document.forms[0].submit(); } } } /* Sort numerical array in ascending order */ function numericalArraySortAscending(a, b) { return (a-b); } /*Function validateForm() * Call this function onSubmit inside <form> tag */ function validateForm() { // Set textarea value to VTBE contents if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if ( skipValidation ) { return true; } /* Validate form */ var valid = formCheckList.check(); var i; /*Check for invalid answers if any present */ var invalidAnswersArray = []; var invAns = window.invalidAnswers; if ( typeof( invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } invAns = window.invalidAnswersTmp; if ( typeof(invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } var stringArg = ''; if ( invalidAnswersArray.length > 0 ) { invalidAnswersArray.sort(numericalArraySortAscending); var lastIndex = invalidAnswersArray.length - 1; for ( var x = 0; x < invalidAnswersArray.length; x++ ) { stringArg += invalidAnswersArray[x]; if ( x < lastIndex ) { if ( ( (x+1) % 10 ) === 0 ) { stringArg += ",\n"; } else { stringArg += ","; } } } } if ( stringArg !== '' && valid ) { var msgKey; if ( !assessment.backtrackProhibited ) { msgKey = 'assessment.incomplete.confirm'; } else { msgKey = 'assessment.incomplete.confirm.backtrackProhibited'; } if (assessment.isSurvey) { msgKey = msgKey + ".survey"; } if ( !confirm( JS_RESOURCES.getFormattedString( msgKey, [stringArg] ) ) ) { valid = false; // User decided not to submit } else { assessment.userReallyWantsToSubmit = true; } window.invalidAnswersTmp = []; // Clearing up } /* Go back to placeholders if validation failed (valid == false) */ if ( ismath && !valid ) { api.setMathmlBoxes(); } /* If everything is OK and ready to go,check that the form was not already submitted */ if ( valid && dblSubmit ) { valid = dblSubmit.check(); } return valid; } /*Function boxSelector() * Use this function to select, unselect or invert selection for specified checkbox groups * Call: boxSelector(['name1','name2',...,'namen'],action), here action is 'select', or 'unselect', or 'invert' */ function boxSelector(list,action) { action = (action == 'select') ? true : (action == 'unselect') ? false : action; for ( var i=0;i<list.length;i++ ) { var group = 'bbDomUtil.getInputElementByName("'+list[i]+'")'; if ( typeof (group = eval(group)) != 'undefined' ) { var j; if ( action == 'invert' ) { for ( j=0;j<group.length;j++ ) { group[j].checked = !group[j].checked; } } else { for ( j=0;j<group.length;j++ ) { group[j].checked = action; } } } } } function setHidden (from,to) { var hide = eval(to); hide.value = from.value; } ////////////////////////////////////////////////////////////////// /** * Check_Answer object was added by request specified in mscr 524 * to provide validation to student answers * Variable invalidAnswers has to be added to the page where assessment is submitted * It should contain the list of unfinished questions excluding question(s) on current page * Check_Answer object will perform final validation and display all unfinished questions in confirm box */ var invalidAnswers = []; // the java code will populate this array on final QbyQ page /** Object constructor for answers walidation * */ var Check_Answer_check; function Check_Answer (vobj) { if ( typeof(window.invalidAnswersTmp)=='undefined' ) { window.invalidAnswersTmp=[]; } this.form = 'document.forms[0]'; this.element = 'bbDomUtil.getInputElementByName("'+vobj.name+'")'; this.name = vobj.name; this.answerChk = true; //Check_Answer is special check, it makes a list of unfinished questions and always return true this.ref_label = vobj.ref_label; this.check = Check_Answer_check; } //Test if at least one member of radio or checkbox group is selected function isChecked(grp) { if (typeof(grp.length) != 'undefined') { for ( var i=0;i< grp.length;i++ ) { if ( grp[i].checked ) { return true; } } return false; } else { return grp.checked; } } function Check_Answer_check() { //create form element object var el = eval(this.element); //Extract question type information from element name var qtype = /^(\w+)-/.exec(this.name); if ( !qtype ) { qtype = /^([^_]+)_/.exec(this.name); } qtype = qtype[1]; if ( qtype == 'ma' ) { qtype = /-\d+$/.test(this.name) ? 'mat' : 'ma'; } // Perform actual check-up if ( qtype == 'tf' || qtype == 'mc' || qtype == 'ma' || qtype == 'eo' ) { if ( !isChecked(el) ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]=this.ref_label; } } else if ( qtype == 'ord' || qtype == 'mat' ) { if ( el.selectedIndex === 0 && this.ref_label != window.invalidAnswersTmp[window.invalidAnswersTmp.length-1] ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'fitb' || qtype == 'essay' || qtype == 'num' || qtype == 'calc' || qtype == 'hs' || qtype == 'jumbled_sentence' || qtype == 'fib_plus' || qtype == 'quiz_bowl' ) { //remove isEmptyWysiwyg for these question types, since they should allow some chars as < > var val = el.value; if ( isAnEmptyVtbe(val) ) { val=''; } if ( val.trim().length < 1 ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'file' ) { var haveFile = false; var hiddenField = eval(this.form + '.elements["' + this.name + '-override"]'); if ( hiddenField && hiddenField.value == "true" ) { haveFile = true; } el = eval(this.form + '.elements["' + this.name + '_attachmentType"]'); if ( !haveFile && el && el.value !== "" ) { haveFile = true; } if ( !haveFile ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } // eliminate duplicates // TODO: think of a better way to do this if ( window.invalidAnswersTmp.length > 0 ) { var tmpArray = []; var tmpObject = {}; for ( var i = 0; i < window.invalidAnswersTmp.length; ++i ) { if ( !tmpObject[window.invalidAnswersTmp[i]] ) { tmpObject[window.invalidAnswersTmp[i]] = true; tmpArray[tmpArray.length] = window.invalidAnswersTmp[i]; } } window.invalidAnswersTmp = tmpArray; } return true; //Always true, we can make decision later through confirm } // wrapper function for focus() calls function shiftFocus(el, isVTBE) { if ( el ) { if ( isVTBE && editors && editors[el.name] && typeof(editors[el.name].focusEditor) == 'function' ) { editors[el.name].focusEditor(); } else if ( !el.disabled && !el.readOnly && el.type != "hidden" ) { safeFocus( el ); } } return; } function safeFocus( e ) { try { if ( e && e.focus ) { e.focus(); } } catch (er) { //Ignore, element is hidden in IE and can't be focused. } } /** * A validator that checks to see that a certain radio button in a group is * selected. This is intended to be used for conditional validation -- * validators that only apply when a certain radio button selection is made. * Note that if there are no selected values, this validator will return false * when checked. * - name - radio button group to check * - value - the radio button value to check for selection */ var RadioButtonValueValidator_check; function RadioButtonValueValidator( name, value ) { this.element = bbDomUtil.getInputElementByName(name); this.value = value; this.check = RadioButtonValueValidator_check; } function RadioButtonValueValidator_check() { for ( var i = 0; i < this.element.length; i++ ) { if ( this.element[i].value == this.value ) { return this.element[i].checked; } } return false; } /** * A validator that performs a logical, short-circuit OR on its two arguments. */ var OrValidator_check; function OrValidator( first, second ) { this.first = first; this.second = second; this.check = OrValidator_check; } function OrValidator_check() { return this.first.check() || this.second.check(); } /* This is a sample code that has to be added to every corresponding form element in take assessment page, where you perform question validation for completness; ref_lablel value is used to refer to element, name is field full name: <script type="text/javascript"> formCheckList.addElement(new Check_Answer({ref_label:"Question 3",name:"tf-ans-_190_1"})); </script> */ var nonceUtil = {}; /** * Finds the form element holding the nonceId * @param formId is the id of the form the nonce element exists within */ nonceUtil.getNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce') }; nonceUtil.getAjaxNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce.ajax') }; nonceUtil.getNonceIdEx = function(formId, elName) { var nonceId = null; if(formId && $s(formId) ) { nonceId= $s(formId).elements[elName]; } if( !nonceId ) { // take a cheap shot at retreiving the first nonceId on the page nonceId = document.getElementsByName( elName )[0]; // Note : nonceId can be null if the form does not have a nonce element declared. This should be a sign of a xsrf loophole } return nonceId; }; /** * Finds the form element holding the nonceId * @param formElementId is the id of a form element on the page. It is expected that the nonceId corresponds * to the same form. */ nonceUtil.getNonceIdByFormElementId = function(formElementId) { var nonceId = null; if( formElementId && $s(formElementId) ) { var elementFormId = bbDomUtil.getEnclosingForm(formElementId); nonceId = $s(elementFormId).elements['blackboard.platform.security.NonceUtil.nonce']; } return nonceId; }; nonceUtil.getNonceIdValue = function(formId) { var nonceId = nonceUtil.getNonceId(formId); return nonceId ? nonceId.value : ""; }; /** * Copies the nonceid from one form on the page to another form. Useful when using flyout forms. */ nonceUtil.copyNonceId = function( sourceFormId, targetFormId ) { var nonceId = nonceUtil.getNonceIdValue( sourceFormId ); var targetElem = new Element( 'input', { type: 'hidden', name: 'blackboard.platform.security.NonceUtil.nonce', value: nonceId } ); $( targetFormId ).appendChild( targetElem ); }; /** * Updates the form's nonceId based on the JSON response from an AjaxSecureForm */ nonceUtil.updateFromAjaxRequest = function( headerJSON ) { if ( headerJSON ) { var nonceId = nonceUtil.getNonceId(); if( nonceId ) { nonceId.value = headerJSON.nonceId; } } }; var NumberLocalizer = Class.create(); NumberLocalizer.prototype = { initialize : function() { var thousandsSeparator = LOCALE_SETTINGS[ 'number_format.thousands_sep' ]; var decimalSeparator = LOCALE_SETTINGS[ 'number_format.decimal_point' ]; this.thousandsSeparator = ( thousandsSeparator === null ) ? ',' : thousandsSeparator; this.needToConvertThousands = ( this.thousandsSeparator !== ',' ) ? true : false; this.decimalSeparator = ( decimalSeparator === null ) ? '.' : decimalSeparator; this.needToConvertDecimal = ( this.decimalSeparator !== '.' ) ? true : false; }, // Takes a number that is unlocalized and converts it to // the current locale format. formatNumber : function( f ) { var result; result = f.toString(); // Replace and thousands delimiter with a token so we can // replace it with the final symbol after we replace the decimal symbol. if ( this.needToConvertThousands ) { result = result.replace( ',', '[comma]' ); } if ( this.needToConvertDecimal ) { result = result.replace( '.', this.decimalSeparator ); } if ( this.needToConvertThousands ) { result = result.replace( '[comma]', this.thousandsSeparator ); } return result; }, // Takes a number that is in the current locale format and // converts it back to an unlocalized number. parseNumber : function( num ) { var result; result = num.toString(); // Parsing string to return as a float, so we don't need the thousands // separator anymore. result = result.replace( this.thousandsSeparator, '' ); if ( this.needToConvertDecimal ) { result = result.replace( this.decimalSeparator, '.' ); } return parseFloat( result ); } };var AccessibleSelect = {}; /** * Wire up the accessible event listeners to any <select>s on the page that have an onchange listener already */ AccessibleSelect.initializePage = function() { var selects = document.getElementsByTagName("select"); for ( var i = 0; i < selects.length; i++ ) { var currentSelect = selects[i]; if ( currentSelect.onchange ) { currentSelect.changed = false; currentSelect.onfocus = AccessibleSelect.onfocus; currentSelect.onkeydown = AccessibleSelect.onkeydown; currentSelect.onclick = AccessibleSelect.onclick; currentSelect.onchange = AccessibleSelect.createOnchange( currentSelect.onchange ); } } }; /** * Functor that creates an onchange function which if the <select> has actually been changed, will call the * specified callback (i.e. the original onchange function ) */ AccessibleSelect.createOnchange = function( callback ) { return function( theElement ) { var theSelect; if ( theElement && theElement.value ) { theSelect = theElement; } else { theSelect = this; } if (theSelect.changed) { // bind "theSelect" as the "this" for the callback. callback.apply(theSelect); return true; } else { return false; } }; }; /** * Event listener called when the <select> is clicked */ AccessibleSelect.onclick = function() { this.changed = true; // If the select size is greater than 0, then the onchange event occurs before the onclick event // and the "changed" attribute is false when the onchange event listener method runs and the select // element's onchange method does not get called. Therefore, we are going to call it here. if( this.size > 0 ) { this.onchange(this); } }; /** * Event listener called when the <select> gains focus */ AccessibleSelect.onfocus = function() { this.initValue = this.value; return true; }; /** * Event listener called when a key is pressed in the <select>. */ AccessibleSelect.onkeydown = function(e) { var theEvent; var keyCodeTab = "9"; var keyCodeEnter = "13"; var keyCodeEsc = "27"; if (e) { theEvent = e; } else { theEvent = event; } var largeSize = (this.size > 0); if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && ( largeSize || this.value != this.initValue) ) { this.initValue = this.value; this.changed = true; this.onchange(this); // returning true logically denotes that the change has been made, but more importantly it will make sure the default // behavior (what would have happened without the onkeydown event) is honored. For example, user pressing 'tab' key will // move the focus to the next element on the page return true; } else if (theEvent.keyCode == keyCodeEsc) { this.value = this.initValue; return false; } else { this.changed = false; } return true; }; // This script does not work for Safari. See AS-110404, AS-110426 if (!/webkit|khtml/i.test(navigator.userAgent)) { //When the page is loaded, initialize the select boxes if ( window.addEventListener) { window.addEventListener('load', AccessibleSelect.initializePage, false); } else if ( window.attachEvent ) { window.attachEvent('onload', AccessibleSelect.initializePage); } }var popup = { /** * Launches a new popup window. This method is used for an random popup that * might be necessary (preview window for example). If you are launching a * "picker" window you should use launchPicker() instead. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). This is required. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param resizable whether the new window should be resizable. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @param showStatus whether the new window should be show the status bar. If * not provided a default value will be used. Do not provide unless * your specific requirements dictate it. * @param scrolling whether the new window should allow scrolling. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @return a reference to the popup window generated */ launch: function( url, name, width, height, resizable, showStatus, scrolling ) { if ( typeof( width ) == 'undefined' ) { // for RTL, the width needs to be wider, to prevent vertical line overlapping in the popup if ( page.util.isRTL() ) { width = 890; } else { width = 825; // wide enough to prevent a horizontal scrollbar in most cases } } if ( typeof( height ) == 'undefined' ) { height = 500; } if ( typeof( resizable ) == 'undefined' ) { resizable = 'yes'; } if ( typeof( showStatus ) == 'undefined' ) { showStatus = 'yes'; } if ( typeof( scrolling ) == 'undefined' ) { scrolling = 'yes'; } // figure out placement of the new window we will open. If the desired size // of the new window is bigger than the screen size then make the window // smaller and put it far left. Otherwise, center the window on screen. var screenX = 0; if ( screen.width <= width ) { width = screen.width; // new window should not be wider than the screen } else { screenX = ( screen.width - width ) / 2; // center on the screen } var popup = window.open( url, name, 'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrolling + ',status=' + showStatus + ',top=20' + ',screenY=20' + ',screenX=' + screenX + ',left=' + screenX ); if ( popup ) { popup.focus(); if ( !popup.opener ) { popup.opener = self; } window.top.name = 'bbWin'; } return popup; }, /** * Launches a new "picker" window. * <p> * At the moment the only difference between this method and launch (besides * the inability to specify some advanced and rarely used options) is that * this method will default the {@code name} value if not provided. However, * you should still use this method if you are launching a "picker" type * window as additional differences may be introduced in the future. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). If not provided a default value will be used. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @return a reference to the picker window generated */ launchPicker: function( url, name, width, height ) { if ( typeof( name ) == 'undefined' ) { name = 'picker'; } return popup.launch( url, name, width, height ); }, /** * Launches a new Content System folder "picker" window. * * @param element a reference to the form element into which the value chosen * in the picker should be set. If not provided, the value will not be * set. * @return a reference to the picker window generated */ launchCsDirectoryPicker: function( element ) { var picker = popup.launchPicker( "/webapps/cmsmain/folderpicker" ); if ( picker !== null ) { if ( ( typeof( element ) != 'undefined' ) && ( element !== null ) ) { picker.opener.inputEntryURLToSet = document.getElementById( element ); } picker.opener.returnFullURL = false; } return picker; } }; var BrowserSpecific = { registerListeners: function() { if( Prototype.Browser.IE ) { var inputs = $A(document.getElementsByTagName('input')); //Enter key submit handling added only for IE browser. if( inputs ) { inputs.each( function( input ) { if(input.type === 'text' && !page.util.hasClassName(input,'noFormSubmitIE')) { Event.observe( input, "keypress", this.checkEnterKeyToSubmit.bindAsEventListener( this, input ) ); } }.bind( this ) ); } } }, checkEnterKeyToSubmit: function(event, input) { //if generated character code is equal to ascii 13 (if enter key) if(event.keyCode == 13 && input.form) { var submitButtons = $(input.form).getInputs('submit'); if(submitButtons && submitButtons.size() > 0) { submitButtons.first().click(); } Event.stop(event); } else { return true; } }, // Fix FireFox bug which converts absolute links pasted into a VTBE into relative ones which // start with a variable number of "../". // https://bugzilla.mozilla.org/show_bug.cgi?id=613517 handleFirefoxPastedLinksBug: function( baseUrl, vtbeText ) { if ( !baseUrl || !vtbeText ) { return vtbeText; } if ( Prototype.Browser.Gecko ) { if( !$( baseUrl.empty() ) && !$( vtbeText.empty() ) ) { //e.g. extract out "http://localhost:80" from "http://localhost:80/webapps/Bb-wiki-BBLEARN/" // port is optional var absoluteUrlPrefix = baseUrl.match(/https?:[\d]*\/\/[^\/]+/); // e.g."../../../bbcswebdav/xid-2202_1" into "http://localhost:80/bbcswebdav/xid-2202_1" vtbeText = vtbeText.replace(/(\.\.\/)+(sessions|bbcswebdav|courses|@@)/g, absoluteUrlPrefix + "/" + "$2"); } } return vtbeText; }, disableEnterKeyInTextBoxes: function (document) { var inputs = $A(document.getElementsByTagName('input')); if( inputs ) { inputs.each ( function( input ) { //must add special className for IE textboxes if( Prototype.Browser.IE ) { input.addClassName( 'noFormSubmitIE' ); } Event.observe( input, 'keypress', this.disableEnterKey ); }.bind( this ) ); } }, disableEnterKey: function( event ) { if( event.keyCode != Event.KEY_RETURN ) { return; } Event.stop( event ); return; } };

/** * Inserts the given HTML content into the extra content cell of the standard * title bar. * * @param content The HTML content to place */ function insertTitlebarContent(content) { var contentCell = document.getElementById("_titlebarExtraContent"); contentCell.innerHTML = content; }

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Declare an object to which we can add real functions. */ if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; /** * Set an alternative error handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setErrorHandler = function(handler) { dwr.engine._errorHandler = handler; }; /** * Set an alternative warning handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setWarningHandler = function(handler) { dwr.engine._warningHandler = handler; }; /** * Setter for the text/html handler - what happens if a DWR request gets an HTML * reply rather than the expected Javascript. Often due to login timeout */ dwr.engine.setTextHtmlHandler = function(handler) { dwr.engine._textHtmlHandler = handler; }; /** * Set a default timeout value for all calls. 0 (the default) turns timeouts off. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setTimeout = function(timeout) { dwr.engine._timeout = timeout; }; /** * The Pre-Hook is called before any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPreHook = function(handler) { dwr.engine._preHook = handler; }; /** * The Post-Hook is called after any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPostHook = function(handler) { dwr.engine._postHook = handler; }; /** * Custom headers for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setHeaders = function(headers) { dwr.engine._headers = headers; }; /** * Custom parameters for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setParameters = function(parameters) { dwr.engine._parameters = parameters; }; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.XMLHttpRequest = 1; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.IFrame = 2; /** XHR remoting type constant. See dwr.engine.setRpcType() */ dwr.engine.ScriptTag = 3; /** * Set the preferred remoting type. * @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setRpcType = function(newType) { if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) { dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" }); return; } dwr.engine._rpcType = newType; }; /** * Which HTTP method do we use to send results? Must be one of "GET" or "POST". * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setHttpMethod = function(httpMethod) { if (httpMethod != "GET" && httpMethod != "POST") { dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" }); return; } dwr.engine._httpMethod = httpMethod; }; /** * Ensure that remote calls happen in the order in which they were sent? (Default: false) * @see getahead.org/dwr/browser/engine/ordering */ dwr.engine.setOrdered = function(ordered) { dwr.engine._ordered = ordered; }; /** * Do we ask the XHR object to be asynchronous? (Default: true) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setAsync = function(async) { dwr.engine._async = async; }; /** * Does DWR poll the server for updates? (Default: false) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setActiveReverseAjax = function(activeReverseAjax) { if (activeReverseAjax) { // Bail if we are already started if (dwr.engine._activeReverseAjax) return; dwr.engine._activeReverseAjax = true; dwr.engine._poll(); } else { // Can we cancel an existing request? if (dwr.engine._activeReverseAjax && dwr.engine._pollReq) dwr.engine._pollReq.abort(); dwr.engine._activeReverseAjax = false; } // TODO: in iframe mode, if we start, stop, start then the second start may // well kick off a second iframe while the first is still about to return // we should cope with this but we don't }; /** * The default message handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultErrorHandler = function(message, ex) { dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true); if (message == null || message == "") alert("A server error has occured."); // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message); else alert(message); }; /** * The default warning handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultWarningHandler = function(message, ex) { dwr.engine._debug(message); }; /** * For reduced latency you can group several remote calls together using a batch. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.beginBatch = function() { if (dwr.engine._batch) { dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" }); return; } dwr.engine._batch = dwr.engine._createBatch(); }; /** * Finished grouping a set of remote calls together. Go and execute them all. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.endBatch = function(options) { var batch = dwr.engine._batch; if (batch == null) { dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" }); return; } dwr.engine._batch = null; if (batch.map.callCount == 0) return; // The hooks need to be merged carefully to preserve ordering if (options) dwr.engine._mergeBatch(batch, options); // In ordered mode, we don't send unless the list of sent items is empty if (dwr.engine._ordered && dwr.engine._batchesLength != 0) { dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch; } else { dwr.engine._sendData(batch); } }; /** @deprecated */ dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); }; dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); }; dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); }; dwr.engine.setPollType = function() { dwr.engine._debug("Manually setting the Poll Type is not supported"); }; //============================================================================== // Only private stuff below here //============================================================================== /** The original page id sent from the server */ dwr.engine._origScriptSessionId = "E05AC7CBAC419A8F21680DA2F866F1DB"; /** The session cookie name */ dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID /** Is GET enabled for the benefit of Safari? */ dwr.engine._allowGetForSafariButMakeForgeryEasier = "false"; /** The script prefix to strip in the case of scriptTagProtection. */ dwr.engine._scriptTagProtection = "throw 'allowScriptTagRemoting is false.';"; /** The default path to the DWR servlet */ dwr.engine._defaultPath = "/webapps/assessment/dwr_open"; /** Do we use XHR for reverse ajax because we are not streaming? */ dwr.engine._pollWithXhr = "false"; /** The read page id that we calculate */ dwr.engine._scriptSessionId = null; /** The function that we use to fetch/calculate a session id */ dwr.engine._getScriptSessionId = function() { if (dwr.engine._scriptSessionId == null) { dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000); } return dwr.engine._scriptSessionId; }; /** A function to call if something fails. */ dwr.engine._errorHandler = dwr.engine.defaultErrorHandler; /** For debugging when something unexplained happens. */ dwr.engine._warningHandler = dwr.engine.defaultWarningHandler; /** A function to be called before requests are marshalled. Can be null. */ dwr.engine._preHook = null; /** A function to be called after replies are received. Can be null. */ dwr.engine._postHook = null; /** An map of the batches that we have sent and are awaiting a reply on. */ dwr.engine._batches = {}; /** A count of the number of outstanding batches. Should be == to _batches.length unless prototype has messed things up */ dwr.engine._batchesLength = 0; /** In ordered mode, the array of batches waiting to be sent */ dwr.engine._batchQueue = []; /** What is the default rpc type */ dwr.engine._rpcType = dwr.engine.XMLHttpRequest; /** What is the default remoting method (ie GET or POST) */ dwr.engine._httpMethod = "POST"; /** Do we attempt to ensure that calls happen in the order in which they were sent? */ dwr.engine._ordered = false; /** Do we make the calls async? */ dwr.engine._async = true; /** The current batch (if we are in batch mode) */ dwr.engine._batch = null; /** The global timeout */ dwr.engine._timeout = 0; /** ActiveX objects to use when we want to convert an xml string into a DOM object. */ dwr.engine._DOMDocument = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; /** The ActiveX objects to use when we want to do an XMLHttpRequest call. */ dwr.engine._XMLHTTP = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; /** Are we doing comet or polling? */ dwr.engine._activeReverseAjax = false; /** The iframe that we are using to poll */ dwr.engine._outstandingIFrames = []; /** The xhr object that we are using to poll */ dwr.engine._pollReq = null; /** How many milliseconds between internal comet polls */ dwr.engine._pollCometInterval = 200; /** How many times have we re-tried to poll? */ dwr.engine._pollRetries = 0; dwr.engine._maxPollRetries = 0; /** Do we do a document.reload if we get a text/html reply? */ dwr.engine._textHtmlHandler = null; /** If you wish to send custom headers with every request */ dwr.engine._headers = null; /** If you wish to send extra custom request parameters with each request */ dwr.engine._parameters = null; /** Undocumented interceptors - do not use */ dwr.engine._postSeperator = "\n"; dwr.engine._defaultInterceptor = function(data) { return data; }; dwr.engine._urlRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._contentRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._replyRewriteHandler = dwr.engine._defaultInterceptor; /** Batch ids allow us to know which batch the server is answering */ dwr.engine._nextBatchId = 0; /** A list of the properties that need merging from calls to a batch */ dwr.engine._propnames = [ "rpcType", "httpMethod", "async", "timeout", "errorHandler", "warningHandler", "textHtmlHandler" ]; /** Do we stream, or can be hacked to do so? */ dwr.engine._partialResponseNo = 0; dwr.engine._partialResponseYes = 1; dwr.engine._partialResponseFlush = 2; /** Is this page in the process of unloading? */ dwr.engine._unloading = false; /** * @private Send a request. Called by the Javascript interface stub * @param path part of URL after the host and before the exec bit without leading or trailing /s * @param scriptName The class to execute * @param methodName The method on said class to execute * @param func The callback function to which any returned data should be passed * if this is null, any returned data will be ignored * @param vararg_params The parameters to pass to the above class */ dwr.engine._execute = function(path, scriptName, methodName, vararg_params) { var singleShot = false; if (dwr.engine._batch == null) { dwr.engine.beginBatch(); singleShot = true; } var batch = dwr.engine._batch; // To make them easy to manipulate we copy the arguments into an args array var args = []; for (var i = 0; i < arguments.length - 3; i++) { args[i] = arguments[i + 3]; } // All the paths MUST be to the same servlet if (batch.path == null) { batch.path = path; } else { if (batch.path != path) { dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." }); return; } } // From the other params, work out which is the function (or object with // call meta-data) and which is the call parameters var callData; var lastArg = args[args.length - 1]; if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() }; else callData = args.pop(); // Merge from the callData into the batch dwr.engine._mergeBatch(batch, callData); batch.handlers[batch.map.callCount] = { exceptionHandler:callData.exceptionHandler, callback:callData.callback }; // Copy to the map the things that need serializing var prefix = "c" + batch.map.callCount + "-"; batch.map[prefix + "scriptName"] = scriptName; batch.map[prefix + "methodName"] = methodName; batch.map[prefix + "id"] = batch.map.callCount; for (i = 0; i < args.length; i++) { dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i); } // Now we have finished remembering the call, we incr the call count batch.map.callCount++; if (singleShot) dwr.engine.endBatch(); }; /** @private Poll the server to see if there is any data waiting */ dwr.engine._poll = function() { if (!dwr.engine._activeReverseAjax) return; var batch = dwr.engine._createBatch(); batch.map.id = 0; // TODO: Do we need this?? batch.map.callCount = 1; batch.isPoll = true; if (dwr.engine._pollWithXhr == "true") { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } else { if (navigator.userAgent.indexOf("Gecko/") != -1) { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseYes; } else { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } } batch.httpMethod = "POST"; batch.async = true; batch.timeout = 0; batch.path = dwr.engine._defaultPath; batch.preHooks = []; batch.postHooks = []; batch.errorHandler = dwr.engine._pollErrorHandler; batch.warningHandler = dwr.engine._pollErrorHandler; batch.handlers[0] = { callback:function(pause) { dwr.engine._pollRetries = 0; setTimeout(dwr.engine._poll, pause); } }; // Send the data dwr.engine._sendData(batch); if (batch.rpcType == dwr.engine.XMLHttpRequest && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._checkCometPoll(); } }; /** Try to recover from polling errors */ dwr.engine._pollErrorHandler = function(msg, ex) { // if anything goes wrong then just silently try again (up to 3x) after 10s dwr.engine._pollRetries++; dwr.engine._debug("Reverse Ajax poll failed (pollRetries=" + dwr.engine._pollRetries + "): " + ex.name + " : " + ex.message); if (dwr.engine._pollRetries < dwr.engine._maxPollRetries) { setTimeout(dwr.engine._poll, 10000); } else { dwr.engine._activeReverseAjax = false; dwr.engine._debug("Giving up."); } }; /** @private Generate a new standard batch */ dwr.engine._createBatch = function() { var batch = { map:{ callCount:0, page:window.location.pathname + window.location.search, httpSessionId:dwr.engine._getJSessionId(), scriptSessionId:dwr.engine._getScriptSessionId() }, charsProcessed:0, paramCount:0, parameters:{}, headers:{}, isPoll:false, handlers:{}, preHooks:[], postHooks:[], rpcType:dwr.engine._rpcType, httpMethod:dwr.engine._httpMethod, async:dwr.engine._async, timeout:dwr.engine._timeout, errorHandler:dwr.engine._errorHandler, warningHandler:dwr.engine._warningHandler, textHtmlHandler:dwr.engine._textHtmlHandler }; if (dwr.engine._preHook) batch.preHooks.push(dwr.engine._preHook); if (dwr.engine._postHook) batch.postHooks.push(dwr.engine._postHook); var propname, data; if (dwr.engine._headers) { for (propname in dwr.engine._headers) { data = dwr.engine._headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (dwr.engine._parameters) { for (propname in dwr.engine._parameters) { data = dwr.engine._parameters[propname]; if (typeof data != "function") batch.parameters[propname] = data; } } return batch; }; /** @private Take further options and merge them into */ dwr.engine._mergeBatch = function(batch, overrides) { var propname, data; for (var i = 0; i < dwr.engine._propnames.length; i++) { propname = dwr.engine._propnames[i]; if (overrides[propname] != null) batch[propname] = overrides[propname]; } if (overrides.preHook != null) batch.preHooks.unshift(overrides.preHook); if (overrides.postHook != null) batch.postHooks.push(overrides.postHook); if (overrides.headers) { for (propname in overrides.headers) { data = overrides.headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (overrides.parameters) { for (propname in overrides.parameters) { data = overrides.parameters[propname]; if (typeof data != "function") batch.map["p-" + propname] = "" + data; } } }; /** @private What is our session id? */ dwr.engine._getJSessionId = function() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length); if (cookie.indexOf(dwr.engine._sessionCookieName + "=") == 0) { return cookie.substring(dwr.engine._sessionCookieName.length + 1, cookie.length); } } return ""; }; /** @private Check for reverse Ajax activity */ dwr.engine._checkCometPoll = function() { for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { var text = ""; var iframe = dwr.engine._outstandingIFrames[i]; try { text = dwr.engine._getTextFromCometIFrame(iframe); } catch (ex) { dwr.engine._handleWarning(iframe.batch, ex); } if (text != "") dwr.engine._processCometResponse(text, iframe.batch); } if (dwr.engine._pollReq) { var req = dwr.engine._pollReq; var text = req.responseText; if (text != null) dwr.engine._processCometResponse(text, req.batch); } // If the poll resources are still there, come back again if (dwr.engine._outstandingIFrames.length > 0 || dwr.engine._pollReq) { setTimeout(dwr.engine._checkCometPoll, dwr.engine._pollCometInterval); } }; /** @private Extract the whole (executed an all) text from the current iframe */ dwr.engine._getTextFromCometIFrame = function(frameEle) { var body = frameEle.contentWindow.document.body; if (body == null) return ""; var text = body.innerHTML; // We need to prevent IE from stripping line feeds if (text.indexOf("<PRE>") == 0 || text.indexOf("<pre>") == 0) { text = text.substring(5, text.length - 7); } return text; }; /** @private Some more text might have come in, test and execute the new stuff */ dwr.engine._processCometResponse = function(response, batch) { if (batch.charsProcessed == response.length) return; if (response.length == 0) { batch.charsProcessed = 0; return; } var firstStartTag = response.indexOf("//#DWR-START#", batch.charsProcessed); if (firstStartTag == -1) { // dwr.engine._debug("No start tag (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed) + "'"); batch.charsProcessed = response.length; return; } // if (firstStartTag > 0) { // dwr.engine._debug("Start tag not at start (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed, firstStartTag) + "'"); // } var lastEndTag = response.lastIndexOf("//#DWR-END#"); if (lastEndTag == -1) { // dwr.engine._debug("No end tag. unchanged charsProcessed=" + batch.charsProcessed); return; } // Skip the end tag too for next time, remembering CR and LF if (response.charCodeAt(lastEndTag + 11) == 13 && response.charCodeAt(lastEndTag + 12) == 10) { batch.charsProcessed = lastEndTag + 13; } else { batch.charsProcessed = lastEndTag + 11; } var exec = response.substring(firstStartTag + 13, lastEndTag); dwr.engine._receivedBatch = batch; dwr.engine._eval(exec); dwr.engine._receivedBatch = null; }; /** @private Actually send the block of data in the batch object. */ dwr.engine._sendData = function(batch) { batch.map.batchId = dwr.engine._nextBatchId; dwr.engine._nextBatchId++; dwr.engine._batches[batch.map.batchId] = batch; dwr.engine._batchesLength++; batch.completed = false; for (var i = 0; i < batch.preHooks.length; i++) { batch.preHooks[i](); } batch.preHooks = null; // Set a timeout if (batch.timeout && batch.timeout != 0) { batch.timeoutId = setTimeout(function() { dwr.engine._abortRequest(batch); }, batch.timeout); } // Get setup for XMLHttpRequest if possible if (batch.rpcType == dwr.engine.XMLHttpRequest) { if (window.XMLHttpRequest) { batch.req = new XMLHttpRequest(); } // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) { batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP); } } var prop, request; if (batch.req) { // Proceed using XMLHttpRequest if (batch.async) { batch.req.onreadystatechange = function() { if (typeof dwr != 'undefined') dwr.engine._stateChange(batch); }; } // If we're polling, record this for monitoring if (batch.isPoll) { dwr.engine._pollReq = batch.req; // In IE XHR is an ActiveX control so you can't augment it like this if (!(document.all && !window.opera)) batch.req.batch = batch; } // Workaround for Safari 1.x POST bug var indexSafari = navigator.userAgent.indexOf("Safari/"); if (indexSafari >= 0) { var version = navigator.userAgent.substring(indexSafari + 7); if (parseInt(version, 10) < 400) { if (dwr.engine._allowGetForSafariButMakeForgeryEasier == "true") batch.httpMethod = "GET"; else dwr.engine._handleWarning(batch, { name:"dwr.engine.oldSafari", message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier." }); } } batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); try { batch.req.open(batch.httpMethod, request.url, batch.async); try { for (prop in batch.headers) { var value = batch.headers[prop]; if (typeof value == "string") batch.req.setRequestHeader(prop, value); } if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain"); } catch (ex) { dwr.engine._handleWarning(batch, ex); } batch.req.send(request.body); if (!batch.async) dwr.engine._stateChange(batch); } catch (ex) { dwr.engine._handleError(batch, ex); } } else if (batch.rpcType != dwr.engine.ScriptTag) { var idname = batch.isPoll ? "dwr-if-poll-" + batch.map.batchId : "dwr-if-" + batch.map.batchId; // Removed htmlfile implementation. Don't expect it to return before v3 batch.div = document.createElement("div"); // Add the div to the document first, otherwise IE 6 will ignore onload handler. document.body.appendChild(batch.div); batch.div.innerHTML = "<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='" + idname + "' name='" + idname + "' onload='dwr.engine._iframeLoadingComplete (" + batch.map.batchId + ");'></iframe>"; batch.document = document; batch.iframe = batch.document.getElementById(idname); batch.iframe.batch = batch; batch.mode = batch.isPoll ? dwr.engine._ModeHtmlPoll : dwr.engine._ModeHtmlCall; if (batch.isPoll) dwr.engine._outstandingIFrames.push(batch.iframe); request = dwr.engine._constructRequest(batch); if (batch.httpMethod == "GET") { batch.iframe.setAttribute("src", request.url); } else { batch.form = batch.document.createElement("form"); batch.form.setAttribute("id", "dwr-form"); batch.form.setAttribute("action", request.url); batch.form.setAttribute("style", "display:none;"); batch.form.setAttribute("target", idname); batch.form.target = idname; batch.form.setAttribute("method", batch.httpMethod); for (prop in batch.map) { var value = batch.map[prop]; if (typeof value != "function") { var formInput = batch.document.createElement("input"); formInput.setAttribute("type", "hidden"); formInput.setAttribute("name", prop); formInput.setAttribute("value", value); batch.form.appendChild(formInput); } } batch.document.body.appendChild(batch.form); batch.form.submit(); } } else { batch.httpMethod = "GET"; // There's no such thing as ScriptTag using POST batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); batch.script = document.createElement("script"); batch.script.id = "dwr-st-" + batch.map["c0-id"]; batch.script.src = request.url; document.body.appendChild(batch.script); } }; dwr.engine._ModePlainCall = "/call/plaincall/"; dwr.engine._ModeHtmlCall = "/call/htmlcall/"; dwr.engine._ModePlainPoll = "/call/plainpoll/"; dwr.engine._ModeHtmlPoll = "/call/htmlpoll/"; /** @private Work out what the URL should look like */ dwr.engine._constructRequest = function(batch) { // A quick string to help people that use web log analysers var request = { url:batch.path + batch.mode, body:null }; if (batch.isPoll == true) { request.url += "ReverseAjax.dwr"; } else if (batch.map.callCount == 1) { request.url += batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr"; } else { request.url += "Multiple." + batch.map.callCount + ".dwr"; } // Play nice with url re-writing var sessionMatch = location.href.match(/jsessionid=([^?]+)/); if (sessionMatch != null) { request.url += ";jsessionid=" + sessionMatch[1]; } var prop; if (batch.httpMethod == "GET") { // Some browsers (Opera/Safari2) seem to fail to convert the callCount value // to a string in the loop below so we do it manually here. batch.map.callCount = "" + batch.map.callCount; request.url += "?"; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.url += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&"; } } request.url = request.url.substring(0, request.url.length - 1); } else { // PERFORMANCE: for iframe mode this is thrown away. request.body = ""; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = []; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { buf.push(prop + "=" + batch.map[prop] + dwr.engine._postSeperator); } } request.body = buf.join(""); } else { // Use string concat on other browsers (fastest) for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.body += prop + "=" + batch.map[prop] + dwr.engine._postSeperator; } } } request.body = dwr.engine._contentRewriteHandler(request.body); } request.url = dwr.engine._urlRewriteHandler(request.url); return request; }; /** @private Called by XMLHttpRequest to indicate that something has happened */ dwr.engine._stateChange = function(batch) { var toEval; if (batch.completed) { dwr.engine._debug("Error: _stateChange() with batch.completed"); return; } var req = batch.req; try { if (req.readyState != 4) return; } catch (ex) { dwr.engine._handleWarning(batch, ex); // It's broken - clear up and forget this call dwr.engine._clearUp(batch); return; } if (dwr.engine._unloading) { dwr.engine._debug("Ignoring reply from server as page is unloading."); return; } try { var reply = req.responseText; reply = dwr.engine._replyRewriteHandler(reply); var status = req.status; // causes Mozilla to except on page moves if (reply == null || reply == "") { dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data received from server" }); } else if (status != 200) { dwr.engine._handleError(batch, { name:"dwr.engine.http." + status, message:req.statusText }); } else { var contentType = req.getResponseHeader("Content-Type"); if (!contentType.match(/^text\/plain/) && !contentType.match(/^text\/javascript/)) { if (contentType.match(/^text\/html/) && typeof batch.textHtmlHandler == "function") { batch.textHtmlHandler({ status:status, responseText:reply, contentType:contentType }); } else { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidMimeType", message:"Invalid content type: '" + contentType + "'" }); } } else { // Comet replies might have already partially executed if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._processCometResponse(reply, batch); } else { if (reply.search("//#DWR") == -1) { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" }); } else { toEval = reply; } } } } } catch (ex) { dwr.engine._handleWarning(batch, ex); } dwr.engine._callPostHooks(batch); // Outside of the try/catch so errors propogate normally: dwr.engine._receivedBatch = batch; if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, ""); dwr.engine._eval(toEval); dwr.engine._receivedBatch = null; dwr.engine._validateBatch(batch); if (!batch.completed) dwr.engine._clearUp(batch); }; /** * @private This function is invoked when a batch reply is received. * It checks that there is a response for every call in the batch. Otherwise, * an error will be signaled (a call without a response indicates that the * server failed to send complete batch response). */ dwr.engine._validateBatch = function(batch) { // If some call left unreplied, report an error. if (!batch.completed) { for (var i = 0; i < batch.map.callCount; i++) { if (batch.handlers[i] != null) { dwr.engine._handleWarning(batch, { name:"dwr.engine.incompleteReply", message:"Incomplete reply from server" }); break; } } } } /** @private Called from iframe onload, check batch using batch-id */ dwr.engine._iframeLoadingComplete = function(batchId) { // dwr.engine._checkCometPoll(); var batch = dwr.engine._batches[batchId]; if (batch) dwr.engine._validateBatch(batch); } /** @private Called by the server: Execute a callback */ dwr.engine._remoteHandleCallback = function(batchId, callId, reply) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true); return; } // Error handlers inside here indicate an error that is nothing to do // with DWR so we handle them differently. try { var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (!handlers) { dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true); } else if (typeof handlers.callback == "function") handlers.callback(reply); } catch (ex) { dwr.engine._handleError(batch, ex); } }; /** @private Called by the server: Handle an exception for a call */ dwr.engine._remoteHandleException = function(batchId, callId, ex) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; } var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; } if (ex.message == undefined) ex.message = ""; if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex); else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); }; /** @private Called by the server: The whole batch is broken */ dwr.engine._remoteHandleBatchException = function(ex, batchId) { var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: Reverse ajax should not be used */ dwr.engine._remotePollCometDisabled = function(ex, batchId) { dwr.engine.setActiveReverseAjax(false); var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: An IFrame reply is about to start */ dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) { if (iframe != null) dwr.engine._receivedBatch = iframe.batch; dwr.engine._callPostHooks(dwr.engine._receivedBatch); }; /** @private Called by the server: An IFrame reply is just completing */ dwr.engine._remoteEndIFrameResponse = function(batchId) { dwr.engine._clearUp(dwr.engine._receivedBatch); dwr.engine._receivedBatch = null; }; /** @private This is a hack to make the context be this window */ dwr.engine._eval = function(script) { if (script == null) return null; if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; } // dwr.engine._debug("Exec: [" + script + "]", true); return eval(script); }; /** @private Called as a result of a request timeout */ dwr.engine._abortRequest = function(batch) { if (batch && !batch.completed) { dwr.engine._clearUp(batch); if (batch.req) batch.req.abort(); dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" }); } }; /** @private call all the post hooks for a batch */ dwr.engine._callPostHooks = function(batch) { if (batch.postHooks) { for (var i = 0; i < batch.postHooks.length; i++) { batch.postHooks[i](); } batch.postHooks = null; } }; /** @private A call has finished by whatever means and we need to shut it all down. */ dwr.engine._clearUp = function(batch) { if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; } if (batch.completed) { dwr.engine._debug("Warning: Double complete", true); return; } // IFrame tidyup if (batch.div) batch.div.parentNode.removeChild(batch.div); if (batch.iframe) { // If this is a poll frame then stop comet polling for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { if (dwr.engine._outstandingIFrames[i] == batch.iframe) { dwr.engine._outstandingIFrames.splice(i, 1); } } batch.iframe.parentNode.removeChild(batch.iframe); } if (batch.form) batch.form.parentNode.removeChild(batch.form); // XHR tidyup: avoid IE handles increase if (batch.req) { // If this is a poll frame then stop comet polling if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null; delete batch.req; } // Timeout tidyup if (batch.timeoutId) { clearTimeout(batch.timeoutId); delete batch.timeoutId; } if (batch.map && (batch.map.batchId || batch.map.batchId == 0)) { delete dwr.engine._batches[batch.map.batchId]; dwr.engine._batchesLength--; } batch.completed = true; // If there is anything on the queue waiting to go out, then send it. // We don't need to check for ordered mode, here because when ordered mode // gets turned off, we still process *waiting* batches in an ordered way. if (dwr.engine._batchQueue.length != 0) { var sendbatch = dwr.engine._batchQueue.shift(); dwr.engine._sendData(sendbatch); } }; /** @private Abort any XHRs in progress at page unload (solves zombie socket problems in IE). */ dwr.engine._unloader = function() { dwr.engine._unloading = true; // Empty queue of waiting ordered requests dwr.engine._batchQueue.length = 0; // Abort any ongoing XHRs and clear their batches for (var batchId in dwr.engine._batches) { var batch = dwr.engine._batches[batchId]; // Only process objects that look like batches (avoid prototype additions!) if (batch && batch.map) { if (batch.req) { batch.req.abort(); } dwr.engine._clearUp(batch); } } }; // Now register the unload handler if (window.addEventListener) window.addEventListener('unload', dwr.engine._unloader, false); else if (window.attachEvent) window.attachEvent('onunload', dwr.engine._unloader); /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleError = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleWarning = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex); else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** * @private Marshall a data item * @param batch A map of variables to how they have been marshalled * @param referto An array of already marshalled variables to prevent recurrsion * @param data The data to be marshalled * @param name The name of the data being marshalled */ dwr.engine._serializeAll = function(batch, referto, data, name) { if (data == null) { batch.map[name] = "null:null"; return; } switch (typeof data) { case "boolean": batch.map[name] = "boolean:" + data; break; case "number": batch.map[name] = "number:" + data; break; case "string": batch.map[name] = "string:" + encodeURIComponent(data); break; case "object": if (data instanceof String) batch.map[name] = "String:" + encodeURIComponent(data); else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data; else if (data instanceof Number) batch.map[name] = "Number:" + data; else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime(); else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name); else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name); break; case "function": // We just ignore functions. break; default: dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." }); batch.map[name] = "default:" + data; break; } }; /** @private Have we already converted this object? */ dwr.engine._lookup = function(referto, data, name) { var lookup; // Can't use a map: getahead.org/ajax/javascript-gotchas for (var i = 0; i < referto.length; i++) { if (referto[i].data == data) { lookup = referto[i]; break; } } if (lookup) return "reference:" + lookup.name; referto.push({ data:data, name:name }); return null; }; /** @private Marshall an object */ dwr.engine._serializeObject = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; // This check for an HTML is not complete, but is there a better way? // Maybe we should add: data.hasChildNodes typeof "function" == true if (data.nodeName && data.nodeType) { return dwr.engine._serializeXml(batch, referto, data, name); } // treat objects as an associative arrays var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{"; var element; for (element in data) { if (typeof data[element] != "function") { batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[element], childName); reply += encodeURIComponent(element) + ":reference:" + childName + ", "; } } if (reply.substring(reply.length - 2) == ", ") { reply = reply.substring(0, reply.length - 2); } reply += "}"; return reply; }; /** @private Returns the classname of supplied argument obj */ dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError }; dwr.engine._getObjectClassName = function(obj) { // Try to find the classname by stringifying the object's constructor // and extract <class> from "function <class>". if (obj && obj.constructor && obj.constructor.toString) { var str = obj.constructor.toString(); var regexpmatch = str.match(/function\s+(\w+)/); if (regexpmatch && regexpmatch.length == 2) { return regexpmatch[1]; } } // Now manually test against the core Error classes, as these in some // browsers successfully match to the wrong class in the // Object.toString() test we will do later if (obj && obj.constructor) { for (var errorname in dwr.engine._errorClasses) { if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname; } } // Try to find the classname by calling Object.toString() on the object // and extracting <class> from "[object <class>]" if (obj) { var str = Object.prototype.toString.call(obj); var regexpmatch = str.match(/\[object\s+(\w+)/); if (regexpmatch && regexpmatch.length==2) { return regexpmatch[1]; } } // Supplied argument was probably not an object, but what is better? return "Object"; }; /** @private Marshall an object */ dwr.engine._serializeXml = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; var output; if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data); else if (data.toXml) output = data.toXml; else output = data.innerHTML; return "XML:" + encodeURIComponent(output); }; /** @private Marshall an array */ dwr.engine._serializeArray = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = ["Array:["]; for (var i = 0; i < data.length; i++) { if (i != 0) buf.push(","); batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); buf.push("reference:"); buf.push(childName); } buf.push("]"); reply = buf.join(""); } else { // Use string concat on other browsers (fastest) var reply = "Array:["; for (var i = 0; i < data.length; i++) { if (i != 0) reply += ","; batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); reply += "reference:"; reply += childName; } reply += "]"; } return reply; }; /** @private Convert an XML string into a DOM object. */ dwr.engine._unserializeDocument = function(xml) { var dom; if (window.DOMParser) { var parser = new DOMParser(); dom = parser.parseFromString(xml, "text/xml"); if (!dom.documentElement || dom.documentElement.tagName == "parsererror") { var message = dom.documentElement.firstChild.data; message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data; throw message; } return dom; } else if (window.ActiveXObject) { dom = dwr.engine._newActiveXObject(dwr.engine._DOMDocument); dom.loadXML(xml); // What happens on parse fail with IE? return dom; } else { var div = document.createElement("div"); div.innerHTML = xml; return div; } }; /** @param axarray An array of strings to attempt to create ActiveX objects from */ dwr.engine._newActiveXObject = function(axarray) { var returnValue; for (var i = 0; i < axarray.length; i++) { try { returnValue = new ActiveXObject(axarray[i]); break; } catch (ex) { /* ignore */ } } return returnValue; }; /** @private Used internally when some message needs to get to the programmer */ dwr.engine._debug = function(message, stacktrace) { var written = false; try { if (window.console) { if (stacktrace && window.console.trace) window.console.trace(); window.console.log(message); written = true; } else if (window.opera && window.opera.postError) { window.opera.postError(message); written = true; } } catch (ex) { /* ignore */ } if (!written) { var debug = document.getElementById("dwr-debug"); if (debug) { var contents = message + "<br/>" + debug.innerHTML; if (contents.length > 2048) contents = contents.substring(0, 2048); debug.innerHTML = contents; } } };

// Provide a default path to dwr.engine if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; if (UserDataDWRFacade == null) var UserDataDWRFacade = {}; UserDataDWRFacade._path = '/webapps/assessment/dwr_open'; UserDataDWRFacade.getStringTempScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringTempScope', p0, callback); } UserDataDWRFacade.setStringTempScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringTempScope', p0, p1, callback); } UserDataDWRFacade.getStringPermScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringPermScope', p0, callback); } UserDataDWRFacade.setStringPermScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringPermScope', p0, p1, callback); }

var assessment = {}; assessment.submitDrawerUrl=""; assessment.questionVisibility = true; assessment.blockToLeaveVisible = 'null'; assessment.savingRightNow = false; // aka - might rename to (if not remove eventually): assessment.nonceHasBeenUsed assessment.submittingRightNow = false; // set to true when we're submitting the assessment as a whole - used to block other submits assessment.gotNewNonceIdFlag = false; assessment.userReallyWantsToSubmit = false; assessment.isInUse = false; assessment.safetyNetDelay = 60; // Number of seconds to wait before telling the user that it is taking too long. assessment.alreadySavedSafetyNetId = null; assessment.saveSequence = 0; // TODO: Set from the server based on time when page is loaded assessment.isOneByOne = false; /************************** methods related to pool and test canvas per question add/edit/ copy/ remove********************/ function findAssessmentForm() { var assessmentForm = null; var documentForms = document.getElementsByTagName('form'); assessmentForm = $A( documentForms ).find( function( documentForm ) { var theAction = $( documentForm ).readAttribute( "action" ); return theAction.indexOf( "webapps/assessment/" ) != -1; }); return assessmentForm; } function submit(method, theForm) { if (!validateForm()) { return false; } if ( !theForm ) { // no form specified so try to find it theForm = findAssessmentForm(); } if(method == "createNew") { theForm.elements.assessmentId.value = null; } theForm.elements.method.value = method; theForm.submit(); return false; } function getFormByInputElement( elementName ) { var element = document.getElementsByName( elementName )[0]; return element.form; } // TODO: Rewrite this file to put all these methods into a namespace like assessment.XXX function modifyAssessment() { submit('modifyAssessment'); } function setQuestionId(questionId) { getFormByInputElement("questionId").questionId.value = questionId; } function modifyContentSettings( val ) { // properties|feedback|presentation|metadata submit( val ); } function addQuestionBefore(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated var theForm = getFormByInputElement("relativeId"); assessment.checkTheCheckBox (qId); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionBefore', theForm); } function addQuestionAfter(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (qId); var theForm = getFormByInputElement("relativeId"); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionAfter', theForm); } function addNGQuestion(sectionId, qtype, position) { var theForm = getFormByInputElement("questionType"); theForm.questionType.value = qtype; theForm.sectionId.value = sectionId; theForm.position.value = position; submit('addQuestion', theForm); } function modifyAssessmentInfo() { submit('modifyAssessmentInfo'); } function modifyHelper(questionId, method) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); setQuestionId(questionId); submit(method, theForm); } function modifyQuestion(questionId) { modifyHelper(questionId, 'modifyQuestion'); } function modifyRandomBlock(questionId) { modifyHelper(questionId, 'modifyRandomBlock'); } function modifyLinkQuestion(questionId) { getFormByInputElement("isLinkedQuestion").isLinkedQuestion.value = 'true'; modifyQuestion(questionId); } function copyQuestion(sectionId, questionId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("sectionId"); theForm.sectionId.value = sectionId; setQuestionId(questionId); submit('copyQuestion', theForm); } function copyLinkQuestion(sectionId, questionId, qbId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); theForm.sectionId.value = sectionId; theForm.questionBlockId.value = qbId; setQuestionId(questionId); submit('copyLinkQuestion', theForm); } function remove(id, type ) { if ( assessment.isInUse ) { var suffix = ( assessment.type == 'Survey'?'.survey':''); if ( !type ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_question.regrade" + suffix ) ); } else if ( type == 'question_link' ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.remove_question_link.regrade" + suffix ) ); } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_item.regrade" + suffix ) ); } } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString("confirm.delete_item")); } } assessment.removeEntity= function(id, message) { if (window.confirm(message)) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (id); var theForm = getFormByInputElement("questionId"); setQuestionId(id); submit('remove', theForm); } }; function reposition(id, position) { setQuestionId(id); var theForm = getFormByInputElement("questionId"); theForm.position.value = position; submit('reposition', theForm); } assessment.submitModifyQuestion = function() { submit('modifyQuestion'); }; assessment.cancelWarning = function() { var theForm = getFormByInputElement("methodEx"); theForm.elements.methodEx.value = 'modifyAssessment'; theForm.submit(); return false; }; function isCheckbox(element) { return (element && element.type && element.type == "checkbox"); } /******************* methods related to bulk update logic on the test/pool canvas*********************/ assessment.removeAll= function(container,showCount) { var count = 0; var inputs = list.checkboxes.get(container); for(var i=0; i<inputs.length; i++){ if(isCheckbox(inputs[i]) && inputs[i].checked ) { count ++; } } if (showCount?window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count",[count])):window.confirm(ASSESSMENT_RESOURCES.getString("confirm.delete_items")) ) { submit('removeBulk'); } }; assessment.removeAllPublished= function(message) { if (window.confirm(message)) { submit('removeBulk'); } }; assessment.updatePointsForAll = function(){ var element = document.getElementsByName("points_bulk"); if ( assessment.validatePoints(element) && ( !assessment.isInUse || confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) ) { submit('updatePointsBulk'); } return false; }; assessment.updatePointsInput = function(event) { var elements = document.getElementsByName("points_bulk"); var element = Event.findElement(event); var pointsValue = element.value; if (pointsValue ) { if (elements) { elements[0].value = pointsValue; elements[1].value = pointsValue; } } }; /*************************** common js methods for assessments**********************************************/ /** validate Input Field value **/ assessment.validateMiniFlyoutInputValue = function(element){ var value = null; if($(element) ) { value = $(element).value; } if ( !value ) { return ASSESSMENT_RESOURCES.getString("update.input.value"); } if ( !isNumeric( value, true ) ) { return ASSESSMENT_RESOURCES.getString("update.input.valid.value"); } return ""; }; assessment.validatePoints = function(element){ if (element) { var pointsTextBox = element[0] || element[1]; var pointsValue = pointsTextBox.value; return assessment.validateNumericInput(pointsTextBox, pointsValue, ASSESSMENT_RESOURCES.getString("update.points.value"), ASSESSMENT_RESOURCES.getString("update.points.valid.value"),true); } return true; }; assessment.validateCount = function(element) { if (element) { var countValue = element.value; return assessment.validateNumericInput(element, countValue, ASSESSMENT_RESOURCES.getString("update.count.value"), ASSESSMENT_RESOURCES.getString("update.count.valid.value")); } return true; }; assessment.validateNumericInput = function(textBox, value, blankMsg, badMsg,isFloat) { var checkForFloats = false; var numFormat = LOCALE_SETTINGS.getString('float.format'); var isValidNum = false; var re, trimmedVal; trimmedVal = value.trim(); if(isFloat != 'null') { checkForFloats = true; } if ( !value ) { alert(blankMsg); textBox.focus(); return false; } var numVal = null; if (!checkForFloats) { numVal = parseInt( value, 10); isValidNum = (!isNaN(numVal) && numVal >= 0); } else if ( typeof ( numFormat ) != 'undefined' ) { // hand parse for l10n re = new RegExp( numFormat ); isValidNum = ( trimmedVal.search( re ) === 0 ); } else { // try to use platform native (non-localized) numVal = parseFloat( trimmedVal ); isValidNum = !isNaN( numVal ); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test( trimmedVal.substring( numVal.toString().length ) ); } } if (!isValidNum) { alert(badMsg); textBox.value=""; textBox.focus(); return false; } return true; }; function back() { submit('back'); } function persistDisplayPreference(element, value){ UserDataDWRFacade.setStringTempScope( element, value ); } assessment.refreshParent = function( url ) { if ( window.opener ) { window.opener.location.href = url; if ( window.opener.progressWindow ) { window.opener.progressWindow.close(); } window.close(); } else { // We expected to be in a new window, but aren't. Perhaps this was a link from an announcement? window.location = url; } }; assessment.checkTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = true; } }; assessment.unCheckTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = false; } }; var startX; //set x offset of bar in pixels var startY; var padding = 53; var verticalpos="fromtop"; //enter "fromtop" or "frombottom" function setPadding(pad) { padding = pad; } function iecompattest(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body; } function resetInstructionHeight() { startY = document.getElementById("instructionBlock").offsetTop +document.getElementById("instructionBlock").clientHeight + padding; startX = document.getElementById("instructionBlock").offsetLeft; document.getElementById("dataCollectionContainer").style.position = "relative"; var tbh = document.getElementById("topbar").clientHeight; document.getElementById("containerdiv").style.paddingBottom = (32 + tbh) + "px"; if (document.getElementById("topbar").offsetTop !== 0) { document.getElementById("dataCollectionContainer").style.top=tbh+"px"; } } function staticbar(){ var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera; var d = document; function ml(id){ var el=d.getElementById(id); el.style.visibility="visible"; if(d.layers) { el.style=el; } el.sP=function(x,y,r) { this.style.left=x+"px"; this.style.top=y+6+"px"; if(r>-1) {this.style.right=r+"px";}; }; el.x = startX; el.y = startY; return el; } window.stayTopLeft = function() { var right = -1; var pY = ns ? window.pageYOffset : iecompattest().scrollTop; if (pY < startY) { window.ftlObj.y = startY - pY; document.getElementById("dataCollectionContainer").style.top=document.getElementById("topbar").clientHeight+4+"px"; } else { window.ftlObj.y = 0; } window.ftlObj.x = document.getElementById("instructionBlock").offsetLeft; if(page.util.isRTL()) { right = document.documentElement.clientWidth - (ftlObj.x + document.getElementById("instructionBlock").offsetWidth); } window.ftlObj.sP( window.ftlObj.x, window.ftlObj.y, right); setTimeout("stayTopLeft()", 20); }; resetInstructionHeight(); window.ftlObj = ml("topbar"); window.stayTopLeft(); } var AIM = { frame : function(c) { var n = 'f' + Math.floor(Math.random() * 99999); var d = document.createElement('DIV'); d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>'; document.body.appendChild(d); var i = document.getElementById(n); if (c && typeof(c.onComplete) == 'function') { i.onComplete = c.onComplete; } return n; }, form : function(f, name) { f.setAttribute('target', name); }, submit : function(f, c) { AIM.form(f, AIM.frame(c)); if (c && typeof(c.onStart) == 'function') { return c.onStart(); } else { return true; } }, loaded : function(id) { var i = document.getElementById(id); var d; if (i.contentDocument) { d = i.contentDocument; } else if (i.contentWindow) { d = i.contentWindow.document; } else { d = window.frames[id].document; } if (d.location.href == "about:blank") { return; } if (typeof(i.onComplete) == 'function') { i.onComplete(d.body.innerHTML); } } }; function resetContaindivHeight() { // adjust containdiv height // TODO: I don't see a reason for any of this code anymore... //if (document.getElementById('statusBlock').style.display=="" || document.getElementById('statusBlock').style.display=="inline") { // var statusHeight = document.getElementById('topbar').offsetHeight-22; // 22 is padding - be better to dynamically determine this value. //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight+statusHeight; //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} } function hideElement(element) { var msgspan=element; var msgimg=element+"img"; // TODO: I don't see a reason for any of this code anymore... //if (msgspan=="statusBlock") { // var statusHeight = document.getElementById('topbar').offsetHeight; //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight-statusHeight-22; // 22 is padding - be better to dynamically determine this value. //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} document.getElementById(msgspan).style.display="none"; document.images[msgimg].src="/images/ci/ng/more_options_dark.gif"; var alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; } function showElement(element) { var msgspan=element; var msgimg=element+"img"; document.getElementById(msgspan).style.display="inline"; document.images[msgimg].src="/images/ci/ng/less_options.gif"; var alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; if (msgspan=="statusBlock") { resetContaindivHeight(); } } function toggleElement(element){ var curStyle = document.getElementById(element).style.display; if(curStyle=="" || curStyle=="inline") { hideElement(element); persistDisplayPreference(element,'none'); } else { showElement(element); persistDisplayPreference(element,'inline'); } resetInstructionHeight(); } /********************************************* methods related to lightbox preview in pool/test canvas********************/ assessment.previewLightbox = null; assessment.copyLinkLightbox = null; assessment.showLightBox = function (event,baseContainer,numparents,previewUrl) { var e = event || window.event; // IE does not capture the event if( e && e.type == 'click') { Event.stop(e); } if ( !assessment.previewLightbox ) { assessment.previewLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 500 ,h : 375}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 125, horizontalBorder: 125 }); } assessment.previewLightbox.cfg.ajax={url:previewUrl, loadExternalScripts:true}; assessment.previewLightbox.cfg.content=null; assessment.previewLightbox.open(); }; assessment.showCopyLinkLightBox = function ( url) { var params = url.toQueryParams(); if ( !assessment.copyLinkLightbox ) { assessment.copyLinkLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 150 ,h : 200}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 50, horizontalBorder: 50 }); } assessment.copyLinkLightbox.cfg.ajax={url:'/webapps/assessment/do/authoring/questionSearch?method=copyLink&discoverUrl=' + encodeURIComponent(url) + '&course_id=' + params.course_id }; assessment.copyLinkLightbox.cfg.content=null; assessment.copyLinkLightbox.cfg.closeOnBodyClick=false; assessment.copyLinkLightbox.open(); }; assessment.showDiscover = function(url,title,width,height) { assessment.submitDrawerUrl = url; var screenX=Math.floor((screen.width)/2)-Math.floor(width/2); var screenY=Math.floor((screen.height)/2)-Math.floor(height/2)-20; var top=screenY; var left=screenX; var features="'"+'toolbar=no,scrollbars=yes,status=yes,resizable=yes,top='+ top+',left='+ left+',screenX='+ screenX+',screenY='+ screenY+',width='+ width+',height='+ height+"'"; var discover = window.open(url,title,features); if (window.focus) { if (discover) { discover.focus(); } else { alert(ASSESSMENT_RESOURCES.getString("pop.up.blocker.enabled")); } } }; assessment.discoverOptions = function(url,title,width,height,hideCopyLink){ if(!hideCopyLink) { //check if the UserPreference is set in session UserDataDWRFacade.getStringPermScope( "AssessmentUtils.DISCOVER_MODE_IS_LINKING", function( copyLinkSet ) { if (copyLinkSet == '') { assessment.showCopyLinkLightBox(url); } else{ assessment.showDiscover(url,title,width,height); } }); } else{ assessment.showDiscover(url,title,width,height); } }; assessment.onCloseCopyLinkLightbox = function ( url ) { var copyLinkId = $('copylink_link'); var copyCopyId = $('copylink_copy'); var copyLinkValueSet = false; if(copyLinkId && copyCopyId ) { copyLinkValueSet = copyLinkId.checked || copyCopyId.checked; } if ( !copyLinkValueSet ) { if (window.confirm(ASSESSMENT_RESOURCES.getString("confirm.set_copy_link"))) { assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } } else{ assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } }; /**************************** methods related to question block on the test canvas*************************************/ assessment.createQuestionBlock = function() { }; function addQuestionToBlock(questionId, assessmentType, assessmentId, courseId ) { var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=addQuestionsToQuestionBlock" + "&questionId=" +questionId + "&assessmentType=" +assessmentType + "&assessmentId=" +assessmentId + "&course_id=" +courseId; assessment.discoverOptions(url,'discover','900','675',true); } /********************** methods related to inline pool points flyout***************************/ assessment.poolFlyout = null; assessment.initPoolFlyout = function(title) { if ( !assessment.poolFlyout ) { assessment.poolFlyout = new miniFlyout.MiniFlyout({ title: title, miniFlyoutTemplate: "<label class='hideoff' for='#{inputFieldName}_id'>#{title}</label> <input id='#{inputFieldName}_id'type='text' style='width: 2em;' size='3' value='0' name='#{inputFieldName}'/> <a href='#' title='#{closeButtonName}' bb_flyout_title='Cancel' class='genericButtonImg button-3-img'><img alt='#{closeButtonName}' src='/images/ci/ng/remove_li.png'/></a> <a href='#' title='#{submitButtonName}' bb_flyout_title='Submit' class='genericButtonImg button-3-img'><img alt='#{submitButtonName}' src='/images/ci/ng/checkmark_li.png'/></a>", inputFieldName: "inline_points", errorMessage: page.bundle.getString("points.failure"), miniFlyoutDivClass: "liveArea liveArea-slim", onSubmitValidate : "return assessment.validateMiniFlyoutInputValue('inline_points_id')" }); } miniFlyout.closeCurrentMiniFlyout(); }; assessment.showPoolFlyout = function (event,title,assessmentId,id, courseId) { var e = event || window.event; // IE does not capture the event var aLink = Event.element(e); if( e && e.type == 'click') { Event.stop(e); } assessment.initPoolFlyout(title); assessment.poolFlyout.cfg.openLink = aLink ; assessment.poolFlyout.cfg.containerId = aLink.parentNode.parentNode; assessment.poolFlyout.cfg.inputFieldDefaultSource = "ipoints_" + id; assessment.poolFlyout.cfg.inputFieldName= "inline_points"; assessment.poolFlyout.cfg.onSubmit = "return assessment.saveQuestionPoints('" + assessmentId + "','" + id + "','" + courseId + "',false, false, assessment.poolFlyout.cfg.containerId);"; assessment.poolFlyout.open(); }; /*************************************************** methods related to test canvas selection by type*******************/ assessment.selectByType = function(container) { var selected = document.getElementsByName('selectbyQuestionType')[0];// either use 0 or 1, since both are updated to the same var checkboxes = list.checkboxes.get(container); for ( var i=0; i < checkboxes.length; ++i ) { checkboxes[ i ].checked = false; } var className = selected.options[selected.selectedIndex].value; checkboxes.each( function(e){ if(e.className.trim() ==className.trim()) { e.checked=true; } } ); $('selectbyQuestionType_idTop').options[selected.selectedIndex].selected=true; $('selectbyQuestionType_idBot').options[selected.selectedIndex].selected=true; }; assessment.toggleQuestionBlockDiv = function(rawId){ var ul = $('questionBlockDiv'+rawId); var a = $('questionBlockDivLink'+rawId).getElementsByTagName('a')[0]; Effect.toggle(ul, 'blind', { duration: 0.3 }); if(ul.style.display=="none"){ a.className="itemHead itemHeadOpen"; } else if(ul.style.display=="block" || ul.style.display==""){ a.className="itemHead"; } return false; }; /************************** methods related to discover drawer functionality********************************************/ assessment.inBasicDiscoverMode = function () { if (document.copyQuestionsForm.method.value == 'save') { return true; } return false; }; assessment.cancelDrawer = function() { var myDrawer = drawer.model.getCurrentInstance(); myDrawer.discard(); document.copyQuestionsForm.elements.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener ) { //close question discovery popup window.close(); } return false; }; assessment.cancelRandomBlock = function () { document.copyQuestionsForm.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener !== null) { //close question discovery popup window.close(); } return false; }; function findAndDisableInputElements(el) { if (el === null) { return; } var elems = el.getElementsByTagName('input'); for ( var i = 0; i < elems.length; i++ ) { el.addClassName('disabled'); el.disabled = true; } } /****************** Ajax method related to Test/pool canvas***************************************************/ function postAndUpdateCanvas(form) { var method = form.method.value; var assessmentId = form.assessmentId.value; var courseId = form.course_id.value; var nonceId = nonceUtil.getNonceId('bb-question-discover'); var questionId = ""; if (form.questionId ) { questionId = form.questionId.value; } var url = "/webapps/assessment/do/authoring/copyQuestions?method=" +method + "&assessmentId="+assessmentId + "&course_id=" + courseId + "&sectionId=" + form.sectionId.value + "&assessmentType=" +form.assessmentType.value + "&itemIds=" +form.itemIds.value + "&overridePoints=" +form.overridePoints.value + "&questionId=" +questionId + "&ajaxMode=true" + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (form.searchCriterion !== null) { url = url + "&searchCriterion=" + encodeURIComponent(form.searchCriterion.value); } findAndDisableInputElements( $('cartSubmit') ); var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { window.opener.location="/webapps/assessment/do/authoring/modifyAssessment?method=modifyAssessment&assessmentId="+assessmentId+"&course_id="+courseId; if (json !== null) { // capture any error message and display if (json.errorMessage ) { // exception message looks ugly for the end-user, hence use a more user-friendly message to indicate the ajax refresh failed new page.InlineConfirmation("error", json.errorMessage, false ); } else if (json.successMessage ) { // WIP // var startingEl = window.parent.document.getElementById('blockstart_' + questionId); // new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false ); } } setTimeout('window.close()', 1500); }, onFailure: function(transport, json) { new page.InlineConfirmation("error", "Failure post discover pop-up", false ); } }); } assessment.submitRandomBlock = function () { if ($('listContainer_datatable')) { var searchCriterion = activeFilter.getSearchCriteriaInstance(false).getSearchCriteriaAsXml(); document.copyQuestionsForm.searchCriterion.value = searchCriterion; if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } } else { alert(ASSESSMENT_RESOURCES.getString("cannot.submit.with.no.matching.questions")); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.submitDrawer = function () { var myDrawer = drawer.model.getCurrentInstance(); var selectedItems = myDrawer.getItems(true); var i; var allIds = ""; for (i=0;i<selectedItems.length;i++) { var qId = selectedItems[i].itemId; var mode = selectedItems[i].mode; allIds += qId + ":" + mode + ","; } document.copyQuestionsForm.itemIds.value = allIds; myDrawer.discard(); if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.OnCompleteUpdateCanvas = function(questionId, req, showNestedReceipt) { var json = req.responseText.evalJSON( true ); var pointsEl = $s('ipoints_' + questionId); var totalQuestionsCountEl = $s('totalNoQuestions' + questionId); var currentQuestionCountEl = $s('questionCount' + questionId); var totalBlockPointsEl = $s('totalPoints_' + questionId); var totalTestPointsEl =$s('totalTestPoints'); var totalQuestionsEl = $s('totalQuestions'); var startingEl = $s('blockstart_' + questionId); if( !json.errorMessage && pointsEl && json.points ) { // update per question points pointsEl.childNodes[0].nodeValue = json.points; } if( !json.errorMessage && totalQuestionsCountEl && json.totalQuestionsCount ) { // update per question points totalQuestionsCountEl.childNodes[0].nodeValue = json.totalQuestionsCount; } if( !json.errorMessage && currentQuestionCountEl && json.currentQuestionsCount ) { // update per question points currentQuestionCountEl.childNodes[0].nodeValue = json.currentQuestionsCount; } if( !json.errorMessage && totalBlockPointsEl && json.totalBlockPoints ) { // update the total points totalBlockPointsEl.childNodes[0].nodeValue = json.totalBlockPoints; } if( !json.errorMessage && totalQuestionsEl && json.totalQuestions ) { // update the total questions totalQuestionsEl.innerHTML = json.totalQuestions; } if( !json.errorMessage && totalTestPointsEl && json.totalTestPoints ) { // update total Test points, not for survey or pool totalTestPointsEl.innerHTML = json.totalTestPoints; } if (showNestedReceipt) { if (json.securityErrorMsg ) { new page.NestedInlineConfirmation("error", json.securityErrorMsg, true, startingEl, true); } else if (json.successMessage ) { if (json.successMessage.indexOf('regrading_queued_status')> 0) { // If we are displaying a confirmation including regrading status then DO NOT fade it away - let it stay and get updated. new page.NestedInlineConfirmation("success", json.successMessage, false, startingEl, true); } else { new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false); } } } assessment.result = json.errorMessage; assessment.setQuestionNumbers(); }; assessment.removeQuestionsFromBlock= function(listId, questionBlockId, courseId,assessmentId) { var allcheckBoxes = list.checkboxes.get(listId); var checkedCount = 0; var ids = ""; for (var i = 0; i < allcheckBoxes.length; i++) { var separator = (i == (allcheckBoxes.length - 1)) ? " " : ','; if (allcheckBoxes[i].checked ) { checkedCount ++; ids = ids + allcheckBoxes[i].value + separator; } } if (window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count", [checkedCount]))) { // ajax request var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + questionBlockId); var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=removeQuestionsFromQuestionBlock" + "&block_id=" + questionBlockId + "&course_id=" + courseId + "&assessment_id=" + assessmentId + "&questionIds=" + ids + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; nonceId.value = json.nonceId; inventoryList.ajaxPostOnClick(null, listId); if(json.errorMessage ) { new page.NestedInlineConfirmation("error", json.errorMessage, false, startingEl, false); } }, onSuccess: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); }, onFailure: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); } }); } }; assessment.result = ""; assessment.saveQuestionCount = function(assessmentId, blockId, courseId, forRandomBlock ) { var countEl = document.getElementsByName('question_count')[0]; var originalCountEl = document.getElementById('questionCount' + blockId); var originalCount = originalCountEl.childNodes[0].nodeValue; var newCount = countEl.value; if (newCount == originalCount) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + blockId); var url = "/webapps/assessment/do/authoring/modify"+(forRandomBlock?"Random":"Question")+"Block?method=saveQuestionCount" + "&block_id="+blockId + "&course_id=" + courseId + "&new_count=" + newCount + "&assessment_id=" + assessmentId + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(req) { var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); }, onFailure: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); } }); return assessment.result; }; assessment.updateExtraCredit = function (newExtraCreditValue, questionId) { var extraCreditDiv = $('extra_credit_' + questionId); if (extraCreditDiv) { if (newExtraCreditValue) { extraCreditDiv.removeClassName('hidden'); extraCreditDiv.addClassName('extraCredit'); } else { extraCreditDiv.addClassName('hidden'); extraCreditDiv.removeClassName('extraCredit'); } } }; assessment.updateFullCredit = function (newFullCredit, questionId) { document.getElementById('original_fullCredit_value_' + questionId).value = newFullCredit.toString(); if (newFullCredit) { document.getElementById('full_credit_' + questionId).show(); } else { document.getElementById('full_credit_' + questionId).hide(); } }; // copied or linked question assessment.saveQuestionPoints = function(assessmentId, questionId, courseId, isBlock, isInUse, containerId ) { var pointsToSave = document.getElementsByName('inline_points'); var extraCredit =$s('inline_points_extra_credit_id'); var newExtraCreditValue = false; if(extraCredit) { newExtraCreditValue = extraCredit.checked; } var newPoints = pointsToSave[0].value; var originalPointsEl = document.getElementById('ipoints_' + questionId); var originalExtraCreditValue = false; var originalExtraCreditEl = $('extra_credit_' + questionId); if(originalExtraCreditEl) { originalExtraCreditValue = !originalExtraCreditEl.hasClassName('hidden'); } var originalPoints; if( originalPointsEl.childNodes ) { originalPoints = originalPointsEl.childNodes[0].nodeValue; } var originalFullCredit; var newFullCredit; var fullCreditCheckbox = document.getElementById('inline_points_full_credit_' + questionId); if (fullCreditCheckbox !== null) { newFullCredit = fullCreditCheckbox.checked; originalFullCredit = document.getElementById('original_fullCredit_value_' + questionId).value; } if ( (newPoints == originalPoints ) && ( originalExtraCreditValue == newExtraCreditValue ) && (!fullCreditCheckbox || (originalFullCredit == newFullCredit.toString())) ) { return ""; } if ( isInUse && !confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); if( !extraCredit ) { newExtraCreditValue = ""; } if( !isBlock) { isBlock = false; } else { isBlock = true; } var url = "/webapps/assessment/do/authoring/modifyAssessment?method=updateQuestionPoints" + "&question_id=" + questionId + "&course_id=" + courseId + "&points_value=" + newPoints + "&extra_credit=" + newExtraCreditValue + "&assessment_id=" + assessmentId + "&is_Block=" + isBlock + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (fullCreditCheckbox) { url = url + "&full_credit=" + newFullCredit; } new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req){ var json = req.responseText.evalJSON( true ); var showNestedReceipt = false; if( !containerId ) { showNestedReceipt = true; } assessment.OnCompleteUpdateCanvas(questionId,req,showNestedReceipt); if(extraCredit) { assessment.updateExtraCredit(newExtraCreditValue,questionId); } if (fullCreditCheckbox) { assessment.updateFullCredit(newFullCredit,questionId); } if (!showNestedReceipt) { // show receipt in pool , table cell var status_msg = null; if (json.successMessage != "") { status_msg = $('status_msg_succ'); } var link = containerId.down(1); link.hide(); containerId.appendChild(status_msg); (status_msg).show(); setTimeout( function(){ (status_msg).fade({ duration: 0.5 }); },500); setTimeout( function(){ link.appear({duration:0.5}); },1000); link.focus(); } }, onFailure: function(req){ new page.InlineConfirmation("error", page.bundle.getString("updatePointsFailed"), false); } }); return assessment.result; }; assessment.setDefaultLinkingMode = function(isLinkingMode, courseIdStr) { var courseId = courseIdStr || document.copyQuestionsForm.course_id.value; var url = "/webapps/assessment/do/authoring/questionSearch?method=saveLinkingMode" + "&linkingMode="+isLinkingMode+ "&course_id=" +courseId ; new Ajax.Request(url, { method: 'post', onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { document.body.style.cursor = 'default'; }, onSuccess: function(transport, json) { }, onFailure: function(transport, json) { } }); }; assessment.setDisplayFullText = function(displayFull, listId) { var extras = []; // Note - Constants.DISPLAY_FULL_TEXT = "displayFullText" extras.displayFullText=displayFull; inventoryList.ajaxPostOnClick(null, listId, extras, true); }; assessment.rewriteSectionForScreenReader = function(elementName) { var element = document.getElementById(elementName); element.setAttribute("aria-live", "assertive"); element.setAttribute("aria-relevant", "all"); element.setAttribute("aria-atomic", "true"); element.setAttribute("aria-busy", "true"); var myContents = element.innerHTML; element.innerHTML = myContents; element.setAttribute("aria-busy", "false"); return false; }; assessment.clearQuestionModifiedStatuses = function() { // Called on page load to make sure we don't have any stranded questions-to-monitor kicking around. assessment.questions_to_monitor = []; assessment.questions_to_monitor_index = 0; }; assessment.QMonitor = Class.create(); assessment.QMonitor.prototype = { initialize: function( entity, index) { this.index = index; Event.observe(entity, 'change', this.onChange.bindAsEventListener(this)); }, onChange: function( event) { assessment.questions_to_monitor[this.index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[this.index].qnum); } }; assessment.getSaveButton = function(questionNum) { var myButton = document.getElementById("saveButton_" + questionNum); if (!myButton) { if (assessment.isOneByOne) { if (questionNum == document.forms.saveAttemptForm.current_question.value) { myButton = document.getElementById("saveAnswerSubmitId"); // for one-at-a-time tests } } } return myButton; }; assessment.setModifiedIcon = function(questionNum) { var saveAnswerLabel = page.bundle.getString('takeSaveAnswer'); var myButton = assessment.getSaveButton(questionNum); if (myButton) { myButton.value = saveAnswerLabel; Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); } // TODO - Either rip this out or put in appropriate image, style, and text // NOTE - can't actually enable this until on-the-fly onchange support in the VTBE is done // (as opposed to the current on-unload check for change) // Also - would need to deal with leaving this image on-page in this scenario: // Save Q1 // Modify Q1 // Save Q2 // -- at this point, we update the status icons and lose the modified icon for Q1 /* var mySpan =document.getElementById("span_"+questionNum); var myImg = document.getElementById("img_"+questionNum); mySpan.className = "qIncomplete"; myImg.src = "/images/ci/icons/needs_grading.gif"; // better icon myImg.alt = "TODO: Incomplete"; myImg.height= "10"; myImg.width= "10"; */ }; assessment.addQuestionToMonitor = function(qid,qnum, isFileUploadQuestion) { var questionBlock = $(qid); assessment.questions_to_monitor[assessment.questions_to_monitor_index] = {}; // TODO - is there a more efficient way to do this? $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, assessment.questions_to_monitor_index); }); assessment.questions_to_monitor[assessment.questions_to_monitor_index].qid = qid; assessment.questions_to_monitor[assessment.questions_to_monitor_index].qnum = qnum; // Status: 0 == not changed, 1 = changed, 2 = attempted to be auto-saved since last change assessment.questions_to_monitor[assessment.questions_to_monitor_index].status = 0; assessment.questions_to_monitor[assessment.questions_to_monitor_index].isFileUploadQuestion = isFileUploadQuestion; assessment.questions_to_monitor_index++; }; assessment.remonitorFileUpload = function(qid, qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { if (assessment.questions_to_monitor[i].isFileUploadQuestion) { var questionBlock = $(qid); $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, i); }); } else { return; } } } } }; assessment.questionBeingSaved = -1; assessment.markQuestionAsSaved = function (qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { assessment.questions_to_monitor[i].status = 0; } } } }; assessment.hasUnsavedAnswers = function() { if (assessment.questions_to_monitor_index > 0) { var i = 0; if (typeof(finalizeEditorsAnyChange) == "function") { finalizeEditorsAnyChange(assessment.vtbeChanged); } for(i=0;i<assessment.questions_to_monitor_index;i++) { //alert("Question " + assessment.questions_to_monitor[i].qid + " number " + assessment.questions_to_monitor[i].qnum + " status " + assessment.questions_to_monitor[i].status); if (assessment.questions_to_monitor[i].status >= 1) { return true; } else if (assessment.questions_to_monitor[i].isFileUploadQuestion) { // In IE, the assessment.QMonitor onchange handle disappears after the first file selection and I can't seem to add it back. // This at least gets the saving to work so it doesn't appear totally broken. The button doesn't change to 'save answer' immediately // after you attach a file a second time though, but we have to live with that for now. var actionDivName = 'file_upload_ans_' + assessment.questions_to_monitor[i].qid + '_selectedFileActions'; var actionDiv = $(actionDivName); if (actionDiv && actionDiv.visible()) { assessment.questions_to_monitor[i].status = 1; return true; } } } } return false; }; assessment.registerVTBEChange = function() { if (typeof(registerOnChangeCallback) == "function") { registerOnChangeCallback(assessment.vtbeChangedCallback, assessment.getVtbeQuestionIndex); } }; assessment.autoSaveExecutor = ''; assessment.autoSaveInterval = 10; // seconds assessment.startAutoSave = function(interval) { assessment.autoSaveInterval = interval; assessment.autoSaveExecutor = new PeriodicalExecuter(assessment.doAutoSave, assessment.autoSaveInterval); }; assessment.stopAutoSave = function() { if (assessment.autoSaveExecutor != '') { assessment.autoSaveExecutor.stop(); } }; assessment.toggleAutoSave = function(interval) { assessment.stopAutoSave(); if ($s('autoSaveCheckbox').checked) { assessment.startAutoSave(interval); } }; assessment.doAutoSave = function(pe) { if (assessment.submittingRightNow) { // Ignore if submitting right now return; } if (assessment.savingRightNow) { // If we are already saving, do nothing right now. return; } var doneOne = false; if (assessment.hasUnsavedAnswers()) { for(var i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].status == 1) // explicitly only check for status 1, skipping status==2 { if (doneOne) { // We can only submit one question per pass because otherwise the nonce fails. Switch // to a higher frequency to save all the outstanding questions faster. pe.stop(); pe.frequency = 1; pe.registerCallback(); return; } assessment.questions_to_monitor[i].status = 2; // flag to indicate we've already tied to auto-save this // Will be reset to 0 after a successful save or 1 if the user modifies their answer again. saveOneItem( assessment.questions_to_monitor[i].qid, assessment.questions_to_monitor[i].qnum, true, false ); doneOne = true; } } } if (!doneOne) { if (pe.frequency != assessment.autoSaveInterval) { pe.stop(); pe.frequency = assessment.autoSaveInterval; pe.registerCallback(); } } }; assessment.vtbeChanged = function(ifr) { var index = assessment.getVtbeQuestionIndex( ifr ); assessment.vtbeChangedCallback(ifr,index); }; assessment.vtbeChangedCallback = function(ifr,index) { if (index != -1) { assessment.questions_to_monitor[index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[index].qnum); } }; assessment.getVtbeQuestionIndex = function(ifr) { var parents = ifr.ancestors(); var num = parents.length; for ( var i = 0; i < num; i++ ) { var parent = parents[i]; if ( page.util.hasClassName(parent, 'takeQuestionDiv') ) { var divid = parent.id; for ( var j = 0; j < assessment.questions_to_monitor_index; j++ ) { if ( assessment.questions_to_monitor[j].qid == divid ) { return j; } } return -1; } } return -1; }; assessment.warnBeforeLeavingIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var prefix = "test"; if (isSurvey) { prefix = "survey"; } var timermsg = ''; if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } if (isForced) { return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.forced.beforeunload.warning"); } return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.beforeunload.warning") + timermsg; }; assessment.queueUpWarning = function(msg, oneByOneAndForceUnload) { var url = assessment.getNextActionUrl() + '&method=queueUpWarning'; var params = Object.extend({ 'msg' : msg, 'oneByOneAndForceUnload' : oneByOneAndForceUnload, 'course_assessment_id' : document.forms.saveAttemptForm.course_assessment_id.value } ); var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, asynchronous: false }); }; assessment.warnOnLeaveIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var timermsg = ''; var prefix = "test"; if (isSurvey) { prefix = "survey"; } if (assessment.hasUnsavedAnswers()) { // Since we are always auto-saving anyways, we might as well just always save unsaved answers here. saveAllQuestions(false); } if (isForced) { assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.forced.warning", assessment.currentTestName), true ); } else { if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.warning", assessment.currentTestName )+timermsg, false); } }; assessment.setDefaultQuestionDisplay = function(blockToLeaveVisible) { assessment.blockToLeaveVisible = blockToLeaveVisible; UserDataDWRFacade.getStringPermScope( "assessment.questionsExpanded", function( questionsExpanded ) { if (questionsExpanded == 'false') { assessment.toggleQuestionDisplay(); } assessment.blockToLeaveVisible = 'null'; }); }; assessment.toggleQuestionDisplay = function() { var newVis = !assessment.questionVisibility; if (newVis) { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", true ); } else { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", false ); } // Note -most of the time this will be "contentListItem:null" - that's OK var idToIgnore = "contentListItem:" + assessment.blockToLeaveVisible; $A(document.getElementsByTagName('li'))._each(function(entity) { // hide|show the given entity if it is one we care about var id = entity.id; if (id.startsWith("contentListItem:") && id != idToIgnore) { $A(entity.getElementsByTagName('div'))._each(function(adiv) { if (page.util.hasClassName(adiv,'details')) { if (newVis) { $(adiv).show(); } else { $(adiv).hide(); } } }); if (newVis) { entity.removeClassName('hideQuestionDetails'); } else { entity.addClassName('hideQuestionDetails'); } } }); var buttonText = page.bundle.getString( newVis ? "hide.question.details" : "show.question.details" ); $('content_listContainer_hideshowQuestions_top').down('a').update( buttonText ); $('content_listContainer_hideshowQuestions_bottom').down('a').update( buttonText ); assessment.questionVisibility = newVis; }; assessment.setDisableFlag = function(questionId, flag) { modifyHelper(questionId, 'setDisableFlag' + flag); }; assessment.questionLabelMap = {}; assessment.dndHooksAdded = false; assessment.setQuestionNumbers = function() { var index = 1; // loop through line items in list of questions var questions = $('content_listContainer'); if (questions) { $A(questions.childElements()).each( function( li ) { var h3 = li.down('h3'); var span = h3.down('span.questionNumber'); if ( !span ) // create & add span for questionNumber if none exists { span = new Element('span',{'class':'questionNumber autoQuestionNumber'}); h3.insert({top:span}); } var id = h3.up('div').id; var qSetSize = $('questionCount'+id); var qNumStr = ''+index; if ( qSetSize ) // show number range for question sets { var s = parseInt(qSetSize.innerHTML, 10); index += s - 1; if ( s > 1 ) { qNumStr += ' - '+index; } else if ( s === 0 ) { qNumStr = ''; } } qNumStr = qNumStr + '.'; index++; span.update(qNumStr); assessment.questionLabelMap[id] = h3.innerHTML.stripTags(); // save numbered label in map for loading accessible reorder select }); } if ( !assessment.dndHooksAdded ) { var dndCtrl = dragdrop.getControllerObjById( 'pageListReorderControls' ); if (dndCtrl) { // Set question numbers in the accessible reorder select before opening it's popup. // Setting the question numbers needs to be defered until the popup is added to the DOM, which // happens just before the popup is opened dndCtrl.extPreOpenCallback = assessment.setAccessibleReorderQuestionNumbers; // call this function to set question numbers after a dnd or accessible reorder happens dndCtrl.extPostOrderCallback = assessment.setQuestionNumbers; assessment.dndHooksAdded = true; } } }; assessment.setAccessibleReorderQuestionNumbers = function() { $A($('pageListReorderControlSelect').options).each( function( option ) { option.text = assessment.questionLabelMap[option.value]; }); }; assessment.viewReferencingCanvases = function(courseId, assessmentId) { var url = "/webapps/assessment/do/authoring/modifyAssessment?course_id=" + courseId + "&method=getReferringCanvases&assessmentId=" + assessmentId; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ document.body.style.cursor = 'default'; }, onSuccess: function(req){ $('referencingCanvasesPlaceholder').update(req.responseText); }, onFailure: function(req){ $('referencingCanvasesPlaceholder').update(ASSESSMENT_RESOURCES.getString("error.loading.referrers")); } }); }; assessment.normalizedWidth = 0; assessment.setNormalizedButtonWidth = function(myButton) { if (assessment.normalizedWidth === 0) { myButton.value = page.bundle.getString('takeSaveAnswer'); Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); assessment.normalizedWidth = myButton.clientWidth; myButton.value = page.bundle.getString('takeSaveAnswerAgain'); Element.addClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } myButton.value = page.bundle.getString('savingAnswer'); Element.addClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } } //myButton.style.width = assessment.normalizedWidth + 'px'; return; }; assessment.resetFields = function() { window.document.assessmentSubmitted = false; window.document.assessmentActuallySubmitted = true; }; assessment.getNextActionUrl = function() { var url = document.forms.saveAttemptForm.action; url = url + '?saveSequence=' + (assessment.saveSequence++); return url; }; assessment.submitAttemptForm = function() { var myForm = document.forms.saveAttemptForm; var origUrl = myForm.action; myForm.action = assessment.getNextActionUrl(); try { myForm.submit(); } catch (err) { // Make sure we get to the next line and reset the url just in case. } myForm.action = origUrl; }; // This is the final save-and-submit request for the test/survey assessment.doConfirmSubmit = function(msg) { document.forms.saveAttemptForm.save_and_submit.value='true'; try { if (confirmSubmit(msg)) { assessment.resetFields(); assessment.submitAttemptForm(); } } catch (err) { // If we had an error, continue to clear the saveandsubmit value } document.forms.saveAttemptForm.save_and_submit.value=''; return false; }; assessment.alertSaveStatus = function (status) { if (status == 'COMPLETED' ) { alert(page.bundle.getString("confirm_saveall_success")); } else if (status == 'PARTIAL' ) { alert(page.bundle.getString("confirm_save_partial")); } else if (status == 'UNANSWERED' ) { alert(page.bundle.getString("confirm_save_empty")); } else { alert(page.bundle.getString("confirm_save_error")); } }; assessment.removeFileUploadAnswer = function (fieldName, divName, questionId, questionNumber, remAnsSuffix, takeDupeSaveMsg) { document.getElementById(divName).style.display = "none"; document.forms.saveAttemptForm.elements.method.value = "fileremove"; document.forms.saveAttemptForm.elements[fieldName + '-override'].value = "false"; document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = "true"; try { if (checkAlreadySaved(takeDupeSaveMsg)) { saveOneItem( questionId, questionNumber, true, false); } } catch (err) { // Ignore - just want to make sure we do the next statement } document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = ""; return false; }; assessment.updateQuestionStatusResponse = function(originalRequest ) { var qnums = originalRequest.responseText; var lines = qnums.split("\n"); var qnum=lines[0].split(","); for (var i=0; i<qnum.length; i++) { var num = qnum[i]; if (num > 0) { setSavedIcon(num); } else { setNotSavedIcon(-num); } } for (var j=1;j<lines.length;j++) { var fileUpload = lines[j].split(":"); if (fileUpload.length == 2) { var divName = "file_upload_div_" + fileUpload[0]; var divElement = document.getElementById(divName); if (fileUpload[1] == "HIDE") { if(divElement !== null) { divElement.style.display = "none"; } } else { var spanName = "file_upload_span_" + fileUpload[0]; var cancelFileButton = "file_upload_ans_" + fileUpload[0] + "_cancelFileButton"; var cancelElement = document.getElementById(cancelFileButton); var overrideName = "file_upload_ans_" + fileUpload[0] + "-override"; var overrideElement = document.forms.saveAttemptForm.elements[overrideName]; var spanElement = document.getElementById(spanName); if(divElement !== null) //we must check if item exists for one question at a time format { divElement.style.display = "block"; } if(spanElement !== null) { spanElement.innerHTML = fileUpload[1]; } if(cancelElement !== null) { cancelElement.click(); } if (typeof overrideElement !== 'undefined' && overrideElement !== null) { overrideElement.value = "true"; } } } } }; assessment.prepareForSubmit = function(doValidation) { // MUST VALIDATE FORM TO PERSIST WYSIWYG // Set textarea value to VTBE contents: if (typeof(finalizeEditors) == "function") { finalizeEditors(); } /* Transform equations place holders into html before validation*/ var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if (doValidation) { /* Validate form TODO: Why not call validateForm()*/ var valid = formCheckList.check(); return valid; } return true; };

var widget = {}; widget.colorPickers = {}; widget.ColorPicker = Class.create(); widget.ColorPicker.prototype = { /** * Constructor * * @param name - id of the color picker * @param initialColor - initial color hex string ("#000000") * @param alertMsg - localized error msg string ("Error: A valid color value must be specified") * @param previewIdStr - optional id string of the color preview DIV container user can specify * @param allowTransparent - optional boolean whether to render an option to select transparent. Default is false. */ initialize : function( name, initialColor, alertMsg, previewIdStr, previewBackgroundIdStr, allowTransparent ) { this.theColorPickerName = name; this.allowTransparent = ( !allowTransparent ) ? false : true; this.theMenu = $( name ); this.alertMsg = alertMsg; this.userPreviewContainer = $( previewIdStr ); // may be undefined this.userPreviewBackgroundContainer = $( previewBackgroundIdStr ); // may be undefined if ( typeof this.userPreviewContainer == "undefined" ) { this.userPreviewContainer = null; } if ( typeof this.userPreviewBackgroundContainer == "undefined" ) { this.userPreviewBackgroundContainer = null; } this.colorListParent = $( name + '_colorlist_parent' ); widget.ColorPicker.registerColorPicker( this ); this.ie = document.all && navigator.userAgent.indexOf( "Opera" ) == -1; this.color_hidden_input = $( name + "_title_color_input" ); this.color_hidden_input.value = initialColor; this.color_hidden_input._defaultValue = initialColor; this.anch_link = $( name + "_link" ); this.color_link = $( name + "_img" ); this.color_name_label = $( name + "_color_name_label" ); this.title_color_input = $( name + "_title_color" ); this.setDisplay( initialColor, this.getDisplayColorInfo( initialColor, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( initialColor, true ); var backgroundStyle = initialColor; if( initialColor === "transparent" ) { backgroundStyle = 'url(/images/swatches/transparent.gif)'; } this.color_link.setStyle( { background : backgroundStyle } ); this.updateUserPreviewContainerColor( initialColor ); if ( this.anch_link ) { Event.observe( this.anch_link, "click", this.onOpen.bindAsEventListener( this ) ); } Event.observe( document.body, "click", this.closeColorPickers.bindAsEventListener( this ) ); Event.observe( this.theMenu, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_previewColorLink', 'click', this.previewListener .bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_cancelButton', 'click', this.onClose.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_submitButton', 'click', this.onApply.bindAsEventListener( this ) ); this.skip_link = $( name + "_skip_link" ); if ( this.skip_link ) { Event.observe( this.skip_link, "click", this.onSkipLinkClick.bindAsEventListener( this ) ); } // relocate color picker popup div to the bottom of the doc b/c of css display issues Element.remove( this.theMenu ); document.body.appendChild( this.theMenu ); widget.colorPickers[ this.theColorPickerName ] = this; }, onSkipLinkClick : function( event ) { $( this.theColorPickerName + '_submitButton' ).focus(); }, onKeyPress : function( event ) { var key = event.keyCode || event.which; if ( key == Event.KEY_ESC ) { this.onClose( event ); } }, closeColorPickers : function( event ) { var element = Event.element( event ); widget.ColorPicker.colorPickers.each( function( cp ) { if ( cp != this && !element.descendantOf( cp.theMenu ) ) { cp.close(); } }.bind( this ) ); }, setOnChangeHandler : function( handler ) { this.onChangeHandler = handler; }, setDefaultColor : function( colorValue ) { this.color_hidden_input.value = colorValue; this.color_hidden_input._defaultValue = colorValue; if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); }, setColor : function( colorValue ) { widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, colorValue ); if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); this.updateUserPreviewContainerColor( colorValue ); if ( this.onChangeHandler ) { this.onChangeHandler(); } }, getPaletteInstance : function() { if ( !this.paletteInstance ) { this.paletteInstance = Element.clone( widget.ColorPicker.colorPalette, true ); } return this.paletteInstance; }, deletePaletteInstance : function() { if ( this.paletteInstance ) { Event.stopObserving( this.paletteInstance, 'click' ); this.paletteInstance.remove(); delete this.paletteInstance; } }, onOpen : function( event ) { this.closeColorPickers( event ); this.colorListParent.appendChild( this.getPaletteInstance() ); this.initializeTransparent(); Event.observe( this.getPaletteInstance(), 'click', this.setColorFromSwatch.bindAsEventListener( this ) ); var offset = Position.cumulativeOffset( this.anch_link ); this.theMenu.setStyle( { display : "block", position : "absolute" } ); var width = this.theMenu.getWidth(); var bodyWidth = $( document.body ).getWidth(); var menuDims = this.theMenu.getDimensionsEx(); var anchorDims = this.anch_link.getDimensionsEx(); var menuHeight = menuDims.height; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); // Use viewport relative offsets to figure out placement within the view var offsetTop = offset[ 1 ] - scrollOffsets.top; var offsetLeft = offset[ 0 ] - scrollOffsets.left; var xpos = offsetLeft; if ( page.util.isRTL() ) { xpos = xpos + this.anch_link.getWidth() - width; } if ( xpos + width > viewportDimensions.width ) { // First try to position it on the left of the link instead of the right xpos = offsetLeft - width + anchorDims.width; if ( xpos < 0 ) { // If we go off the page though, just try our best xpos = viewportDimensions.width - width; } } if ( xpos < 0 ) { xpos = 0; } var ypos = offsetTop + anchorDims.height; if ( ( ypos + menuHeight ) > viewportDimensions.height ) { // Try to position above the color picker first ypos = offsetTop - menuHeight; if ( ypos < 0 ) { // but if it goes off the top of the page just do a best-effort. ypos = ypos - ( ypos + menuHeight - viewportDimensions.height ); if ( ypos < 0 ) { ypos = 0; } } } // The color swatch is positioned absolutely, so adjust offsets to include the scrollofset ypos = ypos + scrollOffsets.top; xpos = xpos + scrollOffsets.left; this.theMenu.setStyle( { left : xpos + "px", top : ypos + "px" } ); this.title_color_input.focus(); ( function() { if ( !this.shim ) { this.shim = new page.popupShim( this.theMenu ); } this.shim.open(); }.bind( this ).defer() ); Event.stop( event ); }, /** * Removes the transparent choice from the palette if the picker is not supposed to support transparency. */ initializeTransparent : function() { if ( !this.allowTransparent ) { var transparentLi = this.colorListParent.down( 'li#colorlist_transparent' ); if ( transparentLi ) { Element.remove( transparentLi ); } } }, /** * Hides the color picker. */ onClose : function() { this.close(); this.anch_link.focus(); }, close : function() { this.deletePaletteInstance(); this.theMenu.setStyle( { display : "none" } ); if ( this.shim ) { this.shim.close(); } }, /** * Sets the preview color and text to the color selected by the user in the palette */ setColorFromSwatch : function( event ) { var element = Event.element( event ); if ( element.hasClassName( 'transparent' ) ) { this.setDisplay( "transparent", page.bundle.getString( "colorpicker.color.transparent" ) ); } else { var text = element.childNodes[ 0 ].nodeValue; if ( text ) { this.setDisplay( text.substring( 0, 7 ), this.getDisplayColorInfo( text.substring( 0, 7 ), false ) ); } } Event.stop( event ); }, getDisplayColorInfo : function( hexValue, onlyColorName ) { var transparent = false; var localizedName; var safeColorCode; if ( hexValue === "transparent" ) { transparent = true; localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ hexValue ]; } else { safeColorCode = this.getSafeColorCode( hexValue ).toUpperCase(); //The keys in ColorPickerMap are all 6 digit safe color codes, that's we need to make sure that we're using the correct key to lookup the color. localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ safeColorCode ]; } if ( !localizedName ) { localizedName = ''; } var colorName; colorName = localizedName + ' (' + hexValue + ')'; if ( onlyColorName || transparent ) { colorName = localizedName; } return colorName; }, /** * Returns a Six digit Hexadecimal Color Code. */ getSafeColorCode : function( hexValue ) { return hexValue.replace( /#([\d0-9A-Fa-f])([\d0-9A-Fa-f])([\d0-9A-Fa-f])$/,'#$1$1$2$2$3$3'); }, /** * Handles the Preview functionality on the swatch. If an inappropriate color is choosen, a msg is displayed to the * user. Else updates the color preview with the manually entered color. */ previewListener : function( event ) { if ( !this.isValidColor( this.title_color_input.value ) ) { alert( this.alertMsg ); return; } if ( this.title_color_input.value.length != 6 ) { return; } var prevCol; if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { prevCol = "transparent"; this.setDisplay( prevCol, page.bundle.getString( 'colorpicker.color.transparent' ) ); } else { prevCol = '#' + this.title_color_input.value; this.setDisplay( prevCol, this.getDisplayColorInfo( prevCol, false ) ); } Event.stop( event ); }, /** * Updates the color preview panel in the picker pop up */ setDisplay : function( col, text ) { if ( col === "transparent" ) { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : 'url(/images/swatches/transparent_lrg.gif)' } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : '#ffffff' } ); this.title_color_input.value = 'XXXXXX'; } else { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : col } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : col } ); this.title_color_input.value = ( col.startsWith( '#' ) ) ? col.substr( 1 ) : col; } $( this.theColorPickerName + '_title_color_name' ).innerHTML = text; }, /** * Checks for a valid color value. */ isValidColor : function( color_value ) { var isValid = false; isValid = ( /^[0-9A-Fa-f]{6}/ ).test( color_value ); if ( !isValid && this.allowTransparent ) { isValid = color_value.toLowerCase() === "xxxxxx"; } return isValid; }, /** * Manages the functionality for the Apply button the swatch. */ onApply : function( event ) { var color = this.title_color_input.value; if ( !this.isValidColor( color ) ) { return; } if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); color = "transparent"; this.color_name_label.innerHTML = page.bundle.getString( "colorpicker.color.transparent" ); } else { color = '#' + color; this.color_link.setStyle( { background : color } ); this.color_name_label.innerHTML = this.getDisplayColorInfo( color, true ); } widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, color ); this.updateUserPreviewContainerColor( color ); this.onClose(); if ( this.onChangeHandler ) { this.onChangeHandler(); } Event.stop( event ); }, /** * If the user specified preview container element exists, update its color style to the color given. * * @param color - color hex string */ updateUserPreviewContainerColor : function( color ) { if ( this.userPreviewContainer ) { this.userPreviewContainer.style.color = color; } else if ( this.userPreviewBackgroundContainer ) { this.userPreviewBackgroundContainer.style.background = color; } } }; // end widget.ColorPicker.prototype widget.ColorPicker.colorPickers = []; widget.ColorPicker.colorPickerMap = {}; widget.ColorPicker.colorPickerPaletteMap = {}; widget.ColorPicker.registerColorPicker = function( cp ) { widget.ColorPicker.colorPickers.push( cp ); widget.ColorPicker.colorPickerMap[ cp.theColorPickerName ] = cp; // grab the color definition and remove it from the DOM for the time being if ( !widget.ColorPicker.colorPalette ) { var colorPalette = $( 'picker_colorlist' ); // Store the colors and their localized names so we can look them up later. widget.ColorPicker.colorPickerPaletteMap[ "default" ] = {}; var arrColors = Element.getElementsBySelector( colorPalette, "a" ); for ( var i = 0; i < arrColors.length; i++ ) { if ( !arrColors[ i ].hasClassName( "transparent" ) ) { widget.ColorPicker.colorPickerPaletteMap[ "default" ][ arrColors[ i ].innerHTML.substring( 0, 7 ).toUpperCase() ] = arrColors[ i ].innerHTML .substring( 8 ); } } widget.ColorPicker.colorPickerPaletteMap[ "default" ].transparent = page.bundle .getString( "colorpicker.color.transparent" ); widget.ColorPicker.colorPalette = colorPalette; // deferring so that the name lookup for colors can succeed during init ( function() { Element.remove( colorPalette ); }.defer() ); } }; widget.ColorPicker.closeAllColorPickers = function() { widget.ColorPicker.colorPickers.each( function( cp ) { cp.close(); } ); }; widget.MultiSelect = Class.create(); widget.MultiSelect.multiselectBoxes = []; // ---------------- "static" methods widget.MultiSelect.registerMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.push( ms ); }; widget.MultiSelect.unRegisterMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.remove( ms ); }; widget.MultiSelect.prototype = { initialize : function( multiSelectDiv, formName ) { this.multiSelectDiv = $( multiSelectDiv ); this.formName = formName; if ( this.multiSelectDiv ) { this.leftClickListeners = []; this.rightClickListeners = []; var divs = this.multiSelectDiv.getElementsByTagName( 'div' ); var leftDiv = $( divs[ 0 ] ); var buttonDiv = $( divs[ 1 ] ); var rightDiv = $( divs[ 2 ] ); var inputs = this.multiSelectDiv.getElementsByTagName( 'input' ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); var leftSelects = leftDiv.getElementsByTagName( 'select' ); var rightSelects = rightDiv.getElementsByTagName( 'select' ); this.leftSelectBox = $( leftSelects[ 0 ] ); this.rightSelectBox = $( rightSelects[ 0 ] ); var buttons = buttonDiv.getElementsByTagName( 'button' ); var moveRightButton = $( buttons[ 0 ] ); var moveLeftButton = $( buttons[ 1 ] ); var leftInputs = leftDiv.getElementsByTagName( 'input' ); var leftInvertSelectionButton = $( leftInputs[ 0 ] ); var leftSelectAllButton = $( leftInputs[ 1 ] ); var rightInputs = rightDiv.getElementsByTagName( 'input' ); var rightInvertSelectionButton = $( rightInputs[ 0 ] ); var rightSelectAllButton = $( rightInputs[ 1 ] ); widget.MultiSelect.registerMultiSelect( this ); Event.observe( moveLeftButton, "click", this.onMoveLeftClick.bindAsEventListener( this ) ); Event.observe( moveRightButton, "click", this.onMoveRightClick.bindAsEventListener( this ) ); Event.observe( leftInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, true ) ); Event.observe( rightInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, false ) ); Event.observe( leftSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, true ) ); Event.observe( rightSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, false ) ); // This for the MultiSelectAction Bean. // If actionBean list is less than 1, button is displayed and not the dropdown if ( leftSelects.length > 1 ) { this.actionBeanLeftSelect = $( leftSelects[ 1 ] ); this.actionBeanRightSelect = $( rightSelects[ 1 ] ); var actionBeanLeftGoBox = $( leftInputs[ 2 ] ); var actionBeanRightGoBox = $( leftInputs[ 2 ] ); Event.observe( actionBeanLeftGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, true ) ); Event.observe( actionBeanRightGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, false ) ); } } }, actionBeanFunc : function( event, leftSelect ) { var destination = this.actionBeanLeftSelect; var selectedBox = this.leftSelectBox; if ( !leftSelect ) { destination = this.actionBeanRightSelect; selectedBox = this.rightSelectBox; } var myindex = destination.selectedIndex; if ( myindex == -1 || myindex > destination.length - 1 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return false; } var sFunctionName = destination.options[ myindex ].value; var oFunc = window[ sFunctionName ]; oFunc( selectedBox.name, this.formName ); this.setHiddenValues(); }, /* * listener registration for leftmove and rightmove clicks */ addToLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.push( listenerFunc ); } }, addToRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.push( listenerFunc ); } }, removeFromLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.remove( listenerFunc ); } }, removeFromRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.remove( listenerFunc ); } }, removeAllLeftClickListeners : function() { this.leftClickListeners = []; }, removeAllRightClickListeners : function() { this.rightClickListeners = []; }, removeFromLeft : function( id ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var toRemoveElement = leftItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToLeft : function( id, value, sortString ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var returnItem = leftItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { this.rawAddToLeft( id, value, sortString ); this.setHiddenValues(); } } }, rawAddToLeft : function( id, value, sortString ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.leftSelectBox.appendChild( item ); }, removeFromRight : function( id ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var toRemoveElement = rightItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToRight : function( id, value, sortString ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var returnItem = rightItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.rightSelectBox.appendChild( item ); this.setHiddenValues(); } } }, resetRightBox : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); rightItems.invoke( "remove" ); this.setHiddenValues(); } }, resetLeftBox : function() { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); leftItems.invoke( "remove" ); this.setHiddenValues(); } }, getAllLeftAvailableElements : function() { if ( this.leftSelectBox ) { return this.leftSelectBox.immediateDescendants(); } else { return []; } }, getAllRightElements : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); return rightItems; } else { return []; } }, onMoveLeftClick : function( event ) { var rightItems = this.rightSelectBox.immediateDescendants(); var selectedItems = rightItems.findAll( function( item ) { return item.selected; } ); var leftItems = this.leftSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { leftItems.push( item ); } ); leftItems = leftItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); leftItems.each( function( item ) { this.leftSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.leftClickListeners ) { this.leftClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, onMoveRightClick : function( event ) { var leftItems = this.leftSelectBox.immediateDescendants(); var selectedItems = leftItems.findAll( function( item ) { return item.selected; } ); var rightItems = this.rightSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { rightItems.push( item ); } ); rightItems = rightItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); rightItems.each( function( item ) { this.rightSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.rightClickListeners ) { this.rightClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, setHiddenValues : function() { var leftString; var rightString; var temp = ""; // Populate select box values comma separated into leftString,rightString. if ( this.leftSelectBox ) { this.leftSelectBox.immediateDescendants().each( function( option ) { leftString = option.value; temp += leftString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.leftValues.value = temp; temp = ""; } if ( this.rightSelectBox ) { this.rightSelectBox.immediateDescendants().each( function( option ) { rightString = option.value; temp += rightString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.rightValues.value = temp; temp = ""; } }, onSelectAllClick : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } Event.stop( event ); }, onInvertSelection : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } } }; /** * A dynamic picker list */ widget.PickerList = Class.create(); widget.PickerList.prototype = { /** * Creates a new picker list * * @param id id of the picker list table * @param cellGenerators an array of functions to be called to generate the HTML for the cells for a new row in the * table. * @param columnAlignments an array of the alignments of the columns * @param columnStyles optional styles to applied to columns * @param reorderable whether the table is to be reorderable * @param reorderingUrl url that reordering changes will be persisted to (can be null) * @param contextParameters parameters that are passed along with the reordering action. */ initialize : function( id, cellGenerators, columnAlignments, columnStyles, reorderable, reorderingUrl, contextParameters ) { this.table = $( id ); this.reorderable = reorderable; if ( this.table ) { this.tableBody = $( this.table.getElementsByTagName( 'tbody' )[ 0 ] ); if ( reorderable ) { this.dragDrop = new dragdrop.ListReordering( this.tableBody, this.table.id + '_reorderControls', false, 'tr', 'dndHandle', 'span', reorderingUrl, contextParameters, new Date().getTime(), null ); } } this.cellGenerators = cellGenerators; this.columnAlignments = columnAlignments; this.columnStyles = columnStyles; }, /** * This function takes any number of arguments. They will be passed directly to the generator functions. If this * list is reorderable, the first two arguments must be: - id of the item added. - name of the item added. */ addRow : function() { var generatorArgs = arguments; var row = $( document.createElement( "tr" ) ); if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var id = arguments[ 0 ]; var name = arguments[ 1 ]; // Set the row id so that the drag and drop code can identify the row row.id = this.table.id + '_row:' + id; // Add the reordering handle. var cell = document.createElement( "td" ); cell.className = 'smallCell dndHandle'; cell.valign = 'top'; cell.innerHTML = '<span class="reorder"><span><img src="/images/ci/icons/generic_updown.gif" alt="" /></span></span>'; row.appendChild( cell ); // Add the item to the accessible controls. var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); accessibleSelect.options[ accessibleSelect.length ] = new Option( name, id ); dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } this.cellGenerators.each( function( generator, index ) { var alignment = this.columnAlignments[ index ]; var cell = $( document.createElement( "td" ) ); cell.setAttribute( "align", alignment ); var columnStyle = this.columnStyles[ index ]; if ( '' != columnStyle ) { cell.addClassName( columnStyle ); } cell.innerHTML = generator.apply( window, generatorArgs ); row.appendChild( cell ); }.bind( this ) ); if ( generatorArgs[ 0 ] && generatorArgs[ 0 ].incompatibleFile ) { return; } else { this.tableBody.appendChild( row ); } if ( this.reorderable ) { // Toggle drag and drop so that it picks up the new item. this.dragDrop.disableDragAndDrop(); this.dragDrop.enableDragAndDrop(); this.dragDrop.calculateItemOrder(); } return row; }, /** * Removes the row with the specified id or index * * @param idOrIndex - if the argument is a string - it is taken as the id of one of the rows in the table - if the * argument is a number - the row at the specified index will be removed. */ removeRow : function( idOrIndex ) { var rowToRemove = null; if ( Object.isString( idOrIndex ) ) { rowToRemove = $( this.table.id + "_row:" + idOrIndex ); } else { rowToRemove = this.tableBody.childElements()[ idOrIndex ]; } if ( rowToRemove ) { // Remove the row from the accessible repositioning controls if applicable if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var idToCheck = rowToRemove.id.split( ':' )[ 1 ]; var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); var options = accessibleSelect.childElements(); for ( var i = 0; i < options.length; i++ ) { if ( options[ i ].value == idToCheck ) { Element.remove( options[ i ] ); break; } } dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } Element.remove( rowToRemove ); if ( this.reorderable ) { this.dragDrop.calculateItemOrder(); } } } }; widget.PickerList.noopGenerator = function() { return '&nbsp;'; }; /** * File picker */ widget.FilePicker = Class.create(); widget.FilePicker.prototype = { /** * Creates a new file picker * * @param pickerList the javascript object representing the picker list (of currently attached files) * @param baseElementName the base name for the file picker elements * @param required whether a file is required to be chosen * @param overrideLocalBehavior whether the CS options to override local behavior should be shown * @param csPickerUrl url to the CS file picker * @param showAddMetadata whether the "submit and add metadata" content system functionality should be enabled. * @param onAttachFile Optional callback function triggered when a new file is attached */ initialize : function( pickerList, baseElementName, required, overrideLocalBehavior, csPickerUrl, showAddMetadata, showSpecialAction, allowMultipleFiles, onAttachFile ) { this.pickerList = pickerList; this.baseElementName = baseElementName; this.required = required; this.overrideLocalBehavior = overrideLocalBehavior; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.allowMultipleFiles = allowMultipleFiles; this.onAttachFile = onAttachFile; this.pickCSButton = $( this.baseElementName + '_csBrowse' ); this.pickLocalButton = $( this.baseElementName + '_localBrowse' ); this.localFilePicker = $( this.baseElementName + '_chooseLocalFile' ); this.pickURLButton = $( this.baseElementName + '_urlBrowse' ); this.selectedCSFile = $( this.baseElementName + '_selectedCSFile' ); this.selectedCSFileName = $( this.baseElementName + '_selectedCSFileName' ); this.selectedCSFilePath = $( this.baseElementName + '_selectedCSFilePath' ); this.selectedCSFileSize = $( this.baseElementName + '_selectedCSFileSize' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_selectedCSFileMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_selectedCSFileMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_selectedCSFileMetadataFormat' ); } // single file selected area this.selectedFileActionsArea = $( this.baseElementName + '_selectedFileActions' ); this.selectedFileName = $( this.baseElementName + '_selectedFileName' ); this.selectedFileSource = $( this.baseElementName + '_selectedFileSource' ); this.selectedFileLinkTitle = $( this.baseElementName + '_selectedFileLinkTitle' ); this.selectedFileSpecialAction = $( this.baseElementName + '_selectedFileSpecialAction' ); this.attachFileButton = $( this.baseElementName + '_attachFileButton' ); this.cancelFileButton = $( this.baseElementName + '_cancelFileButton' ); this.allowCS = this.pickCSButton ? true : false; this.allowLocal = this.pickLocalButton ? true : false; this.allowURL = this.pickURLButton ? true : false; // Wire up events if ( this.overrideLocalBehavior ) { this.pickTargetButton = $( this.baseElementName + '_CSTargetButton' ); this.targetCSLocation = $( this.baseElementName + '_CSTarget' ); Event.observe( this.pickTargetButton, "click", this.onPickTargetClick.bindAsEventListener( this ) ); } this.pickMDButton = $( this.baseElementName + '_CSTargetMetaButton' ); if ( this.pickMDButton ) { window.CSMetadataPickerCallBack = this.afterPickMD.bind( this ); Event.observe( this.pickMDButton, "click", this.onPickMDClick.bindAsEventListener( this ) ); } if ( $( this.baseElementName + '_permissionPickerButton0' ) ) { Event.observe( $( this.baseElementName + '_permissionPickerButton0' ), "click", widget.FilePicker.openPermPicker .bindAsEventListener( this, this.csPickerUrl, this.baseElementName + "_permissions0_manual", "", this.selectedCSFilePath, widget.FilePicker.permPickerCallback .curry( this.baseElementName, this.baseElementName + '_csPermFileList0', 0 ) ) ); } if ( this.allowCS ) { Event.observe( this.pickCSButton, "click", this.onCSBrowse.bindAsEventListener( this ) ); Event.observe( this.selectedCSFile, "change", this.onCSPick.bindAsEventListener( this ) ); } if ( this.allowLocal ) { this.localFileContainer = this.localFilePicker.up(); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } if ( this.allowURL ) { this.linkId = $( this.baseElementName + "_urlBrowse" ); this.formDivId = $( this.baseElementName + "_addUrlForm" ); this.formContainerId = $( this.baseElementName + "_urlContainerDiv" ); var flyout = new flyoutform.FlyoutForm( { linkId : this.linkId, formDivId : this.formDivId, inlineFormContainerId : this.formContainerId, customCallbackObject : this, customOnSubmitHandler : this.onURLPick } ); this.flyout = flyout; } if ( this.cancelFileButton ) { Event.observe( this.cancelFileButton, "click", this.onCancelClick.bindAsEventListener( this ) ); } Event.observe( this.allowLocal ? this.pickLocalButton.form : this.pickCSButton.form, "submit", this.onSubmit .bindAsEventListener( this ) ); this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv && this.pickerList && this.pickerList.tableBody && ( this.pickerList.tableBody .getElementsBySelector( 'input[type="hidden"]' ).length > 0 || this.pickerList.tableBody .getElementsBySelector( 'input[type="file"]' ).length > 0 ) ) { this.listHtmlDiv.show(); } if ( !this.allowMultipleFiles && this.selectedFileSource.value != '' ) { // A file is already attached, so show the selected files area and // turn off the file choosing button (and metadata button if any). this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } } widget.FilePicker.registerFilePicker( this ); }, /** * For the override local behavior: show the picker to pick the location */ onPickTargetClick : function( event ) { var remote = popop.launchPicker( '/webapps/cmsmain/folderpicker/', 'picker_browse' ); if ( remote ) { remote.opener.inputEntryURLToSet = this.targetCSLocation; remote.opener.returnFullURL = false; remote.methodCall = this.onPickMDClick.bind( this ); } }, /** * For the override local behavior: show the picker to pick the metadata */ onPickMDClick : function( event ) { var location = this.targetCSLocation; var file = this.localFilePicker; if ( file.value == '' ) { return; } var url = '/webapps/cmsmain/execute/metadatapicker/manage?action=pick&file=' + file.value; if ( location && location.value != '' ) { url += 'location=' + location.value; } popup.launchPicker( url, 'picker_browse' ); }, /** * For the override local behavior: callback from the metadata picker */ afterPickMD : function( metadata, selection, synchronised, format ) { $( this.baseElementName + '_CSTargetmetadata' ).value = metadata; $( this.baseElementName + '_CSTargetselection' ).value = selection; $( this.baseElementName + '_CSTargetSynchronised' ).value = synchronised; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = format; }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.inputEntryURLToSet = this.selectedCSFile; this.csBrowseWindow.opener.inputFileSizeToSet = this.selectedCSFileSize; this.csBrowseWindow.opener.linkName = this.selectedCSFileName; if ( this.selectedCSFilePath ) { this.csBrowseWindow.opener.filePath = this.selectedCSFilePath; } this.csBrowseWindow.opener.customHandler = this.onCSPick.bind( this ); if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, /** * Called after file has been chosen from CS file picker with metadata added. */ afterMD : function( metadata, synced, format, fileId ) { var metadataString = metadata.join( "#" ); if ( fileId ) { if ( $( this.baseElementName + '_CSMetadata_' + fileId ) ) { $( this.baseElementName + '_CSMetadata_' + fileId ).value = metadataString; } if ( $( this.baseElementName + '_CSMetadataSync_' + fileId ) ) { $( this.baseElementName + '_CSMetadataSync_' + fileId ).value = synced; } if ( $( this.baseElementName + '_CSMetadataFormat_' + fileId ) ) { $( this.baseElementName + '_CSMetadataFormat_' + fileId ).value = format; } } else { if ( this.selectedCSFileMetadata ) { this.selectedCSFileMetadata.value = metadataString; } if ( this.selectedCSFileMetadataSync ) { this.selectedCSFileMetadataSync.value = synced; } if ( this.selectedCSFileMetadataFormat ) { this.selectedCSFileMetadataFormat.value = format; } } }, /** * Callback called after a file has been chosen from the CS file picker in single file mode - updating selected * files section */ onCSPick : function( fileList ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { // picker was opened in multiple mode but one of the legacy page was hit // see how legacy pages with radio buttons submit its selection - pickmultiple.jspf // create object cell generator is expecting using hidden input if ( typeof ( fileList ) == 'string' ) { var filePath = this.selectedCSFilePath ? this.selectedCSFilePath.value : ""; var csFile = { fileName : this.selectedCSFile.value, fullUrlToFile : this.selectedCSFile.value, linkTitle : this.selectedCSFileName.value, filePath : filePath, size : this.selectedCSFileSize.value }; this.onCSPickAllowMultiple( [ csFile ] ); } else { this.onCSPickAllowMultiple( fileList ); } } else { this.csBrowseWindow = null; this.selectedFileSource.value = 'C'; this.selectedFileName.innerHTML = this.selectedCSFileName.value; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = this.selectedCSFileName.value; } this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } if ( $( this.baseElementName + '_csPermissionsLi' ) ) { var fileName = this.selectedCSFileName.value; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. if ( ( /html|htm/i ).test( ext ) ) { $( this.baseElementName + "_permissionOptionsIndex" ).value = 0; $( this.baseElementName + '_csPermissionsLi' ).show(); } } if ( this.onAttachFile ) { this.onAttachFile( this, false ); } } }, /** * Called after a file is chosen from the local file picker in single file mode - updating selected files section */ onLocalPick : function( event ) { if ( this.localFilePicker.value != '' ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { this.onLocalPickAllowMultiple( event ); } else { var localFileName = this.getFileName( this.localFilePicker.value ); this.selectedFileName.innerHTML = localFileName; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = localFileName; } this.selectedFileSource.value = 'L'; this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.show(); } if ( this.onAttachFile ) { this.onAttachFile( this, true ); } } } }, /** * Callback called after files have been chosen from the CS file picker in multiple files mode - updating table */ onCSPickAllowMultiple : function( fileList ) { this.csBrowseWindow = null; fileList.each( function( selectedFile ) { selectedFile.baseElementName = this.baseElementName; selectedFile.showAddMetadata = this.showAddMetadata; selectedFile.csPickerUrl = this.csPickerUrl; this.pickerList.addRow( selectedFile, false ); // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); if ( this.onAttachFile ) { this.onAttachFile( this, false ); } }.bind( this ) ); }, /** * Called after a file is chosen from the local file picker in multiple files mode - updating table */ onLocalPickAllowMultiple : function( event ) { var row = this.pickerList.addRow( this, true ); if ( row === null ) { return; } // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); var cell = $( row.getElementsByTagName( 'td' )[ 0 ] ); var title = this.localFilePicker.title; Element.remove( this.localFilePicker ); this.localFilePicker.removeClassName( "hiddenInput" ); this.localFilePicker.setStyle( { position : "absolute", top : '-10000px' } ); this.localFilePicker.disabled = false; cell.appendChild( this.localFilePicker ); // Set up the names of the local file fields this.pickerList.tableBody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = this.baseElementName + '_LocalFile' + index; }.bind( this ) ); // Create and insert a new local file picker for more local file attaching this.localFilePicker = new Element( 'input', { title : title, type : 'file' } ); this.localFilePicker.addClassName( 'hiddenInput' ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); if ( this.onAttachFile ) { this.onAttachFile( this, true ); } }, /** * If a) Special Actions are enabled, and b) the embed options are configure to show up: - Wires up an on change * even on the special action select box that shows the embed options when the embed action is chosen. */ registerEmbedOptionsListener : function( index ) { if ( this.showSpecialAction ) { var specialAction = $( this.baseElementName + '_specialAction' + index ); var embedOptions = $( this.baseElementName + '_embedOptions' + index ); if ( embedOptions ) { specialAction.observe( 'change', function( event ) { if ( "EMBED" == specialAction.options[ specialAction.selectedIndex ].value ) { embedOptions.show(); } else { embedOptions.hide(); } } ); } } }, /** * Called after a url is chosen from the local file picker in multiple files mode - updating table */ onURLPick : function( widget ) { var selectedURL = document.getElementById( widget.baseElementName + '_newUrlName' ); if (selectedURL.value.blank()) // TODO: More exhaustive URL validation? { alert(page.bundle.getString('filePicker.validate.invalid.url')); return false; } if ( widget.listHtmlDiv ) { widget.listHtmlDiv.show(); } if ( widget.allowMultipleFiles ) { var urlFile = { fileName : selectedURL.value, fullUrlToFile : selectedURL.value, linkTitle : selectedURL.value }; widget.onCSPickAllowMultiple( [ urlFile ] ); } else { widget.selectedFileSource.value = 'C'; widget.selectedFileName.innerHTML = selectedURL.value; if ( widget.selectedFileLinkTitle ) { widget.selectedFileLinkTitle.value = selectedURL.value; } widget.selectedFileActionsArea.show(); widget.togglePickerButtons( false ); if ( widget.pickMDButton ) { widget.pickMDButton.hide(); } if ( widget.onAttachFile ) { widget.onAttachFile( widget, false ); } } // Purge entry widget.flyout.close(); selectedURL.value = ''; return true; }, /** * Called when the "Do not attach file" button is clicked */ onCancelClick : function( event ) { this.selectedFileActionsArea.hide(); this.clearSelectedFileInfo(); this.togglePickerButtons( true ); if ( event ) { Event.stop( event ); } }, /** * Toggles the enabled state of the Local/CS picker buttons to the specified state */ togglePickerButtons : function( enabled ) { if ( this.allowLocal ) { this.pickLocalButton.disabled = !enabled; if ( enabled ) { this.pickLocalButton.className = 'browse visibleInput'; this.localFilePicker.position = 'relative'; this.localFilePicker.style.top = ''; } else { this.pickLocalButton.className = 'disabled'; this.localFilePicker.position = 'absolute'; this.localFilePicker.style.top = '-10000px'; } if ( this.allowMultiple ) { this.localFilePicker.disabled = !enabled; } } if ( this.allowCS ) { this.pickCSButton.disabled = !enabled; if ( enabled ) { this.pickCSButton.className = 'browse visibleInput'; } else { this.pickCSButton.className = 'disabled'; } } if ( this.allowURL ) { this.pickURLButton.disabled = !enabled; if ( enabled ) { this.pickURLButton.className = 'browse visibleInput'; } else { this.pickURLButton.className = 'disabled'; } } }, /** * Clears the info associated to the current attached file (if the user cancelled, or chose to attach another file ) */ clearSelectedFileInfo : function() { var isLocal = this.selectedFileSource.value == 'L'; this.selectedFileName.innerHTML = ""; this.selectedFileSource.value = ""; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = ""; } if ( this.pickMDButton ) { $( this.baseElementName + '_CSTargetmetadata' ).value = ""; $( this.baseElementName + '_CSTargetselection' ).value = ""; $( this.baseElementName + '_CSTargetSynchronised' ).value = ""; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = ""; } if ( $( this.baseElementName + "_permissionOptionsIndex" ) ) { $( this.baseElementName + '_permissionOptionsIndex' ).value = -1; $( this.baseElementName + '_permissions0_all' ).checked = true; } if ( this.selectedFileSpecialAction ) { this.selectedFileSpecialAction.selectedIndex = 0; } if ( isLocal ) { var title = ""; if ( !this.allowMultipleFiles ) { title = this.localFilePicker.title; Element.remove( this.localFilePicker ); } this.localFilePicker = $( document.createElement( "input" ) ); if ( !this.allowMultipleFiles ) { this.localFilePicker.name = this.baseElementName + '_LocalFile0'; } this.localFilePicker.title = title; this.localFilePicker.type = "file"; this.localFilePicker.addClassName( "hiddenInput" ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } else { this.selectedCSFile.value = ""; this.selectedCSFileName.value = ""; if ( this.selectedFilePath ) { this.selectedFilePath = ""; } this.selectedCSFileSize.value = ""; if ( this.showAddMetadata ) { this.selectedCSFileMetadata.value = ""; this.selectedCSFileMetadataSync.value = ""; this.selectedCSFileMetadataFormat.value = ""; } } }, /** * Gets the file name based on the full file path. */ getFileName : function( fullPath ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return result; }, setRequired : function( required ) { this.required = required; }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.allowMultipleFiles ) { if ( this.pickerList.tableBody.immediateDescendants().length === 0 ) { alert( page.bundle.getString( "filePicker.validate.atLeastOne" ) ); if ( event ) { Event.stop( event ); } return false; } } else { if ( ( this.selectedCSFile && this.selectedCSFile.value == '' ) && ( this.localFilePicker && this.localFilePicker.value == '' ) ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); if ( event ) { Event.stop( event ); } return false; } } } return true; } }; // Creates hidden input items for selected files/folders if giving access to additional files/folder // when attaching an HTML file widget.FilePicker.permPickerCallback = function( baseElementName, permFileList, index, itemList ) { if ( itemList && itemList.length > 0 ) { var i; var permFileListElem = $( permFileList ); var hiddenInputs = ""; if ( !permFileListElem ) { return; } hiddenInputs += '<input type="hidden" name="' + baseElementName + '_permittedFiles' + index + '" value="' + itemList[ 0 ].fileName; for ( i = 1; i < itemList.length; i++ ) { hiddenInputs += ':' + itemList[ i ].fileName; } hiddenInputs += '">'; permFileListElem.innerHTML = hiddenInputs; } }; /** * Toggles the "mark for removal" status of an item in the currently attached files table. Should be called from an * onclick attribute on the toggle link in the table. */ widget.FilePicker.toggleForRemove = function( event, removeLink ) { var e = event || window.event; removeLink = $( removeLink ); var tableRow = removeLink.up( "tr" ); var hiddenField = removeLink.up( "td" ).down( 'input[type="hidden"]' ); tableRow.toggleClassName( "removeCell" ); if ( hiddenField.disabled ) { hiddenField.disabled = false; removeLink.innerHTML = page.bundle.getString( "filePicker.unmarkForRemove" ); } else { hiddenField.disabled = true; removeLink.innerHTML = page.bundle.getString( "filePicker.markForRemove" ); } Event.stop( e ); }; widget.FilePicker.togglePickerButton = function( pickerButton, enabled ) { if ( enabled ) { $( pickerButton ).setAttribute( "href", "#" ); $( pickerButton ).removeClassName( "disabled" ); } else { $( pickerButton ).removeAttribute( "href" ); $( pickerButton ).addClassName( "disabled" ); } }; /** * Removes the specified pending attachment. Should be called from an onclick handler on a link in the currently * attached files table */ widget.FilePicker.removePendingAttachment = function( event, removeLink, baseElementName ) { var e = event || window.event; if ( confirm( page.bundle.getString( "filePicker.doNotAttach.confirm" ) ) ) { removeLink = $( removeLink ); var row = removeLink.up( "tr" ); var tbody = row.up( "tbody" ); // Remove the pending row Element.remove( row ); // Re-index the local file inputs. tbody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = baseElementName + '_LocalFile' + index; } ); // Hide the whole attached files table if there are no more attached files. var rowTotal = tbody.getElementsByTagName( 'tr' ).length; if ( rowTotal === 0 ) { var listHtmlDiv = $( baseElementName + "_listHtmlDiv" ); if ( listHtmlDiv ) { listHtmlDiv.hide(); } } } Event.stop( e ); }; widget.FilePicker.getPermPickerUrl = function( csPickerUrl, path, pathElement ) { // reuse current file picker's url as fall back plan var baseUrl = csPickerUrl.split( "?" )[ 0 ]; var queryParams = csPickerUrl.toQueryParams(); if ( !queryParams.multipicker ) { queryParams.multipicker = 'true'; } if ( !path && pathElement ) { path = pathElement.value; } // if we have path, construct proper full url from scratch using the provided path & extracted principalId if ( path ) { var principalId = baseUrl.match( /\/webapps\/cmsmain\/.*picker\/([^\/]*)\/?/ ); baseUrl = "/webapps/cmsmain/picker"; if ( principalId ) { baseUrl += "/" + principalId[ 1 ]; } if ( baseUrl.charAt( baseUrl.length - 1 ) === '/' ) { baseUrl = baseUrl.slice( 0, baseUrl.length - 1 ); } baseUrl += path; } return baseUrl + "?" + $H( queryParams ).toQueryString(); }; widget.FilePicker.openPermPicker = function( event, csPickerUrl, pid, path, pathElement, callback ) { if ( !( pid && $( pid ) && $( pid ).type == 'radio' && $( pid ).checked ) ) { return false; } var permPickerUrl = widget.FilePicker.getPermPickerUrl( csPickerUrl, path, pathElement ); var remote = popup.launchPicker( permPickerUrl ); if ( remote ) { if ( callback ) { remote.opener.customHandler = callback; } else { remote.opener.customHandler = null; } } var e = event || window.event; if ( e ) { var eventElement = Event.element( e ); Event.stop( e ); } return false; }; /** * A registry of defined file pickers and methods to access this registry */ widget.FilePicker.filePickers = {}; widget.FilePicker.registerFilePicker = function( filePicker ) { widget.FilePicker.filePickers[ filePicker.baseElementName ] = filePicker; }; widget.FilePicker.unRegisterFilePicker = function( filePicker ) { delete widget.FilePicker.filePickers[ filePicker.baseElementName ]; }; widget.FilePicker.getFilePicker = function( baseElementName ) { return widget.FilePicker.filePickers[ baseElementName ]; }; /** * Cell generators for the current attached files table */ widget.FilePicker.cellGenerators = { fileName : function( filePicker, isLocal ) { var result = '<input type="hidden" name="' + filePicker.baseElementName + '_attachmentType" value="' + ( isLocal ? 'L' : 'C' ) + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_fileId" value="new">'; if ( isLocal ) { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.getFileName( filePicker.localFilePicker.value ) + '</span>'; } else { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.linkTitle + '</span>'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFile" value="' + filePicker.fileName + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFileUrl" value="' + filePicker.fullUrlToFile + '">'; if ( filePicker.showAddMetadata ) { result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadata" id="' + filePicker.baseElementName + '_CSMetadata_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataSync" id="' + filePicker.baseElementName + '_CSMetadataSync_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataFormat" id="' + filePicker.baseElementName + '_CSMetadataFormat_' + filePicker.xythosId + '" value="">'; } } return result; }, fileType : function( filePicker, isLocal ) { var result = null; if ( isLocal ) { result = page.bundle.getString( "filePicker.fileType.attachment" ); } else { result = page.bundle.getString( "filePicker.fileType.content" ); } return result; }, linkTitle : function( filePicker, isLocal ) { var linkTitle = ""; if ( isLocal ) { linkTitle = filePicker.getFileName( filePicker.localFilePicker.value ); } else { if ( filePicker.linkTitle ) { linkTitle = filePicker.linkTitle; } } return '<input type="text" name="' + filePicker.baseElementName + '_linkTitle" value="' + linkTitle + '" title="' + page.bundle .getString( "filePicker.nameOfLink" ) + " " + linkTitle + '">'; }, size : function( filePicker, isLocal ) { if ( !isLocal && filePicker.size ) { return '<input type="hidden" name="' + filePicker.baseElementName + '_size" value="' + filePicker.size + '"> ' + filePicker.size; } else { return ""; } }, fileAction : function( filePicker, isLocal ) { return widget.FilePicker.cellGenerators.fileActionEmbedOptions( filePicker, isLocal, true ); }, fileActionEmbedOptions_index : 0, // used to uniquely identify embed options form elements on the page. fileActionEmbedOptions : function( filePicker, isLocal, suppressOptions ) { var index = widget.FilePicker.cellGenerators.fileActionEmbedOptions_index++; var baseName = filePicker.baseElementName; var fileName = isLocal ? filePicker.getFileName( filePicker.localFilePicker.value ) : filePicker.linkTitle; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. var isType = { image : ( /gif|jpeg|png|tif|bmp|jpg/i ).test( ext ), videoQt : ( /qt|mov|moov|movie/i ).test( ext ), videoOther : ( /avi|mpg|mpeg|wmv|asf|wma|mpe/i ).test( ext ), real : ( /ra|ram|rm/i ).test( ext ), flash : ( /swa|swf/i ).test( ext ), audio : ( /aif|aiff|au|mp3|wav/i ).test( ext ), html : ( /html|htm/i ).test( ext ) }; var isMedia = isType.image || isType.videoQt || isType.videoOther || isType.flash || isType.audio; var result = ''; if ( isMedia ) { result += '<select id="' + baseName + '_specialAction' + index + '" name="' + baseName + '_specialAction"'; result += ' title="' + page.bundle.getString( "filePicker.specialAction.for" ) + " " + fileName + '">'; result += '<option value="LINK">' + page.bundle.getString( "filePicker.specialAction.link" ) + '</option>'; result += '<option value="EMBED">' + page.bundle.getString( "filePicker.specialAction.embed" ) + '</option>'; result += '</select>'; // Render the embed options (if not suppressed) if ( !suppressOptions ) { result += '<ul style="display: none;" class="nestedList smallControls liveArea liveArea-slim" id="' + baseName + '_embedOptions' + index + '">'; // Alignment var fid = baseName + 'align' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.alignment' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_l" name="' + fid + '" value="Left" checked> <label for="' + fid + '_l">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.left' ) + '</label>' + '<input type="radio" id="' + fid + '_c" name="' + fid + '" value="Center"> <label for="' + fid + '_c">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.center' ) + '</label>' + '<input type="radio" id="' + fid + '_r" name="' + fid + '" value="Right"> <label for="' + fid + '_r">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.right' ) + '</label></fieldset></div></li>'; // Placement fid = baseName + 'placement' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.placement' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.placement' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_a" name="' + fid + '" value="Above"> <label for="' + fid + '_a">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.above' ) + '</label>' + '<input type="radio" id="' + fid + '_b" name="' + fid + '" value="Below" checked> <label for="' + fid + '_b">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.below' ) + '</label></fieldset></div></li>'; // Dimensions if ( !isType.audio ) { fid = baseName + 'width' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.width' ) + '</label></div><div class="field"><input class="width" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; fid = baseName + 'height' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.height' ) + '</label></div><div class="field"><input class="height" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; } // Autoplay if ( !isType.image ) { fid = baseName + 'autostart' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.autostart' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.autostart' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Loop if ( !isType.image && !isType.real ) { fid = baseName + 'loop' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.loop' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.loop' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + baseName + 'loop' + index + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Control (radio) if ( isType.videoQt || isType.real ) { fid = baseName + 'controls' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.controls' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="Full" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="None"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Controls (drop down) if ( isType.videoOther || isType.audio ) { fid = baseName + 'controls' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="controls">' + '<option value="None">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_none' ) + '</option>' + '<option value="Mini">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_mini' ) + '</option>' + '<option value="Full" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.controls_full' ) + '</option>' + '</select></div></li>'; } // Quality if ( isType.flash ) { fid = baseName + 'quality' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.set_quality' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="quality">' + '<option value="Low">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_low' ) + '</option>' + '<option value="Medium">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_med' ) + '</option>' + '<option value="High">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_high' ) + '</option>' + '<option value="Best" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.quality_best' ) + '</option>' + '</select></div></li>'; } if ( isType.image ) { // URL fid = baseName + 'url' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.url' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25">' + '</div></li>'; // New Window fid = baseName + 'newwin' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.new_window' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.new_window' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label>' + '</fieldset></div></li>'; // Border fid = baseName + 'border' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.border' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="border">' + '<option value="0" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.none' ) + '</option>' + '<option value="1>1</option><option value="2">2</option><option value="3">3</option>' + '<option value="4">4</option></select></div></li>'; } // Alt text fid = baseName + 'alttext' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25" value=""></div><span class="fieldHelp clearfloats">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text.instructions' ) + '</span></li>'; result += '</ul>'; } } else { result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialAction" value="LINK">'; result += page.bundle.getString( "filePicker.specialAction.link" ); } // The index is used to find the correct request parameters on the backend. result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialActionIndex" value="' + ( isMedia && !suppressOptions ? index : -1 ) + '">'; if ( filePicker.shouldManagePermission && !isLocal ) { // permission management options var permissionCsPickerUrl = filePicker.csPickerUrl; if ( permissionCsPickerUrl.indexOf( 'multipicker=true' ) != -1 ) { var xythosId = filePicker.fileName.sub( '/xid-', '' ).strip(); if ( xythosId ) { permissionCsPickerUrl = permissionCsPickerUrl + '&preselectedItemId=' + xythosId; } } result += '<ul id="' + filePicker.baseElementName + '_imgSpecOptions" class="nestedList smallControls liveArea liveArea-slim">'; result += '<li>'; var pid = baseName + "_permissions" + index; var pickerButtonId = baseName + "_permissionPickerButton" + index; var permFileListName = baseName + '_csPermFileList' + index; result += '<input type="radio" name="' + pid + '" value="A" id="' + pid + '_all" checked="checked" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.all" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="O" id="' + pid + '_this" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.this" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="S" id="' + pid + '_manual" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', true)" />' + page.bundle .getString( "fm.permission.grant.manual" ); result += '<a id="' + pickerButtonId + '" class="button-4 disabled" style="margin:0 3px" onclick="widget.FilePicker.openPermPicker( event, \'' + permissionCsPickerUrl + '\', \'' + pid + '_manual\',\'' + filePicker.filePath + '\', null, widget.FilePicker.permPickerCallback.curry( \'' + baseName + '\', \'' + permFileListName + '\', ' + index + ' ) );">' + page.bundle .getString( "filePicker.browse" ) + '</a>'; result += '</li>'; result += '</ul>'; result += '<div id="' + permFileListName + '" style="display: none;"></div>'; } result += '<input type="hidden" name="' + baseName + '_permissionOptionsIndex" value="' + ( isType.html && !isLocal ? index : -1 ) + '">'; return result; }, remove : function( filePicker, isLocal ) { var result = '<a href="#" onclick="widget.FilePicker.removePendingAttachment(event, this, '; result += "'" + filePicker.baseElementName + "'"; result += ');">' + page.bundle.getString( "filePicker.doNotAttach" ) + '</a>'; return result; }, // attach CS file alignment to course item align : function(filePicker, isLocal) { var alignOptionsName = "csAlignedResources"; var html = '<label for="csAlignedResources" style="white-space:nowrap">' + '<input type="checkbox" id="' + alignOptionsName + '"' + ' name="' + alignOptionsName + '"' + ' value="' + filePicker.filePath + '"' + '/>' + ' ' + page.bundle.getString('wysiwyg.insert_picture.csalign') + '</label>'; return html; } }; widget.InlineSingleCSFilePicker = Class.create(); widget.InlineSingleCSFilePicker.prototype = { initialize : function( baseElementName, csPickerUrl, showAddMetadata, showSpecialAction ) { this.baseElementName = baseElementName; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.browseButton = $( baseElementName + '_csBrowse' ); this.fileEntry = $( baseElementName + '_CSFile' ); this.fileId = $( baseElementName + '_fileId' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_CSMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_CSMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_CSFileMetadataFormat' ); } Event.observe( this.browseButton, 'click', this.onCSBrowse.bindAsEventListener( this ) ); }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = "picker" + new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.inputEntryURLToSet = this.fileEntry; this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.linkName = this.fileId; if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, afterMD : function( metadata, synced, format ) { var metadataString = metadata.join( "#" ); this.selectedCSFileMetadata.value = metadataString; this.selectedCSFileMetadataSync.value = synced; this.selectedCSFileMetadataFormat.value = format; } }; /** * Inline single local file picker - $baseElementName_attachmentType - 'AL' or 'L' or '' - $baseElementName_localBrowse - * $baseElementName_fileId */ widget.InlineSingleLocalFilePicker = Class.create(); widget.InlineSingleLocalFilePicker.prototype = { initialize : function( baseElementName, currentAttachedFile, required, showSpecialAction ) { this.baseElementName = baseElementName; this.fileInput = $( baseElementName + '_chooseLocalFile' ); this.fileInputWrapper = $( this.fileInput.parentNode ); this.attachmentType = $( baseElementName + '_attachmentType' ); this.fullFileName = $( baseElementName + '_fileId' ); this.attachmentNameSpan = $( baseElementName + '_attachmentName' ); this.removeLink = $( baseElementName + '_removeLink' ); this.inputArea = $( baseElementName + '_inputArea' ); this.attachedFileArea = $( baseElementName + '_attachedFileArea' ); this.required = required; this.showSpecialAction = showSpecialAction; // Wire up events Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); Event.observe( this.removeLink, "click", this.onRemoveClick.bindAsEventListener( this ) ); Event.observe( this.fileInput.form, "submit", this.onSubmit.bindAsEventListener( this ) ); // Set up initial values if ( currentAttachedFile ) { this.setDefaultCurrentAttachedFile( currentAttachedFile ); } widget.InlineSingleLocalFilePicker.pickerMap[ baseElementName ] = this; }, setCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, file ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, setDefaultCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentType._defaultValue = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } this.fullFileName.value = file; this.fullFileName._defaultValue = file; this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; this.fullFileName.value = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, onAfterChooseFile : function( event ) { this.attachmentNameSpan.innerHTML = this.getFileName( this.fileInput.value, true ); this.attachmentType.value = 'L'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fileInput.value ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); Event.stop( event ); }, onRemoveClick : function( event ) { this.clearFileInput(); if ( this.attachmentType.value == 'AL' ) { this.removeHiddenField = document.createElement( 'input' ); this.removeHiddenField.type = 'hidden'; this.removeHiddenField.name = this.baseElementName + '_remove'; this.removeHiddenField.id = this.baseElementName + '_remove'; this.removeHiddenField.value = this.fullFileName.value; this.attachedFileArea.insertBefore( this.removeHiddenField, this.attachedFileArea.firstChild ); widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fullFileName.value ); } else { this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); } this.attachmentNameSpan.innerHTML = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); Event.stop( event ); }, clearFileInput : function() { var title = this.fileInput.title; Element.remove( this.fileInput ); this.fileInput = $( document.createElement( "input" ) ); this.fileInput.title = title; this.fileInput.type = "file"; this.fileInput.addClassName( "hiddenInput" ); this.fileInput.name = this.baseElementName + '_LocalFile0'; this.fileInput._defaultValue = ''; this.fileInputWrapper.insertBefore( this.fileInput, this.fileInputWrapper.firstChild ); Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); }, /** * Gets the file name based on the full file path. * * @param fullPath Fully-qualified path of file * @param isDecodedName (optional) Indicates that the filename has already been URL decoded */ getFileName : function( fullPath, isDecodedName ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return isDecodedName ? result : decodeURI( result ); }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.fullFileName.value == '' ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); Event.stop( event ); return; } } } }; widget.InlineSingleLocalFilePicker.pickerMap = {}; /** * Read Only File picker */ widget.ReadOnlyFilePicker = Class.create(); widget.ReadOnlyFilePicker.prototype = { /** * Creates a new file picker * * @param baseElementName the base name for the file picker elements */ initialize : function( baseElementName ) { this.baseElementName = baseElementName; this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } widget.ReadOnlyFilePicker.pickerMap[ baseElementName ] = this; } }; widget.ReadOnlyFilePicker.pickerMap = {}; widget.UserRoleSelect = Class.create(); widget.UserRoleSelect.prototype = { initialize : function( userSelectRoleDivStr, moveMsgJS, noRoleMsgJs ) { this.sourceValueName = "_left_values"; this.secondaryValueName = "_right_values"; this.primaryValueName = "_primary_value"; this.userSelectRoleDiv = $( userSelectRoleDivStr ); if ( this.userSelectRoleDiv ) { var selects = this.userSelectRoleDiv.getElementsByTagName( 'select' ); var inputs = this.userSelectRoleDiv.getElementsByTagName( 'input' ); var links = this.userSelectRoleDiv.getElementsByTagName( 'a' ); this.source = $( selects[ 0 ] ); this.primary = $( inputs[ 3 ] ); this.secondary = $( selects[ 1 ] ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); this.primaryValue = $( inputs[ 2 ] ); this.toPrimaryMove = $( links[ 0 ] ); this.toSecondaryMove = $( links[ 1 ] ); this.toSourceMove = $( links[ 2 ] ); Event.observe( this.toSourceMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, false, moveMsgJS, noRoleMsgJs ) ); Event.observe( this.toPrimaryMove, "click", this.switchPrimary.bindAsEventListener( this, moveMsgJS ) ); Event.observe( this.toSecondaryMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, true, moveMsgJS, noRoleMsgJs ) ); } }, switchPrimary : function( event, msg ) { var indx; indx = 0; var sourceArray = this.source; if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } if ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.getFromPrimary(); this.primaryValue.value = sourceArray.options[ indx ].value; this.primary.value = sourceArray.options[ indx ].text; sourceArray.options[ indx ].selected = false; sourceArray.options[ indx ] = null; sourceArray.options[ sourceArray.length ] = tmpOpt; } this.writeToSelectBoxValues( this.source, this.leftValues ); return false; }, getFromPrimary : function() { var primaryRoleField = this.primaryValue; var primaryField = this.primary; return new Option( primaryField.value, primaryRoleField.value ); }, writeToSelectBoxValues : function( selectBox, hiddenName ) { var i = 0; var values = ""; while ( i < selectBox.length ) { if ( i > 0 ) { values += ","; } values += selectBox.options[ i ].value; i++; } hiddenName.value = values; return true; }, switchUserRoleColumns : function( event, isSourceDest, msg, noRoleMsg ) { var indx; indx = 0; var sourceArray = this.source; var targetArray = this.secondary; if ( !isSourceDest ) // If we are moving from Dest to Source { var temp = sourceArray; sourceArray = targetArray; targetArray = temp; } if ( sourceArray.length <= 0 ) { alert( noRoleMsg ); return false; } if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } var rightIndex = 0; var targetLength = targetArray.length; while ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.cloneMultipleRows( sourceArray.options[ indx ] ); if ( targetLength > 0 ) { var i = targetLength; while ( i > 0 ) { var tmpOpt1 = this.cloneMultipleRows( targetArray.options[ i + rightIndex - 1 ] ); targetArray.options[ i + rightIndex ] = tmpOpt1; i--; } } sourceArray.options[ indx ].selected = false; targetArray.options[ rightIndex ] = tmpOpt; // targetArray.options[rigthIndex].selected=true; rightIndex = rightIndex + 1; sourceArray.options[ indx ] = null; } // end of while this.writeToSelectBoxValues( this.source, this.leftValues ); this.writeToSelectBoxValues( this.secondary, this.rightValues ); return false; }, cloneMultipleRows : function( opt ) { return new Option( opt.text, opt.value, opt.defaultSelected, opt.selected ); } }; widget.StepGroup = {}; widget.StepGroup.toggleStepGroup = function( e, activeTabStr ) { var event = e || window.event; var target = Event.findElement( event, 'li' ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); $( 'activeTabSpanId_' + tab.id ).innerHTML = activeTabStr; } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); $( 'activeTabSpanId_' + tab.id ).innerHTML = ""; } } ); Event.stop( event ); }; /** * Show a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.showStepGroup = function( number ) { var target = $( 'stepGroupTab_' + number ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; /** * Get the content block element to a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.getStepGroupContentBlock = function( number ) { var targetTab = $( 'stepGroupTab_' + number ); return $( targetTab.getAttribute( "bb:groupId" ) ); }; widget.StepGroup.showAllStepGroupsForSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } ); }; widget.StepGroup.revertAllStepGroupsAfterSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { if ( page.util.hasClassName( tab, 'active' ) ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } else { $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; widget.ShowUnsavedChanges = Class.create(); widget.ShowUnsavedChanges.prototype = { initialize : function( dataCollectionContainer, skipTextArea ) { widget.ShowUnsavedChanges.enabled = true; widget.ShowUnsavedChanges.registerOnValueChangeCallback( widget.ShowUnsavedChanges.showIconsForUnsavedChanges ); var container = $( dataCollectionContainer ); var inputs = $A( container.getElementsByTagName( 'input' ) ); var selects = $A( container.getElementsByTagName( 'select' ) ); var textareas = $A( container.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { input = $( input ); var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { input._defaultValue = input.checked; } else if ( type == 'hidden' || type == 'text' ) { input._defaultValue = input.value; } else { input._defaultValue = ''; } if ( type != 'hidden' && type != 'button' && type != 'submit' ) { input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); } }.bind( this ) ); selects.each( function( input ) // TODO: multiselect? { input = $( input ); input._defaultValue = input.selectedIndex; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); if ( !skipTextArea || !skipTextArea ) { textareas.each( function( input ) { input = $( input ); input._defaultValue = input.value; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); } } }; widget.ShowUnsavedChanges.onValueChangeCallback = function() { }; // do nothing widget.ShowUnsavedChanges.registerOnValueChangeCallback = function( callbackFunction ) { widget.ShowUnsavedChanges.onValueChangeCallback = callbackFunction; }; widget.ShowUnsavedChanges.dataElementsByStepGroup = {}; widget.ShowUnsavedChanges.onValueChange = function( event, elem ) { if ( widget.ShowUnsavedChanges.enabled ) { var dataElement = null; if ( event ) { dataElement = Event.findElement( event, 'li' ); } else { dataElement = elem.parentNode; while ( dataElement && dataElement.tagName.toLowerCase() != 'li' ) { dataElement = dataElement.parentNode; if ( dataElement.tagName.toLowerCase() == 'body' ) { dataElement = null; } } if ( dataElement ) { dataElement = $( dataElement ); } } if ( !dataElement ) { return; } var isDefault = true; var inputs = $A( dataElement.getElementsByTagName( 'input' ) ); var selects = $A( dataElement.getElementsByTagName( 'select' ) ); var textareas = $A( dataElement.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { isDefault &= ( input.checked == input._defaultValue ); } else if ( type == 'hidden' || type == 'text' ) { isDefault &= ( input.value == input._defaultValue ); } } ); selects.each( function( input ) // TODO: multiselect? { isDefault &= ( input.selectedIndex == input._defaultValue ); } ); textareas.each( function( input ) { isDefault &= ( input.value == input._defaultValue ); } ); // trigger call back function widget.ShowUnsavedChanges.onValueChangeCallback( isDefault, dataElement ); } }; widget.ShowUnsavedChanges.showIconsForUnsavedChanges = function( isDefault, dataElement ) { var imgs = dataElement.getElementsByTagName( 'img' ); var unsavedImg = null; for ( var i = 0; i < imgs.length; i++ ) { if ( imgs[ i ].className.indexOf( 'unsavedChangeImg' ) >= 0 ) { unsavedImg = $( imgs[ i ] ); break; } } if ( unsavedImg ) { if ( isDefault ) { dataElement.removeClassName( 'dirty' ); unsavedImg.hide(); } else { dataElement.addClassName( 'dirty' ); unsavedImg.show(); } widget.ShowUnsavedChanges.updateStepGroupIndicator(); } }; widget.ShowUnsavedChanges.updateStepGroupIndicator = function() { if ( widget.ShowUnsavedChanges.enabled ) { // Loop through each step group tab, and determine if an icon that indicates // unsaved changes should be displayed in the tab itself $$( '#dataCollectionContainer ul li.stepGroupTab' ).each( function( tab ) { var stepGroup = $( tab.getAttribute( "bb:groupId" ) ); var img = $( tab.getElementsByTagName( 'img' )[ 0 ] ); var link = $( tab.getElementsByTagName( 'a' )[ 0 ] ); var dataElements = widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ]; if ( !dataElements ) { dataElements = stepGroup.getElementsByTagName( 'li' ); widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ] = dataElements; } var dirtyCount = 0; for ( var i = 0; i < dataElements.length; i++ ) { //If the data element is hidden, we do not want to include it in the count of dirty //data elements. Doing so could result in the dirty image on the step group displaying //with no child data elements that display as dirty. if ( dataElements[ i ].hasClassName( "dirty" ) && dataElements[ i ].getStyle( "display" ) !== "none" ) { dirtyCount++; } } if ( dirtyCount > 0 && !tab.isDirty ) { img.show(); link.setStyle( { 'paddingLeft' : '20px' } ); tab.isDirty = true; } else if ( dirtyCount === 0 && tab.isDirty ) { img.hide(); link.setStyle( { 'paddingLeft' : '' } ); tab.isDirty = false; } } ); } }; // Call this when the value of a hidden data element changes that you want to // show an indicator for. Otherwise changing the value of the hidden element directly will // not cause an indicator to show. widget.ShowUnsavedChanges.changeHiddenValue = function( hiddenElem, value ) { hiddenElem.value = value; if ( widget.ShowUnsavedChanges.enabled ) { widget.ShowUnsavedChanges.onValueChange( null, hiddenElem ); } }; widget.ShowUnsavedChanges.enabled = false; /** * Supports a counter widget attached to a textbox -- it keeps track of the number of characters in the text box, and * updates a counter whenever that number changes. The counter turns red, and begins counting backwards, when the max * number of charters is exceeded. */ widget.TextBoxCounter = Class.create(); widget.TextBoxCounter.prototype = { /** * Contructor * * @param textBoxId The id of the textbox we're counting from * @param counterId The id of the element that countains the count * @param maxCharCount The max number of characters supported by this textbox * @param charactersRemainingLabel The label for the character count element * @param charactersOverLimitLabel The alternate label for the character element, for when the max # of characters * has been exceeded. */ initialize : function( textBoxId, counterId, maxCharCount, charactersRemainingLabel, charactersOverLimitLabel ) { this.textBoxElement = $( textBoxId ); this.counterElement = $( counterId ); this.maxCharCount = maxCharCount; this.countLabelElement = this.counterElement.up().childNodes[ 0 ]; this.charactersRemainingLabel = charactersRemainingLabel; this.charactersOverLimitLabel = charactersOverLimitLabel; // watch all keystrokes in the text area, and update the counter accordingly this.textBoxElement.observe( 'keyup', this.updateCount.bindAsEventListener( this ) ); // update the initial count this.updateCount(); this.registerCounter( textBoxId ); }, /** * Registers the current counter with the document, so that it can be accessed from anywhere on the page. * * @param id The id with which this counter can be accessed */ registerCounter : function( id ) { if ( !widget.TextBoxCounter.counters ) { widget.TextBoxCounter.counters = []; } widget.TextBoxCounter.counters[ id ] = this; }, /** * Update the counter. * * @param event The event that prompted this update, if any. */ updateCount : function( event ) { var chars = this.textBoxElement.value.length; // max character count exceeded if ( chars > this.maxCharCount ) { this.counterElement.update( chars - this.maxCharCount ).addClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersOverLimitLabel; } // max character count not exceeded else if ( chars <= this.maxCharCount ) { this.counterElement.update( this.maxCharCount - chars ).removeClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersRemainingLabel; } } }; widget.ColorPalettePicker = Class.create(); widget.ColorPalettePicker.prototype = { initialize : function( onChange, themeChangeElementId ) { widget.ColorPalettePicker.picker = this; this.onChange = onChange; var palettes = []; $A( $( 'paletteLibraryPanel' ).getElementsByTagName( 'li' ) ).each( function( li ) { if ( page.util.hasClassName( li, 'palette' ) ) { palettes.push( $( li ) ); } } ); this.palettes = palettes; this.libraryOpen = false; this.paletteLibraryPanel = $( 'paletteLibraryPanel' ); this.paletteLibraryButton = $( 'paletteLibraryButton' ); var updateHandler = this.updateCurrentSelection.bindAsEventListener( this ); // this.paletteLibraryPanel.toggleLibrary(); if ( this.palettes ) { this.palettes.each( function( palette ) { Event.observe( palette, "click", updateHandler ); } ); } if ( this.paletteLibraryButton ) { Event.observe( 'paletteLibraryButtonLink', "click", this.toggleLibrary.bindAsEventListener( this ) ); } if ( themeChangeElementId !== "" ) { Event.observe( themeChangeElementId, "change", this.changePaletteThemeTypeStyles.bindAsEventListener( this ) ); } }, changePaletteThemeTypeStyles : function( event ) { var dropdown = event.currentTarget; var themeExtRef = $F( dropdown ); var extRefToThemeTypeJson = $F( "themeExtRefToThemeTypeJson" ); var extRefToThemeTypeMap = this.convertJsonToObject( decodeURIComponent( extRefToThemeTypeJson ) ); var themeType = extRefToThemeTypeMap[themeExtRef]; var mapKey = null; this.palettes.each( function( palette ) { if( palette.id === "currentsystemthemecolorpalette" ) { mapKey = "theme_type_" + themeExtRef; } else { if( themeType !== null ) { mapKey = "theme_type_" + themeType; } else { mapKey = "theme_type_"; } } var styleJson = $F( palette.down('input[type=hidden]') ); var styleMap = this.convertJsonToObject( decodeURIComponent( styleJson ) ); var schemePreviewStyle = styleMap[mapKey]['schemePreview']; var schemePreviewHeadStyle = styleMap[mapKey]['schemePreviewHead']; var schemePreviewBodyStyle = styleMap[mapKey]['schemePreviewBody']; var modulePreviewStyle = styleMap[mapKey]['moduleBorder']; var modulePreviewHeadStyle = styleMap[mapKey]['moduleTitle']; var modulePreviewBodyStyle = styleMap[mapKey]['moduleBody']; palette.down('.schemePreview').writeAttribute("style", schemePreviewStyle); palette.down('.schemePreviewHead').writeAttribute("style", schemePreviewHeadStyle); palette.down('.schemePreviewBody').writeAttribute("style", schemePreviewBodyStyle); palette.down('.modulePreview').writeAttribute("style", modulePreviewStyle); palette.down('.modulePreviewHead').writeAttribute("style", modulePreviewHeadStyle); palette.down('.modulePreviewBody').writeAttribute("style", modulePreviewBodyStyle); }, this ); }, convertJsonToObject : function( json ) { if ( typeof ( JSON ) === 'object' && typeof ( JSON.parse ) === 'function' ) { return JSON.parse( json ); } else { return eval( '(' + json + ')' ); } }, toggleLibrary : function( event ) { var img = this.paletteLibraryButton.getElementsByTagName( 'img' )[ 0 ]; if ( this.libraryOpen ) { // Collapse the library. img.src = "/images/db/p.gif"; img.alt = page.bundle.getString( "dynamictree.expand" ); this.paletteLibraryPanel.hide(); this.libraryOpen = false; } else { // Expand the library. img.src = "/images/db/m.gif"; img.alt = page.bundle.getString( "dynamictree.collapse" ); this.paletteLibraryPanel.show(); this.libraryOpen = true; } // stop the event if exists; there will not be an event if called on page onLoad if ( event ) { Event.stop( event ); } }, selectColorPaletteByExtRef : function( extRef ) { var eventElement = $( extRef ); this.selectColorPaletteByElement( eventElement ); }, selectColorPaletteByElement : function( eventElement ) { this.palettes.each( function( p ) { if ( p.hasClassName( "selected" ) ) { p.removeClassName( 'selected' ); } } ); var selPal = eventElement; while ( selPal && selPal.tagName != 'LI' ) { selPal = selPal.parentNode; if ( selPal.tagName == 'BODY' ) { selPal = null; } } selPal.addClassName( 'selected' ); widget.ShowUnsavedChanges.changeHiddenValue( $( 'currentPaletteExtRef' ), selPal.id == 'currentsystemthemecolorpalette' ? '' : selPal.id ); eval( this.onChange ); $( 'currentPaletteLabel' ).update( $( selPal.id + '_label' ).innerHTML ); this.copyStyles( selPal.down( '.schemePreview' ), $( 'currentPalettePreview' ) ); this.copyStyles( selPal.down( '.schemePreviewHead' ), $( 'currentPalettePreviewHead' ) ); this.copyStyles( selPal.down( '.schemePreviewBody' ), $( 'currentPalettePreviewBody' ) ); this.copyStyles( selPal.down( '.modulePreview' ), $( 'currentModulePalettePreview' ) ); this.copyStyles( selPal.down( '.modulePreviewHead' ), $( 'currentModulePalettePreviewHead' ) ); this.copyStyles( selPal.down( '.modulePreviewBody' ), $( 'currentModulePalettePreviewBody' ) ); $( 'selectedPalette' ).show(); }, updateCurrentSelection : function( event ) { var eventElement = Event.element( event ); this.selectColorPaletteByElement( eventElement ); Event.stop( event ); }, copyStyles : function( s, d ) { d.style.cssText = s.style.cssText; } }; widget.ColorPalettePicker.picker = null; /** * node picker */ widget.MINodePicker = Class.create(); /** Constants used for the picker */ widget.MINodePicker.Constants = { EXISTING_NODE_SUFFIX : "", EXISTING_NODE_DELETE_SUFFIX : "", NEW_NODE_SUFFIX : "" }; widget.MINodePicker.prototype = { initConstants : function() { widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeSuffix" ); widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeDeleteSuffix" ); widget.MINodePicker.Constants.NEW_NODE_SUFFIX = page.bundle.getString( "nodePicker.const.newNodeSuffix" ); }, /** * Creates a new node picker * * @param baseElementName the base name for the node picker elements * @param pickerList the javascript object representing the picker list (of currently attached files) * @param allowMultipleSelect boolean indicating whether the picker should allow single or multiple select * @param entitlements comma delimited list of entitlement UIDs in which to check on node search * @param popupInstructions key value pair of bundle name and bundle key for instructions to be displayed in the pop * up * @param addPrimaryEntitlement Entitlement required to display primary radio button. * @param removeNodeEntitlement Entitlement required to display remove node link. */ initialize : function( baseElementName, pickerList, allowMultipleSelect, entitlements, popupInstructions, addPrimaryEntitlement, removeNodeEntitlement ) { this.initConstants(); this.baseElementName = baseElementName; this.allowMultipleSelect = allowMultipleSelect; this.entitlements = entitlements; this.nodePickerPopupButton = $( this.baseElementName + '_nodeBrowseButton' ); this.nodePickerUrl = "/webapps/blackboard/execute/institutionalHierarchy/nodePicker?cmd=openPicker&allowMultipleSelect=" + this.allowMultipleSelect + "&instructionKey=" + popupInstructions + "&entitlements=" + this.entitlements + "&addPrimaryEntitlement=" + addPrimaryEntitlement + "&removeNodeEntitlement=" + removeNodeEntitlement; Event.observe( this.nodePickerPopupButton, "click", this.onNodeBrowse.bindAsEventListener( this ) ); this.pickerList = pickerList; this.selectedNodesListContainer = $( this.baseElementName + '_listHtml' ); // make sure that all removedNodes are hidden var removedNodes = this.selectedNodesListContainer .getElementsBySelector( 'input[name=' + this.baseElementName + widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX + ']' ); removedNodes.each( function( node ) { node.up( 'tr' ).hide(); } ); var showList; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { showList = this.selectedNodesListContainer && this.pickerList && this.pickerList.tableBody && !this.pickerList.tableBody .empty(); } // For single node picker, the attached node is contained within a span element else { showList = this.selectedNodesListContainer && this.selectedNodesListContainer.select( "input.selectedNodeData" ) && this.pickerList; } if ( this.pickerList && this.pickerList.tableBody ) { // If no visible row then hide the table label and headers. if ( !this.pickerList.tableBody.select( "tr" ).any( function( row ) { return row.visible(); } ) ) { showList = false; } } this.showHideSelectedNodesList( showList ); widget.MINodePicker.registerNodePicker( this ); }, /** * Pop up the node search window from which to pick nodes */ onNodeBrowse : function( event ) { this.nodePickerWindow = null; var windowId = new Date().getTime(); if ( $( 'primaryNodeIdStr' ) ) { this.nodePickerUrl += '&primaryNodeIdStr=' + $F( 'primaryNodeIdStr' ); } if ( $( 'objectType' ) ) { this.nodePickerUrl += '&objectType=' + $F( 'objectType' ); } this.nodePickerWindow = popup.launchPicker( this.nodePickerUrl, windowId ); if ( this.nodePickerWindow ) { this.nodePickerWindow.opener.customHandler = this.onNodePick.bind( this ); } Event.stop( event ); }, /** * Callback called after node(s) have been selected from the node picker pop up. This method updates the UI list of * currently select nodes. * * @param selectedNodesObjArr The array of currently selected nodes from the picker */ onNodePick : function( selectedNodesObjArr ) { this.showHideSelectedNodesList( true ); var existingNodes; if ( this.allowMultipleSelect ) { // Array of existing selected nodes in the node picker list existingNodes = this.selectedNodesListContainer.down( "tbody" ).select( "input.selectedNodeData" ); } else { // Existing selected node in the node picker list for single node picker existingNodes = this.selectedNodesListContainer.select( "input.selectedNodeData" ); } // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. if ( selectedNodesObjArr && selectedNodesObjArr.length !== 0 ) { // Switch the radio button selection to Create hierarchy under the specified entity (for single node pickers) if ( $( "selectedRoot" ) ) { $( "selectedRoot" ).checked = true; } } /* * For each selected node, add the node to the list if it is a newly selected node, otherwise unhide the node if * it is an existing selection that has been marked for delete. Specifically: - If node is an existing selected * node and marked for delete and hidden, then unmark and show - If node is an existing selected node and not * marked for delete and showing, then do nothing - If node is a newly selected node and is not already there, add * the row - If node is a newly selected node and is already there, then do nothing */ selectedNodesObjArr.each( function( node ) { // See if the picked node is already in the list of nodes var existingNode; existingNodes.each( function( inputEle ) { if ( node.nodeIdStr === inputEle.value ) { existingNode = inputEle; if ( existingNode.disabled && existingNode.checked ) { // If its a disabled primary node then restore the value of it in hidden param. $( this.baseElementName + '_disabledPrimaryNode' ).value = node.nodeIdStr; } throw $break; } } ); // If not, then add this newly picked node to list if ( !existingNode ) { var primaryRadioChecked; var existingPrimaryNodeRadios = this.selectedNodesListContainer .select( 'input[name=' + this.baseElementName + '_PrimaryNode]' ); if ( existingPrimaryNodeRadios.all( function( radio ) { return !radio.checked; } ) ) { primaryRadioChecked = true; } // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { // This calls the cell generator methods for each column in the "currently selected nodes" list this.pickerList.addRow( this.baseElementName, node, this.nodePickerWindow, primaryRadioChecked ); } // For single node picker, the attached node is contained within a span element else { this.selectedNodesListContainer.innerHTML = ""; this.pickerList.cellGenerators.each( function( generator, index ) { var args = []; args.push( this.baseElementName, node, this.nodePickerWindow ); this.selectedNodesListContainer.innerHTML += generator.apply( window, args ); }.bind( this ) ); } } else { /* * If picked node is already in the list AND is an existing selected node that is marked for delete and * hidden, then unmark node and show in list. */ if ( existingNode.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ) ) { existingNode.name = existingNode.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ); if ( this.allowMultipleSelect ) { existingNode.up( "tr" ).show(); } } } }.bind( this ) ); }, /** * Shows or hides the selected nodes list * * @param show boolean to indicate show or hide */ showHideSelectedNodesList : function( show ) { if ( this.selectedNodesListContainer ) { return show ? this.selectedNodesListContainer.show() : this.selectedNodesListContainer.hide(); } } }; /** * Removes the specified node selection from the list. Should be called from an onclick handler on a link in the * currently selected nodes table. */ widget.MINodePicker.removeSelectedNode = function( event, removeLink, baseElementName ) { var e = event || window.event; // Have user confirm removal of selected node if ( confirm( page.bundle.getString( "nodePicker.nodeRemoveConfirmMsg" ) ) ) { var visibleRows = []; var picker = widget.MINodePicker.getNodePicker( baseElementName ); var hiddenNodeDataEle; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( picker.allowMultipleSelect ) { // Get references to DOM elements in the list removeLink = $( removeLink ); var rowToHideRemove = removeLink.up( "tr" ); var tbodyEle = rowToHideRemove.up( "tbody" ); hiddenNodeDataEle = rowToHideRemove.down( "input.selectedNodeData" ); var primaryNodeRadioSelector = 'input[name=' + baseElementName + '_PrimaryNode]'; var primaryNodeRadioInCurrentRow = rowToHideRemove.down( primaryNodeRadioSelector ); if ( primaryNodeRadioInCurrentRow ) { // Check if removed node is selected as a primary node if ( primaryNodeRadioInCurrentRow.checked ) { if ( primaryNodeRadioInCurrentRow.disabled ) { // A disabled primary node is removed from UI then nullify the value of hidden param storing its value. $( baseElementName + '_disabledPrimaryNode' ).value = ''; } else { // Get the next node which is not checked as primary and is enabled. var nextNode = picker.selectedNodesListContainer.select( primaryNodeRadioSelector ).find( function( radio ) { return ( !radio.checked && !radio.disabled && radio.up( 'tr' ).visible() ); } ); if ( nextNode ) { nextNode.checked = true; } else { // In case there's no next node with primary node radio button, then uncheck current primary manually primaryNodeRadioInCurrentRow.checked = false; } } } } // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); // hide rowToHideRemove.hide(); } // If is a newly selected node else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { // remove the row from the DOM Element.remove( rowToHideRemove ); } tbodyEle.select( "tr" ).each( function( row ) { if ( row.visible() ) { visibleRows.push( row ); } } ); } // For single node picker, the attached node is contained within a span element else { hiddenNodeDataEle = picker.selectedNodesListContainer.down( "input.selectedNodeData" ); // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); } // If is a newly selected node, clear the span content else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { picker.selectedNodesListContainer.innerHTML = ""; } } // If there are no more selected nodes, hide some UI elements if ( visibleRows.length === 0 ) { // Hide the whole selected nodes table picker.showHideSelectedNodesList( false ); // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. // Switch the radio button selection to Create hierarchy under the top level (for single node pickers) if ( $( "topLevelRoot" ) ) { $( "topLevelRoot" ).checked = true; } } } Event.stop( e ); }; /** * A registry of defined node pickers and methods to access this registry */ widget.MINodePicker.nodePickers = {}; widget.MINodePicker.registerNodePicker = function( nodePicker ) { widget.MINodePicker.nodePickers[ nodePicker.baseElementName ] = nodePicker; }; widget.MINodePicker.unRegisterNodePicker = function( nodePicker ) { delete widget.MINodePicker.nodePickers[ nodePicker.baseElementName ]; }; widget.MINodePicker.getNodePicker = function( baseElementName ) { return widget.MINodePicker.nodePickers[ baseElementName ]; }; /** * Cell generators for the currently selected nodes table. Mostly copies what is in multiInstNodePickerListElement.vm. */ widget.MINodePicker.cellGenerators = { /** * Dynamic rendering of a cell in the node "Name" column */ nodeName : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { var result = '<input type="hidden" name="' + pickerNameStr + widget.MINodePicker.Constants.NEW_NODE_SUFFIX + '" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData">'; result += '<img src="/images/ci/ng/entity_small.png" alt="">'; result += selectedNodeObj.nodeName; return result; }, /** * Dynamic rendering of a cell in the node "Primary Node" column */ nodePrimary : function( pickerNameStr, selectedNodeObj, nodePickerWindow, primaryRadioChecked ) { var result = '<input type="radio" id="' + selectedNodeObj.nodeIdStr + '_Primary' + '" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData"'; if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' ) { result += ' disabled'; } if ( primaryRadioChecked ) { result += ' checked'; } result += ' >'; // Since values of disabled radio element doesn't go through the request, adding hidden param here to store its // value. if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' && primaryRadioChecked ) { result += '<input type="hidden" id="' + pickerNameStr + '_disabledPrimaryNode" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" />'; } return result; }, /** * Dynamic rendering of a cell in the remove node column */ nodeRemove : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_canRemoveObject' ).value == 'true' ) { var result = '<img src="/images/ci/icons/x_ia.gif" alt="">'; result += '<a href="#" onclick="widget.MINodePicker.removeSelectedNode(event, this, '; result += "'" + pickerNameStr + "');"; result += '">' + page.bundle.getString( "nodePicker.nodeRemoveLabel" ); result += '</a>'; return result; } else { return ''; } } };

Take Test MC Exercises Punctuation Apostrophes.mht

Current Location

Take Test: MC Exercises: Punctuation: Apostrophes

Content

Assistive Technology Tips [opens in new window]

Instructions

Description
Instructions

Read the following instructions carefully!

In each of the following sentences, replace the underlined words with words that use apostrophes correctly. If the underlined words are correct, select "c," No change.

Multiple Attempts This Test allows multiple attempts.
Force Completion This Test can be saved and resumed later.

Collapse Question Completion Status:

1Question Incomplete 2Question Incomplete 3Question Incomplete 4Question Incomplete 5Question Incomplete 6Question Incomplete 7Question Incomplete 8Question Incomplete 9Question Incomplete 10Question Incomplete

Question 1

  1.   Human anatomys’s a difficult course, but it’s content is essential for medical and nursing students. Answer
    anatomys’; its
    anatomy’s; its
    No change.

10 points  

Question 2

  1.   Professor Saks’ discussion focused on the cerebellums functions of balance and position. Answer
    Saks’s; cerebellum’s
    Saks’; cerebellum’s
    No change.

10 points  

Question 3

  1.   Student’s took detailed notes so that they wouldn’t fall behind in the course. Answer
    Students; wouldn’t
    Students’; would’nt
    No change.

10 points  

Question 4

  1.   However, Mike and Jerry’s grades were among the lowest mens’ scores ever recorded. Answer
    Mike and Jerry’s; men’s
    Mike’s and Jerry’s; men’s
    No change.

10 points  

Question 5

  1.   Professor Saks emphasized that everybodys capable of achieving higher grades. Are you ready to improve yours? Answer
    everybody’s; yours
    everybodys’; your’s
    No change.

10 points  

Question 6

  1.   Through Dr. Murphys lecture, we discovered that the brain has four lobes’: frontal, parietal, occipital, and temporal. Answer
    Dr. Murphy’s; lobes
    Dr. Murphys’; lobe’s
    No change.

10 points  

Question 7

  1.   “Thats’ a good idea,” our instructors agreed, “the level of details’ astounding in those films.” Answer
    That’s; detail’s
    That’s; details
    No change.

10 points  

Question 8

  1.   Most of us got As on our midterm, which is an improvement over class scores in the 1990s. Answer
    As; 1990’s
    A’s; 1990’s
    No change.

10 points  

Question 9

  1.   By viewing a medical film on the TVs in the auditorium, we gained a better understanding of the skeletal and muscular systems’ components. Answer
    TV’s; system’s
    TVs’; systems
    No change.

10 points  

Question 10

  1.   Leah brought up her parents’s suggestion that we also watch the Department of Educations’s films. Answer
    parent’s; Department’s of Education’s
    parents’; Department of Education’s
    No change.

10 points  

 Save and Submit

Click Save and Submit to save and submit. Click Save All Answers to save all answers. Click Close Window to close window.

Links to Test Questions and Answers
Read question 1 Read answers for question 1 Read question 2 Read answers for question 2 Read question 3 Read answers for question 3 Read question 4 Read answers for question 4 Read question 5 Read answers for question 5 Read question 6 Read answers for question 6 Read question 7 Read answers for question 7 Read question 8 Read answers for question 8 Read question 9 Read answers for question 9 Read question 10 Read answers for question 10

@font-face { font-family: Utilicons; src:url(fonts/utilicons/utilicons-web-webfont.eot); } HTML { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } APPLET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OBJECT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IFRAME { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H1 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H2 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H5 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H6 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } P { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ABBR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ACRONYM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ADDRESS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BIG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CITE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CODE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DFN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } EM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } INS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } KBD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } Q { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } S { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SAMP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SMALL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRIKE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRONG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUB { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } VAR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FIELDSET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FORM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LABEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LEGEND { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CAPTION { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TBODY { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TFOOT { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } THEAD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TR { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TH { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } FONT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BACKGROUND: #fff } OL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } UL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } TABLE { BORDER-COLLAPSE: collapse } TH { FONT-WEIGHT: normal } CAPTION { TEXT-ALIGN: left } TH { TEXT-ALIGN: left } TD { TEXT-ALIGN: left } BLOCKQUOTE:before { CONTENT: "" } BLOCKQUOTE:after { CONTENT: "" } Q:before { CONTENT: "" } Q:after { CONTENT: "" } BLOCKQUOTE { QUOTES: "" "" } Q { QUOTES: "" "" } INPUT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } BUTTON { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } SELECT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } .field SELECT { MAX-WIDTH: 100% } .noLabelField SELECT { MAX-WIDTH: 100% } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px !important } .vtbegenerated IMG { FILTER: alpha(opacity=auto) !important; opacity: auto } .vtbegenerated UL { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated OL { LIST-STYLE-TYPE: decimal; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated LI { LIST-STYLE-POSITION: outside; DISPLAY: list-item } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL[type=circle] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type=disc] LI { LIST-STYLE-TYPE: disc } .vtbegenerated UL[type=square] LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 24px } .inlineVtbegenerated { DISPLAY: inline } .hideme { DISPLAY: none !important } .hidden { DISPLAY: none } .clearfloats { CLEAR: both } .hideoff { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; TOP: -1000px; LEFT: -10000px } .altHideoff1 { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; LEFT: -10000px } .boldme { FONT-WEIGHT: bold } .u_inlineStack { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > LI { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > DIV { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStack SELECT { MAX-WIDTH: 300px } .u_resetFont { FONT-SIZE: 100% } .u_reverseAlign { TEXT-ALIGN: right } .u_centerAlign { TEXT-ALIGN: center } .u_normalAlign { TEXT-ALIGN: left } .u_floatThis-right { FLOAT: right } .u_floatThis-left { FLOAT: left } .u_floatWrapper-right > DIV { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-right > LI { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-left > DIV { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LI { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LABEL { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_floatWrapper-right:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_controlsWrapper:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_clearFloatsWrapper > DIV { FLOAT: none !important } .u_clearFloatsWrapper > LI { FLOAT: none !important } .u_controlsWrapper { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .u_indent { MARGIN-LEFT: 24px !important } .u_scrollPanel-vertical { OVERFLOW-Y: auto } .u_panel-short { HEIGHT: 70px; MAX-HEIGHT: 100px } .u_panel-medium { HEIGHT: 70px; MAX-HEIGHT: 150px } .u_panel-long { HEIGHT: 70px; MAX-HEIGHT: 200px } HTML { HEIGHT: 100% } BODY { MIN-WIDTH: 1000px; HEIGHT: 100% } BODY.topFrame { OVERFLOW-Y: hidden; HEIGHT: 89px } BODY.filePicker { MIN-WIDTH: 400px } BODY.popup { MIN-WIDTH: 100% } .content-system-page { MIN-WIDTH: 780px } BODY.popup DIV.locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.csMenuFrame { MIN-WIDTH: 210px; WIDTH: 100% } BODY.popupMenu { MIN-WIDTH: 210px; WIDTH: 100% } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } H1 { FONT-WEIGHT: bold } H2 { FONT-WEIGHT: bold } H3 { FONT-WEIGHT: bold } H4 { FONT-WEIGHT: bold } H5 { FONT-WEIGHT: bold } H6 { FONT-WEIGHT: bold } STRONG { FONT-WEIGHT: bold } B { FONT-WEIGHT: bold } EM { FONT-STYLE: italic } TABLE.bouncer { WIDTH: 100% } TABLE.bouncer TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .brandingImgWrap { OVERFLOW: hidden } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { POSITION: relative; OVERFLOW-Y: hidden } .topTabs-compact { POSITION: relative } .topTabs .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs-compact .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs .tabWrapper-right .appTabs { FLOAT: right } .topTabs-compact .tabWrapper-right .appTabs { FLOAT: right } .breadcrumbs { POSITION: relative } .locationPane { POSITION: relative; MIN-WIDTH: 100%; ZOOM: 1; DISPLAY: inline-block; OVERFLOW: visible } .navigationPane { POSITION: absolute; WIDTH: 200px; ZOOM: 1; CLEAR: both; OVERFLOW: visible; TOP: 0px; LEFT: 0px } .menuWrap { POSITION: relative; ZOOM: 1 } .contentPane { MIN-WIDTH: auto; MARGIN: 0px 14px 0px 212px; ZOOM: 1; DISPLAY: block; OVERFLOW: visible } #puller { Z-INDEX: 3; POSITION: absolute } #puller A { WIDTH: 15px; DISPLAY: block; BACKGROUND: #ccc; HEIGHT: 30px } .contcollapsed { MARGIN-LEFT: 15px } .content { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .container { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .containerPortal { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .popup .container { MIN-HEIGHT: 400px } .container { OVERFLOW: visible } .containerOptions { OVERFLOW: visible } .column-1 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-2 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-3 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-4 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } column-5 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-1 { WIDTH: 100% } .column-2 { WIDTH: 50% } .column-3 { WIDTH: 33.3% } .column-4 { WIDTH: 25% } .column-5 { WIDTH: 20% } #lightbox .column-3 { MARGIN: 0px; MIN-HEIGHT: 200px !important } #lightbox .column-2 { MARGIN: 0px; MIN-HEIGHT: 200px !important } INPUT[type='submit'].submit { FONT-WEIGHT: bold } .mainButton A { FONT-WEIGHT: bold } .actionBarMicro .mainButton A { FONT-WEIGHT: bold } .rumble .mainButton > A { FONT-WEIGHT: bold } .rumble_top .mainButton > A { FONT-WEIGHT: bold } .button-1 { FONT-WEIGHT: bold } .button-1-img { FONT-WEIGHT: bold } .modeSwitchWrap { TOP: 6px; RIGHT: 0px; LEFT: auto } .modeSwitchWrap DIV { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .modeSwitch { POSITION: relative; DISPLAY: block; OVERFLOW: hidden } .read-on { MARGIN-RIGHT: 0px } A.read-off IMG { POSITION: absolute; BOTTOM: 0px; LEFT: 0px } A.read-on IMG { POSITION: absolute; BOTTOM: 0px; RIGHT: 0px } .switcherLabel { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .helpLink { POSITION: relative; TOP: 1px } .helpLink A.browseIcon { DISPLAY: inline-block } .vtbeSwitch { POSITION: relative; FLOAT: right } .vtbeSwitch SPAN { DISPLAY: inline-block } .fileInputWrapper { POSITION: relative; FLOAT: left; OVERFLOW: hidden } .fileInputWrapper INPUT.hiddenInput { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: right; FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 210%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px; opacity: 0 } .fileInputWrapper INPUT[type='file'] { FILTER: alpha(opacity=0) !important } .fileInputWrapper INPUT.visibleInput { Z-INDEX: 1; POSITION: relative; TOP: 0px; RIGHT: 0px } .frameResizeToggle { POSITION: absolute; BOTTOM: 0px; DISPLAY: block; OVERFLOW: hidden; LEFT: 0px; _top: 68px } A.colorChip { DISPLAY: inline-block } A.colorChip SPAN { DISPLAY: inline-block } .clearfix:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfixParent > *:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfix { DISPLAY: block } .clearfixParent > * { DISPLAY: block } INPUT[type='button'] { } INPUT[type='submit'] { } BUTTON { } FORM#content { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } .reorder { POSITION: absolute; CURSOR: move } .contextMenuContainer { ZOOM: 1 } .gbtable .contextMenuContainer { DISPLAY: inline } .gbtable_header .contextMenuContainer { DISPLAY: inline } .gbtable_header TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } .gbtable THEAD TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } A.cmimg { ZOOM: 1 } HTML { FONT: 300 0.78em "Lucida Grande", Arial, sans-serif } H1 { FONT-SIZE: 148% } H2 { FONT-SIZE: 123.1% } H3 { FONT-SIZE: 110% } H1 { MARGIN: 1em 0px } H2 { MARGIN: 1em 0px } H3 { MARGIN: 1em 0px } A { COLOR: #128fa8; TEXT-DECORATION: none } A:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } TABLE { FONT-SIZE: 100% } THEAD TH { FONT-WEIGHT: bold } #contentFrame { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } #schemePreview { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY.topFrame { BACKGROUND: #f7f7f7 } BODY.login-page { POSITION: relative; MIN-HEIGHT: 800px } BODY.popup { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } BODY.csMenuFrame { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } BODY.popupMenu { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } .csMenuFrame { FONT-SIZE: 95% } BODY.my-places-popup { MIN-WIDTH: 300px; WIDTH: auto; BACKGROUND: #fff } BODY.external-breadcrumbs { BACKGROUND-IMAGE: none } BODY.picker { MIN-WIDTH: 400px; BACKGROUND: #fff } .breadcrumbs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 9px; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .locationPane { MARGIN-TOP: 12px } BODY.picker .locationPane { MARGIN: 0px; DISPLAY: block } .csPicker .locationPane { DISPLAY: block } .navigationPane { MARGIN: 0px; WIDTH: 210px; TOP: 0px; LEFT: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .menuWrap { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .contentPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px 0px 222px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portalPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .popup .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .picker .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .course-tools-page #listContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 0px } .picker .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } .popup .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } #puller { Z-INDEX: 3; POSITION: absolute; BOTTOM: 1px; TOP: -1px; RIGHT: -8px; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A { BORDER-BOTTOM: #777 1px solid; POSITION: relative; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 8px; BACKGROUND: url(images/reorder_bg.png) #bbb repeat-y; HEIGHT: 100%; OVERFLOW: visible; BORDER-TOP: #777 1px solid; BORDER-RIGHT: #777 1px solid; opacity: 0; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0; box-shadow: 1px 0 3px rgba(0, 0, 0, 0.4) inset } .menuWrap:hover #puller A { FILTER: alpha(opacity=100); opacity: 1; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A:after { BORDER-BOTTOM: #666 1px solid; POSITION: absolute; FILTER: alpha(opacity=0) !important; BORDER-LEFT: #666 0px solid; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1; BACKGROUND-COLOR: #777; PADDING-LEFT: 1px; PADDING-RIGHT: 6px; DISPLAY: none !important; COLOR: #fff; FONT-SIZE: 180%; BORDER-TOP: #666 1px solid; CONTENT: "\2190"; TOP: 200px; RIGHT: -30px; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 3px; opacity: 0; -webkit-transition: opacity .5s ease-in-out; -moz-transition: opacity .5s ease-in-out; border-radius: 0 12px 12px 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, .5); transition: opacity .5s ease-in-out } .pullcollapsed#puller A { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #00add0; opacity: 1 } #puller A:hover { BACKGROUND-COLOR: #777 } #puller A IMG { POSITION: relative; FILTER: alpha(opacity=0)\9; PADDING-BOTTOM: 3px; PADDING-LEFT: 1px; WIDTH: 12px; PADDING-RIGHT: 6px; BACKGROUND: url(images/menu_expand_rtl.gif) no-repeat 0px 0px; HEIGHT: 24px; TOP: 200px; RIGHT: -9px; PADDING-TOP: 3px } .pullcollapsed#puller A:hover { BACKGROUND-COLOR: #777; -webkit-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller A:after { CONTENT: "\2192"; opacity: 0 } .pullcollapsed#puller A:hover:after { opacity: 1 } #puller A:hover:after { opacity: 1 } .pullcollapsed#puller A:hover IMG { FILTER: alpha(opacity=100) } #puller A:hover IMG { FILTER: alpha(opacity=100) } .pullcollapsed#puller A:hover IMG { BACKGROUND: url(images/menu_collapse_rtl.gif) no-repeat 0px 0px } .navcollapsed { MARGIN-LEFT: -210px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller { RIGHT: -10px; opacity: 1; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navcollapsed .menuWrap { DISPLAY: block !important } .contcollapsed { MARGIN-LEFT: 12px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #topFrame { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .bgBanner { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .brandingImgWrap { HEIGHT: 46px } .brandingImgWrap A { MARGIN: 8px 12px 0px; DISPLAY: inline-block } .bannerImage { MAX-HEIGHT: 35px } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #555; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 89px; PADDING-TOP: 0px; -moz-box-shadow: 0 -6px 17px #333 inset; -webkit-box-shadow: 0 -6px 17px #333 inset } .topTabs-compact { HEIGHT: 47px } .tabWrapper-left { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-center { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-right { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .appTabs { POSITION: relative; WIDTH: auto } .topTabs-compact .tabWrapper-left { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-center { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-right { PADDING-TOP: 20px } #topTab { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A SPAN { BORDER-BOTTOM: transparent 1px dotted; PADDING-BOTTOM: 1px } .topTabs-compact .appTabs A SPAN { PADDING-BOTTOM: 0px } .appTabs A:hover { COLOR: #fff } .appTabs A:focus { COLOR: #fff } .appTabs A:hover SPAN { BORDER-BOTTOM: #fff 1px double } .appTabs A:focus SPAN { BORDER-BOTTOM: #fff 1px double } #topTabActive { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:hover { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:focus { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:hover SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:focus SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .topTabs-compact .appTabs .active .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs .active A:hover .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs A { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:hover { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:focus { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .round1 A { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .round2 A { -moz-border-radius: 12px 12px 0 0; -webkit-border-radius: 12px 12px 0 0; border-radius: 12px 12px 0 0 } .topGlobalLinks { TEXT-ALIGN: right; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); FLOAT: right; FONT-SIZE: 90%; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .topGlobalLinks UL { Z-INDEX: 1001 } .topGlobalLinks UL LI { MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; COLOR: #ccc } .loggedInAs { POSITION: relative; FONT: italic 100% Georgia; COLOR: #999; BORDER-TOP: 0px } .loggedInAs IMG { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 18px !important; PADDING-RIGHT: 1px; DISPLAY: inline-block; HEIGHT: 18px !important; TOP: -2px; RIGHT: -9px; PADDING-TOP: 1px; LEFT: auto } .loggedInAs SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: inline-block; PADDING-TOP: 6px } .topGlobalLinks A { BACKGROUND-IMAGE: none !important; MIN-WIDTH: 18px; TEXT-ALIGN: left; PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline-block; COLOR: #ccc; PADDING-TOP: 6px } .topGlobalLinks UL LI:first-child A { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks UL LI:first-child { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks A .link-icon { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); WIDTH: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; FLOAT: right; HEIGHT: 16px; OVERFLOW: hidden } .topGlobalLinks .myPlaces .link-icon { BACKGROUND-POSITION: -113px 0px } .topGlobalLinks .myPlaces:hover .link-icon { BACKGROUND-POSITION: -113px -16px } .topGlobalLinks .home .link-icon { BACKGROUND-POSITION: -129px 0px } .topGlobalLinks .home:hover .link-icon { BACKGROUND-POSITION: -129px -16px } .topGlobalLinks .logout .link-icon { DISPLAY: none } .topGlobalLinks .logout { PADDING-BOTTOM: 6px; TEXT-INDENT: 0px; PADDING-LEFT: 9px; WIDTH: auto !important; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .topGlobalLinks .help .link-icon { BACKGROUND-POSITION: -145px 0px } .topGlobalLinks .help:hover .link-icon { BACKGROUND-POSITION: -145px -16px } .topGlobalLinks A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topGlobalLinks A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topTabs-compact .loggedInAs SPAN { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks A { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks .logout { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } UL.nav LI.sub UL.narrow LI A { TEXT-INDENT: -5px; FONT-SIZE: 90% } .hotItems { Z-INDEX: 10000; POSITION: relative; WIDTH: 240px; FLOAT: right; HEIGHT: 28px; COLOR: #666; MARGIN-LEFT: 6px; FONT-SIZE: 90% } .topTabs-compact .hotItems { DISPLAY: none } .hotItems .hotLinks { POSITION: absolute; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; MAX-HEIGHT: 46px; OVERFLOW: auto; RIGHT: 0px; PADDING-TOP: 4px; LEFT: 0px; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; border-radius: 0 0 0 4px } .hotItems .hotLinks LI { DISPLAY: inline } .hotItems .hotLinks A { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT: italic 100% Georgia; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; TEXT-DECORATION: none; PADDING-TOP: 3px } .hotItems .hotLinks LI:after { POSITION: relative; COLOR: #999; CONTENT: "\2022"; RIGHT: 1px } .hotItems .hotLinks LI A:hover { COLOR: #eee; TEXT-DECORATION: underline } .path { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px } .breadcrumbs .noToggle { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .simplePath LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .path .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .path .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .simplePath .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .path A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .simplePath A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .path A:hover { COLOR: #333; TEXT-DECORATION: underline } .simplePath A:hover { COLOR: #333; TEXT-DECORATION: underline } .path .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .simplePath .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .path .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .simplePath .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .path .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='course_id']:before { CONTENT: "H" } .simplePath .root A[href*='course_id']:before { CONTENT: "H" } .path .root A[href*='admin']:before { CONTENT: "S" } .simplePath .root A[href*='admin']:before { CONTENT: "S" } .path .root A[href*='tabId=']:before { CONTENT: "m" } .simplePath .root A[href*='tabId=']:before { CONTENT: "m" } .path .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .simplePath .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .simplePath .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .path .root A:hover:before { COLOR: #888 } .simplePath .root A:hover:before { COLOR: #888 } .path .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .simplePath .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .path LI.contextPath { PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contextPath > DIV { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath > DIV:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath:hover > DIV { opacity: 1 } .contextPath:hover > DIV:hover { opacity: 1 } .contextPath A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .courseArrow A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .contextPath A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .contextPath A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow { DISPLAY: inline-block } .courseArrow A { DISPLAY: inline-block } .coursePath:hover .courseArrow { opacity: 1 } .banner + .breadcrumbs { BACKGROUND-COLOR: inherit; MARGIN: 0px } .breadcrumb-controls { FLOAT: right } .content { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #contentArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } #schemePreviewBody { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .contentBox { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .popup .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .picker .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .portal .contentBox { -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15) } #contentArea { MARGIN: 0px; COLOR: #444 } .container { MARGIN: 0px; COLOR: #444 } .containerOptions { MARGIN: 0px; COLOR: #444 } .containerPortal { MARGIN: 0px; COLOR: #444 } .containerPortal { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .portal .container { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .containerOptions .searchbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } .containerOptions .liveArea { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } #addFolderForm { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } DIV.okContainer { POSITION: relative; PADDING-BOTTOM: 60px } DIV.ok DIV.container { POSITION: relative; PADDING-BOTTOM: 60px } .collabContainer { POSITION: relative; PADDING-BOTTOM: 60px } .column-1 { MARGIN: 6px 0px 0px } .column-2 { MARGIN: 6px 0px 0px } .column-3 { MARGIN: 6px 0px 0px } .column-4 { MARGIN: 6px 0px 0px } .column-5 { MARGIN: 6px 0px 0px } .leftColumn-narrow { MARGIN: -20px 0px 0px -30px; WIDTH: 22%; FLOAT: left; OVERFLOW: auto; BORDER-RIGHT: #ccc 3px double } .picker .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .picker #bb-question-discover .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .rightColumn-narrow { WIDTH: 22%; FLOAT: right; MARGIN-LEFT: 1% } .rightColumn-wide { WIDTH: 74%; FLOAT: right } .leftColumn-wide { BORDER-LEFT: #ccc 3px double; WIDTH: 76%; FLOAT: left; MARGIN-LEFT: -3px } .picker .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker #bb-question-discover .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker .leftColumn-wide H1 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #bb-question-discover .leftColumn-wide { BORDER-LEFT: #ccc 3px double; MARGIN: -20px -20px 0px -3px; WIDTH: 80% } #bb-question-discover .leftColumn-wide + .leftColumn-wide { BORDER-LEFT: medium none; MARGIN: 0px; WIDTH: auto } #bb-question-discover .leftColumn-narrow { WIDTH: 24% } .leftColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .rightColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .leftColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .rightColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .columnPalette H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .leftColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .rightColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .leftColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } .rightColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } A.itemHead:hover { TEXT-DECORATION: underline } .leftColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .rightColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .leftColumn-narrow H3.hideoff { MARGIN: 0px } .leftColumn-narrow .columnPalette:first-child { BORDER-TOP: 0px } .paletteGroup { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .columnPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .paletteGroup DIV.columnPalette { BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .paletteItems { MARGIN: 0px 0px 4px; FONT-SIZE: 95% } .paletteItems LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 16px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } .paletteItems DIV { MARGIN: 0px 0px 0px 16px } #searchForm .paletteItems LI { MARGIN: 0px 0px 0px 24px } .paletteItems LI A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 110%; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .paletteItems LI LABEL { PADDING-LEFT: 21px; DISPLAY: inline-block } .picker .paletteItems LI LABEL { FONT-SIZE: 94% } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } UL.paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI:hover { BACKGROUND: #fff } .paletteItems LI A:hover { TEXT-DECORATION: underline } .paletteItems LI.selectedItem { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.selectedItem:hover { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active:hover { BACKGROUND: #fff4bf; COLOR: #000 } .columnActions UL LI A { DISPLAY: block } #copyright { POSITION: relative; MARGIN: 16px 0px 0px 9px; DISPLAY: inline-block; FONT-SIZE: 82% } .newCopyright { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 12px; PADDING-TOP: 20px } .logo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .legal { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .additionalInfo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 0px; MIN-HEIGHT: auto; PADDING-LEFT: 9px; PADDING-RIGHT: 12px; PADDING-TOP: 9px } .logo { POSITION: absolute; MARGIN-TOP: -20px; LEFT: 0px } .logo IMG { WIDTH: 45px } .additionalInfo { FLOAT: none } .legal P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P:first-child { PADDING-BOTTOM: 0px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } .additionalInfo P:first-child:after { POSITION: relative; COLOR: #ccc; CONTENT: "\2022"; RIGHT: -1px } .additionalInfo P:first-child A { PADDING-RIGHT: 12px } .additionalInfo P:first-child A:hover { BACKGROUND: url(images/micro_popup.png) no-repeat right 2px } .productTitle A { TEXT-ALIGN: right; LINE-HEIGHT: 1.1em; DISPLAY: block; COLOR: #333; FONT-SIZE: 125%; FONT-WEIGHT: bold; TEXT-DECORATION: none } .productTitle A:hover { TEXT-DECORATION: underline } .additionalInfo A:hover { TEXT-DECORATION: underline } .copyrightDetailContents { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #777; MARGIN: 0px; MIN-HEIGHT: 5em; PADDING-LEFT: 24px; WIDTH: 740px; PADDING-RIGHT: 24px; DISPLAY: none; COLOR: #fff; CLEAR: left; BORDER-TOP: #555 1px solid; TOP: 0px; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 12px; LEFT: 0px; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); border-radius: 3px } .productImg { MARGIN-TOP: 5px; FLOAT: left } .copyrightDetailContents UL { TEXT-ALIGN: left; MARGIN: 4px 0px 0px 24px; FLOAT: left } .copyrightDetailContents UL LI SPAN { FONT-WEIGHT: bold } A.closeCopyright { POSITION: relative; FLOAT: right; TOP: -5px; RIGHT: -16px } .contentBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 1em; MARGIN: 0px 1em 0.6em; PADDING-LEFT: 1.4em; PADDING-RIGHT: 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0.6em } .contentBlock H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; MARGIN: 0px 0px 1em; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .contentBlock UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentBlock UL.threeCol { WIDTH: 30%; FLOAT: left } .contentBlock UL.threeCol LI { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px 3px; FLOAT: none; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contentBlock UL.threeCol LI A { BACKGROUND-IMAGE: none } .contentBlock UL.threeCol LI A:hover { TEXT-DECORATION: underline } .contentBlock UL.threeCol LI A:focus { TEXT-DECORATION: underline } .contentBlock H3 INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock H3 SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock OL LI INPUT[type='checkbox'] { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .contentBlock H3 A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock INPUT.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } DIV.landingListWrapper { TEXT-ALIGN: center; MARGIN: 1.6em 0px 0px } DIV.landingListWrapper UL.landingList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI { TEXT-ALIGN: left; MARGIN: 0px 0px 1.6em; WIDTH: 50% } DIV.landingListWrapper UL.landingList-2cols LI { TEXT-ALIGN: left; MARGIN: 0px 3em 1.6em 0px; WIDTH: 45%; FLOAT: left } DIV.landingListWrapper UL.landingList LI.restart { MARGIN-TOP: -13.6em } DIV.landingListWrapper UL.landingList LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList-2cols LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList LI UL { LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em } DIV.landingListWrapper UL.landingList LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; CLEAR: left; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #000; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .containerLanding { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } DIV.landing DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } BODY.landingBody DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } .inst-email DIV.landing DIV.container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } DIV.landingPageColumn { PADDING-BOTTOM: 0px; MARGIN: 1.2em 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .twoCol { MARGIN: 1.2em 0px; WIDTH: 49% } .threeCol { MARGIN: 1.2em 0px; WIDTH: 32.5% } .landingPageColumn UL { MARGIN: 0px 0px 0px 30px } .landingPageColumn .outcomesLanding { PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI { TEXT-ALIGN: left; MARGIN: 0px 0px 2.2em } .inst-email .landingPageColumn UL LI { MARGIN: 0px } .landingPageColumn .outcomesLanding LI { MARGIN: 0px 0px 1.2em } .landingPageColumn UL LI A { TEXT-DECORATION: none } .landingPageColumn UL LI A:hover { TEXT-DECORATION: underline } .landingPageColumn H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI H3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 115%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } .landingPageColumn .outcomesLanding LI P { BORDER-TOP: 0px } .landingPageColumn H3 IMG { MARGIN: 0px 0px 0px -12px } .landingPageColumn H3.hiddenlink IMG { POSITION: absolute; FILTER: alpha(opacity=40); TOP: 0px; LEFT: 1.1em; opacity: .4 } .landingPageColumn UL LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em; PADDING-LEFT: 1.6em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #555; PADDING-TOP: 1px } .landingPageColumn UL LI UL LI.more { PADDING-TOP: 3px } .landingPageColumn UL LI UL LI.more A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; COLOR: #555; PADDING-TOP: 0px } .landingPageColumn UL LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn H3.hiddenlink { POSITION: relative; PADDING-BOTTOM: 0.6em; PADDING-LEFT: 4.2em; PADDING-RIGHT: 1.2em; PADDING-TOP: 1em } .landingPageColumn H3.hiddenlink A { COLOR: #777; TEXT-DECORATION: none } .landingPageColumn H3.hiddenlink A:hover { COLOR: #777; TEXT-DECORATION: none } .subhead_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #333; FONT-SIZE: 90%; PADDING-TOP: 0px } .list_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 1.3em; PADDING-RIGHT: 2px; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .landingPageColumn .outcomesLanding .list_text A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 3px; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; HEIGHT: 360px; OVERFLOW: auto; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.datalist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.landingPageColumn UL LI UL.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 250px; OVERFLOW: auto; BORDER-TOP: medium none; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.datalistScroll LI { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: white; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.datalistScroll LI:hover { BACKGROUND-COLOR: #ffc } DIV.landingPageColumn UL LI UL.datalistScroll LI:focus { BACKGROUND-COLOR: #ffc } DIV.datalist TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } DIV.datalistScroll TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } .emptylist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: white; MARGIN: 6px 0px 0px 1.4em; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 12px } DIV.landingPageColumn UL LI UL.subcaret { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.subcaret LI { PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.complete { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_complete_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.inprogress { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_active_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } .iconLegendLabel { MARGIN: 1px 0px 1px 1.6em; FONT-SIZE: 95% } DIV.landingPageColumn UL LI UL.subcaret LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI UL.datalist LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI DIV A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI TABLE A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI P A { TEXT-DECORATION: underline } .genericButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .genericButtonImg { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browse { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browseIcon { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } INPUT[type='submit'].submit { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble_top A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paging A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .itemHeaderControl A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .actionMenuButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paletteSearch .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } H3#cs_search + UL DIV.none:first-child .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .mainButton H2 { MARGIN: 0px; FONT-SIZE: 100% } .secondaryButton H2 { MARGIN: 0px; FONT-SIZE: 100% } #primaryButton { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble_top .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1 { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1-img { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } #secondaryButton { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2 { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2-img { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } #secondaryButton { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .sub A IMG { MARGIN: -2px -4px 0px 0px } .sub .button-1 IMG { MARGIN: -2px -4px 0px 0px } .sub .button-2 IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton A IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton .button-2 IMG { MARGIN: -2px -4px 0px 0px } .mainButton A { DISPLAY: block } .secondaryButton A { DISPLAY: block } .actionBar .button-1 { DISPLAY: block } .actionBar .button-2 { DISPLAY: block } .mainButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .mainButton H2 > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .secondaryButton > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .secondaryButton H2 > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .sub.mainButton A { PADDING-RIGHT: 12px } .sub.secondaryButton A { PADDING-RIGHT: 12px } .mainButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A { FONT-WEIGHT: 600 } .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 30px } .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 30px } .popup .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .popup .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .genericButtonImg { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } INPUT[type='submit'].genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browse { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browseIcon { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .paging A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .itemHeaderControl > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .actionMenuButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } #toolsSearchBox + .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .treeContainer .tree LI A.button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .threadButtons .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .dbThreadInfo .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .containerOptions INPUT.genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-2 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-3 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-4 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'] { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'].submit { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='button'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .genericButtonImg { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-3-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .itemHeaderControl A { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .browseIcon { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .genericButtonImg { DISPLAY: inline-block !important } INPUT[type='submit'].genericButton { FONT-WEIGHT: bold } .button-3 { FONT-WEIGHT: bold } .searchbar INPUT[type='submit'].genericButton { FONT-WEIGHT: normal } .u_reverseAlign#editGradeActionList A.genericButton { DISPLAY: inline-block; MARGIN-BOTTOM: 5px } .genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .threadButtons .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .dbThreadInfo .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img.contextArrow:hover { box-shadow: none } .button-4-img.contextArrow:focus { box-shadow: none } .paletteSearch .button-4:hover { BACKGROUND-IMAGE: none !important } .paletteSearch .button-4:focus { BACKGROUND-IMAGE: none !important } .button-5 { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5-img { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5:hover { BACKGROUND: #ededed; COLOR: black } .button-5-img:hover { BACKGROUND: #ededed; COLOR: black } .button-6 { TEXT-DECORATION: none } .mainButton A.disabled { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .rumble A { DISPLAY: block } .rumble_top A { DISPLAY: block } .rumble .sub A IMG { MARGIN: -2px -1px 0px 3px } .rumble_top .sub A IMG { MARGIN: -2px -1px 0px 3px } .paging A { DISPLAY: inline-block } .rumble_top .inventory_paging .gotolink { DISPLAY: inline-block } .rumble .inventory_paging .gotolink { DISPLAY: inline-block } .listItemSelect { MARGIN: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #555 } #threadArea .listItemSelect { MARGIN: 0px } .rumble_top .listItemSelect { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 4px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .listItemSelect { PADDING-BOTTOM: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .rumble .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble_top .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble .listItemSelect A:hover { TEXT-DECORATION: none } .rumble_top .listItemSelect A:hover { TEXT-DECORATION: none } .listItemSelect LABEL { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline; PADDING-TOP: 0px } .listItemSelect SELECT { FONT-SIZE: 95% } INPUT.calcButton { MARGIN: 2px 0px; WIDTH: 2em; DISPLAY: inline-block } INPUT#width { WIDTH: 5em } INPUT#height { WIDTH: 5em } SELECT#border { WIDTH: 5em } SELECT#controls { WIDTH: 5em } .smallControls INPUT[type='text'].width { WIDTH: 5em } .smallControls INPUT[type='text'].height { WIDTH: 5em } .smallControls SELECT.quality { WIDTH: auto } .smallControls SELECT.controls { WIDTH: auto } .smallControls SELECT.border { WIDTH: auto } .actionBarMicro .mainButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .secondaryButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .mainButton A IMG { MARGIN: 0px } .actionBarMicro .secondaryButton A IMG { MARGIN: 0px } .actionBarMicro A SPAN IMG { VISIBILITY: hidden } .actionBar A SPAN IMG { VISIBILITY: hidden } .actionBarMicro .access-reorder { -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .actionBarMicro A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBar A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBarMicro #quickViewLink A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #shortcutView A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #quickViewLink A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#quickViewLink A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #shortcutView A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#shortcutView A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #addCmItem > A SPAN { BACKGROUND-POSITION: -16px 0px } .actionBarMicro #detailViewLink2 UL LI A { WIDTH: 90px } .actionBarMicro #addCmItem:hover > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro .active#addCmItem > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro #detailViewLink A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #folderView A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #detailViewLink2 A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #folderView A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#folderView A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #courseMapButton A SPAN { BACKGROUND-POSITION: -48px 0px } .actionBarMicro #courseMapButton A:hover SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro .active#courseMapButton A SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro #refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshView A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshMenuLink A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro #refreshView A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshView A SPAN { BACKGROUND-POSITION: -64px -16px } A.access-reorder SPAN { BACKGROUND-POSITION: -80px 0px } A.access-reorder:hover SPAN { BACKGROUND-POSITION: -80px -16px } A.active.access-reorder SPAN { BACKGROUND-POSITION: -80px -16px } .actionBar .sub A .chevron { BACKGROUND-POSITION: -95px 0px } .actionBar .sub:hover A .chevron { BACKGROUND-POSITION: -95px -16px } .actionBar .sub A:focus .chevron { BACKGROUND-POSITION: -95px -16px } .actionBarMicro .active > A { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:hover { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:focus { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } A.liveAreaTab:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub H2 > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .mainButton.sub:hover H2 > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang H2:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang:hover H2:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub:hover > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .actionBarMicro UL:hover + UL .active A:after { DISPLAY: none } A.liveAreaTab:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang H2:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang:hover H2:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .sub:hover > A:after { BORDER-BOTTOM-COLOR: #d1eaef } .columnActions.actionBarMicro { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 3px } .alignPanel LI.sub { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .alignPanel LI.sub A.button-4:after { CONTENT: none } .columnActions UL { MARGIN: 0px 0px 2px } .columnActions .mainButton A { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .columnActions .mainButton A:hover { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .modeSwitchWrap { DISPLAY: inline-block; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; FONT-WEIGHT: bold; BORDER-RIGHT: transparent 1px dotted } .modeSwitch { PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: #ccc; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -moz-border-radius: 16px; -webkit-border-radius: 16px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); border-radius: 16px } .modeSwitch:before { POSITION: relative; LINE-HEIGHT: 0.9; COLOR: #bbb; FONT-SIZE: 22px; VERTICAL-ALIGN: middle; CONTENT: "\2022"; TOP: -1px; FONT-WEIGHT: normal; MARGIN-RIGHT: 2px; LEFT: 0px; font-effect: outline } .read-on { BACKGROUND-COLOR: #777; MARGIN-RIGHT: 0px } .read-on:hover { BACKGROUND: #555 } .read-on { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .read-on:before { COLOR: lime; text-shadow: 0 0 4px lime } .disabled.read-on:before { COLOR: #999 } .disabled.read-on { COLOR: #999 } .read-off:before { COLOR: #999 } .read-off { COLOR: #999 } .read-off.modeSwitch { TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } A.read-off IMG { DISPLAY: none } A.read-on IMG { DISPLAY: none } A.read-on .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } A.read-off .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } .modeSwitch SPAN { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .switcherLabel { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 4px !important; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 2px !important } .vtbeSwitch { TOP: 2px } .vtbeSwitch SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .legacy .vtbeSwitch { HEIGHT: 2.2em } .vtbeSwitch DIV.modeSwitchWrap { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ccc 1px solid; TOP: 2px; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .vtbeSwitch DIV.modeSwitchWrap A SPAN#statusText { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 0px !important } .vtbeSwitch DIV.modeSwitchWrap A.read-off { BACKGROUND-COLOR: #ddd } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover { BACKGROUND-COLOR: #fff } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover SPAN#statusText { COLOR: #000 } TABLE.vtbeTable-legacy { WIDTH: 100% } .vtbeTable-legacy TEXTAREA { WIDTH: 100% } .helpLink { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .helpLink A.browseIcon { BORDER-BOTTOM: 0px; POSITION: relative; TEXT-ALIGN: center; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#777777); BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; BACKGROUND: #777; FONT-SIZE: 115%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; box-shadow: none; border-radius: 12px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .helpLink A.browseIcon IMG { DISPLAY: none } .helpLink A.browseIcon:before { Z-INDEX: 1; POSITION: relative; WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: #fff; CONTENT: "?"; RIGHT: -4px; FONT-WEIGHT: bold } .helpLink A.browseIcon:hover { box-shadow: none } .helpLink A.browseIcon:focus { box-shadow: none } .helpLink A[title*='Off'].browseIcon:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bbbbbb,endColorstr=#bbbbbb); BACKGROUND: #bbb } .helpLink A[title*='Off'] { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } TABLE.reorder { opacity: 1 } .reorder SPAN { DISPLAY: inline-block; HEIGHT: 20px } TABLE.reorder SPAN { HEIGHT: auto } .item .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } .item .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .liItem .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .subList-reorder .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .buttonCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .dndHandle .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .portlet .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder { WIDTH: 16px } .subList-reorder .reorder { WIDTH: 16px } .buttonCm .reorder { WIDTH: 16px } .portlet .reorder SPAN { DISPLAY: block; BACKGROUND-POSITION: -237px -116px; HEIGHT: 24px } .portlet .reorder { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; BOTTOM: -1px; BORDER-TOP: #555 1px solid; TOP: -1px; BORDER-RIGHT: #555 0px solid; LEFT: -19px; opacity: 0; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px } .module-dragstate.portlet .reorder { BORDER-RIGHT-WIDTH: 0px; BOTTOM: -2px; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-LEFT-WIDTH: 2px; TOP: -2px; LEFT: -20px } .reorder IMG { FILTER: alpha(opacity=0); opacity: 0 } .item .reorder IMG { MARGIN: 6px 3px } .portlet .reorder IMG { WIDTH: 18px; HEIGHT: 20px } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .liItem:focus .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .listCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buttonCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .portlet H2:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentListPlain LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentList > LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg { MARGIN: 0px; WIDTH: 16px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -125px; HEIGHT: 16px } TABLE.inventory A.cmimg { FILTER: alpha(opacity=0); opacity: 0 } TABLE.inventory TR:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg:hover { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg:focus { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg IMG { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 15px; PADDING-RIGHT: 0px; HEIGHT: 15px; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .buttonCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .portlet A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } A.cmimg-small { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .listCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .listCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .courseMenu .subhead A.cmimg { TOP: 9px } .buttonCm .courseMenu .subhead .cmimg { TOP: 2px } .portlet A.cmimg { POSITION: relative; TOP: 2px; RIGHT: 0px } .listCm .courseMenu A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .portlet A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .buildList LI .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .item .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .buildList LI .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .item .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .listCm .courseMenu LI:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 3px; BOTTOM: 0px; PADDING-RIGHT: 4px; PADDING-TOP: 4px; -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); border-radius: 0 3px 0 0 } .frameResizeToggle A { WIDTH: 16px; DISPLAY: block; BACKGROUND: url(images/utilicons_sprite_rev.png) no-repeat -158px 0px; HEIGHT: 16px; OVERFLOW: hidden } .frameResizeToggle:hover { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle A.resize-on { BACKGROUND-POSITION: -175px 0px; opacity: .5 } .frameResizeToggle A.resize-off { BACKGROUND-POSITION: -159px 0px; opacity: .8 } .frameResizeToggle A.resize-on:hover { BACKGROUND-POSITION: -159px -16px; opacity: 1 } .frameResizeToggle A.resize-off:hover { BACKGROUND-POSITION: -175px -16px; opacity: 1 } .frameResizeToggle A IMG { WIDTH: 18px; HEIGHT: 18px } A.close { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close-menu { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close { TOP: 0px; RIGHT: 20px } A.close IMG { DISPLAY: none } A.close-menu IMG { DISPLAY: none } .lbAction IMG { DISPLAY: none } A.close:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } .lbAction:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT-SIZE: 14px } A.close:hover:before { COLOR: #888 } A.close-menu:hover:before { COLOR: #888 } .lbAction:hover:before { COLOR: #888 } .builderItem A.close { FILTER: alpha(opacity:0); opacity: 0 } .builderItem:hover A.close { FILTER: alpha(opacity:100); opacity: 1 } .liveArea A.close { TOP: 6px; RIGHT: 6px } .cmdiv A.close-menu { Z-INDEX: 100; POSITION: relative; FILTER: alpha(opacity=100); TOP: 0px; RIGHT: 0px; opacity: 1 } #bb-assessment-canvas [id*='receipt_nested'].receipt A.close { TOP: 6px; RIGHT: 6px } A.colorChip { PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 1px } .pageTitle A.colorChip { PADDING-BOTTOM: 4px; PADDING-LEFT: 7px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } A.colorChip SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -123px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } A.colorChip:hover SPAN { BACKGROUND-POSITION: -320px -141px } A.colorChip SPAN IMG { FILTER: alpha(opacity=0); WIDTH: 16px; HEIGHT: 16px; opacity: 0 } A.colorChip IMG.chipSwatch { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 16px; HEIGHT: 16px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #aaa 1px solid } SPAN.colorChipName { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: inline-block !important; VERTICAL-ALIGN: middle; PADDING-TOP: 0px !important } INPUT[type='text'] { FONT-SIZE: 90% } INPUT[type='password'] { FONT-SIZE: 90% } SELECT { FONT-SIZE: 90% } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .courseMenu INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .courseMenu INPUT[type='text'] { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { MARGIN-LEFT: 0px } #calculatorValue { MARGIN: 3px 0px; WIDTH: 10em } A.microControl { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A.microControl IMG { WIDTH: 12px; HEIGHT: 12px } A.save { BACKGROUND: url(images/controls.png) no-repeat -50px -123px } A.cancel { BACKGROUND: url(images/controls.png) no-repeat -70px -123px } .fileInputWrapper { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; MARGIN-RIGHT: 9px; PADDING-TOP: 0px } .fileInputWrapper INPUT.hiddenInput { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .backLink { POSITION: absolute; MARGIN: 0px; BOTTOM: 0px; RIGHT: 0px } .tocBottom_min .backLink { BOTTOM: 48px } .tocBottom_max .backLink { BOTTOM: 348px } .tocBottom_open .backLink { BOTTOM: 178px } .shortDoc .backLink { POSITION: relative; TEXT-ALIGN: left; MARGIN-TOP: 15px; BOTTOM: 0px; RIGHT: 0px } .backLink A { BORDER-BOTTOM: #cdcdcd 0px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 18px; DISPLAY: inline-block; BACKGROUND: #eee; COLOR: #888; BORDER-TOP: #cdcdcd 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #cdcdcd 0px solid; TEXT-DECORATION: none; PADDING-TOP: 8px; -moz-box-shadow: 1px 1px 4px #DDD inset; -webkit-box-shadow: 1px 1px 4px #ddd inset; -moz-border-radius: 4px 0 4px 0; -webkit-border-radius: 4px 0 4px 0; text-shadow: 0 1px 0 #fff } .shortDoc .backLink A { BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px } .backLink A:before { LINE-HEIGHT: 1.2; COLOR: #999; FONT-SIZE: 120%; CONTENT: "\2190" } .backLink A:hover { BACKGROUND: #ddd; COLOR: #777 } .backLink A:hover:before { COLOR: #00add0 } .sliderWrapper { BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 0px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 13px; BACKGROUND: #fff; FLOAT: left; FONT-SIZE: 85%; PADDING-TOP: 14px; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0 } #sliderHandle { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: -2px 0px 0px; WIDTH: 4px; DISPLAY: block; BACKGROUND: #999; HEIGHT: 4px; BORDER-TOP: #555 1px solid; CURSOR: ew-resize; BORDER-RIGHT: #555 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } #sliderTrack { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 6px; WIDTH: 60px; DISPLAY: inline-block; BACKGROUND: #ededed; HEIGHT: 2px; BORDER-TOP: #ccc 1px solid; TOP: -2px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .itemCounter { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #cdcdcd; FONT-SIZE: 115%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #pageHeader { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitleSmall { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } #pageHeader { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #schemePreviewHead { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitle H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitleError H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #pageHeader { FONT-SIZE: 185% } .pageTitle H1 { FONT-SIZE: 185% } .pageTitleError H1 { FONT-SIZE: 185% } .picker .pageTitle H1 { FONT-SIZE: 160% } .popup .pageTitle H1 { FONT-SIZE: 160% } .pageTitle #titleicon { DISPLAY: inline-block } .pageTitle H1 { DISPLAY: inline-block } .pageTitle A.cmimg { DISPLAY: inline-block } .pageTitle H1 + .contextMenuContainer { POSITION: relative; MARGIN-LEFT: 2px; VERTICAL-ALIGN: top; TOP: 4px } .pageTitle A.cmimg { MARGIN: 0px } .pageTitle #titleicon { MARGIN: 0px 6px 0px 0px; DISPLAY: none } .pageTitle [src*='slideshare']#titleicon { BORDER-BOTTOM: #dedede 1px solid; POSITION: absolute; BORDER-LEFT: #dedede 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; WIDTH: auto; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #fff; HEIGHT: 39px; BORDER-TOP: #dedede 0px solid; TOP: 1px; RIGHT: 7px; BORDER-RIGHT: #dedede 0px solid; PADDING-TOP: 4px; border-radius: 0 4px 0 4px } .pageTitle [src*='youtube']#titleicon { POSITION: absolute; WIDTH: auto; DISPLAY: block; HEIGHT: 44px; TOP: 8px; RIGHT: 14px } .pageTitleSmall H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #fff; FONT-SIZE: 135%; PADDING-TOP: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.9) } #pageHeader { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } #schemePreviewHead { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .hierarchy-page .pageTitle + .container { MARGIN-TOP: -20px; BACKGROUND: #fff } .picker .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popup .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } #pageHeader { BACKGROUND-COLOR: #dedede } #schemePreviewHead { BACKGROUND-COLOR: #dedede } .pageTitleIcon { DISPLAY: table-row } .pageTitle .details { DISPLAY: none } .pageTitle .contextMenuContainer { DISPLAY: inline-block !important } .pageTitle .titleButtons { DISPLAY: inline-block !important } .pageTitleEdit { DISPLAY: inline-block !important } #pageTitleBar { DISPLAY: inline-block; MARGIN-RIGHT: 6px } .pageTitle H2 { MARGIN: 0px; COLOR: #333; CLEAR: both; FONT-SIZE: 100% } .pageTitle H2 SPAN { FONT-WEIGHT: normal } .contextString { COLOR: #777; FONT-WEIGHT: normal } .pageTitle .label { COLOR: #777; FONT-WEIGHT: normal } .error .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#DB0F0F,endColorstr=#FC0202); box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6) inset } .error .pageTitle H1 { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2) } .customBanner { TEXT-ALIGN: center; BACKGROUND-COLOR: transparent; MARGIN: 0px; OVERFLOW: hidden } DIV.localViewToggle + DIV.pageTitle { PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #fafafa inset; border-radius: 0 } DIV#lightboxContent H2 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; FONT-SIZE: 130%; PADDING-TOP: 18px } .helphelp { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .pageTitle P { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .label.details { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .mapTabs + .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .mapTabs ~ .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .helphelp A { BORDER-BOTTOM: #666 1px dotted; COLOR: #666; TEXT-DECORATION: none } .helphelp A:hover { BORDER-BOTTOM-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-TOP-STYLE: solid; BORDER-LEFT-STYLE: solid } DIV.helphelp UL { MARGIN: 6px 0px } .version { MARGIN-TOP: 6px; DISPLAY: inline-block; COLOR: #666; FONT-SIZE: 60%; FONT-WEIGHT: normal } .version I { FONT-STYLE: normal; FONT-WEIGHT: bold } .version SPAN { POSITION: relative; WIDTH: 13px; DISPLAY: inline-block; OVERFLOW: hidden; TOP: -2px; LEFT: -5px } .version SPAN:before { POSITION: relative; COLOR: #00add0; FONT-SIZE: 105%; CONTENT: "+"; TOP: 0px; FONT-WEIGHT: bold; LEFT: 0px } .colophon { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px 14px; PADDING-LEFT: 55px; WIDTH: 30em; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: right; FONT-SIZE: 85%; OVERFLOW: visible; RIGHT: 0px; PADDING-TOP: 0px } .colophon IMG { POSITION: absolute; LEFT: 0px } .installation { LINE-HEIGHT: 1.3em; COLOR: #666 !important } .installation SPAN { FONT-WEIGHT: bold } .actionBar { Z-INDEX: 110; BORDER-TOP: #444 1px solid; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .hierarchy-page .actionBar { MARGIN-TOP: -21px } .hierarchy-page #toolsTabForm .actionBar { MARGIN: -21px -30px 0px } .actionBar UL LI { POSITION: relative } .actionBar UL LI.mainButton { Z-INDEX: 210 } .actionBar UL LI.secondaryButton { Z-INDEX: 209 } .actionBar UL LI.mainButton:hover { Z-INDEX: 112 } .pageTitle + .actionBar { -moz-border-radius: 0; border-radius: 0 } .actionBar .mainButton { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBar .secondaryButton { MARGIN: 0px; FLOAT: right } .actionMenu { Z-INDEX: 111; POSITION: relative } .actionMenuItem { Z-INDEX: 123; POSITION: relative } .actionBarMicro { -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .csMenuFrame .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popupMenu .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .portlet .actionBarMicro { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .portlet .actionBarMicro UL { MARGIN: 2px } .actionBarMicro UL LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBarMicro .mainButton { Z-INDEX: 1000 } .actionBarMicro .secondaryButton { Z-INDEX: 10; FLOAT: right } .actionBar { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .actionBarMicro { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .searchbar { POSITION: relative } .searchbarPicker { POSITION: relative } .subActionBar { POSITION: relative } .searchbarCanvas.searchbar { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN: -24px -30px 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dfdfdf 0px 0px; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #F0F0F0 inset; -webkit-box-shadow: 1px 0 0 #F0F0F0 inset } .picker .searchbarCanvas.searchbar { MARGIN: -24px -20px 20px } .picker .leftColumn-narrow H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } .picker .leftColumn-wide H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } #bb-question-discover .searchbarCanvas.searchbar FIELDSET H2 { DISPLAY: inline-block; FONT-SIZE: 100%; FONT-WEIGHT: normal } .subActionBar { FONT-SIZE: 95% } .searchbar TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE TD TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE FIELDSET { PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 3px } .searchbar TABLE DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .searchbar FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchbarPicker { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .searchbar:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .searchbarPicker:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .receipt A.close { FILTER: alpha(opacity=70); TOP: 1px; RIGHT: 4px; opacity: .7 } .slideshowControls { TEXT-ALIGN: center; MARGIN: 8px auto 12px; FONT-SIZE: 100% } .searchbar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbarPicker FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .subActionBar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbar H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .searchbarPicker H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .picker .searchbar H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbarPicker H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbar .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbarPicker .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .liveArea FIELDSET .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbar OL LI { MARGIN: 5px; FLOAT: left } .searchbarPicker OL LI { MARGIN: 5px; FLOAT: left } .liveArea FIELDSET OL LI { MARGIN: 5px; FLOAT: left } .searchbar OL LI > DIV { MARGIN: 0px 4px 4px 0px; DISPLAY: inline-block } .searchbar OL LI.options { FLOAT: right } .searchbarPicker OL LI.options { FLOAT: right } .liveArea FIELDSET OL LI.options { FLOAT: right } .searchbarPicker SPAN { DISPLAY: inline } .searchbar SPAN.spacer { MARGIN: 0px 4px } .cmImg { TEXT-ALIGN: center; MARGIN: 0px 0px 6px 12px; WIDTH: 180px; OVERFLOW: hidden } .cmImg IMG { WIDTH: 180px } .navDivider { PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; MARGIN: 0px 0px 4px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; LETTER-SPACING: 2px; COLOR: #999; FONT-SIZE: 80%; FONT-WEIGHT: bold; PADDING-TOP: 18px; text-shadow: 0 1px 0 #f9f9f9 } .cmPreviewWrapper { WIDTH: 212px } .navPalette { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .csMenuFrame .navPalette { MARGIN: 0px 0px 18px } .navPalette H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 105%; PADDING-TOP: 0px } .navPaletteTitle { POSITION: relative } .navPaletteTitle H3 + H3 { POSITION: absolute; TOP: 0px; RIGHT: 0px } .navPaletteCol H3 { BORDER-BOTTOM: 0px } .navPalette H4 { MARGIN: 0px; FONT-SIZE: 100% } .navPaletteContent UL LI { POSITION: relative; ZOOM: 1 } .navPaletteContent { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .listCm .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .singleControl .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .tools .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } #courseMenuPalette DIV.navPaletteContent { PADDING-BOTTOM: 14px; PADDING-TOP: 14px; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset } #courseMenuPalette { MARGIN-BOTTOM: 0px } .singleControl .navPaletteContent { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .singleControl { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPalette .discover { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPaletteContent A { PADDING-BOTTOM: 3px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; WORD-BREAK: normal; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 3px } .navPaletteContent A:hover { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A:focus { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A.comboLink { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.open { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.submenuLink { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink_active { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent A.submenuLink_active IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent UL LI:first-child H4 A { BORDER-TOP: medium none } .navPaletteContent UL LI:first-child A { BORDER-TOP: medium none } .navPaletteContent UL LI H4 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPaletteContent H3 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px; text-shadow: 0 1px 0 #f9f9f9 } .navPaletteContent H3 A:hover { TEXT-DECORATION: none } .navPaletteContent H3 A:focus { TEXT-DECORATION: none } #courseMenu { BACKGROUND-COLOR: #0078cb; COLOR: #fff } .controlpanel UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .controlpanel A { BORDER-TOP: #ccc 1px dotted } .controlpanel A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .controlpanel A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { DISPLAY: inline-block } .navPaletteContent H3 A.submenuLink_active { DISPLAY: inline-block } .controlpanel A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .controlpanel A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink_active:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .navPaletteContent H3 A.submenuLink_active:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .controlpanel A.submenuLink:hover:after { COLOR: #aaa } .controlpanel A.submenuLink_active:hover:after { COLOR: #aaa } .tools A.submenuLink:hover:after { COLOR: #aaa } .tools A.submenuLink_active:hover:after { COLOR: #aaa } .navPaletteContent H3 A.submenuLink:hover:before { COLOR: #aaa } .navPaletteContent H3 A.submenuLink_active:hover:before { COLOR: #aaa } .controlpanel A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .tools A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel H4 A.open { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navPaletteContent UL LI:first-child H4 A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore H4 { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel A.comboLink_active { Z-INDEX: 1; POSITION: relative } .tools A.comboLink_active { Z-INDEX: 1; POSITION: relative } .controlpanel H4 A.open { Z-INDEX: 1; POSITION: relative } .treeViewCs .navPaletteContent { } .treeViewCs .bottomRound B { } .courseFilesPalette { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .paletteSearch { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 6px } .classFiles H4#cs_search + UL LI:first-child { BORDER-BOTTOM: #aaa 1px dotted; PADDING-BOTTOM: 6px; MARGIN: 2px 9px 2px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 95%; PADDING-TOP: 0px } .classFiles H4#cs_search + UL LI { BACKGROUND-IMAGE: none } .classFiles A#filesPaletteContentCollectionLink { BACKGROUND-IMAGE: url(images/indicators.png); PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 98% -143px; COLOR: #aaa; PADDING-TOP: 3px } .navPaletteContent .submenu .paletteSearchElement { PADDING-BOTTOM: 9px; MARGIN: 6px 0px 0px -16px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BORDER-TOP: #bbb 1px dotted; PADDING-TOP: 10px } .paletteSearchElement INPUT { WIDTH: 99px } .classFiles UL.tree > LI { BACKGROUND-IMAGE: none !important } .listCm .courseMenu { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .ineditmode DIV.listCm UL.courseMenu { MARGIN: 0px } .ineditmode DIV.listCm UL.courseMenu LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px -1px 0px 0px; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid } .ineditmode DIV.listCm UL.courseMenu LI:hover { BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff !important; -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -moz-transition: border, margin, background, -moz-box-shadow 500ms cubic-bezier(0.420, 0.000, 1.000, 1.000); box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-transition-property: background, border, -webkit-box-shadow; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000); background-clip: padding-box } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder { -webkit-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder:before { -webkit-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .listCm .courseMenu LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .buttonCm LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .buttonCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .listCm .courseMenu A:hover { TEXT-DECORATION: underline } .listCm .courseMenu A:focus { TEXT-DECORATION: underline } .buttonCm LI A:hover { TEXT-DECORATION: underline } .buttonCm LI:focus { TEXT-DECORATION: underline } .listCm .courseMenu > LI:hover A SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:hover { COLOR: #128fa8 !important } .listCm .courseMenu A:focus { COLOR: #128fa8 !important } .listCm .courseMenu A:hover SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:focus SPAN { COLOR: #128fa8 !important } .listCm .courseMenu .here A { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:hover { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:focus { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A.cmimg { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu .here A.cmimg:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .listCm .subhead H3 { PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #courseMenu_folderView H4 A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } #courseMenu_folderView .subhead { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .navPaletteContent .subhead H3 A { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .navPaletteContent .subhead H3 A:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .listCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { BACKGROUND-IMAGE: none !important } .noteditmode .listCm .courseMenu .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .noteditmode .listCm .buttonCm .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .listCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .buttonCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .listCm .courseMenu .collapsed { PADDING-BOTTOM: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; HEIGHT: 2px; PADDING-TOP: 0px } .buttonCm .navPaletteContent { BACKGROUND: none transparent scroll repeat 0% 0% } .buttonCm LI { BACKGROUND-COLOR: transparent; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 12px 0px } .buttonCm .courseMenu .here A { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .buttonCm .courseMenu .here A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .cmLink-hidden { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-empty { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-hidden IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -123px } .cmLink-hidden { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -138px } .buttonCm .invisible .cmLink-hidden { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { RIGHT: 32px } .buttonCm .bottomRound { DISPLAY: none } .pickerMenu { POSITION: absolute; MARGIN: 0px; WIDTH: 150px; TOP: 0px; LEFT: 14px } .pickerMenu UL LI A { BACKGROUND-IMAGE: none } DIV.pickerMenu A.simpleLink { BACKGROUND-IMAGE: none } .pickerMenu A.open { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:hover { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:focus { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .discover .topRound B { } .discover .bottomRound B { } .discover .navPaletteContent { } .singleControl .topRound B { } .singleControl .bottomRound B { } .singleControl .navPaletteContent { } .discover A IMG { DISPLAY: none } .discover.navPalette { MARGIN-BOTTOM: 0px } .singleControl A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .navPalette .discover A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .singleControl A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A.enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .discover A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { COLOR: #3c0; CONTENT: "+" } .discover A:before { COLOR: #eee; CONTENT: "F" } .navPaletteContent .submenu { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; FONT-SIZE: 90%; PADDING-TOP: 0px; -moz-box-shadow: 0 1px 4px #ccc; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore .submenu { BACKGROUND: #fff; FONT-SIZE: 90% } .navPaletteContent .submenu LI { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent .submenu LI UL LI { PADDING-LEFT: 12px } .navPaletteContent .submenu LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } H4#cs_search + UL DIV A { DISPLAY: block; FONT-SIZE: 90% } .controlpanel .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu .emptyMsg { COLOR: #777 } .controlpanel .submenu A:hover { TEXT-DECORATION: underline } .controlpanel .submenu A.here { TEXT-DECORATION: underline } .controlpanel .submenu A:focus { TEXT-DECORATION: underline } .explore .submenu A:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .explore .submenu A:focus { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .tools .submenu { BACKGROUND: #fff } .controlpanel .submenu { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel .submenu LI UL { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND-COLOR: transparent } .navPalette A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .controlpanel A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPalette A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPalette A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPaletteCol H3 A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol H3 A.comboLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol .navPaletteContent H3 { BACKGROUND-IMAGE: none } .navPaletteCol .actionBarMicro { DISPLAY: none } .shortcutViewCs UL LI A { TEXT-ALIGN: center; BORDER-TOP: #ededed 1px dotted } .shortcuts LI A { BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted } .shortcuts LI A:hover { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .shortcuts LI A:focus { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .treeContainer#courseMenu_folderView { OVERFLOW-X: auto } DIV.expTreeContainer { BACKGROUND: #eee } DIV.treeContainer UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.treeContainer > UL.tree { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree > UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.listCm DIV.treeContainer UL.tree { OVERFLOW-X: auto; ZOOM: 1 } DIV.treeContainer UL.tree LI H4 + UL { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; ZOOM: 1; FONT-SIZE: 90%; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .sideTOC UL.tree > LI { OVERFLOW-X: visible } DIV.treeContainer UL.tree LI.last { BACKGROUND-IMAGE: none } UL.tree LI.last { BACKGROUND-IMAGE: none } DIV.treeContainer UL.tree LI.here A { BACKGROUND-COLOR: #ededed } UL.tree LI.here A { BACKGROUND-COLOR: #ededed } DIV.treeContainer UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.open_folder { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: #ebeffa; FONT-SIZE: 95%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.exp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folder.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI A.collapse { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folderopen.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer H4.treehead { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 2px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.treeContainer H4.first { MARGIN: 0px 0px 2px } DIV#userTreeDiv { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead { BACKGROUND-IMAGE: none; MARGIN: 0px; BORDER-TOP: #ccc 1px dotted } DIV.treeContainer UL.tree LI.subhead H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.first A { BORDER-TOP: medium none } DIV.treeContainer UL.tree LI.subhead H4 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 6px } UL.tree LI.subhead:first-child { MARGIN-TOP: 0px } UL.tree LI.subhead:first-child > A { BORDER-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.treeSubhead-collapsed A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: normal } .tableOverflowControl { OVERFLOW-X: auto } .inventory { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 0px; BORDER-SPACING: 0; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-COLLAPSE: separate; BACKGROUND: #fff; COLOR: #000; CLEAR: both; PADDING-TOP: 0px } .inventory CAPTION { TEXT-ALIGN: left; COLOR: #999; FONT-SIZE: 85% } .inventory > THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .splashTable THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .inventory > THEAD TR TH:first-child { BORDER-LEFT: medium none; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .inventory > TBODY { BORDER-BOTTOM: #ccc 2px solid } .inventory > TBODY TR { BORDER-BOTTOM: #ccc 1px solid } .inventory > TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory > TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory#drawerItems TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory#drawerItems TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory > TBODY TR TH { TEXT-ALIGN: left; FONT-WEIGHT: normal } .inventory > TBODY TR TD:first-child { BORDER-LEFT: medium none } .inventory > TBODY .gray TD { BACKGROUND: #fff4bf } .inventory > TBODY .gray TH { BACKGROUND: #fff4bf } .inventory > THEAD TR TH.sorted { BACKGROUND: #ccc } TH.sorted { BACKGROUND: #ccc } .splashTable THEAD TR TH.sorted { BACKGROUND: #ccc } .inventory > TBODY TR TD.sorted { BACKGROUND: #eee } .inventory > THEAD TR TH.sorted A { COLOR: #000 !important; FONT-WEIGHT: bold } .sortable > THEAD TH A { COLOR: #666; MARGIN-RIGHT: 9px } .sortable > THEAD TH A:hover { COLOR: #333; TEXT-DECORATION: underline } .sortable A.sortheader { POSITION: relative; PADDING-RIGHT: 17px; DISPLAY: block; MARGIN-RIGHT: 0px; text-shadow: 0 1px 0 #fff } .sortable .sortarrow { COLOR: #ff0; TOP: 0px; RIGHT: 0px; TEXT-DECORATION: none; LEFT: auto } TR.high { BACKGROUND: #fff4bf } .high { BACKGROUND: #fff4bf } .disabledCell { BACKGROUND-COLOR: #f0f0f0 } .inventory .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .inventory > TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments { WIDTH: 100% } .inventory .dndHandle { POSITION: static; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 5px } .inventory .dndHandle .reorder IMG { HEIGHT: 20px } .inventory .dndHandle .reorder:hover IMG { HEIGHT: 20px } .inventory .dndHandle .reorder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory .dndHandle .reorder:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory TR:hover .dndHandle { BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px } .reorderable > TBODY TR:hover { -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset } .reorderable > TBODY TR:hover TD { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable > TBODY TR:hover TH { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable TBODY TR TD:first-child { BORDER-LEFT: transparent 1px solid } .inventory TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .inventory > TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .attachments TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .attachments TBODY TR { BORDER-TOP: #eee 1px solid } .inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } .attachments TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .attachments TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory > TBODY UL.subtabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } TABLE.inventory > TBODY UL.subtabs LI { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.status { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; BACKGROUND: #f9f9f9; COLOR: #000; FONT-SIZE: 90%; PADDING-TOP: 1px } DIV.status A IMG { VERTICAL-ALIGN: middle } DIV.status P { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left !important; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; LINE-HEIGHT: 10%; MARGIN: 2px auto 4px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } DIV.status P IMG { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #8dafaf; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 8px; PADDING-TOP: 0px } DIV.stopped P IMG { BACKGROUND: url(images/controls.png) #fff no-repeat -20px -180px } DIV.status A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.status DIV { POSITION: relative; TEXT-ALIGN: center } DIV.status A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } TABLE.inventory-simple { MARGIN: 0px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } TABLE.attachments THEAD TR.warningRow { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TABLE.inventory-simple THEAD TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } TABLE.inventory-simple TBODY TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TH { COLOR: #000 } TABLE.inventory-simple .removeCell { BACKGROUND: #ededed; COLOR: #777 } TABLE.inventory-simple .removeCell TD { COLOR: #999 } TABLE.inventory-simple .removeCell TH { COLOR: #999 } TABLE.inventory-simple .removeCell TD A IMG { FILTER: alpha(opacity=40); opacity: .4 } TABLE.inventory-simple .smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.inventory-simple TBODY TR.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TD { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TH { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.stepItems-reorder { BORDER-SPACING: 0; MARGIN-BOTTOM: 12px; FONT-SIZE: 85% } TABLE.gbColumns { ZOOM: 1; FONT-SIZE: 90% } TABLE.stepItems-reorder TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BACKGROUND: #fff; COLOR: #999 } TABLE.gbColumns THEAD TR TH { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TD { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TH.sorted { BORDER-LEFT: #777 1px solid; BACKGROUND: #999; BORDER-RIGHT: #777 1px solid } TABLE.gbColumns THEAD TR TH A { COLOR: #fff } TABLE.gbColumns THEAD TR TD A { COLOR: #fff } TABLE.stepItems-reorder THEAD TR.lowerHeader TH { BORDER-BOTTOM: #ccc 2px solid; COLOR: #333 } TABLE.stepItems-reorder TBODY TR TD.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder THEAD TR TH.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder TR TH.clearCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TD { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TH { BORDER-TOP: 0px } TABLE.stepItems-reorder THEAD TR:first-child { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; TEXT-ALIGN: right; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD SPAN.reorder { POSITION: relative; FILTER: alpha(opacity=100); WIDTH: 18px !important; DISPLAY: block; BACKGROUND: url(images/controls.png) #ededed no-repeat -177px -122px; HEIGHT: 20px; TOP: 2px; CURSOR: move; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; LEFT: auto; opacity: 1; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } TABLE.gbColumns TBODY TR TD SPAN.reorder { BACKGROUND: url(images/controls.png) #ededed no-repeat -237px -122px } TABLE.stepItems-reorder TBODY TR.frozenbar TD SPAN.reorder { TOP: 1px } TABLE.stepItems-reorder TBODY TR TD INPUT { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: 95%; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } TABLE.stepItems-reorder TBODY TR TD.points INPUT { WIDTH: 3em } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=text] { WIDTH: 90% } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=checkbox] { WIDTH: auto } TABLE.stepItems-reorder TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px 4px 0px 0px } TABLE.gbColumns TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px; WIDTH: auto } TABLE.gbColumns TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; PADDING-TOP: 6px } TABLE.gbColumns TBODY TR.frozenbar TD { BACKGROUND: #ccc; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: 0px } TABLE.gbColumns TFOOT TR.lastRow TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #999; HEIGHT: 2px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.frozen TD { BACKGROUND: #ededed } TABLE.gbColumns THEAD TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } TABLE.gbColumns TBODY TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } DIV.areaHighlight TABLE.gbColumns THEAD TR TD.clear { BACKGROUND: inherit } TD.clear { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozen TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TFOOT TR.lastRow TD.clear { BACKGROUND: inherit } TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.gbColumns TBODY TR.placeholder TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.placeholder TD.clear { BACKGROUND: inherit } UL.dragableHighlight LI TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozen TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TFOOT TR.lastRow TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TR.rowdrag { Z-INDEX: 1; BACKGROUND: #ccc } .insertImg { Z-INDEX: 20; POSITION: relative; TOP: 12px } .insertImgUp { Z-INDEX: 20; POSITION: absolute; RIGHT: -10px } TABLE.inventory > TBODY TR TD.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > THEAD TR TH.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > TBODY TR TD.hideCell { DISPLAY: none } TABLE.inventory > THEAD TR TH.hideCell { DISPLAY: none } .clickOrder { DISPLAY: none } TABLE.inventory > TBODY TR TD.clickOrder { BORDER-LEFT: medium none; BACKGROUND-COLOR: #ddd } TABLE.inventory TR TD.endCell { PADDING-BOTTOM: 0px !important; BACKGROUND-COLOR: #ddd !important; PADDING-LEFT: 0px !important; WIDTH: 1px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.inventory TR.orderRow TD.clickOrder { TEXT-ALIGN: center; BACKGROUND-COLOR: #ddd } TABLE.inventory TR.orderRow TD.clickOrder DIV { POSITION: relative } .sortedplus { BACKGROUND-IMAGE: url(images/controls.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 48% -995px } .dragCol { BACKGROUND-COLOR: #999 } TABLE.splashTable { BORDER-BOTTOM: #ccc 2px solid; MARGIN: 3px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.splashTable THEAD TR { COLOR: #999 } TABLE.splashTable THEAD TR TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } TABLE.splashTable THEAD TR TH A { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #666; TEXT-DECORATION: none } TABLE.splashTable THEAD TR TH A:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; TEXT-DECORATION: underline } TABLE.splashTable TBODY TR { BORDER-TOP: #ddd 1px solid } TABLE.splashTable TBODY TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TH { TEXT-ALIGN: left; COLOR: #000 } TABLE.splashTable TH.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.splashTable TD.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } .contentBlock A { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -450px; TEXT-DECORATION: none } .contentBlock A.collapse { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -1045px; TEXT-DECORATION: none } .contentBlock A.collapse:hover { TEXT-DECORATION: underline } .contentBlock A.hover { TEXT-DECORATION: underline } TABLE.reorderCols { MARGIN: 18px 0px 9px; WIDTH: 100%; BORDER-COLLAPSE: collapse; CLEAR: both; FONT-SIZE: 95% } TABLE.reorderCols THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #ededed; BORDER-TOP: #ccc 1px solid; CURSOR: move; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } TABLE.reorderCols THEAD TR TH.noReorderCol { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; CURSOR: default; BORDER-RIGHT: medium none } TABLE.reorderCols TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed; COLOR: #555 } TABLE.reorderCols THEAD TH SPAN.reorderToolTip { BACKGROUND: url(images/controls.png) #ddd no-repeat -347px -122px } TABLE.reorderCols THEAD TR TH.axis { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed 0px 50%; COLOR: #555 } .ghostTd { BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; FONT: 10px arial; BACKGROUND: #eee; HEIGHT: auto; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 2px } TABLE.reorderCols THEAD TH.dragging { BACKGROUND: #ccc } TABLE.reorderCols THEAD TH.hovering { BACKGROUND: #666 } TABLE.reorderCols THEAD TH.hovering IMG { DISPLAY: none } .rumble { MARGIN: 0px 0px 9px; BACKGROUND: url(images/selected_items.png) no-repeat -1974px center } .rumble_top { MARGIN: 12px 0px 0px; BACKGROUND: url(images/selected_items.png) no-repeat 12px center } #mapCanvasForm .rumble_top { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble_top { BORDER-BOTTOM: #eee 2px solid } .noBatchActions { BACKGROUND-IMAGE: none !important; PADDING-BOTTOM: 5px !important; PADDING-LEFT: 5px !important; PADDING-RIGHT: 5px !important; PADDING-TOP: 5px !important } .rumbleBuildList { MARGIN: 0px 0px 0px 18px; BORDER-TOP: #eee 2px solid } .rumbleBuildList UL LI { Z-INDEX: 1000 } .rumbleBuildListTop UL LI { Z-INDEX: 1000 } .rumble_top UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble_top UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .rumble UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .contentListPlain .rumble LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentListPlain .rumble_top LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble_top LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .selectList .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble_top LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble LI.listActionGroup A { DISPLAY: inline } .rumble_top LI.listActionGroup A { DISPLAY: inline } .paging { TEXT-ALIGN: right; FLOAT: right; CLEAR: left } .pagingprefs { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN-TOP: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 3px } .paging SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BORDER-RIGHT: #ccc 1px dotted; PADDING-TOP: 1px } .rumble_top .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .rumble .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .jumptopage INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } .jumptopage INPUT { WIDTH: 2em; FONT-WEIGHT: normal; -moz-border-radius: 0; -webkit-border-radius: 0 } .rumble_top .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .inventory_paging A { DISPLAY: inline-block } .inventory_paging IMG { DISPLAY: inline-block } .inventory_paging SPAN { DISPLAY: inline-block } .inventory_paging DIV { DISPLAY: inline-block } .jumptopage DIV { DISPLAY: inline-block } .inventory_paging A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px } .inventory_paging IMG { MARGIN: 2px 2px 3px } .inventory_paging A.inactive { FILTER: alpha(opacity=40); opacity: .4 } A.jumpToPageOpen { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } A.jumpToPageOpen:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } DIV.jumptopage INPUT#currentpage_bot { WIDTH: auto } DIV.jumptopage INPUT#currentpage_top { WIDTH: auto } INPUT#currentpage_bot { WIDTH: auto } INPUT#currentpage_top { WIDTH: auto } .jumptopage { FLOAT: right } .jumptopage DIV { MARGIN: 0px 0px 0px 3px } .jumptopage BUTTON { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; TOP: -2px; RIGHT: 0px; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .jumptopage BUTTON IMG { MARGIN: 0px } .rumble_top .secondaryControl { FLOAT: right } .rumble .secondaryControl { FLOAT: right } .key-valueTable TR { BORDER-BOTTOM: medium none } .key-valueTable TH { BORDER-BOTTOM: medium none } .key-valueTable TD { BORDER-BOTTOM: medium none } .key-valueTable TBODY { BORDER-BOTTOM: medium none } .key-valueTable TBODY TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TH { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TR:first-child TH { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TR:first-child TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TH { COLOR: #555 } .infoListWrapper .key-valueTable { MARGIN: 3px 9px 6px } TD.removeCell { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A IMG { FILTER: alpha(opacity=30); opacity: .3 } .contentList { MARGIN: -20px -30px } .buildList { MARGIN: -20px -30px } .contentListPlain { MARGIN: -20px -30px } .announcementList { MARGIN: -20px -30px } #bb-assessment-canvas .contentListPlain { MARGIN: 0px -30px } .gradingList { MARGIN: 0px -30px } .buildList#survey { MARGIN: 0px -30px } #manageFormCanvasForm .buildList { MARGIN: 0px -30px } #mapCanvasForm .buildList { MARGIN: 0px 30px } .hierarchy-page #toolSettingsForm #dataCollectionContainer { MARGIN: -10px -30px } .leftColumn-wide .contentListPlain { MARGIN: 0px } .contentList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .buildList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentListPlain > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .announcementList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPageItem { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentList > LI.read:first-child:hover { BORDER-TOP: transparent 1px solid } .buildList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentListPlain > LI:first-child { BORDER-TOP: transparent 1px solid } .announcementList > LI:first-child { BORDER-TOP: transparent 1px solid } #bb-assessment-canvas .contentListPlain > LI:first-child { BORDER-TOP-COLOR: #ccc } #bb-assessment-canvas .contentListPlain > LI { MIN-HEIGHT: 16px; PADDING-LEFT: 42px } #bb-assessment-canvas .contentListPlain > LI .item { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-assessment-canvas .contentListPlain > LI .details { PADDING-BOTTOM: 5px; PADDING-TOP: 12px } .takeQuestionDiv { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='_'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='step'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer H3.submittitle.steptitle { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } .takeQuestionDiv H3 { MARGIN: 0px } .takeQuestionDiv + H3 { PADDING-LEFT: 28px } #assessmentGradeForm #dataCollectionContainer { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .contentList > LI { MIN-HEIGHT: 50px } .buildList > LI { MIN-HEIGHT: 50px } .contentListPlain > LI { MIN-HEIGHT: 50px } .announcementList > LI { MIN-HEIGHT: 50px } .contentPageItem { MIN-HEIGHT: 50px } .liItem:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList > LI:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList LI:first-child:hover { BORDER-TOP-COLOR: #666 } .contentList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .gradingList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .liItem A[onclick*='toggleDetails'] { POSITION: relative; VISIBILITY: hidden; TOP: -6px; RIGHT: -19px } .liItem:hover A[onclick*='toggleDetails'] { VISIBILITY: visible } .liItem A[onclick*='toggleDetails'] IMG { VISIBILITY: hidden } .liItem A[title*='Hide'] { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 0px 0px } .liItem A[title*='Show'] { BACKGROUND: url(images/portlet_expand_alt_rev.png) no-repeat 0px 0px } .contentListPlain .item_icon { DISPLAY: none } .item { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; CURSOR: move; PADDING-TOP: 0px } .contentList .item { PADDING-BOTTOM: 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .gradingList .item { PADDING-RIGHT: 120px } .announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .announcementList-read .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } #announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .item:hover { CURSOR: move } .item:focus { CURSOR: move } .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .announcementList-read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .contentList-slim .read .item { PADDING-LEFT: 48px } .read .item:hover { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .read .item:focus { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .tab-groups H3.item { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 8px; MARGIN: 0px 11em 8px -12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tab-groups H3.item .reorder + SPAN { FONT-STYLE: italic; MARGIN: 0px 4px 0px 0px; FONT-FAMILY: Georgia; COLOR: #999; FONT-SIZE: 90%; FONT-WEIGHT: normal } .item_icon { POSITION: absolute; MARGIN: 0px; TOP: 12px; LEFT: 24px } .read .item_icon { MARGIN: 0px; LEFT: 18px } .item H3 { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item .contextMenuContainer { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item H3 + .contextMenuContainer { POSITION: relative; TOP: 2px } .tab-groups .item .contextMenuContainer { FLOAT: none } .item INPUT[type=checkbox] { MARGIN: 2px 6px 0px -6px; FLOAT: left } .iconsOnly { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 24px auto; WIDTH: 80% } .iconsOnly LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 0px; FLOAT: left !important; PADDING-TOP: 0px } .iconsOnly > LI:first-child { BORDER-TOP-COLOR: #ccc } .iconsOnly .read { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconsOnly .item_icon { PADDING-BOTTOM: 0px; MIN-HEIGHT: 50px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 12px; LEFT: auto } .iconsOnly .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MIN-HEIGHT: 3em; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .iconsOnly .read .item { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .iconsOnly .item H3 { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly .item .contextMenuContainer { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly LI:hover .item_icon { BACKGROUND: #ededed } .iconsOnly LI:hover .item { BACKGROUND: #ededed } .iconsOnly LI:focus .item_icon { BACKGROUND: #ededed } .iconsOnly LI:focus .item { BACKGROUND: #ededed } .iconsOnly .read .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .read .item_icon { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read:hover .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:hover .item { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item { BACKGROUND: none transparent scroll repeat 0% 0% } .buildList LI INPUT { MARGIN: 2px 8px; FLOAT: left } .buildList INPUT.browse { MARGIN: 0px 0px 6px } .buildList INPUT.genericButton { MARGIN: 0px 0px 6px } .buildList INPUT[type=button] { MARGIN: 0px 0px 6px } .contentListRight { POSITION: absolute; RIGHT: 6px; FONT-WEIGHT: normal; LEFT: auto } .pagedContentListRight { TOP: 4px } .contentListRightOffset { MARGIN-RIGHT: 12em } .contentList .details { PADDING-LEFT: 60px } .contentListPlain .contentListRight + .details { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; PADDING-LEFT: 28px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } .announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } #announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } .contentList-slim .read .details { MARGIN-LEFT: 48px } .staffInfoList .details { MARGIN-RIGHT: 160px } .staffInfoList .hasPhoto .details { MIN-HEIGHT: 135px } .details > P { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .details .note { FONT-WEIGHT: bold } .details > P.important { PADDING-BOTTOM: 0px; MARGIN: 3px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .details > P.important SPAN { COLOR: #888; FONT-WEIGHT: normal } .itemDetails { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .itemDetails P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .announcementInfo P SPAN { COLOR: #999 } .announcementInfo SPAN { COLOR: #999 } .itemDetails SPAN { COLOR: #999 } .announcementInfo P SPAN SPAN { FONT-SIZE: 95% !important } .noItems { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } .additional + P .warnFont { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } #listContainer .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .additional + P .warnFont { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { TEXT-ALIGN: center; PADDING-TOP: 100px } .hierarchy-page .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { MARGIN: 0px auto; DISPLAY: block } .additional + P .warnFont { DISPLAY: block; PADDING-TOP: 100px } .details .attachments { WORD-WRAP: break-word; MARGIN-BOTTOM: 9px; WORD-BREAK: normal } .buildList > LI.separator { Z-INDEX: 0; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; MIN-HEIGHT: 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #ededed; TOP: 0px; PADDING-TOP: 14px; LEFT: 0px } .separator H3.item { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .external-breadcrumbs .receipt { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .separator .line { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: relative; MARGIN: 0px 24px 0px 30px; TOP: 6px; LEFT: 0px } .separator .text { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .external-breadcrumbs .receipt { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .buildList .detailList .hidden { DISPLAY: none } .buildList .detailList .tagContainer { POSITION: relative } .buildList .detailList .tagContainer .hidden { DISPLAY: none } .buildList .detailList .tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer .newTagForm { BORDER-LEFT: #999 1px dotted; MARGIN-LEFT: 6px } .tagContainer .newTagForm LABEL { PADDING-LEFT: 6px } .currentTags { Z-INDEX: 100; POSITION: absolute; LINE-HEIGHT: 1.8; WIDTH: 16em; ZOOM: 1; DISPLAY: none; OVERFLOW: hidden; TOP: 1.2em; RIGHT: 0px } .currentTags SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 18px } .currentTags A { FONT-WEIGHT: bold } .currentTags A.closeCloud { POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 1px; LINE-HEIGHT: 1; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; TOP: 0px; PADDING-TOP: 0px; LEFT: 0px } .auto_complete { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; WIDTH: 12em; BACKGROUND: #e2eefe; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid } .auto_complete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .auto_complete UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3%; WIDTH: 96%; PADDING-RIGHT: 1%; OVERFLOW: hidden; CURSOR: pointer; PADDING-TOP: 2px } .auto_complete UL LI.selected { BACKGROUND-COLOR: #fff } .auto_complete UL STRONG.highlight { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .freq1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 90%; PADDING-TOP: 0px } .freq2 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 105%; PADDING-TOP: 0px } .freq3 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 120%; PADDING-TOP: 0px } .freq4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 135%; PADDING-TOP: 0px } .freq5 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 150%; PADDING-TOP: 0px } .freq6 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 165%; PADDING-TOP: 0px } .freq1:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq2:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq3:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq4:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq5:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq6:hover { BACKGROUND: white; TEXT-DECORATION: none } .currentTags A.tagDisabled { FILTER: alpha(opacity=70); FONT-WEIGHT: normal; TEXT-DECORATION: none; opacity: .7 } .currentTags A.tagDisabled:hover { BACKGROUND: none transparent scroll repeat 0% 0% } .tab-groups .tab-group-label { FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #999 } .subList { MARGIN: 3px 0px 6px } .subList-reorder { MARGIN: 3px 0px 6px } .subList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .buildList .detailList { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .subList-reorder LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 6px } .subList-reorder LI:hover { BORDER-BOTTOM-COLOR: #bbb !important; BORDER-TOP-COLOR: #bbb !important; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #bbb !important; BORDER-LEFT-COLOR: #bbb !important } .subList LI A IMG { VERTICAL-ALIGN: middle } .subList-reorder LI A IMG { VERTICAL-ALIGN: middle } .subList LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList-reorder LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList LI P { VISIBILITY: hidden } .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .buildList .detailList LI .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder .itemDetails { DISPLAY: none } .subList-reorder .details { DISPLAY: none } .subList .details { DISPLAY: none } .itemDetails + .details { OVERFLOW: visible; MARGIN-RIGHT: 13em } .subList LI P SPAN { FONT-WEIGHT: bold } .subListArtifact { CLEAR: both } .detailList .subListArtifact { CLEAR: both } .subListArtifact LI { POSITION: static } .detailList .subListArtifact LI { POSITION: static } .detailList .subListArtifact { ZOOM: 1 } .detailList .subListArtifact LI { ZOOM: 1 } .detailList .subListArtifact LI A { ZOOM: 1 } .buildList .detailList { MARGIN: 0px 0px 0.6em 0.7em } .buildList .detailList .subList { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.buildList UL.detailList OL.subList { LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: decimal } UL.buildList UL.detailList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 0.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: table-row; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } UL.buildList UL.detailList LI SPAN { WIDTH: 135px; DISPLAY: block; FLOAT: left; FONT-WEIGHT: bold } UL.buildList UL LI > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; WIDTH: 79%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: 135px; PADDING-TOP: 0px } UL.buildList UL LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } UL.noimg LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } .buildList .pageBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } .buildList .sectionBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } DIV.itemHeaderControl { POSITION: absolute; TOP: 9px; RIGHT: 14.5em } DIV.itemHeaderControl A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.cartMode { PADDING-BOTTOM: 49px } .addedRow { COLOR: #999 } TABLE.sortable TBODY TR.addedRow TH LABEL A { COLOR: #999 } .addedRow TD A { COLOR: #999 } .addedRow { } .addedRow IMG { FILTER: alpha(opacity=50); opacity: .5 } TABLE#datatable2 TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 THEAD TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .itemSelector { MARGIN: 0px auto; WIDTH: 20px; HEIGHT: 20px } .itemSelector INPUT { FILTER: alpha(opacity=0); opacity: 0 } .available { BACKGROUND: url(../../../images/ci/ng/available_ti.png) no-repeat 0px 0px } .inprogress { BACKGROUND: url(../../../images/ci/ng/progress.png) red no-repeat 0px 0px } .remove { BACKGROUND: url(../../../images/ci/ng/remove_ti.png) no-repeat 0px 0px } .itemTray { Z-INDEX: 10000; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 18px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .picker .itemTray { RIGHT: 12px; LEFT: 12px } DIV.itemTrayContentPane { LEFT: 200px } DIV.itemTrayContentPaneWide { LEFT: 0px } .itemTray H2 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H3 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H2 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H3 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H2 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H3 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H2 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray H3 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray DIV.noItems { TEXT-ALIGN: center; COLOR: #777 } .itemTray #cartList { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .itemTray #selectedItemsWrapper { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #777; PADDING-TOP: 4px } .itemTray .cartTableWrapper { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; OVERFLOW-Y: auto; BACKGROUND: #fff; MAX-HEIGHT: 130px; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .sideTOC .cartTableWrapper { OVERFLOW: auto } #count { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .itemTray #numberOfElements { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #progress { Z-INDEX: 300; POSITION: absolute; MARGIN: 300px 50%; WIDTH: 100px; DISPLAY: none } #progress DIV { MARGIN-LEFT: -100% } #cartSubmit { Z-INDEX: 200 } #cartList FIELDSET { PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #f6f6f6; PADDING-TOP: 3px } #cartList FIELDSET UL LI INPUT[type=text] { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 2.3em; PADDING-RIGHT: 0px; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 0px } .itemGallery { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .itemGallery > LI { TEXT-ALIGN: center; MARGIN: 5px 5px 20px; WIDTH: 1.2em; ZOOM: 1; VERTICAL-ALIGN: top; PADDING-TOP: 0.06em; _height: 130px } .itemGallery .stackFix { WIDTH: 100%; HEIGHT: auto } .itemIconHolder { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px auto 0.05em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 1em; PADDING-TOP: 0px } .itemIconHolder A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; ZOOM: 1; DISPLAY: block; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .itemIconHolder A:hover { BORDER-BOTTOM-COLOR: #777; BORDER-TOP-COLOR: #777; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777 } .itemIconWrapper { BORDER-BOTTOM: #f1f1f1 0.02em solid; POSITION: absolute; BORDER-LEFT: #f1f1f1 0.02em solid; MARGIN: 0px 50%; WIDTH: auto; BOTTOM: 0px; BORDER-TOP: #f1f1f1 0.02em solid; BORDER-RIGHT: #f1f1f1 0.02em solid } .x-small LI { WIDTH: 1.8em; FONT-SIZE: 70px } .small LI { FONT-SIZE: 100px } .normal LI { FONT-SIZE: 140px } .large LI { FONT-SIZE: 180px } .x-large LI { FONT-SIZE: 220px } .u_resetFont-px { FONT-SIZE: 12px } .itemIconLink-vertical A { WIDTH: 0.78em; HEIGHT: 0.9em } .itemIconLink-square A { WIDTH: 0.78em; HEIGHT: 0.78em } .itemIconLink-horizontal A { WIDTH: 1em; HEIGHT: 0.78em } .itemIconLink-vertical IMG { WIDTH: 0.8em; HEIGHT: 0.9em; VERTICAL-ALIGN: top } .itemIconLink-square IMG { WIDTH: 0.8em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-horizontal IMG { WIDTH: 1em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-vertical .itemIconWrapper { LEFT: -0.39em } .itemIconLink-square .itemIconWrapper { LEFT: -0.39em } .itemIconLink-horizontal .itemIconWrapper { LEFT: -0.5em } .itemInfo { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-SIZE: 12px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.2em } .itemInfo LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; LINE-HEIGHT: 1.25em; MARGIN: 0px; WIDTH: 100%; FONT-SIZE: 95%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .itemInfo LI SPAN { VERTICAL-ALIGN: top } .itemInfo LI .label { TEXT-ALIGN: right } .itemInfo .cmimg { WIDTH: 18px } .itemInfo .cmimg IMG { WIDTH: 18px } .itemInfo .title { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .itemInfo INPUT[type='text'] { WIDTH: 100% } .itemInfo .high { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; BACKGROUND: #fff1c5; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .lb-content .itemInfo { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 3px } .lb-content .itemInfo LI { LINE-HEIGHT: 1.45em } .lb-content .itemInfo .title { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .iconGallery > LI { MARGIN: 5px 5px 12px; WIDTH: 75px } .iconGallery .itemIconHolder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; HEIGHT: 60px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemIconHolder A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemTitle { COLOR: #666; FONT-SIZE: 85% } .iconGallery .itemIconWrapper { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: auto; PADDING-RIGHT: 4px; BACKGROUND: #fff; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px; LEFT: -30px } .sideTOC_panelMin .container { POSITION: static !important } .sideTOC_panel .container { POSITION: static !important } .sideTOC_panelMax .container { POSITION: static !important } .tocWrapper { Z-INDEX: 200; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 0px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .tocHidden { TOP: -10000px !important } .tocHead { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #333; PADDING-TOP: 10px } .tocHead H2 { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .tocActions { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .sideTOC H2 { FLOAT: none !important; FONT-SIZE: 110%; text-shadow: 0 1px 0 #f0f0f0 } .tocActions { WHITE-SPACE: nowrap } .tocActions A { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions SPAN { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions > IMG { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .actionBar .tocNavText { PADDING-BOTTOM: 13px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; COLOR: #eee; PADDING-TOP: 13px } .actionBar .tocNavText + A { MARGIN-RIGHT: 12px } .actionBar .tocNavText + IMG { MARGIN-RIGHT: 12px } .tocActions SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .tocTreeWrapper { PADDING-BOTTOM: 0px; OVERFLOW-Y: auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .sideTOC .tocTreeWrapper { OVERFLOW: auto } UL#tocTree LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL#tocTree A.itemActive { FONT-WEIGHT: bold; TEXT-DECORATION: none } UL#tocTree SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; COLOR: #555; PADDING-TOP: 0px } .treeNodeIcon { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .sideTOC { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 200px; BOTTOM: auto; PADDING-RIGHT: 0px; BACKGROUND: #ddd; BORDER-TOP: #aaa 1px solid; TOP: 0px; RIGHT: auto; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -2px 0 2px rgba(0, 0, 0, .2) inset, 0px 3px 2px #ddd inset, 0px -3px 2px #ddd inset; -webkit-box-shadow: none; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: none } .sideTOCMinimize { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 9px !important; BOTTOM: auto; PADDING-RIGHT: 0px; BORDER-TOP: medium none; TOP: 0px; RIGHT: auto; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } .sideTOCMinimize .tocActions { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 1px; LEFT: -24px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .sideTOCMinimize .tocActions A { MARGIN: -1px 0px 0px; DISPLAY: block } .tocBottom_pullExpanded { LEFT: 228px } .tocBottom_pullCollapsed { LEFT: 18px } .tocSide_pullExpanded { TOP: 4px; LEFT: 222px } .tocSide_pullCollapsed { LEFT: 13px } .sideTOC_panel { PADDING-LEFT: 201px } .sideTOC_panelMin { PADDING-LEFT: 21px } .sideTOC_panelMax { PADDING-LEFT: 351px } .tocBottom_min { PADDING-BOTTOM: 30px } .tocBottom_max { PADDING-BOTTOM: 330px } .tocBottom_open { PADDING-BOTTOM: 160px } .tocBottom_open .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_max .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_min .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panel .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMax .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMin .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .localViewToggle { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .localViewToggle UL { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .localViewToggle UL LI { FLOAT: right } .localViewToggle UL LI.active { POSITION: relative } .localViewToggle A { PADDING-BOTTOM: 7px; TEXT-TRANSFORM: inherit; MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; DISPLAY: block; FONT-SIZE: 90%; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .localViewToggle A:hover { TEXT-DECORATION: underline } .localViewToggle .active A:hover { TEXT-DECORATION: none } .localViewToggle A.active { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } DIV.localViewToggle H2 { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } .localViewToggle A.active:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } DIV.localViewToggle H2:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .localViewToggle .separator { BORDER-LEFT: #d7bb66 1px dotted; PADDING-LEFT: 6px; MARGIN-LEFT: 6px } .localViewToggle A.miniComboButton { BORDER-BOTTOM: #d7bb66 1px solid; BORDER-LEFT: #d7bb66 1px solid; PADDING-RIGHT: 16px; BACKGROUND: url(images/controls.png) #f5e7bd no-repeat -1px -500px; COLOR: #444; BORDER-TOP: #d7bb66 1px solid; BORDER-RIGHT: #d7bb66 1px solid; TEXT-DECORATION: none !important } .containerTabs { MARGIN: 6px 24px 0px; FONT-SIZE: 100% } .containerTabs LI { POSITION: relative; FLOAT: left } .containerTabs LI A { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI H3 { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs LI H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs .active A { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:hover { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:focus { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active H3 { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .active H3:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .tabhead H3 { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 18px; COLOR: #555; PADDING-TOP: 9px } .collapseTabs .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #d1eaef } .collapseTabs .containerTabs .active A:before { CONTENT: none } .portlet .containerTabs { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 8px } .portlet .containerTabs LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .containerTabs LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } .portlet .containerTabs .active A { MARGIN: 0px } .collapseTabs .containerTabs { MARGIN: 0px } .portlet .containerTabs .active A:before { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:after { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:before { BORDER-BOTTOM-COLOR: #ddd } .portlet .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #fff4bf; BOTTOM: -1px } .mapTabs { POSITION: relative; MARGIN: 20px -30px 0px; BACKGROUND: #d1eaef; CLEAR: both; BORDER-TOP: #aaa 1px solid; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .lesson-plan-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { BORDER-BOTTOM: #bbb 1px solid } .evidence-page .mapTabs LI:before { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:after { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:before { Z-INDEX: 100; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #bbb 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 1px } .evidence-page .mapTabs LI.active + LI:after { BORDER-LEFT-COLOR: #eaeaea } .evidence-page .mapTabs LI:first-child:before { DISPLAY: none } .evidence-page .mapTabs LI:first-child:after { DISPLAY: none } .evidence-page .mapTabs LI A { PADDING-LEFT: 30px } .evidence-page .mapTabs LI.active H3 { PADDING-LEFT: 30px } .mapTabs UL { MARGIN-TOP: 0px; MARGIN-LEFT: 0px } DIV.mapTabs UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mapTabs UL LI.active H3 { POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; BACKGROUND: #eaeaea; FONT-SIZE: 100%; PADDING-TOP: 14px } .mapTabs UL LI.active H3:before { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #eaeaea; BOTTOM: -1px } .mapTabs UL LI.active:first-child H3:after { MARGIN-LEFT: 0px } .mapTabs UL LI.active:first-child H3:before { MARGIN-LEFT: 0px } .lesson-plan-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .hierarchy-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .lesson-plan-page .mapTabs UL LI.active H3:before { DISPLAY: none } .hierarchy-page .mapTabs UL LI.active H3:before { DISPLAY: none } .evidence-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #fff } .mapTabs UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; COLOR: #01869e; FONT-SIZE: 100%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .mapTabs UL LI A:hover { TEXT-DECORATION: underline } .mapTabs UL LI SPAN:hover { BORDER-BOTTOM-STYLE: solid } .mapTabs A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs LI:first-child A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 54px; BACKGROUND-POSITION: 30px 50% } .mapTabs UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI:first-child H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI DIV { PADDING-BOTTOM: 7px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: none; PADDING-TOP: 7px } .mapTabs UL LI.saveTab A { DISPLAY: none } UL.containerTabs LI.saveTab IMG { DISPLAY: none } .mapTabs UL LI.saveFadeIn { FILTER: alpha(opacity=0); opacity: 0 } .mapTabs UL LI.saveTab DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/tab_receipt_back.gif) #44b10e repeat-x center bottom; COLOR: white; FONT-WEIGHT: bold; PADDING-TOP: 5px } DIV.mapHelp { PADDING-BOTTOM: 0px; MARGIN: -1px 0px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff1c5; PADDING-TOP: 4px } UL.setStatus { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 3px; LIST-STYLE-TYPE: none; MARGIN: 15px 0px 9px 30px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #eee 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 3px } UL.setStatus LI { MARGIN: 0px 6px 0px 0px; FONT-SIZE: 95% } UL.setStatus LI INPUT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.setStatus LI LABEL { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 1px 0px } UL.setStatus LI LABEL.complete { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_complete.gif) no-repeat 1px 0px } FORM.mapCanvasForm DIV.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } FORM.mapCanvasForm H3.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } .mapTabs .containerTabs { BORDER-BOTTOM: 0px } #mapCanvasForm { MARGIN: 0px -30px } #mapCanvasForm #containerDiv { MARGIN: 20px 0px } .evidence-page .infoListWrapper H3 A.itemHead { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .infoListWrapper H3 A.itemHeadOpen { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .leftColumn-narrow { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f9f9f9; MARGIN: 0px; PADDING-LEFT: 6px; WIDTH: 26%; PADDING-RIGHT: 6px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; border-radius: 3px 3px 3px 3px } .evidence-page .leftColumn-wide { WIDTH: 69% } .sessionBox { WIDTH: 95% } .sessionBox .key-valueTable { } .sessionBox .key-valueTable TBODY TD { PADDING-RIGHT: 40px } .sessionBox .key-valueTable TBODY TH { PADDING-RIGHT: 40px } .evidence-page .criteriaSummary { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; MARGIN: 0px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 12px } .evidence-page .paletteItems LI { MARGIN-LEFT: 0px } .paneTabs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: -12px 0px 12px; ZOOM: 1; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .subtabs-framed .paneTabs { -moz-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -webkit-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; border-radius: 0 } .paneTabs UL { CLEAR: both } .paneTabs UL LI { Z-INDEX: 200; POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs .active { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs A { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 12px } .paneTabs UL LI:first-child A { BORDER-LEFT: 0px } .paneTabs A:hover { TEXT-DECORATION: underline } .paneTabs .active A:hover { TEXT-DECORATION: none } .paneTabs .active A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:focus { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active H3 { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:after { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #ccc 8px solid; BOTTOM: 0px } .paneTabs .active A:after { BOTTOM: -1px } .paneTabs .activepersonal A { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .activepersonal A:hover { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .personal A { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dedede; TEXT-DECORATION: none; PADDING-TOP: 3px } .paneTabs .external A { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #dedede no-repeat 2px center } .paneTabs .external A:hover { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #fff1c5 no-repeat 2px center } .paneTabs .activepersonal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs .personal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs A.paneTabOptions { DISPLAY: none } .paneTabs .activepersonal:hover A.paneTabOptions { FILTER: alpha(opacity=100); opacity: 1 } .paneTabs A.hiddenTabsLink { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center 6px } .paneTabs A.hiddenTabsLink IMG { FILTER: alpha(opacity=0); WIDTH: 2px; HEIGHT: 2px; opacity: 0 } .panelTabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .panelTabs LI { BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FLOAT: right; TOP: 2px !important; RIGHT: -3px; PADDING-TOP: 0px !important } .panelTabs LI.active { Z-INDEX: 2 } .panelTabs LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI.active A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI A:hover { BACKGROUND-COLOR: #f6f6f6 } .panelTabs LI.active A { BORDER-BOTTOM: 0px; COLOR: #333; FONT-WEIGHT: bold } .panelTabs LI.active A.preview { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 2px solid; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .panelTabs LI.active A.edit { BORDER-BOTTOM: 0px; MARGIN: 0px } .collapseTabs { MARGIN-BOTTOM: 12px } .collapseTabsData { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; BACKGROUND: #d1eaef; PADDING-TOP: 12px; -moz-border-radius: 3px } .containerTabsCollapsed { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .collapseTabs LI A { TEXT-DECORATION: underline } .collapseTabs LI.active { Z-INDEX: 1000 } .sequenceMapHead { MARGIN: 6px 0px } .sequenceMapHead H3 { MARGIN: 12px 0px 6px } .sequenceMapHead P { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 0px } DIV.sequenceMapHead DIV.actionBar { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #fff7de; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.searchResultList-sortOptions { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: right; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; MIN-HEIGHT: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 15px; PADDING-TOP: 10px } DIV.searchResultList-sortOptionsCount { WIDTH: auto; FLOAT: left } DIV.dropzone { BORDER-BOTTOM: #aaa 2px dashed; BORDER-LEFT: #aaa 2px dashed; BORDER-TOP: #aaa 2px dashed; BORDER-RIGHT: #aaa 2px dashed; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -moz-border-radius: 3px; -webkit-border-radius: 3px } .container DIV.dropzone { TOP: 3px !important } .modalOverlay { Z-INDEX: 90; POSITION: fixed; FILTER: alpha(opacity=1); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .01 } .cmdiv { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .menumini { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.quickAddPal { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.keyboardAccess { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .nav .sub UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .gb_currView.nav .sub > UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .menumini UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .keyboardAccess { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } SPAN.currentTags { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea-slim { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .previewArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .jumptopage { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .bcContent .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI IMG + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } DIV.treeContainer UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #learningUnitToc UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #loginLang UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .actionBar .mainButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .secondaryButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBarMicro .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton:first-child .flyout { MARGIN: 0px 0px 0px -2px } DIV.calPicker.quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI IMG + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } DIV.treeContainer UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } #learningUnitToc UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.nestedList { -moz-box-shadow: none; -webkit-box-shadow: none } .liveArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } .previewArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } #addFolderForm { MARGIN: 0px -30px } UL.tree LI A + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI IMG + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } DIV.treeContainer UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #learningUnitToc UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .builderItem .liveArea { Z-INDEX: 100; POSITION: absolute; TOP: 12px; LEFT: 22px } .previewArea { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; MARGIN-TOP: 0px; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .jumptopage { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 8px } .jumptopage LABEL { FONT-SIZE: 90% } .liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.secondaryButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { OVERFLOW: hidden } .actionBar UL LI.secondaryButton A.liveAreaTab { OVERFLOW: hidden } .liveArea-slim { PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 3px } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .columnActions .nav .sub UL { MARGIN-TOP: 0px } .nav .sub UL { POSITION: absolute; DISPLAY: none } .nav .sub .flyout { POSITION: absolute; DISPLAY: none } .nav .sub UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .nav .sub UL UL { DISPLAY: block } .nav .sub .flyout UL { DISPLAY: block } .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .nav .sub:hover .flyout { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { TOP: 18px } .rumble_top .nav .sub:hover UL { TOP: 18px } .rumble .nav .sub:hover UL { TOP: 18px } .quickAddPal { WIDTH: auto } .quickAddColor { WIDTH: 311px } .quickAddColor A.genericButton { MARGIN: 2px 0px; FLOAT: left } .cmdiv { Z-INDEX: 1150 !important; BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .cmdiv UL { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; WIDTH: 180px; PADDING-RIGHT: 4px; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 3px } .cmdiv UL:first-child { BORDER-TOP: medium none } .menumini UL:first-child { BORDER-TOP: medium none } .cmdiv UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .menumini UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .nav .sub UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .menumini A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } #loginLang UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: auto; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .nav .sub UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .nav LI.sub UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .actionBarMicro .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .actionBarMicro .nav LI.sub UL LI A:focus { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:focus { BACKGROUND-IMAGE: none } .nav LI.sub UL LI A:focus { BACKGROUND-COLOR: #fff !important } .cmdiv A:focus { BACKGROUND-COLOR: #fff !important } .menumini A:focus { BACKGROUND-COLOR: #fff !important } .nav .sub UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .paneTabs .nav .sub UL LI A { TEXT-ALIGN: left } .timediv UL LI A:hover { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { BACKGROUND-COLOR: #369; COLOR: #444 } .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; LEFT: 0px } .topTabs-compact .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; RIGHT: 0px; LEFT: auto } .cmdiv LI.contextmenubar_top { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .menumini LI.contextmenubar { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-border-radius: 0; -webkit-border-radius: 0 } .quickAddPal H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .keyboardAccess H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .quickAddPalHeader { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .comText .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .e_expandArea .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess P.paletteHelp { BORDER-BOTTOM: #fc0 1px solid; BORDER-LEFT: #fc0 1px solid; PADDING-BOTTOM: 3px; MARGIN: 6px 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; WHITE-SPACE: normal; BACKGROUND: #fff1c5; FONT-SIZE: 90%; BORDER-TOP: #fc0 1px solid; BORDER-RIGHT: #fc0 1px solid; PADDING-TOP: 3px } .bcMenuDiv-1 { WIDTH: 190px } .bcMenuDiv-2 { WIDTH: 380px } .bcMenuDiv-3 { WIDTH: 570px } .bcMenuDiv-4 { WIDTH: 760px } .bcMenuDiv-5 { WIDTH: 950px } .flyout { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 12px !important; PADDING-RIGHT: 12px !important; PADDING-TOP: 9px !important } .nav .sub .flyout DIV { POSITION: static; PADDING-BOTTOM: 6px; MARGIN: 0px; MIN-HEIGHT: 1px; FLOAT: left } .flyout H3 { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 95% Georgia, serif; LETTER-SPACING: 2px; PADDING-TOP: 0px } .flyout H3 .line { HEIGHT: 1px; BORDER-TOP: #ccc 1px solid } .flyout H3 .text { BACKGROUND: #d1eaef } .nav .sub .flyout UL { Z-INDEX: 1000; BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted; BORDER-RIGHT: 0px; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .nav .sub .flyout DIV H3 + UL { BORDER-TOP: 0px } .nav .sub .flyout DIV UL:first-child { BORDER-TOP: 0px } .nav .sub .flyout A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .quickAddPal .colorlist { MARGIN: 6px 0px 9px 6px; WIDTH: 288px } .quickAddPal .stepcontent .colorlist LI { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 14px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 14px; OVERFLOW: hidden; BORDER-TOP: #333 1px solid; CURSOR: pointer; BORDER-RIGHT: #333 1px solid; PADDING-TOP: 0px } .quickAddPal .colorlist LI A { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:link { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: 12px; HEIGHT: 12px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .quickAddPal .colorlist LI A:active { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A:focus { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:active { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:focus { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorPreview { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: white; PADDING-TOP: 3px } .quickAddPal .colorPreview IMG { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #444 1px solid; MARGIN: 3px; WIDTH: 42px; DISPLAY: block; BACKGROUND: black; FLOAT: left; HEIGHT: 42px; BORDER-TOP: #444 1px solid; BORDER-RIGHT: #444 1px solid } .quickAddPal .colorPreview DIV { WIDTH: 66%; FLOAT: left; MARGIN-LEFT: 3px } .quickAddPal .colorPreview SPAN { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 0px } SPAN.title_color_name { COLOR: #666 } .receipt { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .warning { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .inlineDialog { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .contentPaneWide.tabbedPane .receipt { Z-INDEX: 201; BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; PADDING-BOTTOM: 12px; MARGIN: -12px 0px 10px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .contentPane .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .contentPaneWide .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .container .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px; box-shadow: none } .receipt ~ #editmodeWrapper { Z-INDEX: 1; POSITION: relative } .receipt ~ .contentBox { Z-INDEX: 1; POSITION: relative } .sideTOC_panel .receipt ~ #editmodeWrapper { POSITION: static } .sideTOC_panel .receipt { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .tabbedPane .receipt A.close IMG { DISPLAY: none } .contentPane .receipt A.close IMG { DISPLAY: none } .contentPaneWide .receipt A.close IMG { DISPLAY: none } A.closeCopyright IMG { DISPLAY: none } .tabbedPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPaneWide .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .receipt A.close:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { } .receipt A.close:hover:before { COLOR: #fff } A.closeCopyright:hover:before { COLOR: #fff } .inlineDialog { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .inlineReceipt { POSITION: absolute; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .miniReceipt { Z-INDEX: 300; BORDER-BOTTOM: #bbb 1px solid; POSITION: absolute; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .bad { COLOR: #fff; FONT-WEIGHT: bold } .good { COLOR: #fff; FONT-WEIGHT: bold } .removing { COLOR: #fff; FONT-WEIGHT: bold } .adding { COLOR: #fff; FONT-WEIGHT: bold } .infoReceipt { COLOR: #fff; FONT-WEIGHT: bold } .brokenFileLink { COLOR: #fff; FONT-WEIGHT: bold } .portlet SPAN.warning.due { COLOR: #fff; FONT-WEIGHT: bold } .good A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .removing { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .brokenFileLink { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .portlet SPAN.warning.due { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .container .warningReceipt { PADDING-RIGHT: 24px } .warningReceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.areceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.close:before { } .contentPane .warningReceipt A.close { TOP: 5px; RIGHT: 5px } .warningReceipt A.close:hover:before { } .good { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .adding { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .infoReceipt { BORDER-BOTTOM-COLOR: #62758f; BORDER-TOP-COLOR: #62758f; BACKGROUND: #6d8aaf; BORDER-RIGHT-COLOR: #62758f; BORDER-LEFT-COLOR: #62758f } .attention { BORDER-BOTTOM-COLOR: #fc3; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #fc3; MARGIN: 0px 0px 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff4bf; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; BORDER-LEFT-WIDTH: 2px; FONT-WEIGHT: normal; PADDING-TOP: 4px } .removing { FONT-WEIGHT: normal } .adding { FONT-WEIGHT: normal } .brokenFileLink { FONT-WEIGHT: normal } .portlet SPAN.warning.due { FONT-WEIGHT: normal } .brokenFileLink { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet SPAN.warning.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .infoBox { BORDER-BOTTOM: #afdf61 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #afdf61 1px solid; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #afdf61 1px solid; BORDER-RIGHT: #afdf61 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .infoBox > .message { DISPLAY: block; MARGIN-BOTTOM: 4px } .info-ok { BORDER-BOTTOM-COLOR: #afdf61; BORDER-TOP-COLOR: #afdf61; BACKGROUND: #d9efa4; COLOR: #360; BORDER-RIGHT-COLOR: #afdf61; BORDER-LEFT-COLOR: #afdf61 } .nestedReceipt { Z-INDEX: 1001; PADDING-BOTTOM: 12px !important; MARGIN: 0px 20% 6px 0px; PADDING-LEFT: 12px !important; PADDING-RIGHT: 30px !important; PADDING-TOP: 6px !important } [id*='receipt_nested'].receipt { PADDING-RIGHT: 28px } .columnMsgWrapper { MARGIN-LEFT: 60% } .columnMsgWrapper .column-2 { MIN-HEIGHT: 1px } .smsIssue { POSITION: relative; MARGIN: 3px 3px 9px } .t2vIssue { POSITION: relative; MARGIN: 3px 3px 9px } .bubbleStem-bottom-center { BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: transparent 10px solid; WIDTH: 0px; BOTTOM: -12px; HEIGHT: 0px; MARGIN-LEFT: -8px; BORDER-TOP: #fc3 12px solid; BORDER-RIGHT: transparent 10px solid; LEFT: 50% } .nextStepsReceipt { BACKGROUND-IMAGE: url(images/reorder_bg.png); POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4; BACKGROUND-COLOR: #eee; MARGIN: 10px -30px -20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #545454; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3) } .nextStepsText { PADDING-BOTTOM: 18px; MARGIN: 0px 0px 0px 20px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fefefe; PADDING-TOP: 18px } .nextStepsText H5 { MIN-WIDTH: 6em; LINE-HEIGHT: 2em; DISPLAY: inline-block; COLOR: #545454; text-shadow: 1px 1px 1px #fff } .receiptCollapsed { POSITION: relative; FONT-SIZE: 90% } .external-breadcrumbs .receipt { BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; BORDER-TOP: 0px; TOP: -9px; BORDER-RIGHT: 0px; box-shadow: none } .stepcontent LI.fieldError { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; BACKGROUND: #fff1c5; PADDING-TOP: 2px } .stepcontent LI.fieldError .fieldErrorText { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { DISPLAY: inline; MARGIN-LEFT: 0px } .criteriaSummary { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px -28px 0px 0px; PADDING-LEFT: 12px; BACKGROUND: #f9f9f9 } #bb-question-discover H2 { FONT-SIZE: 110% } #filterContainer H2 { MARGIN-LEFT: 14px } #filterContainer .columnActions { MARGIN-LEFT: 14px } .criteriaSummary H3 { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .criteriaSummary .hidden { DISPLAY: none; VISIBILITY: hidden } .criteriaSummary UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .criteriaSummary UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FLOAT: left; FONT-SIZE: 90%; PADDING-TOP: 3px; border-radius: 12px } .criteriaSummary UL LI:first-child { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG { MARGIN: 0px; DISPLAY: block; FLOAT: left; COLOR: #aaa; FONT-WEIGHT: normal } .receipt-highlight { BACKGROUND: #fff4bf; box-shadow: 0 0 4px #fff } .receipt-default { BACKGROUND: none transparent scroll repeat 0% 0%; box-shadow: none } .criteriaSummary UL LI STRONG:before { POSITION: relative; LINE-HEIGHT: 1; COLOR: #aaa; FONT-SIZE: 120%; CONTENT: "+"; FONT-WEIGHT: bold; LEFT: -2px } .criteriaSummary UL LI SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI A { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI SPAN { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG + SPAN { MARGIN-LEFT: 3px } .criteriaSummary UL LI A { PADDING-RIGHT: 18px; BACKGROUND: url(../../../images/ci/icons/delete_li.gif) #eee no-repeat 96% 2px; TEXT-DECORATION: none } .search-element { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 18px; PADDING-LEFT: 9px; PADDING-RIGHT: 3px; BACKGROUND: #f9f9f9; PADDING-TOP: 18px } .search-element H2 { LINE-HEIGHT: 1; MARGIN: 0px; WIDTH: 0px; DISPLAY: inline-block; HEIGHT: 22px; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; OVERFLOW: hidden; FONT-WEIGHT: normal } .search-element H2:before { POSITION: relative; MARGIN: 0px 3px 6px 0px; FONT: 17px/1 "Utilicons"; COLOR: #aaa; VERTICAL-ALIGN: middle; CONTENT: "F"; TOP: 2px } .search-element INPUT[type='text'] { WIDTH: 60%; -moz-appearance: searchfield; -webkit-appearance: searchfield } .calPicker { Z-INDEX: 1500 !important } .calPicker .calHead { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .calPicker H3 { BORDER-BOTTOM: medium none; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 40px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .calPicker .previous { POSITION: absolute; TOP: 2px; LEFT: 2px } .calPicker .next { POSITION: absolute; TOP: 2px; RIGHT: 2px } .calPicker DIV.calFoot { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; CLEAR: both; PADDING-TOP: 6px } .calPicker A.contextmenubar { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .calPicker A.contextmenubar:hover { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .timediv { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .timediv UL { WIDTH: 8em; HEIGHT: 200px; OVERFLOW: auto } .timediv UL LI.contextmenubar_top { WIDTH: 114px; TOP: -18px } .timediv UL LI A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .csPicker { MIN-WIDTH: 300px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 12px; FONT-SIZE: 95%; PADDING-TOP: 0px } .csPicker .actionBar { FONT-SIZE: 110% } .csPicker .localViewToggle { FONT-SIZE: 110% } .csPicker .contentPaneWide { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .breadcrumbs { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .itemTray { Z-INDEX: 1000 } .csPicker .itemTray .taskbuttondiv { MARGIN: 0px; FONT-SIZE: 105% } .csPicker .itemTray H3 { FONT-SIZE: 115% } .csPicker #titleicon + H1 { MARGIN-TOP: 2px } .csPicker .itemTray #numberOfElements { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.lb-overlay { Z-INDEX: 1001; POSITION: fixed; BACKGROUND-COLOR: #000; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px } DIV.lb-wrapper { Z-INDEX: 1002; POSITION: fixed; OVERFLOW: hidden } DIV.lb-wrapper DIV.lb-header { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #dedede; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } DIV.lb-wrapper DIV.lb-header H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 15px; HEIGHT: 1.23em; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-header A { POSITION: absolute; DISPLAY: block; TOP: 10px; RIGHT: 10px } DIV.lb-wrapper DIV.lb-header A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; VERTICAL-ALIGN: top; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.lb-wrapper DIV.lb-content { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: auto; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-content DIV.lb-loading { BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) no-repeat center center } DIV.lb-wrapper DIV.topRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #lightbox DIV.bottomRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } DIV.lb-wrapper DIV.topRound B { DISPLAY: block; OVERFLOW: hidden } #lightbox DIV.bottomRound B { DISPLAY: block; OVERFLOW: hidden } DIV.lb-wrapper DIV.topRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } #lightbox DIV.bottomRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } #lightbox DIV.bottomRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightbox DIV.bottomRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightboxWrapper { Z-INDEX: 1001; POSITION: absolute; TOP: 0px; RIGHT: 0px; LEFT: 0px } #lightboxWrapper-inner { Z-INDEX: 1002; POSITION: relative; TEXT-ALIGN: center; WIDTH: 100%; TOP: 0px; LEFT: 0px } #lightbox { Z-INDEX: 1003; POSITION: relative; TEXT-ALIGN: left; MARGIN: 40px 0px 0px; DISPLAY: block; TOP: auto; LEFT: auto } .my-places-popup #lightbox { MARGIN: 0px } .my-places-popup #lightboxWrapper { POSITION: relative } #lightbox #lightboxContent { BORDER-BOTTOM: #333 2px solid; POSITION: relative; BORDER-LEFT: #333 2px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff !important; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP: #333 2px solid; BORDER-RIGHT: #333 2px solid; PADDING-TOP: 1px; -moz-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -moz-border-radius: 5px; -webkit-border-radius: 5px } .my-places-popup #lightbox #lightboxContent { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .lb-container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lb-content .container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lbAction { Z-INDEX: 1005; POSITION: absolute; TOP: 9px; RIGHT: 9px } #overlay { Z-INDEX: 1000; POSITION: fixed; FILTER: alpha(opacity=30); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .30 } .done#lightbox #lbLoadMessage { DISPLAY: none } .done#lightbox #lbContent { DISPLAY: block } .loading#lightbox #lbContent { DISPLAY: none } .loading#lightbox #lbLoadMessage { DISPLAY: block } .myPlacesContent { PADDING-BOTTOM: 16px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; HEIGHT: auto !important; MAX-HEIGHT: 500px !important; FONT-SIZE: 95%; OVERFLOW: auto; PADDING-TOP: 16px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .avatar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .myavatar { MARGIN-BOTTOM: 12px; MAX-HEIGHT: 150px; OVERFLOW: hidden } #lightbox .tallPara { PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 14px } #lightbox UL { MARGIN: 4px 0px 12px } #lightbox UL LI { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } #lightbox UL LI A:hover { TEXT-DECORATION: underline } DIV.lbContainer P.taskButtonsContent { MARGIN: 12px 0px 6px } .toBeRemoved { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .toBeRemoved > TD { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .unsavedItem { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD:first-child { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD { BACKGROUND-IMAGE: none } A.selectedItem { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } A.selectedItem:focus { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } TR.inEditMode-row { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TR.inEditMode-row TD { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 6px !important } #dataCollectionContainer { MARGIN: -20px -30px 0px } .popup #dataCollectionContainer { MARGIN: -12px -20px } DIV#dataCollectionContainer DIV.contentBlock { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-question-discover .inventoryListContainerDiv { PADDING-LEFT: 12px } .picker .inventoryListContainerDiv { PADDING-LEFT: 12px } .blogContainer .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV[id*='step'] { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } .submittitle { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #infoStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #taskStatusStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #linkedContentStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } DIV[id*='stepcontent'] { PADDING-BOTTOM: 0px; PADDING-LEFT: 48px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-TOP: 0px } .steptitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { PADDING-BOTTOM: 18px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .steptitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { MARGIN-RIGHT: 3px } #toolSettingsForm .steptitle SPAN { DISPLAY: none } #toolSettingsForm .stepcontent { PADDING-LEFT: 20px } #toolSettingsForm .steptitle { PADDING-LEFT: 9px } #toolSettingsForm .submittitle.steptitle { PADDING-LEFT: 27px } H3.noNumber { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 4px } .stepcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .stepcontent LI { PADDING-BOTTOM: 6px; MARGIN-BOTTOM: 6px } .stepcontent LI LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .stepcontent LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .stepcontent .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepcontent .stepHelp:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .stepcontent .fieldHelp { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 2px } A.browse + .fieldHelp { PADDING-TOP: 9px } .stepcontent .nonHelp { COLOR: #000; FONT-SIZE: 95% } .stepcontent .nestedList LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .nestedListSmall LI { FONT-SIZE: 90% } .nestedSubList { MARGIN: 6px 6px 6px 30px } .stepLite { PADDING-BOTTOM: 12px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 6px } .columnStep .column-3 { MIN-HEIGHT: 200px } .columnStep .column-3 TABLE.attachments { FONT-SIZE: 90% } .columnStep DIV H3 { MARGIN: 6px } .columnStep DIV DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } OL.nestedList LI DIV.imgLabel { WIDTH: auto } OL.nestedList LI DIV.imgLabel SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } OL.nestedList LI DIV.imgLabel SPAN.control { DISPLAY: inline } #title_color_value { PADDING-TOP: 6px } DIV.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.gb_gridCell_inner H3.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.field { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { WIDTH: 100% } DIV.label SPAN.contextMenuContainer { DISPLAY: inline } DIV.noLabelField BR { DISPLAY: none } SPAN.stepHelp BR { DISPLAY: block } SPAN.fieldHelp BR { DISPLAY: block } DIV.field OL P { PADDING-BOTTOM: 3px } DIV.noLabelField UL P { PADDING-BOTTOM: 3px } DIV.field EM { MARGIN-TOP: 5px; DISPLAY: inline-block; FONT: italic 100% Georgia, serif; COLOR: #888 } FIELDSET.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } DIV.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } FIELDSET.info DIV.label { COLOR: #666 } .reqfield { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 40px; PADDING-RIGHT: 0px; FONT: italic 105% Georgia, serif; FLOAT: left; COLOR: #777; PADDING-TOP: 24px } .reqfield:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .required > .label > LABEL:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .reqfield IMG { DISPLAY: none } .required > .label > LABEL IMG { DISPLAY: none } .requiredField { PADDING-BOTTOM: 6px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(../../../images/ci/icons/required.gif) no-repeat 0px center; PADDING-TOP: 6px } DIV.label IMG.indicator { POSITION: absolute; TOP: 0px; LEFT: -18px } .largeText DIV.label { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText DIV.field { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 75% !important; FONT-WEIGHT: normal } .field A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 95% } DIV.editBlock { FLOAT: left; MARGIN-RIGHT: 12px } .largeText DIV.field DIV.editBlock LABEL { FONT-SIZE: 80%; FONT-WEIGHT: normal } .largeText DIV.field DIV.exemptdiv LABEL { FONT-SIZE: 65% } .largeText TEXTAREA { FONT-SIZE: 80% } LI.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; PADDING-TOP: 3px; -moz-border-radius: 6px; -webkit-border-radius: 6px } .e_expandArea { MARGIN-TOP: 21px } #e_groups_menu { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #ceeaee; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .parent-child-listing { WIDTH: 50% } .parent-child-listing .stepHelp { MARGIN-LEFT: 24px } .parent-child-listing UL { BORDER-LEFT: #ccc 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 12px 10px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .parent-child-listing LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .stepcontent .hierarchy { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .stepcontent .hierarchy LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; PADDING-TOP: 0px } OL.hierarchy LI H5 { POSITION: relative; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 11em; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 8px } OL.hierarchy LI H5 SPAN { BORDER-BOTTOM: medium none; DISPLAY: inline; COLOR: #888; FONT-SIZE: 100% } OL.hierarchy LI H5 A { POSITION: absolute; FONT-SIZE: 90%; TOP: 9px; RIGHT: 0px; FONT-WEIGHT: normal } OL.hierarchy LI DIV { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 2px; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } OL.hierarchy LI DIV.gbData SPAN { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 2px } OL.hierarchy LI DIV.gbData SPAN:first-child { BORDER-LEFT: medium none; PADDING-LEFT: 0px; MARGIN-LEFT: 0px } OL.hierarchy LI DIV INPUT.points { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT.points { WIDTH: 2em } OL.hierarchy LI DIV INPUT.name { WIDTH: 16em } LI.parent { PADDING-BOTTOM: 0px !important } OL.hierarchy LI.parent OL LI H5 { BACKGROUND-IMAGE: none } .stepPanels { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .stepPanels LI { BORDER-BOTTOM: medium none } .panelTitle { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 4px 0px 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; CURSOR: pointer; PADDING-TOP: 3px } .mdHead A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { WIDTH: 100%; DISPLAY: block } .panelTitle .date { POSITION: absolute; COLOR: #666; FONT-SIZE: 95%; TOP: 2px; RIGHT: 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none } .panelTitle A SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 2px } .mdHead A SPAN.date { FONT-WEIGHT: normal } .mdList { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel P SPAN { COLOR: #666 } .mdList H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .mdList P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanelControls { FONT-SIZE: 90% } .contentAreaBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px 24px 24px; BACKGROUND: #fff; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .contentAreaBlock #step1 { BORDER-TOP: 0px } .taskbuttondiv { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .taskButtonsContent { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .okbutton { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .picker .taskbuttondiv { PADDING-BOTTOM: 9px; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .container .taskbuttondiv:first-child { MARGIN-TOP: 0px } DIV#dataCollectionContainer .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#dataCollectionContainer .reqfield + .taskbuttondiv { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#containerdiv .mapCanvasForm .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } #customizeDataCollection .taskbuttonhelp { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px } DIV#dataCollectionContainer .taskbuttonhelp + .taskbuttondiv { PADDING-BOTTOM: 18px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 0px } SPAN.stepTitleRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } SPAN.contentListRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } .taskButtonsContent { PADDING-BOTTOM: 0px; MARGIN: 24px -12px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 9px } P.okbutton INPUT { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 100%; PADDING-TOP: 1px } .taskbuttonhelp { PADDING-BOTTOM: 0px; FONT-STYLE: italic; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } #taskbuttondiv P { BORDER-BOTTOM: red 1px solid; TEXT-ALIGN: left; BORDER-LEFT: red 1px solid; FONT-STYLE: italic; MARGIN: 6px 0px; DISPLAY: block; FONT-SIZE: 90%; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .stepTitleRight { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; TOP: -2px; RIGHT: -2px; PADDING-TOP: 6px; LEFT: auto } LEGEND { POSITION: absolute; LINE-HEIGHT: 0; HEIGHT: 0px; TOP: -10000px } FIELDSET OL LI SPAN.tagContainer INPUT { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer A.browse { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.hidden { DISPLAY: none } .contentBlock OL LI SPAN.hidden { DISPLAY: none } .selectItems { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 639px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .selectItems SELECT { MARGIN: 6px 0px 0px; WIDTH: 300px; DISPLAY: block; MAX-WIDTH: 300px; HEIGHT: 115px; FONT-SIZE: 100% } #dataCollectionContainer .noLabelField > .selectItems { POSITION: relative; PADDING-BOTTOM: 15px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 15px } #dataCollectionContainer .noLabelField > .userRoleSelect:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems.userRoleSelect:before { LEFT: 358px } #dataCollectionContainer .noLabelField > .selectItems.cumulativeSelectItems:before { LEFT: 47% } .selectItems INPUT[type=button] { MARGIN: 6px 0px 0px } .selectItems INPUT[type=text] { MARGIN: 6px 0px; WIDTH: 300px; DISPLAY: block; FONT-SIZE: 100% } .selectArrows { POSITION: relative; MARGIN-TOP: 60px } .selectArrows A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectArrows BUTTON { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectItems H4 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px 56px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .userRoleSelect { WIDTH: auto } .userSelectedRoles { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 56px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .userSelectedRoles .selectArrows { POSITION: absolute; MARGIN: 0px; TOP: 28px; LEFT: 20px } .selectItems .available-roles H4 { MARGIN-LEFT: 0px } .selectItems .available-roles SELECT { HEIGHT: 200px } .multiSelect { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .multiSelect > DIV { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; WIDTH: 46%; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } .multiSelect SELECT { WIDTH: 100% } .multiSelect .selectArrows { TEXT-ALIGN: center; MARGIN: 40px 0px; WIDTH: 5% } .widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: 6px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } .widgetControls { FONT-SIZE: 90% } TABLE .widgetControls { FONT-SIZE: 90% } .widget .spellCheck { FLOAT: right } .widget .textBoxItem { FLOAT: right } DIV.liveArea FIELDSET.stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.liveArea FIELDSET.stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.liveArea FIELDSET.stepcontent TEXTAREA { WIDTH: 100% } DIV.liveArea FIELDSET.stepcontent SPAN.inlineHelp { DISPLAY: inline } .quickAddPal .stepcontent { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; PADDING-TOP: 3px } .quickAddPal .stepcontent LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .quickAddPal .stepcontent .label { WIDTH: 30%; PADDING-RIGHT: 2px; OVERFLOW: visible } .quickAddPal .stepcontent .field { WIDTH: 65% } .quickAddPal LI.fieldError .fieldErrorText { DISPLAY: block; COLOR: red; MARGIN-LEFT: 74px; FONT-SIZE: 85%; FONT-WEIGHT: normal } DIV.quickAddPal DIV.field INPUT[type=text] { WIDTH: 100% } DIV.quickAddPal DIV.field SELECT { WIDTH: 100% } DIV.quickAddPal DIV.field TEXTAREA { WIDTH: 100% } DIV.quickAddPal LI.stepHelp { WIDTH: auto } DIV.quickAddPal LI DIV SPAN { WIDTH: auto } DIV.field SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.field SPAN.control { DISPLAY: inline } DIV.quickAddPal DIV.field INPUT.datePickerInput { WIDTH: 8em } DIV.quickAddPal DIV.field INPUT.timePickerInput { WIDTH: 8em } .dtpickerEndDiv { PADDING-TOP: 10px } DIV#texteditor { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } DIV#texteditor TEXTAREA { WIDTH: 450px; DISPLAY: block; MARGIN-LEFT: 0px } DIV#texteditor A.textBoxItem { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 80%; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 2px } SELECT.survey_question { MAX-WIDTH: 100% } .htmlarea .toolbar DIV > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FLOAT: left; HEIGHT: 22px; PADDING-TOP: 0px } .htmlarea IFRAME { MIN-WIDTH: 300px !important } .htmlarea .toolbar A.wikiButton { WIDTH: auto !important } .htmlarea .toolbar A.wikiButton IMG { WIDTH: auto !important } .vtbe_footer { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .vtbe_footer SPAN { FONT-SIZE: 100% } .vtbe_footer INPUT[type=button] { FONT-SIZE: 95% } .vtbe_footer A { MARGIN: 0px 0px 0px 3px } .resize_handle { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BACKGROUND: url(images/controls.png) #ccc no-repeat 50% -1px; HEIGHT: 12px; BORDER-TOP: #ddd 1px solid; CURSOR: n-resize } .resize_handle:hover { BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #bbb; BORDER-TOP-COLOR: #ccc } .resize_handle IMG { WIDTH: 100%; HEIGHT: 8px } .tabGroupsPreview { MARGIN: -11px -12px 24px; FONT-SIZE: 100% } .previewContent { Z-INDEX: 1; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; BACKGROUND: url(images/backgrounds_h.png) #aaa repeat-x 0px -320px; PADDING-TOP: 14px } .previewContent IFRAME { WIDTH: 100%; HEIGHT: 300px } .previewContent .appTabs { TOP: -3px } .tabGroupsPreview TABLE DIV { DISPLAY: block } .previewOverlay { POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=30); TEXT-TRANSFORM: uppercase; WIDTH: 100%; LETTER-SPACING: 10px; COLOR: #555; FONT-SIZE: 300%; TOP: 130px; FONT-WEIGHT: bold } .tabGroupsPreview .previewOverlay { TOP: 40px } .previewOverlay SPAN { FILTER: alpha(opacity=30); PADDING-BOTTOM: 6px; BACKGROUND-COLOR: white; PADDING-LEFT: 24px; PADDING-RIGHT: 12px; PADDING-TOP: 6px; opacity: .30 } P.warning { PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #cf1d19; MARGIN: 12px 0px 24px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 9px } .warning { BACKGROUND: #a7d0df } DIV.tabPreview { Z-INDEX: 1; BORDER-BOTTOM: #cdcdcd 12px solid; POSITION: relative; BORDER-LEFT: #cdcdcd 12px solid; MARGIN: 0px 6px 6px; WIDTH: auto; BACKGROUND: #cdcdcd; BORDER-TOP: #cdcdcd 12px solid; BORDER-RIGHT: #cdcdcd 12px solid } DIV.tabPreview DIV.paneTabs { MARGIN-TOP: 12px } .buttonLibrary { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 207px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .buttonLibrary LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FLOAT: left; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .buttonLibrary LI A { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 3px } .buttonLibrary LI A.selected { FONT-WEIGHT: bold; TEXT-DECORATION: none } .buttonLibrary LI A:hover { TEXT-DECORATION: underline } DIV.menuStyleStep { MARGIN: 9px 40px 0px 0px; WIDTH: 212px; FLOAT: left } DIV.menuDefaultStyleStep { MARGIN: 9px auto; WIDTH: 212px } .schemeWrapper { MARGIN: 0px 12px 0px 0px; FLOAT: left } .buttonLibrary .schemeWrapper { PADDING-BOTTOM: 10px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #fff; FLOAT: none; PADDING-TOP: 10px; -moz-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); border-radius: 4px } .buttonLibrary .selected .schemeWrapper { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #bbb; PADDING-TOP: 10px } #selectedPalette .schemePreview { BORDER-BOTTOM: #bbb 10px solid; BORDER-LEFT: #bbb 10px solid; BORDER-TOP: #bbb 10px solid; BORDER-RIGHT: #bbb 10px solid; -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); border-radius: 4px } .schemeWrapper SPAN { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: italic 100% Georgia; PADDING-TOP: 6px } UL.buttonLibrary LI.selected { POSITION: absolute; TOP: 6px; LEFT: 0px } UL.buttonLibrary LI.selected A.selected { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A.selected SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .schemePreview { PADDING-BOTTOM: 0px; PADDING-LEFT: 16px; WIDTH: 160px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .modulePreview { BORDER-BOTTOM: 0px solid; POSITION: relative; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px !important; MARGIN: 6px 0px 0px auto; PADDING-LEFT: 0px !important; WIDTH: 140px; BOTTOM: 0px; PADDING-RIGHT: 0px !important; HEIGHT: 57px; FONT-SIZE: 85%; BORDER-TOP: 1px solid; RIGHT: 0px; BORDER-RIGHT: 0px solid; PADDING-TOP: 0px !important; LEFT: auto } .schemePreviewHead { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 6px !important } .modulePreviewHead { PADDING-BOTTOM: 4px !important; MARGIN: 0px; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-WEIGHT: bold; PADDING-TOP: 4px !important } .schemePreviewBody { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 3px } .modulePreviewBody { PADDING-BOTTOM: 3px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 4px !important } .moduleList { BORDER-TOP: #ccc 1px solid } .moduleItem { BORDER-BOTTOM: #ccc 1px solid } .module { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } .moduleHeading { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 10px } .module H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 110% } .moduleDescription { WIDTH: 90% } .more { DISPLAY: none } .moduleAction { MARGIN: 10px 0px } .moduleCategory { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .moduleCategory A { FONT-WEIGHT: bold } .moduleSample { PADDING-LEFT: 10px; DISPLAY: none } .expandedModule { BACKGROUND-COLOR: #efefef } .expandedModule .moduleDetails { WIDTH: 47% } .expandedModule .moduleSample { WIDTH: 47% } .expandedModule .more { DISPLAY: inline } .expandedModule .moduleSample { DISPLAY: block } .leftColumn-wide#moduleList .contentListPlain { PADDING-LEFT: 18px } .moduleListActionBar { PADDING-LEFT: 18px } #moduleList .contentListPlain > LI.expandedModule .moduleSample > DIV { MIN-HEIGHT: 50px !important; WORD-WRAP: normal } #moduleBody { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } #moduleBorder { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .portlet { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #efede3; MARGIN: 0px 10px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #444; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 0 2px 4px rgba(0, 0, 0, .05); border-radius: 3px } .containerPortal > DIV:first-child .portlet { MARGIN: 0px 10px 20px 0px } .reorderableModule:hover { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; -webkit-transition-property: border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border, background; -moz-transition-duration: 200ms; -moz-transition-timing-function: ease-in-out } .reorderableModule:hover H2 { COLOR: #000 } .module-dragstate { BORDER-BOTTOM-COLOR: #555; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: 2px; opacity: .9; -moz-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-transition-property: border-width, border-color, background, -webkit-box-shadow; -webkit-transition-duration: 50ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border-width, border-color, background, -moz-box-shadow; -moz-transition-duration: 50ms; -moz-transition-timing-function: ease-in-out } #moduleTitle { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 .moduleTitle { WORD-WRAP: break-word } .portlet H2.dragHandle { PADDING-LEFT: 20px } .portlet H2.dragHandle:hover { CURSOR: move } .portlet H2 A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; COLOR: #fff; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .portlet H2 A:hover { TEXT-DECORATION: underline } .portlet H2 A IMG { VERTICAL-ALIGN: middle } .portlet H2.noTitle { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 1.4em; PADDING-TOP: 0px } .portlet H2.noTitle:hover { BACKGROUND: #ededed } .portlet A { WORD-WRAP: break-word; TEXT-DECORATION: none } .portlet A:hover { TEXT-DECORATION: underline } .edit_controls { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FLOAT: right; PADDING-TOP: 7px } .portlet .edit_controls { VISIBILITY: hidden } .portlet:hover .edit_controls { VISIBILITY: visible } .edit_controls A { Z-INDEX: 201; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 1px; TEXT-DECORATION: none; PADDING-TOP: 0px; verical-align: top } .portlet .edit_controls A:hover { TEXT-DECORATION: none } .portlet:hover .edit_controls A { TEXT-DECORATION: none } .edit_controls .moduleToggleLink { Z-INDEX: 201; POSITION: absolute; FILTER: alpha(opacity=50); PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 14px; PADDING-RIGHT: 3px; HEIGHT: 14px; TOP: 3px; PADDING-TOP: 3px; LEFT: -4px; opacity: .5 } .edit_controls A IMG { DISPLAY: none } .edit_controls A:before { FONT: 16px/1 "Utilicons"; COLOR: #bcbcbc; text-shadow: 0 1px 0 #fff } .edit_controls A:hover:before { COLOR: #888 } .edit_controls A.moduleToggleLink { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px } .edit_controls A[title*='Expand'].moduleToggleLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .edit_controls A.moduleCloseLink:before { CONTENT: "X" } .edit_controls A.moduleDetachLink:before { FONT: 16px/1 "Utilicons"; CONTENT: "w" } .edit_controls A[href*='edit_module']:before { CONTENT: "S" } .collapsible { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px } .collapsible TABLE { BORDER-SPACING: 3px 2px; BORDER-COLLAPSE: separate; FONT-FAMILY: Helvetica, Arial, sans-serif; COLOR: #333; FONT-SIZE: 90% } .collapsible .help { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .imgWrapper { TEXT-ALIGN: center; MARGIN: 6px auto; OVERFLOW: auto } .portlet H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } #lightbox H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.portletBlock H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.blockContents H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .flyout H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 5px } .portlet H4 { PADDING-BOTTOM: 2px; TEXT-INDENT: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 1px } .portlet .portletList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList LI:first-child { BORDER-TOP: medium none } .portlet .portletList LI IMG { DISPLAY: none } .portlet .courseListing LI > A { FONT-WEIGHT: bold } .portlet .courseRole { COLOR: #777 } .portlet .dataBlockLabel { COLOR: #777 } .portlet .eventDate { COLOR: #777 } .portlet .eventList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .eventList LI .date { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f0f0f0; COLOR: #597298; FONT-WEIGHT: bold; PADDING-TOP: 2px; -moz-border-radius: 1px; -webkit-border-radius: 1px; border-radius: 1px } .portlet .eventList LI .event { PADDING-BOTTOM: 2px; PADDING-LEFT: 18px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .portlet .eventList LI .description { FONT-SIZE: 90% } .portlet .eventDate { FONT-SIZE: 90% } .portlet .eventList LI .event A { FONT-WEIGHT: bold } .portlet SPAN.origin { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #999; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet .portletList-img > LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList-img > LI:first-child { BORDER-TOP: medium none; PADDING-TOP: 0px } .portlet .portletList-img > LI IMG { DISPLAY: none } .portlet .courseInformation { PADDING-BOTTOM: 0px; TEXT-INDENT: -16px; MARGIN: 4px 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock { PADDING-BOTTOM: 0px; TEXT-INDENT: -4px; MARGIN: 4px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock UL { MARGIN-TOP: 5px } .portlet .courseDataBlock UL LI { TEXT-INDENT: 0px } .portlet .calculatorModule { TEXT-ALIGN: center } .portlet .calculator { PADDING-BOTTOM: 6px; MARGIN: 0px auto; PADDING-LEFT: 6px; WIDTH: 10em; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .portlet .portletPath { MARGIN: 4px; BACKGROUND: #f0f0f0; FONT-SIZE: 90%; -moz-border-radius: 1px; -webkit-border-radius: 1px } .portlet .portletPath SPAN { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; DISPLAY: inline-block; BACKGROUND: #ddd; COLOR: #666; FONT-WEIGHT: bold; PADDING-TOP: 1px; -moz-border-radius: 1px 0 0 1px; -webkit-border-radius: 1px 0 0 1px } .portlet .courseDataBlock UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px -895px; PADDING-TOP: 0px } .portlet .courseDataBlock A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock LI A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock A:hover { TEXT-DECORATION: underline } .portlet .courseDataBlock LI A:hover { TEXT-DECORATION: underline } .portletHelp { PADDING-BOTTOM: 2px; MARGIN: 4px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #688ba8; FONT-SIZE: 95%; PADDING-TOP: 1px } DIV.module_actions { PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.8em; MARGIN: 4px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.module_actions A:link { BORDER-BOTTOM: #ccc 1px outset; BORDER-LEFT: #ccc 1px outset; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 5px; COLOR: #036; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px outset; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px outset; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.module_actions A:hover { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions A:active { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions IMG { MARGIN: 0px 3px; VERTICAL-ALIGN: middle } DIV.module_actions SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.module_actions LABEL { FONT-WEIGHT: bold } DIV.scroll_div { MAX-HEIGHT: 300px; OVERFLOW: auto } .portlet DIV.scroll_div { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN-BOTTOM: 3px; BACKGROUND: #fff4bf; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .submission_list { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .submission_list LI { PADDING-BOTTOM: 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; PADDING-TOP: 9px } .submission_list LI:first-child { BORDER-TOP: medium none } .submission_list LI A { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .submission_list LI A.label { MARGIN-LEFT: 0px; FONT-SIZE: 100%; FONT-WEIGHT: bold } .submission_list LI DIV.button { MARGIN: 4px 0px 0px; FLOAT: right } .submission_list LI SPAN { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .eudModule { PADDING-BOTTOM: 24px; MARGIN: 0px } .styledModule-dark { PADDING-BOTTOM: 24px; MARGIN: 0px } .portlet .noItems { TEXT-ALIGN: center; FONT-STYLE: italic } .eudModule .eudModule-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .styledModule-dark .module-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .eud-button-wrap { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } IMG.eud-avatar { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 28px; PADDING-RIGHT: 2px; BACKGROUND: #fff; HEIGHT: 28px; PADDING-TOP: 2px; -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -moz-border-radius: 2px; -webkit-border-radius: 2px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } .actionMenuButton { FILTER: none; PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: block; BACKGROUND: #eee; VERTICAL-ALIGN: middle; PADDING-TOP: 3px } DIV[id*='actionMenu_'] { Z-INDEX: 1000; MARGIN-TOP: -4px; MARGIN-LEFT: -3px } .portlet .portletBlock { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 6px } .portlet .portletBlock:first-child { BORDER-TOP: 0px } .moduleActions + .portletBlock { BORDER-TOP: 0px } .blockGroups LI:first-child { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .portlet .memberList { MARGIN: 0px 0px 5px } .itemGroups { PADDING-BOTTOM: 0px; MARGIN: 4px 9px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .itemGroups .itemGroups { MARGIN-BOTTOM: 4px; MARGIN-LEFT: 0px } .portlet .blockGroups LI { FONT-SIZE: 100% } .portlet .itemGroups LI { PADDING-BOTTOM: 7px; LINE-HEIGHT: 120%; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .memberList LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 14px !important; PADDING-TOP: 0px } .portlet .course { DISPLAY: block; FONT-SIZE: 90% } .portlet UL.memberList { DISPLAY: block; FONT-SIZE: 90% } .portlet SPAN.refresh { DISPLAY: block; FONT-SIZE: 90% } .portlet .course { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet SPAN.noIndent { MARGIN-LEFT: 0px !important } .portlet .whatsNew SPAN.course { MARGIN-LEFT: 0px !important } .portlet SPAN.course { MARGIN-LEFT: 0px !important } .portlet UL.hierarchyList { MARGIN-LEFT: 22px } .portlet UL.hierarchyList LI { OVERFLOW-X: visible; TEXT-INDENT: -18px } .portlet UL.hierarchyList LI * { TEXT-INDENT: 0px } .portlet UL.hierarchyList LI.childless { TEXT-INDENT: 0px } .portlet UL LI UL LI SPAN.warning { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.newItemCount { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .flag { BORDER-BOTTOM: #efa495 1px solid; BORDER-LEFT: #efa495 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; BACKGROUND: #ffe4df; COLOR: #c30; FONT-SIZE: 90%; BORDER-TOP: #efa495 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #efa495 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL.memberList SPAN { FONT-SIZE: 100% } .portlet UL.memberList SPAN.newItemCount { FONT-SIZE: 100% } .portletInfoFooter { POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 9px; BOTTOM: 5px; PADDING-RIGHT: 9px; COLOR: #999; FONT-SIZE: 90%; RIGHT: 0px; PADDING-TOP: 2px } .dateSelector { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .blockGroups LI SPAN.newItemCount { COLOR: #999; FONT-WEIGHT: normal } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHead A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .portlet .portletBlock H4 A:hover { BACKGROUND: #eee } .portlet .portletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .portlet .portletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .portlet .subCategories LI A { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead:hover { CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) #fff no-repeat 1px 9px; COLOR: #0099b6 } .blockGroups .itemHeadOpen:hover { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen:focus { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups LI IMG.spacer { WIDTH: 50px; HEIGHT: 0px } .blockGroups LI SPAN.headerText:hover { CURSOR: pointer; TEXT-DECORATION: underline } .viewHeader { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .viewHeader H3 { COLOR: #666; FONT-WEIGHT: bold } DIV.waitingFrame { BACKGROUND: #fff } .moduleControlWrapper { MARGIN: 6px 0px 0px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 6px } .moduleControlWrapper A { POSITION: relative; MARGIN: 0px 2px } .moduleControlWrapper A:after { POSITION: relative; COLOR: #bbb; FONT-SIZE: 14px; CONTENT: "\2192"; RIGHT: 0px; FONT-WEIGHT: bold } .moduleBlock { MARGIN: 6px } .portlet H1 { MARGIN: 6px; FONT-SIZE: 120% } .assessmentPortlet DIV.assessmentPortletBlock { BORDER-BOTTOM-COLOR: #777; PADDING-BOTTOM: 0px; BORDER-TOP-COLOR: #777; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #f9f9f9; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4 A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4 A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet UL.subCategories { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock UL.subCategories LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet UL.subCategories LI A { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead:hover { BACKGROUND-COLOR: #e3efff; TEXT-DECORATION: underline } UL.assessmentBlockGroups LI A.itemHeadOpen { BACKGROUND: #fff no-repeat 3px center } UL.assessmentBlockGroups LI A.itemHeadOpen:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .assessmentPortlet UL.subCategories LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } UL.assessmentBlockGroups LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .assessmentPortlet UL.subCategories LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } UL.assessmentBlockGroups LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } .assessmentPortlet UL.itemGroup LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.assessmentBlockGroups LI UL.itemGroups LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet UL.itemGroup LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI UL.items { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; FONT-SIZE: 110%; PADDING-TOP: 2px } UL.assessmentBlockGroups LI UL.itemGroups LI A { FONT-WEIGHT: normal } UL.itemGroups LI UL.items LI A { FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H3 { MARGIN: 0px } .assessmentPortlet DIV.assessmentPortletBlock H3 A { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f0f0f0; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet DIV.assessmentPortletBlock H3 A:hover { TEXT-DECORATION: none } .assessmentPortlet DIV.assessmentPortletBlock:first-child H3 A { BORDER-TOP: medium none } .assessmentPortlet DIV.assessmentPortletBlock H3 A.open { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/less_options.gif) #e3efff no-repeat 99% center; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet UL.objectList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortletBlock UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .blockContents UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.memberList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet .blockContents UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet .blockContents UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .portlet #loginBoxFull { PADDING-BOTTOM: 16px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull P { MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; COLOR: #444; FONT-SIZE: 0.95em } .portlet #loginBoxFull P.welcome { PADDING-BOTTOM: 0px; MARGIN: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000; FONT-SIZE: 1em; FONT-WEIGHT: bold; PADDING-TOP: 0px } .portlet #loginBoxFull UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } .portlet #loginBoxFull LI LABEL { FONT-SIZE: 100%; FONT-WEIGHT: normal } .portlet #loginBoxFull INPUT[type='text'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='password'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull A { FONT-SIZE: 0.9em } .portlet #loginBoxFull P A { FONT-SIZE: 1em } .portlet #loginBoxFull P.welcome A { FONT-SIZE: 1em } .portlet #loginBoxFull LI + LI + LI { FLOAT: left } .portlet #loginBoxFull LI + LI + LI + LI { TEXT-ALIGN: right; FLOAT: right } .portlet #loginBoxFull LI INPUT.submit { MARGIN: -14px -3px 0px 0px } #body { PADDING-BOTTOM: 60px } #loadstatus { POSITION: relative; HEIGHT: 180px } FIELDSET.highlight { BACKGROUND: #eee } FIELDSET.highlight DIV.input { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .builderItem .item { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FONT-SIZE: 100%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 12px } .builderItem:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } #lessonPlanForm #dataCollectionContainer .contentListPlain LI:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } LI.builderItem { MIN-HEIGHT: auto } .builderItem .close { POSITION: absolute; TOP: 5px; CURSOR: pointer; RIGHT: 5px } .builderItem IFRAME { WIDTH: 100% !important } DIV.subheading { FONT-WEIGHT: bold } DIV.required DIV.inputField { PADDING-LEFT: 1.5em; BACKGROUND: url(../../images/ci/icons/required.gif) no-repeat left 2px; MARGIN-LEFT: -1.5em } .inputOptions { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.5em } .offscreen { POSITION: absolute; HEIGHT: 0px; LEFT: -999em } .label A:hover { CURSOR: pointer } #lessonPlanForm #customFormBuilderDiv { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer .contentListPlain { MARGIN: 0px } .alignPanelLightbox { MIN-WIDTH: 650px; PADDING-BOTTOM: 10px; MIN-HEIGHT: 250px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .alignHeader { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .alignPanel TABLE TD { FONT-SIZE: 90% } .alignPanel TABLE TH { FONT-SIZE: 90% } .alignPanel TABLE TD.descriptionCell { MIN-WIDTH: 120px; WORD-WRAP: break-word } .alignPanel THEAD TH.smallCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .alignPanel THEAD TH { WHITE-SPACE: nowrap } .alignPanel TD.actionCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 4px } .pageBreadcrumb { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #fff; HEIGHT: 1em; PADDING-TOP: 6px } .pageBreadcrumb UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .pageBreadcrumb LI { FLOAT: left; COLOR: #999; MARGIN-LEFT: 3px; FONT-WEIGHT: bold } .pageBreadcrumb LI A { COLOR: #036; FONT-WEIGHT: bold; MARGIN-RIGHT: 3px; TEXT-DECORATION: none } .pageBreadcrumb LI A.active { COLOR: #036; FONT-WEIGHT: bold; TEXT-DECORATION: none } .sStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #063; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .sStatusI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #c00; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .panelList { PADDING-BOTTOM: 0px; MARGIN: 2px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; PADDING-TOP: 0px } .panelList > LI { MARGIN: 0px 0px 1px } .panelNested { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #fff; MARGIN: 4px 0px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; OVERFLOW: hidden; PADDING-TOP: 4px } .panelHead { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; WORD-WRAP: break-word; BACKGROUND: #efefef; PADDING-TOP: 6px } .panelHead A { COLOR: #000; TEXT-DECORATION: none } .panelItem { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 6px } .panelList_leftCol { POSITION: absolute; TOP: 6px; LEFT: 6px } .panelList_rightCol { POSITION: absolute; TOP: 6px; RIGHT: 6px } .panelList_centerCol { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 0px } UL.logMessages { LIST-STYLE-TYPE: none; TEXT-INDENT: -1em; PADDING-LEFT: 1em; MARGIN-LEFT: 0px; LIST-STYLE-IMAGE: none } LI.logError { COLOR: red } LI.logWarning { COLOR: blue } LI.logMessage { MARGIN-TOP: 0.1em } .connectionWrapper { POSITION: relative; MARGIN-TOP: 1px; PADDING-RIGHT: 30px } .connectionWrapper A { POSITION: absolute; MARGIN-TOP: -14px; TOP: 50%; RIGHT: 0px } .invertItems { POSITION: relative; DISPLAY: block !important; MARGIN-RIGHT: 26px } .invertItems A { POSITION: absolute; TOP: -14px; RIGHT: -33px } .subcategories { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 11px !important; PADDING-RIGHT: 11px !important; PADDING-TOP: 6px !important } .subcategories H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.calendarTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.announcementTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.calendarTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.announcementTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.calMonth { PADDING-BOTTOM: 6px; MARGIN: 10px 4px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; OVERFLOW: auto; PADDING-TOP: 2px } DIV.calMonth TABLE { BORDER-BOTTOM: #a8beda 2px solid; BORDER-LEFT: #a8beda 1px solid; MARGIN: 0px auto; BORDER-COLLAPSE: collapse; BORDER-TOP: #a8beda 2px solid; BORDER-RIGHT: #a8beda 2px solid } DIV.calMonth TABLE THEAD TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE TBODY TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE THEAD TD DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TBODY TH DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE THEAD TH { BORDER-BOTTOM: #a0a0a0 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 8em; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; OVERFLOW: hidden; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } DIV.calMonth TABLE TBODY TD { BORDER-BOTTOM: #a8beda 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 8em; PADDING-RIGHT: 0px; BACKGROUND: url(images/backgrounds_h.png) white repeat-x 0px -400px; HEIGHT: 8em; OVERFLOW: hidden; BORDER-RIGHT: #a8beda 1px solid; PADDING-TOP: 0px } DIV.calMonth TABLE TH:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:focus { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:active { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD A.daylink { BORDER-BOTTOM: #a8beda 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; WIDTH: 1.2em; PADDING-RIGHT: 0.2em; DISPLAY: block; BACKGROUND: #e3efff; FLOAT: left; FONT-SIZE: 110%; FONT-WEIGHT: bold; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0.2em } DIV.calMonth TABLE TD A.daylink:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD A.daylink SPAN { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TD.today { BACKGROUND-COLOR: #fff4bf } DIV.calMonth TABLE TD.today A.daylink { BACKGROUND: #fff4bf; FONT-WEIGHT: bold } DIV.calMonth TABLE TD.today A.daylink:hover { BACKGROUND: url(images/backgrounds_h.png) #fff4bf repeat-x 0px -50px } DIV.calMonth TABLE TD.offday { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:hover { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:focus { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD DIV { WIDTH: 8em; CLEAR: both; OVERFLOW: hidden } DIV.calMonth TABLE TD DIV UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.calMonth TABLE TD DIV UL LI { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FONT-SIZE: 90%; PADDING-TOP: 1px } TABLE.calYear { POSITION: relative; MIN-WIDTH: 200px; MARGIN: 6px; BORDER-COLLAPSE: collapse; FONT-SIZE: 95% } TABLE.calYearFloat { MARGIN: 6px 0.66%; WIDTH: 32%; FLOAT: left } TABLE.calYear THEAD TD { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear TBODY TH { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear CAPTION { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 108%; PADDING-TOP: 2px } TABLE.calYear CAPTION A { FONT-WEIGHT: bold; TEXT-DECORATION: none } TABLE.calYear CAPTION A:hover { TEXT-DECORATION: underline } TABLE.calYear THEAD TH { BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } TABLE.calYear TBODY TD { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; WHITE-SPACE: nowrap; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } TABLE.calYear TD A { POSITION: relative; WIDTH: 100%; DISPLAY: block; TEXT-DECORATION: none } TABLE.calYear TD A IMG { FLOAT: left } TABLE.calYear TD:hover { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:focus { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:active { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TH:hover { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:focus { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:active { BACKGROUND-COLOR: #ccc } TABLE.calYear TD.today { BACKGROUND: #999 } TABLE.calYear TD.today:hover { BACKGROUND: #999 } TABLE.calYear TD.today:focus { BACKGROUND: #999 } TABLE.calYear TD.today A { COLOR: #fff; FONT-WEIGHT: bold; text-shadow: 0 -1px 0 #555 } TABLE.calYear TD.today A:hover { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:active { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:focus { BACKGROUND-IMAGE: none } TABLE.calYear TD.offday { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:hover { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:focus { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.hasEvent { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -50px; FONT-WEIGHT: bold } TABLE.calendarDay { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; MARGIN: 10px 0px 0px; WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #cdcdcd 1px solid; BORDER-RIGHT: #cdcdcd 1px solid } TABLE.calendarDay THEAD { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay THEAD TH { POSITION: absolute; TOP: 0px; LEFT: -1000px } UL.calendarWeek LI TABLE.calendarDay { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } TABLE.calendarDay TBODY TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 3px; WIDTH: 6%; PADDING-RIGHT: 12px; BACKGROUND: #f3f3f3; COLOR: #555; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } TABLE.calendarDay TBODY TH:hover { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:focus { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:active { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #fff; VERTICAL-ALIGN: top; BORDER-TOP: #cdcdcd 1px solid; PADDING-TOP: 0px } TABLE.calendarDay TBODY TD.hasEvent { PADDING-LEFT: 6px } TABLE.calendarDay TBODY TD.hasEvent A.jumpToEvent { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay TBODY TR.halfHour TH { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.halfHour TD { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.midday TH { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TBODY TR.midday TD { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TR.notBusinessHours TH { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #f3f3f3; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TABLE.calendarDay TR.notBusinessHours TD { BACKGROUND: #fafafa } TABLE.calendarDay TBODY TR.notBusinessHours TD.hasEvent { BACKGROUND: #fafafa } TABLE.calendarDay TR TH SPAN.ampm { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #bbb; LETTER-SPACING: 0.1em; COLOR: #fff; FONT-SIZE: 75%; TOP: -1.2em; PADDING-TOP: 0px; LEFT: -4px } TABLE.calendarDay TBODY TR:hover { -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calendarDay TBODY TR:hover TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TD DIV DIV { PADDING-BOTTOM: 1px; MARGIN: 0px 4px 0px -6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: #b5ccea; FLOAT: left; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } TABLE.calendarDay TD DIV DIV.contextMenuContainer { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px -3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: none; PADDING-TOP: 0px } TABLE.calendarDay TD DIV SPAN { COLOR: #555; FONT-SIZE: 90% } UL.calendarWeek { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #cdcdcd 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #cdcdcd 1px solid; PADDING-TOP: 0px } UL.calendarWeek LI { BORDER-BOTTOM: #cdcdcd 1px solid; POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } UL.calendarWeek LI UL:first-child { BORDER-TOP: medium none } UL.calendarWeek UL LI:first-child { BORDER-TOP: medium none } UL.calendarWeek LI H3.weekDay { PADDING-BOTTOM: 0.3em; MARGIN: 0px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BACKGROUND: #e3efff; COLOR: #666; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 0.3em } UL.calendarWeek LI H3.weekDay:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.calendarWeek LI UL LI { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ededed 1px solid; PADDING-TOP: 6px } UL.calendarWeek LI UL LI:hover { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:focus { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:active { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI H4 { PADDING-BOTTOM: 1px; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 3px; WIDTH: 10em; PADDING-RIGHT: 3px; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 1px } UL.calendarWeek LI DIV { MARGIN-LEFT: 11em } UL.calendarWeek LI DIV.contextMenuContainer { MARGIN: 0px 0px 0px -3px } UL.calendarWeek LI UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } .diffbox-wrapper { MARGIN: 9px auto; WIDTH: 80% } .legendbox-wrapper { MARGIN: 9px auto; WIDTH: 90% } .legendbox-wrapper > DIV { BORDER-LEFT: #ddd 1px solid } .legendbox-wrapper > DIV:first-child { BORDER-LEFT: medium none } .diffbox-left { FLOAT: left } .diffbox-right { FLOAT: left } .diffbox-arrow { FLOAT: left } .legendbox { FLOAT: left } .diffbox-left { WIDTH: 44% } .diffbox-right { WIDTH: 44% } .legendbox-3 { WIDTH: 33% } .legendbox-2 { WIDTH: 48% } .diffbox-left > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .diffbox-right > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #fff; PADDING-TOP: 3px } .diffbox-right > DIV { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .diffbox-left UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-right UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .legendbox UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-left UL LI:first-child { BORDER-TOP: 0px } .diffbox-right UL LI:first-child { BORDER-TOP: 0px } .legendbox UL LI:first-child { BORDER-TOP: 0px } .diffbox-left .label { WIDTH: 30%; COLOR: #666 } .diffbox-right .label { WIDTH: 30%; COLOR: #666 } .legendbox .label { WIDTH: 30%; COLOR: #666 } .diffbox-left .field { WIDTH: 59% } .diffbox-right .field { WIDTH: 59% } .legendbox .label { WIDTH: 45%; FONT-SIZE: 90% } .legendbox .field { WIDTH: 55% } .diffbox-arrow { TEXT-ALIGN: center; WIDTH: 6%; PADDING-TOP: 50px } .diffLegend-sample { POSITION: static !important; WIDTH: 90px !important; HEIGHT: 17px !important } .addedImg-sample { HEIGHT: 13px !important } .removedImg-sample { HEIGHT: 13px !important } .changedImg-sample { HEIGHT: 13px !important } .diff-html-added { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-removed { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .added-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .removed-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-added { BACKGROUND-COLOR: #cfc } .added-sample { BACKGROUND-COLOR: #cfc } .diff-html-removed { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .removed-sample { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .diff-html-changed { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .changed-sample { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .diff-html-added IMG { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .addedImg-sample { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .diff-html-removed IMG { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .removedImg-sample { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .diff-html-changed IMG { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } .changedImg-sample { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } DIV.diff-removed-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-added-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } .diff-addedImg-sample { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-removed-image { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } .diff-removedImg-sample { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } DIV.diff-added-image { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } .diff-addedImg-sample { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } DIV.blogContainer DIV.wikiPage { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid } DIV.blogContainer DIV.wikiPage H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; FONT-SIZE: 120%; PADDING-TOP: 9px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryDate { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 6px } .editWiki { MARGIN: 9px } .topRound { DISPLAY: none } .bottomRound { DISPLAY: none } .playerControls { POSITION: relative; PADDING-BOTTOM: 6px !important; MARGIN-TOP: 0px; PADDING-LEFT: 6px !important; PADDING-RIGHT: 6px !important; MARGIN-BOTTOM: 2px; PADDING-TOP: 6px !important } IMG.managedPluginStatusIcon { MARGIN: 1px 7px 3px 0px } UL.metaDataList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.metaDataList LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } UL.metaDataList LI H3 { MARGIN: 0px; DISPLAY: inline } .bb-cpgbtd { FONT-SIZE: 90% } .bb-cpgbth { FONT-SIZE: 90% } .bb-cpmgtd { COLOR: #000; FONT-SIZE: 85% } .bb-cpmgth { FONT-SIZE: 85%; FONT-WEIGHT: bold } #resizeHandle { BORDER-BOTTOM: #999 1px solid; POSITION: absolute; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 0px; WIDTH: 3px; BOTTOM: 0px; BACKGROUND: #ddd; BORDER-TOP: #999 1px solid; TOP: 0px; BORDER-RIGHT: #999 1px solid; LEFT: 200px; -moz-border-radius: 1px; -webkit-border-radius: 1px } #resizeHandle:hover { BACKGROUND: #aaa; CURSOR: e-resize } #resizeHandle .collapseControl { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #resizeHandle .pullcollapsed { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .collapseControl:hover { CURSOR: pointer } .caretTitleModifier { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; COLOR: #444; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } .landingPageColumn H3.hiddenlink .linkStatus { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0.4em } TABLE.inventory .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .additional { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .additional .left { FLOAT: left } .additional .right { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: right; COLOR: #777; PADDING-TOP: 2px } .additional .right SPAN.size { COLOR: #000; FONT-WEIGHT: bold } .additional .left SPAN.suboption { DISPLAY: block } A.add { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #b3efb3; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.add:hover { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #e4ffdf; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.remove { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffc4bf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } A.remove:hover { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffd2cf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .listColumnHead { BORDER-BOTTOM: #ccc 1px dotted; MARGIN-BOTTOM: 3px; COLOR: #555; FONT-SIZE: 90%; FONT-WEIGHT: bold } .customFormBuilderLabel { WIDTH: 88%; DISPLAY: block; WORD-WRAP: break-word } .textareaWrapper TEXTAREA { WIDTH: 100% } .textareaWrapper TABLE { WIDTH: 100% } .tools.navPalette { } DIV.instructionData { MARGIN: 0px 0px 12px } DIV.instructionData UL { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } DIV.instructionData UL LI H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 100% } DIV.instructionData UL LI.instructions { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px } DIV.instructionData UL LI.saving { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.instructionData UL LI.instructions A.browse { BORDER-BOTTOM: medium none; BORDER-LEFT: #ccc 1px solid; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .assessmentInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } .assessmentInstructions H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px }

.assessmentPortlet { Z-INDEX: 1; POSITION: fixed; RIGHT: 43px } .assessmentPortlet H3 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.assessmentPortletBlock H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.blockContents H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .savingQuestion { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: none; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #c03; FONT-SIZE: 150%; PADDING-TOP: 2px } TR.dummyVTBEFooter TD { BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 2px } .qIncomplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; COLOR: #333; BORDER-TOP: #999 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } .qComplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; BACKGROUND-COLOR: #ccc; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; FLOAT: left; COLOR: #888; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } DIV.canvasHead { PADDING-BOTTOM: 12px; MARGIN: 0.6em 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #f6f6f6; PADDING-TOP: 6px } DIV.canvasHead UL LI { BORDER-TOP: #eee 1px solid } DIV.canvasHead UL LI:first-child { BORDER-TOP: medium none } DIV.canvasHead UL LI DIV.label { COLOR: #555 } .peer_instructions { MARGIN: 12px 6px } .peerHelp { COLOR: #555 } H2.evaluator { MARGIN: 1em 0px 0.3em } H2.evaluator SPAN { FONT-SIZE: 90%; FONT-WEIGHT: normal } DIV.peerCriteriaStatus { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; BACKGROUND: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 0.3em } DIV.peerCriteriaStatus A.itemHeadOpen { MARGIN: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 90%; FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV.peerCriteriaStatus A.itemHeadOpen:hover { TEXT-DECORATION: underline } DIV.peerCriteriaStatus TD.qStatus { PADDING-BOTTOM: 4px; PADDING-LEFT: 1px; WIDTH: 5%; PADDING-RIGHT: 1px; PADDING-TOP: 4px } DIV.peerCriteriaStatus TD.qStatus A SPAN { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #fff 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 1px solid; PADDING-TOP: 1px } DIV.peerCriteriaStatus TD.qStatus A SPAN.qComplete { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qComplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qIncomplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus A SPAN IMG { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 12px; PADDING-RIGHT: 2px; HEIGHT: 12px; PADDING-TOP: 2px } .questionNumber { FONT-WEIGHT: bold } .questionType { FONT-WEIGHT: bold } .questionNumber { COLOR: #aaa } .questionDiv { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: -1px 0px 6px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.6em } .questionDiv H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: 0px 0px 0.6em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv P { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv DIV.criteriaText { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .questionDiv DIV.submission_text { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; WIDTH: 100%; PADDING-RIGHT: 4px; HEIGHT: 150px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .questionDiv TABLE { WIDTH: 98% } .questionDiv TABLE TABLE { WIDTH: auto } .questionDiv TD.label { WIDTH: 150px; WHITE-SPACE: nowrap } #creceipt { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: red; FONT-WEIGHT: bold; PADDING-TOP: 4px } UL.fileData { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.fileData LI { BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FLOAT: left; PADDING-TOP: 2px } UL.listNav { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: #ddd; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.listNav LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: #ededed; FLOAT: left; COLOR: #2d2680; PADDING-TOP: 0px } UL.listNav LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.listNav LI A:hover { BACKGROUND-COLOR: #dedede; TEXT-DECORATION: underline } UL.listNav LI A.active { BORDER-BOTTOM: #000 2px solid; BORDER-LEFT: #000 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BACKGROUND: #fff; COLOR: #000; BORDER-TOP: #000 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 2px solid; PADDING-TOP: 2px } UL.evaluation { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.evaluation LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 4px } UL.evaluation LI P { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 0px; WIDTH: 79%; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } UL.evaluation H4 { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 4px; WIDTH: 20%; PADDING-RIGHT: 0px; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } UL.evaluation LI P SPAN { COLOR: #555 } DIV.stepPanel DIV.user_html { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.stepPanels H4.defaultCursor { CURSOR: default } H4.defaultCursor { CURSOR: default } .qShow { DISPLAY: block } .qHide { DISPLAY: none } .completionContainer { PADDING-BOTTOM: 6px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainerLarge { PADDING-BOTTOM: 6px; HEIGHT: 75px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainer A IMG { VERTICAL-ALIGN: baseline } .pagedRumble { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 14px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px } .pagedPointsOutsideBar { POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; TOP: 0px; RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 0px; LEFT: auto } .pagedPoints { PADDING-BOTTOM: 6px; LINE-HEIGHT: 100%; MARGIN: -5px 24px -5px -10px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 5px } .designAreaHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaFooter { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaFooter H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaHeader .headertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .designAreaFooter .footertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV#emptyText { MARGIN: 0.6em 16px } .infoListWrapper { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #assessmentGradeForm .infoListWrapper { MARGIN: 0px -12px 18px } .infoListWrapper H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .infoListWrapper H3 A { PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -443px; PADDING-TOP: 3px } .infoListWrapper H3 A.open { BACKGROUND: url(images/indicators.png) no-repeat 0px -1040px } .infoList { MARGIN: 6px 12px } .infoList > LI { PADDING-BOTTOM: 0px !important; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 3px !important } .infoListWrapper .infoList > LI { BORDER-TOP: #cdcdcd 1px dotted } .infoList LI:first-child { BORDER-TOP: medium none } .infoList LI DIV H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .details .infoList { MARGIN-TOP: 0px !important } .infoListFloat { MARGIN: 0px } .infoListFloat LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 3px !important; PADDING-LEFT: 10px !important; PADDING-RIGHT: 10px !important; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 3px !important } .copyQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .linkQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .copyQuestion { BACKGROUND: url(/images/ci/icons/file_copy_ti.png) no-repeat 1px center } .linkQuestion { BACKGROUND: url(/images/ci/icons/file_link_ti.png) no-repeat 1px center } DIV.contentListRight { Z-INDEX: 1000; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 9px; RIGHT: 9px; FONT-WEIGHT: normal; PADDING-TOP: 4px } DIV.contentListRight A { MARGIN-LEFT: 4px; FONT-WEIGHT: bold } DIV.contentListRight SPAN:first-child + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN[style*='none']:first-child + SPAN { DISPLAY: none } DIV.contentListRight SPAN[style*='none']:first-child + SPAN + SPAN { DISPLAY: none } DIV.contentListRight SPAN SPAN { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 9px } DIV.contentListRight STRONG { PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.assessmentHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } DIV.assessmentHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 3px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.assessmentHeader DIV { MARGIN: 3px; COLOR: #555 } .questionShell { WIDTH: 100% } .questionShell > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TBODY > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell > TBODY > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH.labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell .labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell TD.valueCell { WIDTH: 83% } .questionShell .correctAnswer { WIDTH: 2% } .questionShell .field { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 15px; WIDTH: 95%; PADDING-RIGHT: 15px; PADDING-TOP: 0px } .questionShell .field IMG { POSITION: absolute; TOP: 52%; LEFT: -2px } .questionShell .field .vtbegenerated IMG { POSITION: relative; TOP: auto; LEFT: auto } .questionShell .vtbegenerated { WIDTH: 95%; DISPLAY: inline !important } .questionShell TD.valueCell TABLE .vtbegenerated { DISPLAY: inline !important } .takeQuestionDiv .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } #assessmentGradeForm .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } DIV.multiAssign { MARGIN: 3px 0px 9px } DIV.multiAssign UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; LIST-STYLE-IMAGE: none; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI.read { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI P { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } DIV.multiAssign UL LI.label { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.1em; PADDING-LEFT: 0px; WIDTH: 12em; PADDING-RIGHT: 0px; WHITE-SPACE: normal; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #888; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI P SPAN { COLOR: #888 } DIV.multiAssign A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } H3 A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.multiAssign A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.simpleLink { DISPLAY: block; COLOR: #666; FONT-WEIGHT: normal } H3 SPAN.status A.buttonMicro { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } H3 SPAN.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 DIV.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 SPAN.status SPAN { COLOR: #888 } H3 DIV.status SPAN { COLOR: #888 } H3 DIV.status { DISPLAY: inline } .gbtable_header DIV.gbText { text-shadow: 0 -1px 0 #777 } .gbtable THEAD DIV.gbText { text-shadow: 0 -1px 0 #777 } .subActionBar:hover { Z-INDEX: 1000 } .subActionBar DIV.block { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar DIV.button { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar SPAN.block { FLOAT: none } .subActionBar SPAN.button { FLOAT: none } .subActionBar LI.sub { POSITION: relative } .subActionBar FIELDSET LEGEND + DIV.block { BORDER-LEFT: 0px } .subActionBar SELECT { MAX-WIDTH: 180px; VERTICAL-ALIGN: middle } .subActionBar DIV.button { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .subActionBar DIV.last { BORDER-RIGHT: medium none } .subActionBar FIELDSET { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .subActionBar OPTGROUP { FONT-STYLE: normal; MARGIN-TOP: 6px; COLOR: #777; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal } .subActionBar OPTGROUP OPTION { COLOR: #000 } .subActionBar UL LI.sortableSelector A { PADDING-LEFT: 18px } .navPageHeader { TEXT-ALIGN: center; MARGIN: 1em 0px } .navPageHeader H3 { DISPLAY: inline; MARGIN-LEFT: 12px } .navPageHeader SPAN { MARGIN: 0px 6px 0px 0px; COLOR: #888; FONT-WEIGHT: normal } FIELDSET.secondaryActions { FLOAT: right } DIV.secondaryBlock { FLOAT: right } .cellInfoPanel { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #eee 1px solid; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid } .cellStatus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #f6f6f6; FONT-SIZE: 85%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .cellStatus DIV { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 2px } .statusTitle { BACKGROUND: #eee; COLOR: #666 } .statdata { COLOR: #000; OVERFLOW: hidden } .cellStatus DIV.gbTableTimeStamp { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; FLOAT: right; COLOR: #666; PADDING-TOP: 2px } .sortImage { POSITION: absolute; TOP: 9px; LEFT: 6px } .bubble { Z-INDEX: 1000; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } .bubble UL { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #e2eefe; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; OVERFLOW: hidden; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid; PADDING-TOP: 6px } .bubble UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 4px; PADDING-LEFT: 0px; WIDTH: 174px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #666; CLEAR: left; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .bubble UL LI SPAN { WIDTH: 80px; DISPLAY: block; FLOAT: left; COLOR: #666; FONT-WEIGHT: normal; MARGIN-RIGHT: 3px } .bubble UL LI SPAN.icon { WIDTH: 20px; FLOAT: left; OVERFLOW: hidden } .bubble UL LI SPAN.label { WIDTH: 147px; FONT-SIZE: 100%; FONT-WEIGHT: normal } .bubbleStem { POSITION: relative; WIDTH: 190px; HEIGHT: 14px } .bottom .bubbleStem { BOTTOM: 4px } .top .bubbleStem { TOP: -2px } .left .bubbleStem { PADDING-LEFT: 24px } .right .bubbleStem { TEXT-ALIGN: right; RIGHT: 24px } .selectList { Z-INDEX: 100; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #viewList { Z-INDEX: 1000 !important } .selectList LI { Z-INDEX: 101; MARGIN: 0px 4px 0px 0px; FLOAT: left } .selectList .sub A { DISPLAY: block; TEXT-DECORATION: none } .selectList .sub:hover UL { TOP: 20px !important; LEFT: 0px } .selectList .sub UL LI { POSITION: static !important; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .selectList .sub UL LI H4 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #888; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .selectList .sub UL LI H4 { WIDTH: 152px } .selectList .sub UL LI A { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:hover { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:focus { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub A #currentView { BACKGROUND-IMAGE: none } .selectList .sub A #currentSortBy { BACKGROUND-IMAGE: none } .selectList .sub A #currentColSortDir { BACKGROUND-IMAGE: none } UL.selectList LI.sub UL LI.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } UL.selectList LI.sub UL LI.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } DIV.gradeDetails { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 6px } DIV.gradeDetails DIV.label { WIDTH: 15% } SPAN.unstyled { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 0px } @media Print { DIV.hideOnPrint { DISPLAY: none } } DIV.gradeDetailsStep { BORDER-BOTTOM: #ccc 2px solid; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px 0px 6px } .gradeInfoHeader { PADDING-BOTTOM: 3px; MARGIN: 0px -12px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3 { PADDING-BOTTOM: 3px; MARGIN: 0px 4px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 3px } .gradeInfoHeader H3 SPAN { COLOR: #000; FONT-WEIGHT: bold } .gradeInfoHeader H3.root { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #888; COLOR: #fff; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3.root SPAN { COLOR: #fff } UL.gb_currView LI.sub UL LI.favorite A { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } UL.gb_currView LI.sub UL LI.favorite A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } .navStatusButtons .taskbuttondiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.staticFooter DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader { MARGIN: 10px 0px 0px } DIV.staticFooter DIV.details { BORDER-BOTTOM: #ddd 1px solid } .gbColumns_rumble { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ddd 1px solid } .staticHeader { POSITION: relative; ZOOM: 1; CLEAR: both } .staticFooter { POSITION: relative; ZOOM: 1; CLEAR: both } .staticHeader DIV.itemHeaderControl { RIGHT: 0px } .staticFooter DIV.itemHeaderControl { RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { RIGHT: 0px } .staticHeader DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticFooter DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticHeader DIV.itemHeaderControl A { DISPLAY: inline-block } .staticFooter DIV.itemHeaderControl A { DISPLAY: inline-block } UL.gbCategories LI DIV.itemHeaderControl A { DISPLAY: inline-block } UL.dragableHighlight { BORDER-BOTTOM: #999 1px dashed; PADDING-BOTTOM: 3px; MARGIN: 12px -30px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; BORDER-TOP: #999 1px dashed; PADDING-TOP: 12px } UL.gbCategories LI H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticHeader H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticFooter H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } UL.gbCategories LI H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticHeader H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticFooter H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.areaHighlight DIV.container { BACKGROUND: #f9f9f9 } DIV.areaHighlight DIV.bottomRound B { BACKGROUND: #f9f9f9 } UL.dragableHighlight LI H3.item { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .dragableHighlight DIV.details { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } .dbThreadInfo DL { MARGIN: 1em } .dbThreadInfo DT { PADDING-BOTTOM: 0.1em; MARGIN: 0px; PADDING-LEFT: 0.1em; WIDTH: 8em; PADDING-RIGHT: 0.1em; FLOAT: left; COLOR: #999; CLEAR: left; FONT-WEIGHT: bold; PADDING-TOP: 0.1em } .dbThreadInfo DD { PADDING-BOTTOM: 0.1em; MARGIN: 0px 0px 0px 9em; PADDING-LEFT: 0.1em; PADDING-RIGHT: 0.1em; PADDING-TOP: 0.1em } .rating { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 80px; PADDING-RIGHT: 0px; BACKGROUND: url(images/controls.png) no-repeat 0px -20px; HEIGHT: 16px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .star0 { BACKGROUND-POSITION: 0px -20px } .star1 { BACKGROUND-POSITION: 0px -36px } .star2 { BACKGROUND-POSITION: 0px -52px } .star3 { BACKGROUND-POSITION: 0px -68px } .star4 { BACKGROUND-POSITION: 0px -84px } .star5 { BACKGROUND-POSITION: 0px -100px } UL.rating LI { TEXT-INDENT: -999em; CURSOR: pointer } UL.rating LI A { Z-INDEX: 200; POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 0px; TEXT-DECORATION: none; LEFT: 0px } UL.rating LI.one A { LEFT: 0px } UL.rating LI.two A { LEFT: 16px } UL.rating LI.three A { LEFT: 32px } UL.rating LI.four A { LEFT: 48px } UL.rating LI.five A { LEFT: 64px } UL.rating LI A:hover { Z-INDEX: 2; WIDTH: 80px; BACKGROUND: url(images/controls.png) no-repeat -90px -36px; HEIGHT: 16px; OVERFLOW: hidden; LEFT: 0px } UL.rating LI.one A:hover { BACKGROUND-POSITION: -90px -36px } UL.rating LI.two A:hover { BACKGROUND-POSITION: -90px -52px } UL.rating LI.three A:hover { BACKGROUND-POSITION: -90px -68px } UL.rating LI.four A:hover { BACKGROUND-POSITION: -90px -84px } UL.rating LI.five A:hover { BACKGROUND-POSITION: -90px -100px } DIV.collectionViewReadMessageBorder { BORDER-LEFT: #ccc 1px solid; MARGIN-LEFT: 30px } DIV.collectionViewUnreadMessageBorder { BORDER-BOTTOM: #999 3px solid; BORDER-LEFT: #999 3px solid; MARGIN-LEFT: 30px; BORDER-TOP: #999 3px solid; BORDER-RIGHT: #999 3px solid } TABLE.treeframe TR TD { VERTICAL-ALIGN: middle } TABLE.tree_view TR TD IMG { VERTICAL-ALIGN: middle } TABLE.treeframe { MARGIN: 0px } TABLE.treeframe TBODY TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe THEAD TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe TR.high { BACKGROUND-COLOR: transparent } TR.thread TD { VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid } TR.thread TD IMG { VERTICAL-ALIGN: middle } TABLE.unreadmessageborder { BORDER-BOTTOM: #666 3px solid; BORDER-LEFT: #666 3px solid; BORDER-TOP: #666 3px solid; BORDER-RIGHT: #666 3px solid } TABLE.readmessageborder { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TR.show { DISPLAY: table-row } TR.hide { DISPLAY: none } .loadingelipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #ffc; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .gradefield { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 9px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #000; FONT-SIZE: 120%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 4px } .gradefield INPUT { BORDER-BOTTOM: #666 2px solid; BORDER-LEFT: #666 2px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-FAMILY: arial, sans-serif; BACKGROUND: #fff; FONT-SIZE: 110%; VERTICAL-ALIGN: middle; BORDER-TOP: #666 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #666 2px solid; PADDING-TOP: 1px } .gradefield INPUT.inputtypebutton { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; DISPLAY: inline; BACKGROUND: #ededed; HEIGHT: auto; FONT-SIZE: 80%; OVERFLOW: visible; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .gradefield A { FONT-SIZE: 120%; FONT-WEIGHT: bold } .gradefield SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; COLOR: #555; FONT-SIZE: 80%; PADDING-TOP: 0px } .overridegrade { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 3px 0px 3px 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline; FONT-SIZE: 80%; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .overridegrade INPUT.inputtypebutton { MARGIN-TOP: -3px; FONT-SIZE: 70%; VERTICAL-ALIGN: middle; FONT-WEIGHT: normal } DIV.parentmessage { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #ededed; CLEAR: both; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .availability { PADDING-BOTTOM: 1px; FONT-STYLE: italic; MARGIN: 6px 0px; PADDING-LEFT: 3px; WIDTH: auto; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TD.tag_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.msg_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.checkbox_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } TD.prevnextpostarea { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } H3.dbheading { MARGIN-TOP: 0px; DISPLAY: inline; MARGIN-BOTTOM: 0px; FONT-WEIGHT: normal } .dbThread { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa 1px solid; MARGIN: 24px 30px; BACKGROUND: #eee; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 3px 6px #ccc; -webkit-box-shadow: 0 3px 6px #ccc; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbThreadCheckbox { POSITION: absolute } .dbThreadCheckbox INPUT { MARGIN: 10px } .dbThread .dbThreadInfo { PADDING-BOTTOM: 1em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; COLOR: #555; PADDING-TOP: 1em } .dbThreadInfo DL { MARGIN: 0px; WIDTH: 50%; FLOAT: left; FONT-SIZE: 95% } .dbThreadBody { PADDING-BOTTOM: 2em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; BACKGROUND: #fff; PADDING-TOP: 2em } P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbParentPost P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbThreadHeader { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter { PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadHeader .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadFooter .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } .dbThreadHeader .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } DIV.spacerDiv { CLEAR: both } .threadButtons .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .dbThreadInfo .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo P { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.6em } .dbThreadInfo P.detailButtons { FLOAT: right } .dbThreadTree { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MIN-HEIGHT: 80px; MAX-HEIGHT: 200px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #threadArea { PADDING-BOTTOM: 18px; MARGIN: 0px -30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } #message { MARGIN: 0px -30px -20px; BORDER-TOP: #ccc 1px solid } #message_upper { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: -20px -30px 0px } .dbParentPost { BORDER-BOTTOM: #bbb 1px dashed; BORDER-LEFT: #bbb 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -0.6em 0px 1.2em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #bbb 1px dashed; BORDER-RIGHT: #bbb 1px dashed; PADDING-TOP: 0.6em; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbParentPost H4 { MARGIN: 0px 0px 0.6em } .dbParentPost H4 A { WIDTH: 100%; DISPLAY: block } .dbParentPost P { PADDING-BOTTOM: 1.2em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .dbParentPostBody { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; MARGIN-BOTTOM: 0.6em; BACKGROUND: #fcfcfc; CLEAR: both; PADDING-TOP: 0.6em } .loadingElipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: 12px auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #fff7de; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .unreadmessage { FONT-WEIGHT: bold } H3.unreadmessage { FONT-WEIGHT: bold } .unreadmessage.dbheading { FONT-SIZE: 100% } .unread-count { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #128fa8; COLOR: #fff; PADDING-TOP: 2px; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px } #threadArea DIV.checked { BACKGROUND-COLOR: #eee } #threadArea DIV.checked_top { BACKGROUND-COLOR: #eee } #threadArea DIV.checked { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } #threadArea DIV.checked_top { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } DIV.blogContainer { WIDTH: 74%; FLOAT: left } DIV.blogContainer H3.blogHead { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer DIV.blogEntry { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogContainer DIV.blogEntry H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; WORD-WRAP: break-word; BACKGROUND: url(images/small_discussions.gif) no-repeat 8px 9px; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 9px } DIV.blogContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 3px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } DIV.blogContainer DIV.entryDate { COLOR: #444; FONT-SIZE: 95% } DIV.blogContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.blogContainer DIV.entryFooter { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #eaeaea; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.5% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px -12px; DISPLAY: none; BORDER-TOP: #999 1px solid; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.blogContainer DIV.entryFooter DIV.addBlogComment H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .addBlogComment .stepcontent OL { WIDTH: 100% } .addBlogComment .stepcontent OL LI { WIDTH: 100% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment DIV.controls { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.blogContainer UL.entryComments { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eaeaea; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.blogContainer UL.entryComments LI P { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } DIV.blogContainer UL.entryComments LI P.commentDate { Z-INDEX: 10; BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: right; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; MARGIN: 2px 0px -1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bubble_top_thin.gif) no-repeat 15px 100%; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #444; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.blogContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.blogContainer DIV.blogInstructions H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.journalNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.contentAreaNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } .messageCollectionContainer { FLOAT: left } DIV.blogNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { WORD-WRAP: break-word; OVERFLOW: hidden } DIV.blogNav UL.blogArchiveList LI A { WIDTH: 100%; WORD-WRAP: break-word } .indentedWikiList { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 22px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .indentedWikiList IMG { MARGIN: 0px 3px 0px -22px } .blogNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .journalNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .blogNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } .journalNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogNav LI.currentBlog { FONT-WEIGHT: bold } DIV.blogNav LI.currentBlog SPAN { FONT-WEIGHT: normal } DIV.blogContainer .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.blogNav .newItems { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav .gradeStatus { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.blogNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.blogNav UL UL { MARGIN-LEFT: 9px } DIV.blogNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } DIV.journalContainer { WIDTH: 74%; FLOAT: left; MARGIN-RIGHT: 1% } DIV.journalContainer H3.blogHead { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.journalContainer DIV.blogEntry { BORDER-BOTTOM: #eee 3px solid; POSITION: relative; BORDER-LEFT: #eee 0px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 36px; PADDING-RIGHT: 0px; BACKGROUND: url(images/blog_notebook_paper.gif) #fff repeat-y 0px 0px; BORDER-TOP: #eee 3px solid; BORDER-RIGHT: #eee 3px solid; PADDING-TOP: 0px } DIV.journalContainer DIV.blogEntry H4 { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 12px } DIV.journalContainer DIV.entryDate { Z-INDEX: 100; BORDER-BOTTOM: #c0dace 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; PADDING-TOP: 3px } DIV.journalContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; PADDING-TOP: 12px } DIV.journalContainer DIV.entryFooter { PADDING-BOTTOM: 12px; MARGIN: 0px 0px 0px -31px; PADDING-LEFT: 43px; PADDING-RIGHT: 12px; ZOOM: 1; BACKGROUND: url(images/blog_notebook_paper_bot.gif) repeat-x center bottom; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.35% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment { DISPLAY: none; MARGIN-BOTTOM: 6px } DIV.journalContainer UL.entryComments { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #c0dace 1px solid; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.journalContainer UL.entryComments LI P { PADDING-BOTTOM: 0px; MARGIN: 4px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI P.commentDate { COLOR: #444; MARGIN-LEFT: 19px; FONT-SIZE: 90% } DIV.journalContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: url(images/small_blog_comment.gif) no-repeat 0px 3px; COLOR: #000; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 3px } DIV.journalContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.journalContainer DIV.blogInstructions H4 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.blogInstructions P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { OVERFLOW: hidden } DIV.journalNav LI.currentBlog { FONT-WEIGHT: bold } DIV.journalNav LI.currentBlog SPAN { FONT-WEIGHT: normal } .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.journalNav .newItems { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.journalContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.journalNav UL UL { MARGIN-LEFT: 9px } DIV.journalNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } #blogNavLinks { POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 6px; RIGHT: 6px; PADDING-TOP: 0px } .contentAreaPalette UL#aboutBlog LI.currentBlogView { BORDER-BOTTOM: #0078cb 2px solid; BORDER-LEFT: #0078cb 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; MARGIN-BOTTOM: 3px; BACKGROUND: #eff6ff; BORDER-TOP: #0078cb 2px solid; BORDER-RIGHT: #0078cb 2px solid; PADDING-TOP: 2px } .currentBlogView A { COLOR: black; TEXT-DECORATION: none } UL.blogArchiveList { MARGIN-LEFT: 16px } UL.blogArchiveList LI { PADDING-BOTTOM: 4px } #gradeWidget SPAN#blogGradeValue { POSITION: relative; PADDING-LEFT: 6px } #blogGradeValue IMG { POSITION: absolute; TOP: 0px; LEFT: 0px } .contentAreaNav A.itemHead { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 6px } .contentAreaPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } DIV.blogNav .contentAreaPalette:first-child { BORDER-TOP: 0px } DIV.journalNav .contentAreaPalette:first-child { BORDER-TOP: 0px } .rightColumn-narrow .contentAreaPalette:first-child { BORDER-TOP: 0px } .contentAreaPalette UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .contentAreaPalette LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 0px } .contentAreaPalette LI LI { FONT-SIZE: 100% } DIV.iconLegendBlog { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .contentAreaNav A#blogListLink { PADDING-RIGHT: 48px } #loginPageContainer { MARGIN: 0px auto; MIN-HEIGHT: 100%; HEIGHT: auto !important } #loginHeader { POSITION: absolute; TOP: 0px; RIGHT: 0px } #loginHeader UL LI { POSITION: relative; MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; BACKGROUND: #888; VERTICAL-ALIGN: top; BORDER-TOP: 0px } #loginHeader UL LI A { PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 12px; WIDTH: 28px; PADDING-RIGHT: 12px; DISPLAY: inline-block; HEIGHT: 18px; PADDING-TOP: 6px } #loginHeader UL LI:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang H2:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang:hover H2 { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginHeader UL LI:first-child { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI:first-child A { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI IMG { DISPLAY: none } #loginHeader UL LI.font-size:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.contrast:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.font-size A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast:before { CONTENT: "c" } #loginHeader UL LI:hover:before { COLOR: #fff; CURSOR: pointer } #loginHeader UL LI.contrast { BORDER-LEFT: #777 1px solid; MARGIN-LEFT: -4px } #loginLang { POSITION: absolute; TOP: 0px; LEFT: 0px } #loginLang H2 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; BACKGROUND: #888; HEIGHT: 17px; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 4px; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0 } #loginLang H2 SPAN { TEXT-INDENT: -999px; WIDTH: 0px; DISPLAY: inline-block; OVERFLOW: hidden } #loginLang H2:before { FONT: 140%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "W"; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginLang H2:hover:before { COLOR: #fff } #loginLang UL { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 150px; PADDING-RIGHT: 6px; TOP: -1000px; PADDING-TOP: 6px; LEFT: -1000px } #loginLang:hover UL { WIDTH: 175px; TOP: 28px; LEFT: 0px; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0 } #loginLang H2:hover:after { Z-INDEX: 100 } #loginLang:hover H2:after { Z-INDEX: 100 } #loginLang UL LI A { WIDTH: auto } DIV.loginBody { PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BACKGROUND: url(images/Bb_learn_small.png) no-repeat 94px 94px; PADDING-TOP: 260px } DIV.loginBody .receipt { PADDING-BOTTOM: 14px; MARGIN: 0px auto 16px; PADDING-LEFT: 19px; WIDTH: 409px; PADDING-RIGHT: 4px; PADDING-TOP: 12px } #loginBox { TEXT-ALIGN: center } #loginBox UL { MARGIN: 0px auto; WIDTH: 415px } #loginBox LI { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #loginBox LI + LI + LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } #loginBox LI + LI + LI + LI { POSITION: relative; TEXT-ALIGN: right; DISPLAY: block } #loginBox LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #loginBox LI INPUT { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100%; PADDING-RIGHT: 10px; FONT-SIZE: 140%; PADDING-TOP: 10px; -moz-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1) } #loginBox INPUT[type='text'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='password'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='text']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox LI INPUT[type='submit'] { PADDING-BOTTOM: 7px; MARGIN: -31px -9px 0px 12px; PADDING-LEFT: 22px; WIDTH: auto; PADDING-RIGHT: 22px; FONT-SIZE: 130%; PADDING-TOP: 7px } #loginFormTitle { POSITION: absolute; DISPLAY: none } #loginFormText { POSITION: absolute; DISPLAY: none } DIV.portlet #loginFormTitle { POSITION: static; DISPLAY: block } DIV.portlet #loginFormText { POSITION: static; DISPLAY: block } #loginOptions { TEXT-ALIGN: center; MARGIN: 38px auto 26px; WIDTH: 600px } #loginOptions H2 { MARGIN: 10px } #loginOptions P { MARGIN: 10px; COLOR: #444; FONT-SIZE: 0.85em } #loginOptions UL LI { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI.subOption { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } #loginOptions UL LI.subOption A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } .forgot A { BORDER-BOTTOM: #0099b6 1px dotted } #loginOptions UL LI A:hover { BORDER-BOTTOM-STYLE: solid } #loginOptions UL LI.subOption A:hover { BORDER-BOTTOM-STYLE: solid } .forgot A:hover { BORDER-BOTTOM-STYLE: solid } #loginText { TEXT-ALIGN: center; PADDING-BOTTOM: 18px; PADDING-LEFT: 80px; PADDING-RIGHT: 80px; DISPLAY: none; BACKGROUND: #5f6062; BORDER-TOP: #777 1px solid; PADDING-TOP: 12px } #loginText P SPAN { COLOR: #fff; FONT-SIZE: 105%; FONT-WEIGHT: bold } #loginText P { MARGIN: 0px; COLOR: #ededed; FONT-SIZE: 95% } #loginImage { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } #loginImage IMG { MARGIN: 0px auto } #loginAnnouncements { PADDING-BOTTOM: 7px; MARGIN: 0px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 24px } #loginAnnouncements H3 { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 9px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: none; COLOR: #555; FONT-SIZE: 110%; PADDING-TOP: 6px } #loginAnnouncements UL { TEXT-ALIGN: center; MARGIN: 0px auto; WIDTH: 800px } #loginAnnouncements UL LI:before { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:after { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:before { LEFT: 8px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } #loginAnnouncements UL LI:after { RIGHT: 8px; -moz-transform: rotate(2deg); -webkit-transform: rotate(2deg) } #loginAnnouncements LI { POSITION: relative; TEXT-ALIGN: justify; PADDING-BOTTOM: 24px; MARGIN: 0px 0px 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; ZOOM: 1; BACKGROUND: #fff; COLOR: #666; FONT-SIZE: 95%; VERTICAL-ALIGN: top; PADDING-TOP: 18px; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15) } #loginAnnouncements UL LI STRONG:first-child { MARGIN: 0px 0px 12px; FONT-FAMILY: Georgia, serif; FLOAT: left; COLOR: #000; FONT-SIZE: 115% } #loginAnnouncements UL LI STRONG + EM { TEXT-ALIGN: right; MARGIN: 0px; DISPLAY: block; FONT-FAMILY: Georgia; FLOAT: right } #loginAnnouncements UL LI STRONG + EM + BR { DISPLAY: none } #loginAnnouncements UL LI .vtbegenerated { LINE-HEIGHT: 1.38; CLEAR: both } #loginAnnouncements UL LI:first-child { BORDER-TOP: 0px } #loginAnnouncements A { BORDER-BOTTOM: #128fa8 1px dotted } #loginAnnouncements A:hover { BORDER-BOTTOM-STYLE: solid } #loginAnnouncements A:focus { BORDER-BOTTOM-STYLE: solid } #loginHeader H1 { DISPLAY: none } #loginHeader H2 { DISPLAY: none } #loginHeader .productLogo { DISPLAY: none } #loginOptions #gatewayButtonsTitle { DISPLAY: none } #loginOptions #gatewayButtonsInstructions { DISPLAY: none } .login-page #copyright { POSITION: absolute; TEXT-ALIGN: center; MARGIN-TOP: 24px; WIDTH: 900px; BOTTOM: 24px; MARGIN-LEFT: -450px; LEFT: 50% } #loginAnnouncements + #copyright { POSITION: relative } .loginCopyright { WIDTH: 580px !important } .login-page #copyright .logo { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; PADDING-TOP: 0px } .login-page #copyright .newCopyright { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .loginCopyright .legal { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .additionalInfo { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .legal { BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; WIDTH: 24.5em; PADDING-RIGHT: 12px; PADDING-TOP: 3px } #loginPane + #copyright .legal P { MARGIN: 0px; DISPLAY: inline } #loginPane + #copyright .additionalInfo P { MARGIN: 0px; DISPLAY: inline } .login-page .copyrightDetailContents { MIN-HEIGHT: 6.5em; MARGIN-LEFT: -394px; LEFT: 50% } H1.pageTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .caliperTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .discoverTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .unitHomePageTitle { MARGIN: -60px -30px 5px } .caliperTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .unitHomePageTitle H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .discoverTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } .unitHomePageTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .caliperTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .unitHomePageTitle A.browseNoImg { PADDING-BOTTOM: 3px; PADDING-TOP: 2px } .reports { MIN-WIDTH: 810px; BACKGROUND: #f0f0f0 } .reports .navigationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .container { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports #dataCollectionContainer { MARGIN: 0px } .reports DIV[id*='step'] { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .reports UL { MARGIN: 12px } .reports .stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports UL LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; PADDING-TOP: 0px } .reports .label { COLOR: #777 } .reports .field { COLOR: #000 } .reports UL LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .reports H1 { PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 9px } .reports H2 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; PADDING-TOP: 3px } .reports H3 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .reports H3 A IMG { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .reports H3.steptitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; LETTER-SPACING: 0px; COLOR: #fff; FONT-SIZE: 110%; PADDING-TOP: 4px } .reports H4 { PADDING-BOTTOM: 3px; MARGIN: 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; COLOR: #fff; FONT-SIZE: 115%; PADDING-TOP: 3px } .reports H5 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 6px; MARGIN: 12px -12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .reports .attachments { MARGIN: 0px } .reports t.wide { MARGIN: 0px; WIDTH: 100% } #toc { LIST-STYLE-POSITION: outside; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: decimal; MARGIN: 12px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #toc UL { MARGIN: 0px 24px 24px } .toc_div { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; PADDING-BOTTOM: 4px; MARGIN: 6px 18px 18px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid; PADDING-TOP: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .toc_div OL LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports .toc_div H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .toc_div H2 A IMG { MARGIN-RIGHT: 6px } .toc_div A.toggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #f6f6f6; FLOAT: right; FONT-SIZE: 95%; TOP: -4px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .toc_div A.toggle:hover { BACKGROUND: #fff } .backtotop { FLOAT: right } .dateofreport { FLOAT: right } .dateofreport { MARGIN: 6px 18px 12px 0px } .reports .block { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 18px 24px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px 4px 0 4px; -webkit-border-radius: 4px 4px 0 4px } .backtotop { POSITION: relative; MARGIN-BOTTOM: -40px; FLOAT: right; MARGIN-RIGHT: -1px } .backtotop A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f6f6f6; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .backtotop A:hover { BACKGROUND: #fff } .backtotop A IMG { MARGIN-RIGHT: 5px } DIV.fontPreview { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 4px; MARGIN: 3px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 4px } .textareaDiv { PADDING-BOTTOM: 6px } .textareaDiv TABLE { WIDTH: 98% } .textareaDiv TABLE TABLE { WIDTH: 100% } .textareaDiv TABLE TABLE TABLE { WIDTH: 100% } .textareaDiv TEXTAREA { WIDTH: 100%; BORDER-TOP: #666 2px solid } DIV.textToolbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 97.7%; PADDING-RIGHT: 0px; BACKGROUND: #f6f6f6; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } DIV.textToolbar A { WHITE-SPACE: nowrap; FONT-SIZE: 90% } DIV.textToolbar LABEL { PADDING-LEFT: 4px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.textToolbar SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } .previewTextArea { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #999 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 459px; PADDING-RIGHT: 0px; DISPLAY: none; BACKGROUND: #fff; HEIGHT: 112px; OVERFLOW: auto; BORDER-TOP: #999 2px solid; BORDER-RIGHT: #999 2px solid; PADDING-TOP: 0px } .previewTextArea DIV.previewTitle { BORDER-BOTTOM: #eee 2px solid; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; PADDING-TOP: 2px } .previewTextArea DIV.previewTitle A { FLOAT: right } .previewTextArea DIV.previewTitle H6 { MARGIN: 0px; FLOAT: left; FONT-SIZE: 90% } .previewTextArea DIV.previewContent { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .messageContainer H6 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .messageContainer P { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .messageVariable { BORDER-BOTTOM: #ed9 1px solid; BORDER-LEFT: #ed9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; BORDER-TOP: #ed9 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ed9 1px solid; PADDING-TOP: 0px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .myPlaces .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .explore .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .myPlaces A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .myPlaces A:hover { TEXT-DECORATION: underline } .myPlaces A:focus { TEXT-DECORATION: underline } .myPlaces A.home { PADDING-RIGHT: 20px } .myPlaces SPAN.homeIconWrap { POSITION: absolute; BACKGROUND: url(/images/ci/icons/clphomepage/home_ti.gif) no-repeat 0px 0px; TOP: 3px; RIGHT: 3px } .myPlaces SPAN.homeIconWrap IMG { WIDTH: 16px; HEIGHT: 16px } .myPlaces A.unit { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.course { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.ee { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.program { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.workspace { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.unit { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.unit:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.course { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.course:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.ee { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.ee:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.program { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.program:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.workspace { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .myPlaces A.workspace:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .explore A { PADDING-LEFT: 30px; BACKGROUND: url(images/indicators.png) no-repeat 9px -1489px } .explore H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .wizardBody .locationPane { MARGIN: 0px; DISPLAY: block } .wizardBody .breadcrumbs .courseName { DISPLAY: none } .wizardBody .breadcrumbs .courseId { DISPLAY: none } .wizardBody .breadcrumbs { HEIGHT: 24px } .wizardBody .path .root A:before { POSITION: relative; FONT-FAMILY: "Pictos"; COLOR: #aaa; FONT-SIZE: 20px; CONTENT: "H"; TOP: -2px; FONT-WEIGHT: normal } .wizardBody .modeSwitchWrap { POSITION: absolute; TOP: 15px; RIGHT: 12px } .wizardBody { BACKGROUND: #fff } .wizardBody .container { POSITION: static } .wizardBody #contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 210px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 10px; PADDING-TOP: 12px } .wizardBody FORM#contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .topRound { DISPLAY: none } .wizardBody > .locationPane > .contentPaneWide > .topRound { POSITION: absolute; DISPLAY: block; TOP: 60px } .wizardBody #pageTitleDiv IMG { DISPLAY: none } .wizardBody .reqfield { MARGIN: 0px 0px 6px -6px; FLOAT: none } .wizardBody #containerdiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardHead H2 { MARGIN: 0px; FONT-SIZE: 110% } .wizardHead .helphelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .contentPaneWide > .contentBox > .pageTitle H1 { FONT-SIZE: 150% } .wizardBody .containerWizard { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .wizardBody .contentPaneWide > .contentBox > .pageTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 18px; MARGIN: -13px -12px 24px -224px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .wizardBody .contentPaneWide > .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .wizardHead { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; MARGIN-BOTTOM: 24px; BACKGROUND: #efede3; PADDING-TOP: 12px } .wizardBody #dataCollectionContainer { MARGIN: 0px } .wizardHead + .container { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px 4px 4px 4px } .wizardBody .containerWizard .container { HEIGHT: auto } .wizardBody .containerWizard .locationPane { MARGIN-TOP: 12px } .wizardBody UL.contentList LI DIV.details { OVERFLOW-X: visible } .wizardFinishText { MARGIN: 6px 0px 150px } .wizardSubmit { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px -79px -210px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #ccc 1px solid; TOP: 18px; PADDING-TOP: 18px } .wizardSubmit INPUT[name='cancel'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='Previous'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='finish'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='cancel']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='cancel']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[type=image] { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .wizardSubmit SPAN { MARGIN: 0px 18px; COLOR: #999 } .wizardSubmit SPAN STRONG { COLOR: #000 } .wizardBottomRound B.inner { BACKGROUND: #fff1c5 } .wizardBottomRound B.outer { BACKGROUND: #fff1c5 } .wizardBottomRound B.middle { BACKGROUND: #fff1c5 } .navigationPaneWizard { PADDING-BOTTOM: 0px; MARGIN-TOP: 63px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .navigationPaneWizard DIV B.inner { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.middle { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.outer { MARGIN-RIGHT: 0px !important } .navigationPaneWizard .navPalette { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .wizardBody #courseMenuPalette { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .wizardBody #courseMenuPalette DIV.navPaletteContent { -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navigationPaneWizard H2 { PADDING-BOTTOM: 6px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; LETTER-SPACING: 0.2em; COLOR: #00add0; FONT-SIZE: 90%; FONT-WEIGHT: 100; PADDING-TOP: 6px } .navigationPaneWizard .navPalette SPAN { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #ededed; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .navigationPaneWizard .navPalette LI { PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #777; FONT-SIZE: 95%; PADDING-TOP: 6px } .navigationPaneWizard .navPalette UL LI:first-child { POSITION: relative; BORDER-TOP: medium none } .navigationPaneWizard .navPalette UL LI.currentStep { COLOR: #000; FONT-WEIGHT: bold } .navigationPaneWizard .navPalette UL LI.currentStep:after { POSITION: absolute; LINE-HEIGHT: 0.5; COLOR: #999; FONT-SIZE: 18px; CONTENT: "?"; TOP: 9px; RIGHT: 0px } .containerWizard .controlPanel .navPaletteContent A { PADDING-BOTTOM: 4px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(../../../images/ci/ng/portlet_expand.gif) no-repeat 2px 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 4px } .containerWizard .navPaletteContent H2 { MARGIN: 0px; FONT-SIZE: 105% } .containerWizard .navPaletteContent H2 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px } .containerWizard .controlpanel LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #logDetail { OVERFLOW-Y: auto; HEIGHT: 300px } .totalMsgs { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 14px !important; PADDING-RIGHT: 6px !important; COLOR: #555; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 11px !important } .latestEntry { FLOAT: right !important; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal } .log-summary { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } .log-summary A { MARGIN: 0px 3px; DISPLAY: inline-block } .log-summary LI { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .sis-seperator { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .log-summary LI:first-child { BORDER-LEFT: medium none } .log-type { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; COLOR: #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .log-summary .log-type { FONT-SIZE: 120% } .log-error { BACKGROUND: #ef3e36 } .log-warning { BACKGROUND: #fcb040 } .log-message { BACKGROUND: #0b9444 } .log-debug { BACKGROUND: #00aeef } .log-header { MARGIN: 0px 0px 9px } .attachments .log-type { MIN-WIDTH: 6em; TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; LETTER-SPACING: 0.1em; FONT-SIZE: 90%; FONT-WEIGHT: normal } .table-scroll-wrapper TABLE { MARGIN: 0px } .table-scroll-wrapper TBODY { OVERFLOW-Y: auto; HEIGHT: 200px; OVERFLOW: hidden } .row-selected { BACKGROUND-COLOR: #e2eefe !important } .log-search > DIV > DIV { PADDING-BOTTOM: 0px !important; MARGIN: 6px 6px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 9px !important; DISPLAY: inline-block; BORDER-RIGHT: #bbb 1px dotted; PADDING-TOP: 0px !important } .answerSavedButton { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavingButton { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .timeUpWarning { COLOR: #cf0c0c } .thirtySecondWarning { COLOR: #cf0c0c } .oneMinuteWarning { COLOR: #cf0c0c } .fiveMinuteWarning { COLOR: #000 } .halfTimeWarning { COLOR: #000 } .headerForProgressBar { Z-INDEX: 100; POSITION: relative } DIV.assessmentPortletBlock H3.headerForProgressBar A { BACKGROUND: none transparent scroll repeat 0% 0% } .progressBar { Z-INDEX: 90; POSITION: absolute; BOTTOM: 0px; TOP: 0px; LEFT: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .progressBarStyle { BACKGROUND: #b6f796 } .progressBarStyleOneMin { BACKGROUND: #ffe79f } .progressBarStyleThirtySec { BACKGROUND: #ffafaf } .progressBarStyleOvertime { BACKGROUND: #ffafaf } .timerBar { BORDER-BOTTOM: #fff 2px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: #fff 2px solid; PADDING-BOTTOM: 3px; MARGIN: 4px 14px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; FONT-SIZE: 105%; BORDER-TOP: #fff 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 2px solid; PADDING-TOP: 3px; -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 9px; -webkit-border-radius: 9px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timer STRONG { Z-INDEX: 100; POSITION: relative } .timerText { PADDING-BOTTOM: 6px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; PADDING-TOP: 6px } .liveArea.timer { PADDING-BOTTOM: 9px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 6px } .questionStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 3px } .timedQuestionStatus { PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 2px groove; PADDING-TOP: 3px } .completionContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .questionStatus .questionStatusLabel { MARGIN: 0px; LETTER-SPACING: 0px; FONT-WEIGHT: normal } .questionStatus .questionStatusLabel A { COLOR: #666; TEXT-DECORATION: none } .questionStatus .questionStatusLabel A:hover { COLOR: #000; TEXT-DECORATION: underline } .timerMessage { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 2px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timeLabel { COLOR: #666; FONT-WEIGHT: normal } .timeValue { FONT-SIZE: 120% } .timer-collapsed.timer-toggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 0px 2px; PADDING-TOP: 0px } .timer-expanded.timer-toggle { POSITION: absolute; WIDTH: 20px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 3px 4px; HEIGHT: 20px; TOP: 5px; LEFT: 4px } .timerBar .timerLabel:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .timerMessage:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .progressBarStyleOvertime + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "t" } .progressBarStyleOneMin + .timerLabel:before { COLOR: #7f6b2f; CONTENT: "!" } .progressBarStyleThirtySec + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "!" } .timerMessage:before { CONTENT: "t" } .halfTimeWarning:before { COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } #collabRubricList .collabRubricListTypeContainer { MARGIN: 4px } .rubricGradingTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricGradingTable TH { COLOR: #45586f } .rubricTable TH { COLOR: #45586f } .rubricTable THEAD TH { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .rubricTable THEAD TH:first-child { BORDER-LEFT: medium none } .rubricGradingTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .rubricGradingTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH LABEL { FONT-WEIGHT: normal } .rubricTable TBODY TH INPUT { FONT-WEIGHT: normal } .rubricTable TBODY TH > SPAN { FONT-WEIGHT: normal } .rubricGradingTable .rubricCellHeader { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rubricGradingTable .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricSelectedValue { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricCellDescription { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingList .radioLabel { PADDING-BOTTOM: 3px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT-WEIGHT: bold; PADDING-TOP: 3px } .rubricGradingTable .rubricCellContainer { POSITION: relative; MIN-HEIGHT: 30px; OVERFLOW: hidden } .rubricCellRadio { POSITION: absolute; TOP: 6px } .rubricGradingList .rubricCellRadio { POSITION: absolute; TOP: 2px } .selectedCell .rubricCellRadio { TOP: -60px } .pointContainer { FONT-WEIGHT: bold } .rubricGradingTable .feedback { DISPLAY: none } .rubricGradingTable .selectedCell .feedback { DISPLAY: block } .rubricGradingTable .feedback TEXTAREA { WIDTH: 99% } .rubricGradingTable .selectedCell { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px; COLOR: #000; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .3); box-shadow: 0 0 6px rgba(0, 0, 0, .3) } .rubricGradingList .selectedCell { BACKGROUND: url(images/button_ok_ti.png) no-repeat 4px 3px } .rubricGradingTable TBODY TD:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #d1eaef; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .rubricTable TBODY TD:hover { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricGradingTable TBODY .selectedCell:hover { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px } .rubricCriteriaHead { WIDTH: 15% !important } .rubricInlineEdit { POSITION: relative } .rubricInlineEdit > DIV { Z-INDEX: 100; POSITION: absolute; WHITE-SPACE: nowrap } .gridActionBar { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gridActionBar .data TH { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .stepcontent .gridActionBar LI { PADDING-BOTTOM: 0px; MARGIN-BOTTOM: 0px } .rubricGradingTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricSelectedValue { DISPLAY: block; FONT-SIZE: 130%; FONT-WEIGHT: bold } .rangePercent { COLOR: #666; FONT-SIZE: 90%; FONT-WEIGHT: normal } .selectedCell .rangeValue { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #aaa 1px dashed; PADDING-TOP: 6px } .rubricControlContainer .containerTabs { MARGIN: 0px } .rubricControlContainer .contentAreaBlock { MARGIN: 0px } .rubricGradingList .rubricGradingCell { POSITION: relative; MARGIN: 1px 0px; OVERFLOW: hidden } .rubricGradingList .feedback { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .rubricGradingList .feedback TEXTAREA { WIDTH: 99% !important } .rubricGradingList H4 { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .rubricGradingList H4 SPAN { POSITION: absolute; PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 0px; RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 1px } .rubricGradingTotalPoints { MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingOverride { PADDING-BOTTOM: 6px; MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingComments .editor { MARGIN-TOP: 20px } .rubricGradingComments .rubricVtbeLabel { DISPLAY: block; MARGIN-BOTTOM: 10px } .alignmentPanel TR { COLOR: #555 } .alignmentPanel .gradingRubric { BACKGROUND-COLOR: #ffd; COLOR: #000 } .alignmentPanel .gradingRubric .title { FONT-WEIGHT: bold } .alignmentPanel UL.nav SPAN { PADDING-LEFT: 3px } .rubricPanel THEAD TR TH { WHITE-SPACE: normal !important } .rubricPopupContainer .rubricControlContainer { MARGIN: 0px 0px 10px } .rubricPopupContainer .onlyOne.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .onlyOne.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .last.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricGradingCell .pointRangeEdit { DISPLAY: none } .selectedCell.rubricGradingCell .pointRangeView { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .last.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricGradingTable .pointRangeView { DISPLAY: block; FONT-WEIGHT: bold } .selectedCell.rubricGradingCell .pointRangeEdit { DISPLAY: block; FONT-WEIGHT: bold } TD[align='right'] { TEXT-ALIGN: right !important } TD[align='left'] { TEXT-ALIGN: left !important } TR[align='right'] { TEXT-ALIGN: right !important } TR[align='left'] { TEXT-ALIGN: left !important } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: small; PADDING-TOP: 0px !important } .vtbegenerated P { MARGIN-BOTTOM: 4px } .vtbegenerated ADDRESS { FONT-STYLE: italic; DISPLAY: block } .vtbegenerated IMG { FILTER: alpha(opacity = auto) !important; opacity: auto } .vtbegenerated UL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated OL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated LI { LIST-STYLE-POSITION: inside } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated H5 { FONT-SIZE: 90% } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 35px } .vtbegenerated UL[type='circle'] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type='square'] LI { LIST-STYLE-TYPE: square } .vtbegenerated UL[type='disc'] LI { LIST-STYLE-TYPE: disc } .inlineVtbegenerated { DISPLAY: inline } .tree .treeNodeIcon { WIDTH: 16px; HEIGHT: 16px } .navPaletteContent .submenu LI.favorite { PADDING-LEFT: 10px } .navPaletteContent UL[id*='files_groupContents'] .favorite { PADDING-LEFT: 0px } .columnPalette H5 { MARGIN: 6px 0px 3px; COLOR: #555 } .blogNav .stepcontent { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .button-split-left { DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #f6f6f6 2px solid; -webkit-border-bottom-right-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -moz-border-radius-bottomright: 0 } .button-split-left:hover { BORDER-RIGHT: #555 2px solid } .button-split-right { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FLOAT: left; MARGIN-LEFT: -1px; PADDING-TOP: 4px; -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0 } .full_evaluation_view_component H3 { MARGIN: 18px 0px 3px } .full_evaluation_view_component H3:first-child { MARGIN: 9px 0px 3px } .gradeSide_panel .container { POSITION: relative; PADDING-RIGHT: 45% } .gradeSide_panel .contentListPlain { MARGIN: -20px 0px 0px -30px } .collabContainer { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .gradeSide { WIDTH: 36%; TOP: 20px; RIGHT: 20px } .gradeSide { BORDER-BOTTOM: #555 3px solid; POSITION: absolute; BORDER-LEFT: #555 3px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; BOTTOM: auto; PADDING-RIGHT: 4px; BACKGROUND: #888 0px 0px; BORDER-TOP: #555 3px solid; TOP: 20px; RIGHT: 20px; BORDER-RIGHT: #555 3px solid; PADDING-TOP: 4px; LEFT: auto; border-radius: 4px } .collapseTabsData A.close { TOP: 4px; RIGHT: 4px } .evalColumn .taskbuttondiv { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .gradeItemsWrapper { OVERFLOW: visible } .gradeSide .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .evalColumn { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 18px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2) } .evalColumn .liveArea { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .column-wrapper { POSITION: relative; OVERFLOW: visible !important } .column-nav { WIDTH: 190px; FLOAT: left } .colspan2 { POSITION: relative; MARGIN-LEFT: 190px } .colspan2#standards-column { BORDER-LEFT: #ccc 3px double; PADDING-BOTTOM: 12px; MARGIN-BOTTOM: -41px; TOP: -20px; LEFT: -3px } .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; COLOR: #555; PADDING-TOP: 18px } .column-nav .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; PADDING-TOP: 18px } .pageHead-2 H2 { MARGIN: 0px; FONT-SIZE: 120%; FONT-WEIGHT: normal } .pageHead-2 SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .pageHead-2 SPAN:first-child { BORDER-RIGHT: #aaa 1px dotted } .column-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .column-nav-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .category-column .column-nav-inner { BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee',endColorstr = '#cccccc',GradientType = 1); BORDER-LEFT: medium none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #column_lrn_std_category { BORDER-RIGHT: #ccc 3px double } .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 18px !important; BACKGROUND: #fff; PADDING-TOP: 6px !important } #standards-column .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 6px !important } .column-nav .column-inner { DISPLAY: none } .navmenu-list-item { BORDER-BOTTOM: #777 1px solid; POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 21px; DISPLAY: block; WORD-WRAP: break-word; PADDING-TOP: 12px } .navmenu-list > LI:hover { BACKGROUND: #777 } .navmenu-list > LI > A { COLOR: #f6f6f6; FONT-SIZE: 110%; FONT-WEIGHT: 200; TEXT-DECORATION: none } .navmenu-list A SPAN { DISPLAY: none } .navmenu-list .active { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active:hover { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active A { COLOR: #000 } .column2-nav .category-column .navmenu-list LI > A { PADDING-LEFT: 24px } .column-wrapper .actionBar > UL > LI > A { PADDING-BOTTOM: 8px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; COLOR: #333; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 8px } .column-wrapper .actionBar > UL > LI > A:hover { BACKGROUND: #ccc } .standards .button-2 { COLOR: #444 } .standards .button-2:hover { BORDER-BOTTOM-COLOR: #aaa; BORDER-TOP-COLOR: #aaa; BORDER-RIGHT-COLOR: #aaa; BORDER-LEFT-COLOR: #aaa } .category-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .category-column .navmenu-list-item { BORDER-BOTTOM-COLOR: #d6d6d6; BORDER-TOP-COLOR: #d6d6d6; BORDER-RIGHT-COLOR: #d6d6d6; BORDER-LEFT-COLOR: #d6d6d6 } .category-column .navmenu-list-item A { COLOR: #333 } .category-column .navmenu-list-item:hover { FILTER: alpha(opacity = 100) !important; BACKGROUND-COLOR: #e0e0e0; opacity: 1 } .category-column .navmenu-list .active { Z-INDEX: 1001; BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; RIGHT: -4px; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; -moz-box-shadow: -4px 3px 5px #DDD; -webkit-box-shadow: -4px 3px 5px #DDD; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #DDD; border-radius: 4px 0 0 4px } .navmenu-list .inactive { FILTER: alpha(opacity = 75); opacity: .75 } .standards .actionBar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 32px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .actionBar#actionbarlrn_std_doc { BORDER-BOTTOM-COLOR: #777 } .actionBar#actionbarlrn_std_doc > UL > LI > A { COLOR: #f0f0f0; -moz-border-radius: 4px 0 0 0; -webkit-border-radius: 4px 0 0 0; border-radius: 4px 0 0 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .actionBar#actionbarlrn_std_doc > UL > LI > A:hover { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_doc > UL > LI:hover > A { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_category > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std_category > UL > LI > A:hover { BACKGROUND: #ccc; COLOR: #000 } .actionBar#actionbarlrn_std { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 9px 0px 20px; BACKGROUND: #f0f0f0; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .actionBar#actionbarlrn_std > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std > UL > LI > A:hover { BACKGROUND: #ddd; COLOR: #000 } .standards .actionBar > UL { MARGIN: 0px; HEIGHT: 32px } .standards .actionBar UL LI { FLOAT: left } .standards .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .standards .searchbar .selectedItem LABEL SPAN { FONT-SIZE: 90% } .navmenu-actions-1 { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #f0f0f0; BORDER-TOP: #ccc 1px solid; TOP: 4px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px; LEFT: -4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .active .navmenu-actions-1 { LEFT: -4px } .navmenu-actions-2 { POSITION: absolute; PADDING-BOTTOM: 1px !important; PADDING-LEFT: 1px !important; PADDING-RIGHT: 1px !important; TOP: 22px; PADDING-TOP: 1px !important; LEFT: -4px } .navmenu-list-item .contextMenuContainer { POSITION: absolute; MARGIN-TOP: -8px; TOP: 50%; RIGHT: 9px; opacity: 0 } .navmenu-list .active .contextMenuContainer { opacity: 1 } .navmenu-list .active:hover .contextMenuContainer { opacity: 1 } .navmenu-list-item:hover .contextMenuContainer { opacity: .5 } .navmenu-list-item:hover .contextMenuContainer:hover { opacity: 1 } .standards .column-1 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-3 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 1%; WIDTH: 46%; PADDING-RIGHT: 1%; PADDING-TOP: 0px } .standards .column-3 { MARGIN: 0px; WIDTH: 31% } .standardForm > H3 + DIV.column-2 { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standards .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .standards .stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standardForm { POSITION: absolute !important; TOP: 38px; LEFT: 6px } .inline-form-title { MARGIN: 6px 0px } .docs-column .column-nav-inner { BORDER-BOTTOM: #777 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#999999',endColorstr = '#777777',GradientType = 1); BORDER-LEFT: #777 1px solid; MIN-HEIGHT: 400px; BACKGROUND: #999; COLOR: #fff; BORDER-TOP: #777 1px solid; BORDER-RIGHT: medium none; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px } .docs-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .iconToggleWrapper { ZOOM: 1; DISPLAY: inline-block } .iconToggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px -5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .quickAddPal .iconToggle { MARGIN: 0px 0px 0px -1px } .iconToggle:first-child { MARGIN: 0px; -moz-border-radius: 2px 0 0 2px; -webkit-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px } .iconToggle:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #e8f0fe; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .stepcontent .iconToggle .fieldHelp { Z-INDEX: 100; BORDER-BOTTOM: #555 1px solid; POSITION: absolute; MIN-WIDTH: 200px; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #fff; FONT-SIZE: 90%; BORDER-TOP: #555 1px solid; TOP: 100%; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 3px; LEFT: 0px; -moz-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .iconToggle:hover .fieldHelp { Z-INDEX: 10; DISPLAY: block } .iconToggleWrapper .selectedItem { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #cdcdcd; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset } .iconToggle LABEL SPAN { DISPLAY: none; COLOR: #555 } .selectedItem LABEL SPAN { DISPLAY: inline } .selectedItem .fieldHelp STRONG { DISPLAY: none } #lrn_std .panelHead { PADDING-BOTTOM: 9px; PADDING-LEFT: 25px; PADDING-RIGHT: 16px; PADDING-TOP: 9px } #lrn_std .sHeader { MARGIN-LEFT: -21px } #lrn_std .contextMenuContainer { } .lb-content .itemTray { POSITION: absolute } .lb-drawer { PADDING-BOTTOM: 54px } .lb-noTitleBar #pageTitleBar { DISPLAY: none } .lb-locationPane { MARGIN: 0px } .lb-locationPane #contentPanel { MARGIN: 0px } .lb-contentBox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none; border-radius: 0 } .overSoftLimit { COLOR: red } .autocomplete_pos { TOP: 15px !important; LEFT: 0px !important } .autocomplete { Z-INDEX: 5; BORDER-BOTTOM: #888 1px solid; POSITION: absolute; BORDER-LEFT: #888 1px solid; BACKGROUND-COLOR: #fff; WIDTH: 250px; BORDER-TOP: #888 1px solid; BORDER-RIGHT: #888 1px solid; box-shadow: 0 0 3px rgba(0, 0, 0, .3) } .autocomplete .selected { BACKGROUND-COLOR: #ccc } .autocomplete UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; CURSOR: pointer; PADDING-TOP: 2px } .quickAddPal .field { POSITION: relative } .quickAddPal .noLabelField { POSITION: relative } .renameCategory { Z-INDEX: 1200; POSITION: absolute; BOTTOM: 0px; DISPLAY: block; TOP: 0px; RIGHT: 0px; LEFT: 0px } .renameCategory A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } LI SPAN.labelMenuItem { COLOR: #000; FONT-WEIGHT: bold } #toolSettingsWrapper_table TBODY TR { BORDER-TOP: #ddd 1px dashed } #toolSettingsWrapper_table TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #toolSettingsWrapper_table TBODY TR.rowTitle TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle { BACKGROUND-COLOR: #ebebeb; BORDER-TOP: #ddd 1px solid } #toolSettingsWrapper_table TBODY TR.rowTitle H3 { MARGIN: 0.5em 0px } .tooltipContainer { POSITION: relative; TEXT-DECORATION: none } .tooltip { DISPLAY: none; WORD-WRAP: break-word } .tooltip-top { DISPLAY: none; WORD-WRAP: break-word } .tooltipContainer:hover .tooltip { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltipContainer:hover .tooltip-top { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltip:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip-top:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 1px; COLOR: #3b3b3b; LEFT: 1px; -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); -khtml-transform: rotate(90deg) } .tooltip-top:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: auto; COLOR: #4f4f4f; TOP: 0px; LEFT: -2px; -moz-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -o-transform: rotate(-90deg); -khtml-transform: rotate(-90deg) } .paddedMetadata { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 6px !important; PADDING-TOP: 6px !important } .quickAddPal .colorlist LI A.transparent { BACKGROUND-IMAGE: url(/images/swatches/transparent.gif); BACKGROUND-POSITION: -1px -1px; COLOR: transparent } .quickAddPal .colorlist LI A.transparent:hover { BACKGROUND-POSITION: -2px -2px } DIV.checkListActions { PADDING-BOTTOM: 10px } .quickAddPal .colorlist LI A.transparent:active { BACKGROUND-POSITION: -3px -3px } .quickAddPal .colorlist LI A.transparent:focus { BACKGROUND-POSITION: -3px -3px } .theme_scrollbar_content H2 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; FONT-STYLE: italic; MARGIN: -35px 0px 15px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; LETTER-SPACING: 0.06em; COLOR: #333; FONT-SIZE: 130%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #wizard .theme_scrollbar_content H2 { COLOR: #ccc } .theme-switch-wrapper { DISPLAY: inline-block } .theme-switch { POSITION: relative; MARGIN: -14px 9px -14px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-RIGHT: #ccc 1px solid } .theme-switch .sub > A { PADDING-BOTTOM: 14px; LINE-HEIGHT: 1; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; OVERFLOW: hidden; PADDING-TOP: 14px } .theme-switch .sub > A:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .theme-switch .sub:hover > A { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .dummy-switch.theme-switch:hover { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .theme-switch A SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch SPAN SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:after { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM-COLOR: #999; TOP: -8px } .theme-switch .nav .sub UL { WIDTH: 180px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .theme-switch .nav .sub UL LI H4 { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#999999,endColorstr=#333333); PADDING-BOTTOM: 4px; MARGIN-TOP: 5px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #fff; PADDING-TOP: 4px } .theme-switch .nav .sub UL A { PADDING-BOTTOM: 4px; PADDING-LEFT: 18px; WIDTH: 142px; PADDING-RIGHT: 4px; FONT-SIZE: 95%; PADDING-TOP: 4px } BODY DIV.lb-overlay { BACKGROUND: url(images/reorder_bg.png) #bbb -10px 0px } #wizard { Z-INDEX: 1100; BORDER-BOTTOM: #666 1px solid; POSITION: fixed; BORDER-LEFT: #666 1px solid; WIDTH: 900px; BACKGROUND: #555; MARGIN-LEFT: -450px; BORDER-TOP: #666 1px solid; TOP: 5px; BORDER-RIGHT: #666 1px solid; LEFT: 50%; box-shadow: 0 11px 20px rgba(0, 0, 0, .7); border-radius: 9px; background-clip: content-box } #wizard H1 { BORDER-BOTTOM: #666 1px solid; PADDING-BOTTOM: 10px; MARGIN: 1px 0px 0px 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #494949; COLOR: #bbb; FONT-SIZE: 110%; PADDING-TOP: 10px; box-shadow: 0 -1px 0 #363636 inset; border-radius: 9px 9px 0 0; text-shadow: 0 -1px 0 #111 } #wizard .accordion-wrapper { MARGIN: 0px 30px; BACKGROUND: none transparent scroll repeat 0% 0%; border-radius: 0 0 6px 6px } #wizard .accordion_toggle { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_content { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_toggle { POSITION: relative; TEXT-ALIGN: right; PADDING-RIGHT: 60px; COLOR: #aaa; FONT-SIZE: 90%; BORDER-TOP: #444 1px solid; CURSOR: pointer; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .accordion_toggle .accordionTabLabel { FLOAT: left; COLOR: #eee; FONT-SIZE: 125%; TEXT-DECORATION: none } #wizard .accordion_toggle SPAN#selectedStructureName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle SPAN#selectedThemeName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle_help { TEXT-ALIGN: left } #wizard .accordion_toggle A#unselectStructure { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectTheme { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectStructure:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectTheme:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectStructure:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle A#unselectTheme:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle:first-child { BORDER-TOP: 0px; box-shadow: none } #wizard .accordion_content { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #3d3b3b; HEIGHT: 245px; OVERFLOW: hidden; PADDING-TOP: 0px } #wizard .accordion_content A { COLOR: #1ec8ea } #wizard .accordion_toggle_addstructure .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-1.png) no-repeat } #wizard .accordion_toggle_choosetheme .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-2.png) no-repeat } #wizard .accordion_toggle_help .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-4.png) no-repeat } #wizard .right-image { POSITION: absolute; WIDTH: 30px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center center; HEIGHT: 30px; TOP: 6px; RIGHT: 8px; opacity: .5 } #wizard .previewArea { PADDING-BOTTOM: 5px; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #474747; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 235px; MAX-HEIGHT: 235px; FONT-SIZE: 85%; OVERFLOW: hidden; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 5px } .course_welcome_help_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } .selected.course_welcome_help_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.course_welcome_help_scrollbar_handle { } .course_welcome_help_container { POSITION: relative } #wizard .previewArea .introduction { WIDTH: 80% } #wizard .previewArea .helplink { WIDTH: 80% } #wizard .previewArea .customHelp { WIDTH: 80% } #wizard .previewArea .conclusion { POSITION: absolute; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #3d3b3c; PADDING-LEFT: 10px; WIDTH: 20%; BACKGROUND-ATTACHMENT: fixed; PADDING-RIGHT: 10px; COLOR: #bbb; FONT-SIZE: 90%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } #wizard .previewArea .customHelp { PADDING-BOTTOM: 1em; MARGIN-TOP: 0.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; COLOR: #bbb; FONT-SIZE: 90%; BORDER-TOP: #555 1px dotted; PADDING-TOP: 1em } #wizard .previewArea H3 { MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 3px; FONT-SIZE: 140%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN { TEXT-TRANSFORM: uppercase; DISPLAY: block; COLOR: #888; FONT-SIZE: 65%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN SPAN { TEXT-TRANSFORM: lowercase; FONT-STYLE: italic; DISPLAY: inline; FONT-SIZE: 95% } #wizard .helplink .easylist { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN-TOP: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 0px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } #wizard .helplink .easylist LI { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; WIDTH: 46%; PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #555 2px dotted; PADDING-TOP: 3px } #wizard .helplink .easylist LI H3 { FONT-FAMILY: Georgia, serif } #wizard .helplink .easylist LI P { PADDING-LEFT: 0px } #wizard .helplink .easylist LI P { COLOR: #ddd } #wizard .log-summary { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; box-shadow: 0; border-radius: 0 } #wizard .conclusion H3 { TEXT-TRANSFORM: uppercase; MARGIN-TOP: 10px; COLOR: #888; FONT-SIZE: 100%; FONT-WEIGHT: normal } #wizard .conclusion UL { MARGIN-BOTTOM: 15px } #wizard .conclusion UL LI { MARGIN-BOTTOM: 5px } #wizard .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #wizard .content-inner { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #3d3b3b; BORDER-TOP: 0px; BORDER-RIGHT: 0px } #wizard .introtext { PADDING-BOTTOM: 1em; LINE-HEIGHT: 1.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 2em; FLOAT: left; COLOR: #ccc; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 1em } #wizard .introtext LABEL { FONT-STYLE: italic; DISPLAY: none; MARGIN-LEFT: 15px; FONT-SIZE: 85% } #wizard .introtext INPUT { FONT-STYLE: italic; FONT-FAMILY: Georgia, serif; MARGIN-BOTTOM: 10px; FONT-SIZE: 200% } #wizard .introtext .courseNameAndDescription TABLE TABLE { WIDTH: 99%; MARGIN-LEFT: 7px } #wizard .introtext TEXTAREA { FONT-SIZE: 110% } #wizard .introtext INPUT { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext TEXTAREA { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext .courseNameAndDescription { WIDTH: 60%; PADDING-RIGHT: 0.8em; FLOAT: left; MARGIN-RIGHT: 1em; BORDER-RIGHT: #666 3px dotted } #wizard .introtext P { LINE-HEIGHT: 1.4em; FONT-STYLE: italic; MARGIN: 55px 20px 0px 0px; FONT-FAMILY: Georgia, serif; FONT-SIZE: 90% } .themes .horizontal-block { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 8px; MARGIN: 35px 10px 0px; PADDING-LEFT: 0px; WIDTH: 230px; PADDING-RIGHT: 0px; HEIGHT: 184px; BORDER-TOP: #ddd 1px solid; CURSOR: pointer; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 8px } #wizard .themes .horizontal-block { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555 } .help .horizontal-block { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 250px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .themes .horizontal-block IMG { MARGIN: 0px auto; WIDTH: 203px; HEIGHT: 152px } .theme-selector { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 26px; PADDING-RIGHT: 26px; PADDING-TOP: 10px } .structure .theme-selector { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .theme-selector SPAN { FONT-SIZE: 110%; FONT-WEIGHT: bold } #wizard .selected .theme-selector SPAN { COLOR: #333 } .selected .theme-selector SPAN { COLOR: #fff } .structure .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } .themes .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } #wizard .structure .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard .themes .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected A { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard LI.selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .themes .selected.horizontal-block:hover { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } DIV.scroller { HEIGHT: 200px; OVERFLOW: hidden } .themes DIV.scroller { HEIGHT: 245px } DIV.scroller DIV.section { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: 780px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 225px; OVERFLOW: hidden; PADDING-TOP: 0px } .horizontal-block { TEXT-ALIGN: left; PADDING-BOTTOM: 6px; MARGIN: 8px 0px 0px 7px; PADDING-LEFT: 18px; WIDTH: 167px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: none; HEIGHT: 214px; FONT-SIZE: 80%; VERTICAL-ALIGN: top; PADDING-TOP: 3px; border-radius: 5px } .horizontal-block UL { MARGIN-LEFT: 4px } .structure .horizontal-block { HEIGHT: 178px; CURSOR: pointer } #wizard .gotocourse { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; PADDING-RIGHT: 2px; COLOR: #ccc; BORDER-TOP: #444 1px solid; PADDING-TOP: 10px; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .gotocourse LABEL { WIDTH: auto; DISPLAY: inline-table } #wizard .gotocourse LABEL SPAN { DISPLAY: block; COLOR: #999; FONT-SIZE: 10px } #wizard .gotocourse .button-2 { BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 8px; BORDER-TOP-COLOR: #333; MARGIN-BOTTOM: 7px; BORDER-RIGHT-COLOR: #333; FONT-SIZE: 115%; BORDER-LEFT-COLOR: #333; MARGIN-RIGHT: 25px; PADDING-TOP: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 1px 1px 0 #fefefe inset, -1px -1px 0 #888 inset; text-shadow: 0 1px 0 #BBB } #wizard .gotocourse .button-2:hover { BORDER-BOTTOM-COLOR: #222; BORDER-TOP-COLOR: #222; BORDER-RIGHT-COLOR: #222; BORDER-LEFT-COLOR: #222 } #wizard .number { POSITION: relative; LINE-HEIGHT: 1; FLOAT: left; COLOR: #999; FONT-SIZE: 150%; VERTICAL-ALIGN: middle; TOP: -1px; FONT-WEIGHT: bold; MARGIN-RIGHT: 18px } #wizard .accordion_toggle_help .number { TEXT-INDENT: -9999px; WIDTH: 20px; BACKGROUND: url(/images/ci/icons/step_star_light.png) no-repeat; HEIGHT: 20px; MARGIN-RIGHT: 14px; opacity: .4; background-size: 100% 100% } #wizard .gotocourse .secondary.button-2 { COLOR: #555; FONT-WEIGHT: normal; text-shadow: none } #wizard .gotocourse #welcomePageCancelButton { MARGIN-RIGHT: 10px } #wizard A.wizard-close:before { FONT: 150% "Utilicons"; CONTENT: "X" } #wizard A.wizard-close { POSITION: absolute; COLOR: #888; TOP: 8px; RIGHT: 13px } .theme_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 2px } #wizard .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { } .theme_scrollbar_content { TEXT-ALIGN: center; HEIGHT: 245px; OVERFLOW: hidden } .structure_scrollbar_container { POSITION: relative } .structure_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } DIV.courseStructureDescriptions .structure_scrollbar_track { MARGIN: 1px 3% 1px 0px; TOP: 10px } #wizard .structure_scrollbar_track { MARGIN: 1px 0px; TOP: 0px } #wizard .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } #wizard .selected.structure_scrollbar_handle:hover { BACKGROUND-COLOR: #777 } .selected.structure_scrollbar_handle { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle { } .selected.structure_scrollbar_handle:hover { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle:hover { } .structure_scrollbar_content { MARGIN-TOP: 30px; HEIGHT: 370px; OVERFLOW: hidden } #wizard .structure_scrollbar_content { MARGIN-TOP: 22px; HEIGHT: 200px } .courseStructureOuterDiv { MIN-WIDTH: 800px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 10px; PADDING-TOP: 0px } #wizard .courseStructureOuterDiv { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #3d3b3b; MIN-HEIGHT: 250px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .courseStructureNameScroller { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #fff; MARGIN: 10px 0px 0px; WIDTH: 170px; FLOAT: left; HEIGHT: 400px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; box-shadow: -1px 0 4px #CCC; border-top-left-radius: 4px; border-bottom-left-radius: 4px } #wizard .courseStructureNameScroller { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0px; HEIGHT: 220px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none; border-radius: 0 } .courseStructureNameScroller OL LI { MARGIN-BOTTOM: 3px; CURSOR: pointer } .courseStructureNameScroller OL LI:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .courseStructureNameScroller OL LI.courseStructureChoiceLink:focus { OUTLINE-COLOR: #fff; -moz-box-shadow: inset 0 0 6px #128FA8; -webkit-box-shadow: inset 0 0 6px #128FA8; box-shadow: inset 0 0 6px #128FA8 } #wizard .courseStructureNameScroller OL LI { MARGIN-LEFT: 13px } .courseStructureHeader { PADDING-BOTTOM: 5px; FONT-STYLE: italic; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #999; FONT-SIZE: 85%; CURSOR: default !important; PADDING-TOP: 15px } #structureDescription H3 { TEXT-ALIGN: center; MARGIN-TOP: 110px; FONT: italic 100% Georgia, serif } #wizard .courseStructureHeader { PADDING-LEFT: 0px; COLOR: #aaa; PADDING-TOP: 0px; text-shadow: 0 0 1px #222 } .courseStructureChoiceLink { PADDING-BOTTOM: 5px; PADDING-LEFT: 33px; PADDING-RIGHT: 5px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 5px } #wizard .courseStructureChoiceLink { PADDING-LEFT: 20px } .courseStructureChoiceSelected { BACKGROUND-COLOR: #f5f4ef; COLOR: #3d3b3b; border-top-left-radius: 4px; border-bottom-left-radius: 4px } .courseStructureChoiceSelected A { COLOR: #333 } #wizard .courseStructureChoiceSelected A { COLOR: #333 } .courseStructureDescriptions { POSITION: relative; HEIGHT: 400px; MARGIN-LEFT: 170px } #wizard .courseStructureDescriptions { POSITION: relative; MARGIN: 10px 0px 10px 170px; HEIGHT: 225px } .courseStructureDescriptionAndMenu { BORDER-BOTTOM: #ccc 1px solid; POSITION: static; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; BACKGROUND-COLOR: #f5f4ef; MARGIN: 10px 0px 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 20px; WIDTH: 95%; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 400px; COLOR: #333; FONT-SIZE: 12px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px } #wizard .courseStructureDescriptionAndMenu { BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; MARGIN-TOP: 0px; MIN-HEIGHT: 225px; WIDTH: 635px; HEIGHT: 225px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .courseStructureDescriptions P { MARGIN-BOTTOM: 15px } .courseStructureDescriptions H3 { TEXT-ALIGN: center; MARGIN-TOP: 30px; MARGIN-BOTTOM: 0px; COLOR: #666; FONT-SIZE: 120% } .courseStructureDescriptions BR { DISPLAY: none } .structureIncludeSampleContentCheck { BACKGROUND-COLOR: #f4f1e3; PADDING-LEFT: 15px; WIDTH: 100%; DISPLAY: block; HEIGHT: 40px; MARGIN-LEFT: -20px; PADDING-TOP: 10px; box-shadow: -10px 0 6px #CCC inset } #wizard .structureIncludeSampleContentCheck { Z-INDEX: 1; POSITION: absolute; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 7px; WIDTH: 630px; PADDING-RIGHT: 0px; HEIGHT: 25px; MARGIN-LEFT: -12px; BORDER-TOP: #ccc 1px solid; TOP: 185px; PADDING-TOP: 7px; box-shadow: 0 0 2px #999; border-radius: 5px 5px 0 0 } #wizard .accordion_content .useSelectedStructure { MARGIN-RIGHT: 15px } #wizard .accordion_content .useSelectedStructure { COLOR: #333 } #wizard .accordion_content .useExistingMenu { COLOR: #333 } #wizard .courseStructureDescriptions .structure_scrollbar_track { RIGHT: 15px } .courseStructureMenu { POSITION: relative; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; MARGIN: 0px 0px 0px 20px; MIN-HEIGHT: 400px; PADDING-LEFT: 10px; WIDTH: 200px; PADDING-RIGHT: 10px; FLOAT: right; OVERFLOW: hidden; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-top-right-radius: 5px; border-bottom-right-radius: 5px } #wizard .courseStructureMenu { PADDING-BOTTOM: 35px; MIN-HEIGHT: 265px } .courseStructureMenu .listCm .courseMenu A { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .courseStructureMenu .listCm .courseMenu .divider { PADDING-BOTTOM: 6px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 6px } .courseStructureMenu .topRound { DISPLAY: none } .courseStructureMenu .actionBarMicro { DISPLAY: none } .courseStructureMenu .bottomRound { DISPLAY: none } .courseStructureMenu #courseMenuPalette DIV.navPaletteContent { PADDING-TOP: 0px } .arrow_guide { POSITION: absolute; WIDTH: 156px; BACKGROUND: url(/images/ci/icons/left-arrow-point.png) no-repeat; HEIGHT: 34px; LEFT: 3% } #wizard .arrow_guide { TOP: 81% } .courseStructureDescription IMG { TEXT-ALIGN: center; MARGIN: 10px 0px 5px } .courseStructureDescription P.existing_text { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription P.existing_icon { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription A.button-3 { COLOR: #333; MARGIN-RIGHT: 15px } .courseStructureDescription A.existingstructure.unselectStructureButton { MARGIN-TOP: 5px; MARGIN-RIGHT: 37% } .courseStructureNameScroller .current-value { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png); BORDER-BOTTOM: #555 1px solid; POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 17px; WIDTH: 130px; BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-POSITION: 0px 20%; FONT-SIZE: 85%; TOP: 5px; FONT-WEIGHT: normal; LEFT: 15px; box-shadow: 0 -1px 0 #333 inset } #wizard .courseStructureNameScroller .current-value { TOP: 0px } .noSectionDivider { BORDER-TOP: medium none } .dividerRow { PADDING-BOTTOM: 0px !important; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 5px !important } .keyboardAccess .selectArrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .selectArrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess LABEL { DISPLAY: inline-block; FONT: italic 100% Georgia, serif; MARGIN-BOTTOM: 3px; COLOR: #777 } .keyboardAccess .selectArrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .keyboardAccess .y-arrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .access-reorder-block { MIN-WIDTH: 200px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 0px } .access-reorder-block SELECT { MIN-WIDTH: 200px } .y-arrows { TEXT-ALIGN: center; CLEAR: both } .brandingImgWrap IMG[src*='header_institution'] { POSITION: absolute; MAX-HEIGHT: 60px; TOP: 0px; LEFT: 12px } .sample-content { FONT: 113% Georgia, serif; BACKGROUND: url(images/bg_chalk_dark_s.png) 0px 0px } .sample-content .item H3 SPAN { FONT: bold 120% Georgia, serif; COLOR: #25bfcb !important } .sample-content TABLE { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated UL { MARGIN: 4px 0px } .sample-content .vtbegenerated P { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sample-content .vtbegenerated BR { HEIGHT: 1px } .sample-content.liItem:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } .buildList > LI.sample-content:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } DIV.loading-overwrite { Z-INDEX: 10000; POSITION: absolute; TEXT-ALIGN: center; WIDTH: 100%; BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) white no-repeat center 100px; HEIGHT: 100%; TOP: 0px; LEFT: 0px; opacity: 100 } DIV.loading-overwrite SPAN { POSITION: relative; FONT-SIZE: 200%; TOP: 10px } .sample-content DL { MARGIN: 0px } .sample-content DT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 9em; PADDING-RIGHT: 0px; FLOAT: left; FONT-WEIGHT: bold; PADDING-TOP: 0px } .sample-content DD { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 10em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .dueDate { COLOR: #063 } .dueDatePassed { COLOR: #900 } .inventory_paging A.inactive { opacity: .4 } .inactive { opacity: .4 } .linkLeftSpacesp { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .codeFragment { FONT-FAMILY: "Courier New" } .filteredTextHeader { BORDER-BOTTOM: 1px dotted; TEXT-ALIGN: center; BORDER-LEFT: 1px dotted; PADDING-BOTTOM: 5px; LINE-HEIGHT: 150%; BACKGROUND-COLOR: lightyellow; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline-block; BORDER-TOP: 1px dotted; BORDER-RIGHT: 1px dotted; PADDING-TOP: 5px } .filteredText { BACKGROUND-COLOR: lightyellow; COLOR: red } .floatedReceipt { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 10px !important; LINE-HEIGHT: 1.3em; BACKGROUND-COLOR: #fcfbd1 !important; MARGIN: 0px 0px 6px; PADDING-LEFT: 10px !important; WIDTH: 300px; PADDING-RIGHT: 22px !important; FONT-FAMILY: Helvetica, serif; COLOR: #333 !important; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal !important; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 10px !important; box-shadow: 1px 1px 5px #666; border-radius: 4px } .floatedReceipt A.close:before { } .floatedReceipt A.close:hover:before { } .floatedReceipt EM { FONT-WEIGHT: bold } .floatedReceipt A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: url(none); COLOR: #333 !important; BORDER-TOP: 0px; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important } .floatedReceipt A:hover { TEXT-DECORATION: none !important } .floatedReceipt#receipt_floated_theme { Z-INDEX: 1001; POSITION: absolute; TOP: 50px; RIGHT: 45px } .floatedReceipt#receipt_floated_courseMenu { Z-INDEX: 1201; POSITION: absolute; LEFT: 180px } .floatedReceipt .arrow { BORDER-BOTTOM: transparent 15px dashed; POSITION: absolute; BORDER-LEFT: transparent 15px dashed; HEIGHT: 0px; FONT-SIZE: 0px; BORDER-TOP: transparent 15px dashed; BORDER-RIGHT: transparent 15px dashed } .pointTop.floatedReceipt .arrow { BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #fcfbd1; TOP: -30px; LEFT: 58% } .pointLeft.floatedReceipt .arrow { BORDER-RIGHT-STYLE: solid; BORDER-RIGHT-COLOR: #fcfbd1; TOP: 10px; LEFT: -30px } .nav .sub .flyout .slideoutLink { FONT-WEIGHT: bold } .nav .sub .slideoutLink IMG { WIDTH: 16px; BACKGROUND: url(images/utilicons_arrows_dark.png) 16px 16px; FLOAT: right; HEIGHT: 16px } .nav .sub .slideoutLink-active { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; box-shadow: -3px 0 3px rgba(0, 0, 0, .3); border-radius: 0 } .nav .sub .slideoutLink-active IMG { BACKGROUND: url(images/utilicons_arrows_dark.png) 0px 16px } .slideoutOpen { MARGIN-LEFT: -1px !important; BORDER-RIGHT: #ccc 1px solid } .statusFilter { POSITION: relative; PADDING-LEFT: 8px; FONT-SIZE: 13px } LABEL.statusFilter { TOP: 0px } SPAN.statusFilter { TOP: 1px } .collapsible TABLE.reportcard TR TD:first-child { DISPLAY: block !important } #loginRedirectProviders H3 { MARGIN: 10px } #loginRedirectProviderList LI { MARGIN: 0px 10px 5px 0px; DISPLAY: inline-block } #loginRedirectProviderList LI IMG { WIDTH: 16px; HEIGHT: 16px } .paletteItems LABEL { MAX-WIDTH: 90%; WORD-WRAP: break-word } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems .inactive { MARGIN: 0px; opacity: .4 } DIV.comments DIV DIV.collabComments { BACKGROUND-COLOR: white; MAX-HEIGHT: 100px; OVERFLOW: auto !important } DIV.studentGradesCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetEditTabCommentPreview { WIDTH: 110px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetHistTabCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } .tooltip_show:focus { POSITION: static; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible } .radio-list { PADDING-LEFT: 20px } .radio-list LI { PADDING-BOTTOM: 4px !important; TEXT-INDENT: -26px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .radio-list LI INPUT[type=radio] { VERTICAL-ALIGN: bottom; MARGIN-RIGHT: 6px } .radio-list LI .button-4 { MARGIN-LEFT: 4px } .cartMode.csPicker #copyright { DISPLAY: none } .details .key-valueTable + .vtbegenerated { MARGIN-TOP: 12px !important } .ondemand-module { POSITION: relative; MARGIN: 14px 3px } .ondemand-module DIV { MARGIN-BOTTOM: 12px } .ondemand-module DIV A { PADDING-BOTTOM: 10px; PADDING-LEFT: 4%; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 10px; border-radius: 5px } .ondemand-module DIV A:hover { BACKGROUND: #00b3be; TEXT-DECORATION: none; box-shadow: 0 0 12px #2cb673; text-shadow: 0 -1px 0 rgba(0, 0, 0, .4) } .ondemand-module DIV A > SPAN { DISPLAY: block; MARGIN-BOTTOM: 3px; FONT-SIZE: 80%; FONT-WEIGHT: normal } .ondemand-module SPAN.release { BORDER-BOTTOM: #00add0 1px solid; POSITION: absolute; BORDER-LEFT: #00add0 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 13px; PADDING-RIGHT: 10px; BACKGROUND: #9dddea; COLOR: #000; FONT-SIZE: 85%; BORDER-TOP: #00add0 1px solid; TOP: -7px; RIGHT: -4px; BORDER-RIGHT: #00add0 1px solid; PADDING-TOP: 3px; border-radius: 12px 12px 12px 12px; text-shadow: 0 1px 0 rgba(255, 255, 255, .3) } .ondemand-module P { MARGIN: 0px 13px; FONT: italic 93%/1.45 Georgia, serif; COLOR: #666 }

@import url( theme1.css?v=9.1.90132.0 ); @import url( theme2.css?v=9.1.90132.0 );

BODY { HEIGHT: auto } HTML { HEIGHT: auto } BODY { MIN-WIDTH: 0px } DIV.topGlobalLinks { MIN-WIDTH: 0px } .navigationPane { DISPLAY: none } .contentPane { MARGIN: 0px 14px } .questionDiv .submission_text { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainerLarge { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry H4 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry .entryText { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogContainer .entryComments LI P { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .journalNav UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE THEAD TH { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TBODY TD { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TD DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .modeSwitch { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } A.cmimg-small { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .fileInputWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .field { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .noLabelField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .liveArea .stepcontent TEXTAREA { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonLibrary { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .previewTextArea { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .rating LI A:hover { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .dbThreadTree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .nav .sub UL LI A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmdiv A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .menumini A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .timediv UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentTags { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .auto_complete UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-header H2 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-content { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myPlacesContent { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myavatar { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble .detailComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeDetailsStep { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tableOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .inventory { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .brandingImgWrap { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList-read .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentListPlain .contentListRight + .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .landingPageColumn UL LI UL.datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .panelNested { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .module { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .moduleHeading { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .collapsible { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .imgWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .scroll_div { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .eudModule .eudModule-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .styledModule-dark .module-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet .itemGroups LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet UL.hierarchyList LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .customBanner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .loggedInAs { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #loggedInUserName { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .topTabs .hotItems UL.hotLinks { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmImg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemTray .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemIconHolder A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .title { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .high { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .navPaletteContent A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu H3 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .expTreeContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeContainer .tree LI H4 + UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #pickerPalette .tree > LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeScrollable { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #logDetail { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .table-scroll-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gridOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeItemsWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeSide .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV UL LI DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.comments DIV DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.studentGradesCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetEditTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetHistTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .u_scrollPanel-vertical { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentScore { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable_header DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gc_info UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI SPAN { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cumulativeSelectItems .selected_items .itemList { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .flynav UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .overrow DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .weightField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .criteriaItem { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important }

/* ================================================================== * General i18n functions * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ // internal methods function _escape(string) { // ?= does not seem to work return (''+string).replace(/^'|([^\\])'/g, "$1\\'").replace(/\n/g, "&crlf;"); } function _unescape(string) { return string.replace(/&crlf;/g, "\n"); } function _substitute(string, parameters) { for ( var key in parameters) { if ( parameters.hasOwnProperty( key ) ) { string = eval( "string.replace(/\\{" + key + "\\}/g, '" + _escape(parameters[key]) + "')" ); } } return _unescape(string); } // Public methods: these methods are instance methods of dynamically generated // Javascript bundle objects. See Java class blackboard.platform.intl.JsResource // and Perl module CI::L10n::JsResource. // Get a string from a resource bundle function i18n_get_string(key) { return this[key]; } // Get string and perform substitution using positions (arrays) or names (object) function i18n_get_formatted_string(key, parameters) { var string = this.getString(key); if (string && parameters) { // Convert to object keyed by string representation of array index if ( parameters.constructor.toString() == [].constructor.toString() ) { var array = parameters; parameters = {}; for (var i = 0; i < array.length; ++i) { parameters[''+i] = array[i]; } } string = _substitute(string, parameters); } return string; }

/* Prototype JavaScript framework, version 1.7 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key], type = typeof value; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError(); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (object.hasOwnProperty(property)) { results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toJSONEx: toJSON, // Leaving this in here to assist in debugging odd stringify issues in IE if we see them again in other contexts. toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); } function unescapeHTML() { return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#<Enumerable:' + this.toArray().inspect() + '>'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); }, hasResponder: function( callback ) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { return true; } }); return false; } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState]; // quite a high number of Interactive events can be generated on some browsers // triggering a memory issue in FF3 when building the response object. So if there is no // registered listener, quick return // see https://bugzilla.mozilla.org/show_bug.cgi?id=453709 if ( state == 'Interactive' ) { if ( this.notListeningToInteractive ) { if ( this.notListeningToInteractive.value ) return; } else { this.notListeningToInteractive = new Object(); this.notListeningToInteractive.value = ( !this.options['onInteractive'] && !Ajax.Responders.hasResponder( state ) ); if ( this.notListeningToInteractive.value ) return; } } var response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $s(element) { if (Object.isString(element)) { return document.getElementById(element); } return element; } function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { function shouldUseCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement('<input name="x">'); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCache(tagName, attributes) ? cache[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.idCounter = 1; Element.cache = { }; Element._purgeElement = function(element) { var uid = element._prototypeUID; if (uid) { Element.stopObserving(element); element._prototypeUID = void 0; delete Element.Storage[uid]; } } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, // only extend the element if it is a string - otherwise we don't need to extend the element remove: function(element) { if (Object.isString(element)) { element = $(element); } if (element.parentNode) { element.parentNode.removeChild(element); } return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = "<option value=\"test\">test</option>"; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = "<link>"; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var purgeElement = Element._purgeElement; var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) { while (element.firstChild) { element.removeChild(element.firstChild); } var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); nodes.each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(), value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType == 1) elements.push(Element.extend(element)); if (elements.length == maximumLength) break; } return elements; }, // Collect items without extending them all: rawRecursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) { elements.push(element); } return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === 1) { results.push(Element.extend(child)); } child = child.nextSibling; } return results; }, // Find the immediate descendents of the given element without extending them all rawImmediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).rawNextSiblings()); return []; }, previousSiblings: function(element, maximumLength) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, // Find the next siblings without actually extending them all rawNextSiblings: function(element) { return $(element).rawRecursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Prototype.Selector.find(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.previousSiblings(), expression, index); } else { return element.recursivelyCollect("previousSibling", index + 1)[index]; } }, next: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.nextSiblings(), expression, index); } else { var maximumLength = Object.isNumber(index) ? index + 1 : 1; return element.recursivelyCollect("nextSibling", index + 1)[index]; } }, select: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); }, adjacent: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element.parentNode).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $s(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, makePositioned: function(element) { element = $s(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source), delta = [0, 0], parent = null; element = $(element); if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className', forProp = 'for', el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'), f; el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if (element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(), fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html, force) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; var workaround = false; if (t) workaround = true; else if (force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = '&nbsp;' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) { div = div.firstChild; } } else { div.innerHTML = html; } return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')); Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); if (document.documentElement.hasAttribute) { Element.hasAttribute = function(element, attribute) { return element.hasAttribute(attribute); }; } else { Element.hasAttribute = Element.Methods.Simulated.hasAttribute; } Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = Element.Storage.UID++; uid = element._prototypeUID; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); }, purge: function(element) { if (!(element = $(element))) return; var purgeElement = Element._purgeElement; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } }); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = element.getStyle(property); } if (value === null) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value); var whole = null; var position = element.getStyle('position'); var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) { return number; } return number + 'px'; } function isDisplayed(element) { var originalElement = element; while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._prepared) return; var element = this.element; if (isDisplayed(element)) { this._prepared = true; return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = element.getStyle('position'), width = element.getStyle('width'); if (width === "0px" || width === null) { element.style.display = 'block'; width = element.getStyle('width'); } var context = (position === 'fixed') ? document.viewport : element.parentNode; element.setStyle({ position: 'absolute', visibility: 'hidden', display: 'block' }); var positionedWidth = element.getStyle('width'); var newWidth; if (width && (positionedWidth === width)) { newWidth = getPixelValue(element, 'width', context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getPixelValue(element, 'width', context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._prepared = true; }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._prepared = false; }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#<Element.Layout>"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } // Implementing a new method to avoid retesting the entire application with clientHeight function getDimensionsEx(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display != 'none') { // Safari bug return {width: element.clientWidth, height: element.clientHeight}; } return getDimensions(element); } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { element = $(element); var valueT = 0, valueL = 0, docBody = document.body; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getDimensions: getDimensions, getDimensionsEx: getDimensionsEx, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); Prototype._original_property = window.Sizzle; /*! * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; var origContext = context = context || document; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), soFar = selector; while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) selector += parts.shift(); set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { var ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { var ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { var cur = parts.pop(), pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { throw "Syntax error, unrecognized expression: " + (cur || selector); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set, match; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.match[ type ].exec( expr )) != null ) { var filter = Expr.filter[ type ], found, item; anyFound = false; if ( curLoop == result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr == old ) { if ( anyFound == null ) { throw "Syntax error, unrecognized expression: " + expr; } else { break; } } old = expr; } return curLoop; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part, isXML){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag && !isXML ) { part = part.toUpperCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part, isXML){ var isPartStr = typeof part === "string"; if ( isPartStr && !/\W/.test(part) ) { part = isXML ? part : part.toUpperCase(); for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName === part ? parent : false; } } } else { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context, isXML){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { if ( !inplace ) result.push( elem ); } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ for ( var i = 0; curLoop[i] === false; i++ ){} return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); }, CHILD: function(match){ if ( match[1] == "nth" ) { var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return /h\d/i.test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 == i; }, eq: function(elem, i, match){ return match[3] - 0 == i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } } return true; } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; case 'nth': var first = match[2], last = match[3]; if ( first == 1 && last == 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first == 0 ) { return diff == 0; } else { return ( diff % first == 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value != check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 ); } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return 0; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } (function(){ var form = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = "<a name='" + id + "'/>"; var root = document.documentElement; root.insertBefore( form, root.firstChild ); if ( !!document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = "<a href='#'></a>"; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "<p class='TEST'></p>"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; if ( !seed && context.nodeType === 9 && !isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ var div = document.createElement("div"); div.innerHTML = "<div class='test e'></div><div class='test'></div>"; if ( div.getElementsByClassName("e").length === 0 ) return; div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) return; Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ){ elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ) { elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } var contains = document.compareDocumentPosition ? function(a, b){ return a.compareDocumentPosition(b) & 16; } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; var isXML = function(elem){ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; while (element) { if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { return Element.extend(element); } element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { if (eventName === "beforeunload") { responder = function(event) { Event.extend(event, element); return handler.call(element, event); }; } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K, translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { return (translations[eventName] || eventName); }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (!registry) return element; if (!eventName) { registry.each( function(pair) { var eventName = pair.key; stopObserving(element, eventName); }); return element; } var responders = registry.get(eventName); if (!responders) return element; if (!handler) { responders.each(function(r) { stopObserving(element, eventName, r.handler); }); return element; } var i = responders.length, responder; while (i--) { if (responders[i].handler === handler) { responder = responders[i]; break; } } if (!responder) return element; if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } var _getElementsByClassName = instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return _getElementsByClassName( parentElement || document.body, className ); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#<Selector: " + this.expression + ">"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); /* * * Copyright (c) 2007 Andrew Tetlaw * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * * * * FastInit * http://tetlaw.id.au/view/javascript/fastinit * Andrew Tetlaw * Version 1.4.1 (2007-03-15) * Based on: * http://dean.edwards.name/weblog/2006/03/faster * http://dean.edwards.name/weblog/2006/06/again/ * Help from: * http://www.cherny.com/webdev/26/domloaded-object-literal-updated * */ var FastInit = { onload : function() { if (FastInit.done) { return; } FastInit.done = true; for(var x = 0, al = FastInit.f.length; x < al; x++) { FastInit.f[x](); } }, addOnLoad : function() { var a = arguments; for(var x = 0, al = a.length; x < al; x++) { if(typeof a[x] === 'function') { if (FastInit.done ) { a[x](); } else { FastInit.f.push(a[x]); } } } }, listen : function() { if (/WebKit|khtml/i.test(navigator.userAgent)) { FastInit.timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(FastInit.timer); delete FastInit.timer; FastInit.onload(); }}, 10); } else if (document.addEventListener) { document.addEventListener('DOMContentLoaded', FastInit.onload, false); } else if(!FastInit.iew32) { if(window.addEventListener) { window.addEventListener('load', FastInit.onload, false); } else if (window.attachEvent) { return window.attachEvent('onload', FastInit.onload); } } }, f:[],done:false,timer:null,iew32:false }; /*@cc_on @*/ /*@if (@_win32) FastInit.iew32 = true; document.write('<script id="__ie_onload" defer src="' + ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); document.getElementById('__ie_onload').onreadystatechange = function(){if (this.readyState == 'complete') { FastInit.onload(); }}; /*@end @*/ FastInit.listen(); /** * Only include the contents of this file once - for example, if this is included in a lightbox we don't want to re-run * all of this - just use the loaded version. (i.e. rerunning would clear page.bundle which would remove all the * language strings for the current page) */ if (!window.page) { var page = {}; page.isLoaded = false; /** * Utility for adding and using localized messages on the page. */ page.bundle = {}; page.bundle.messages = {}; page.bundle.addKey = function( key, value ) { page.bundle.messages[key] = value; }; page.bundle.getString = function( key /*, arg1, arg2, ..., argN */ ) { var result = page.bundle.messages[key]; if ( !result ) { return "!!!!" + key + "!!!!!"; } else { if ( arguments.length > 1 ) { for ( var i = 1; i < arguments.length; i++ ) { result = result.replace( new RegExp("\\{"+(i-1)+"\\}","g"), arguments[i] ); } } return result; } }; /** * Provides support for lazy initialization of javascript behavior when a certain * event happens to a certain item. */ page.LazyInit = function( event, eventTypes, initCode ) { var e = event || window.event; var target = Event.element( event ); // This is because events bubble and we want a reference // to the element we registered the handlers on. target = page.util.upToClass(target, "jsInit"); for (var i = 0; i < eventTypes.length; i++ ) { target['on'+eventTypes[i]] = null; } eval( initCode ); //initCode can reference "target" }; /** * Evaluates any <script> tags in the provided string in the global scope. * Useful for evaluating scripts that come back in text from an Ajax call. * If signalObject is passed then signalObject.evaluatingScripts will be set to false when done. */ page.globalEvalScripts = function(str, evalExternalScripts, signalObject) { //Get any external scripts var waitForVars = []; var scriptVars = [ { script: 'bb_htmlarea', variable: ['HTMLArea'] }, { script: 'w_editor', variable: ['WebeqEditors'] }, { script: 'wysiwyg.js', variable: ['vtbe_attchfiles'] }, { script: 'gradebook_utils.js', variable: ['gradebook_utils'] }, { script: 'rubric.js', variable: ['rubricModule'] }, { script: 'gridmgmt.js', variable: ['gridMgmt'] }, { script: 'calendar-time.js', variable: ['calendar'] }, { script: 'widget.js', variable: ['widget'] }, { script: 'vtbeTinymce.js', variable: ['tinyMceWrapper'] }, { script: 'WhatsNewView.js', variable: ['WhatsNewView'] }, { script: 'tiny_mce.js', variable: ['tinymce','tinyMCE'] } ]; if (evalExternalScripts) { var externalScriptRE = '<script[^>]*src=["\']([^>"\']*)["\'][^>]*>([\\S\\s]*?)<\/script>'; var scriptMatches = str.match(new RegExp(externalScriptRE, 'img')); if (scriptMatches && scriptMatches.length > 0) { $A(scriptMatches).each(function(scriptTag) { var matches = scriptTag.match(new RegExp(externalScriptRE, 'im')); if (matches && matches.length > 0 && matches[1] != '') { var scriptSrc = matches[1]; if (scriptSrc.indexOf('/dwr_open/') != -1) { // dwr_open calls will ONLY work if the current page's webapp == the caller's webapp, // otherwise we'll get a session error. THis will happen if a lightbox is loaded with // dynamic content from a different webapp (say /webapps/blackboard) while the main page // is loaded from /webapps/discussionboard. To avoid this, rewrite the url to use the // webapp associated with the current page. var newparts = scriptSrc.split('/'); var oldparts = window.location.pathname.split('/'); newparts[1] = oldparts[1]; newparts[2] = oldparts[2]; scriptSrc = newparts.join('/'); } var scriptElem = new Element('script', { type: 'text/javascript', src: scriptSrc }); var head = $$('head')[0]; head.appendChild(scriptElem); for ( var i = 0; i < scriptVars.length; i++ ) { if ( scriptSrc.indexOf( scriptVars[i].script ) != -1 ) { scriptVars[ i ].variable.each( function( s ) { waitForVars.push( s ); } ); break; } } } }); } } page.delayAddExtractedScripts(str.extractScripts(), waitForVars, signalObject); }; // Evaluate any inline script - delay a bit to give the scripts above time to load // NOTE that this is not guaranteed to work - if there are delays loading and initializing // the scripts required then code in these scripts might fail to find the required variables // If it is for our code then updating waitForVars appropriately per script will work page.delayAddExtractedScripts = function (scripts, waitForVars, signalObject) { var count = 0; if (waitForVars.length === 0) { page.actuallyAddExtractedScripts(scripts, signalObject); } else { new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( page.allVariablesDefined(waitForVars) ) { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } } else // give up if it takes longer than 5s to load { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } }.bind(this), 0.05 ); } }; page.allVariablesDefined = function(vars) { var result = true; for ( var i = 0; i < vars.length; i++ ) { if ( !window[vars[i]] ) { result = false; break; } } return result; }; page.actuallyAddExtractedScripts = function (scripts, signalObject) { var scriptExecutionDelay = 0; if( signalObject ) { scriptExecutionDelay = signalObject.delayScriptExecution; } scripts.each(function(script) { if ( script != '' ) { if ( Prototype.Browser.IE && window.execScript ) { ( function() { window.execScript( script ); }.delay( scriptExecutionDelay ) ); } else { ( function() { var scriptElem = new Element( 'script', { type : 'text/javascript' } ); var head = $$( 'head' )[ 0 ]; script = document.createTextNode( script ); scriptElem.appendChild( script ); head.appendChild( scriptElem ); head.removeChild( scriptElem ); }.delay( scriptExecutionDelay ) ); } } } ); if (signalObject) { signalObject.evaluatingScripts = false; } }; page.setIframeHeight = function () { try { var iframeElements = $$('iframe.cleanSlate'); iframeElements.each( function( iframeElement ) { if ( iframeElement.contentWindow && iframeElement.contentWindow.document && iframeElement.contentWindow.document.body ) { iframeElement.style.height = iframeElement.contentWindow.document.body.scrollHeight + 50 + 'px'; } }); } catch( e ){} }; page.onResizeChannelIframe = function( channelExtRef ) { var frameId = 'iframe' + channelExtRef; var listId = 'list_channel' + channelExtRef; var f = $( frameId ); f.style.height = f.contentWindow.document.getElementById( listId ).scrollHeight + 15 + "px"; }; /** * Contains page-wide utility methods */ page.util = {}; /** * Returns whether the specific element has the specified class name. * Same as prototype's Element.hasClassName, except it doesn't extend the element (which is faster in IE). */ page.util.hasClassName = function ( element, className ) { var elementClassName = element.className; if (elementClassName.length === 0) { return false; } if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) { return true; } return false; }; page.util.fireClick = function ( elem ) { if (Prototype.Browser.IE) { elem.fireEvent("onclick"); } else { var evt = document.createEvent("HTMLEvents"); evt.initEvent("click", true, true); elem.dispatchEvent(evt); } }; page.util.useARIA = function () { if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); var ffversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ffversion >= 1.9) { return true; } } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; var ieversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ieversion>=8) { return true; } } return false; }; // Find an element with the given className, starting with the element passed in page.util.upToClass = function ( element, className ) { while (element && !page.util.hasClassName(element, className)) { element = element.parentNode; } return $(element); }; page.util.isRTL = function () { var els = document.getElementsByTagName("html"); var is_rtl = (typeof(els) != 'undefined' && els && els.length == 1 && els[0].dir == 'rtl' ); return is_rtl ; }; page.util.allImagesLoaded = function (imgList) { var allDone = true; if (imgList) { for ( var i = 0, c = imgList.length; i < c; i++ ) { var animg = imgList[i]; // TODO - this doesn't appear to work on IE. if ( !animg.complete ) { allDone = false; break; } } } return allDone; }; // Exposes (display but keep invisible) an invisible element for measurement // recursively traverses up the DOM looking for // a parent node of element whose display == 'none' // If found, sets its style to: display:block, position:absolute, and visibility:hidden // and saves it as element.hiddenNode so it can be easily unexposed page.util.exposeElementForMeasurement = function ( element ) { element = $(element); var e = element; var hiddenNode; // find parent node that is hidden while ( !hiddenNode && e && e.parentNode) { if ( $(e).getStyle('display') === 'none') { hiddenNode = $(e); } e = $(e.parentNode); } if ( hiddenNode ) { // save original style attributes: visibility, position, & display element.hiddenNode = hiddenNode; var style = hiddenNode.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') { newStyles.position = 'absolute'; } hiddenNode.originalStyles = originalStyles; // set new style for: visibility, position, & display hiddenNode.setStyle( newStyles ); } }; // undo previous call to exposeElementForMeasurement page.util.unExposeElementForMeasurement = function ( element ) { element = $(element); if ( element && element.hiddenNode && element.hiddenNode.originalStyles ) { Element.setStyle( element.hiddenNode, element.hiddenNode.originalStyles ); element.hiddenNode.originalStyles = null; element.hiddenNode = null; } }; /** * Returns whether any part of the two elements overlap each other. */ page.util.elementsOverlap = function ( e1, e2 ) { var pos1 = $(e1).cumulativeOffset(); var a = { x1: pos1.left, y1: pos1.top, x2: pos1.left + e1.getWidth(), y2: pos1.top + e1.getHeight() }; var pos2 = $(e2).cumulativeOffset(); var b = { x1: pos2.left, y1: pos2.top, x2: pos2.left + e2.getWidth(), y2: pos2.top + e2.getHeight() }; return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; }; /** * To handle the case where the focus is visible but too close to the bottom of the page, scroll the page up a bit. */ page.util.focusAndScroll= function(elem) { elem.focus(); return page.util.ensureVisible(elem); }; page.util.ensureVisible= function(elem) { var scrolltop = document.viewport.getScrollOffsets().top; var mytop = elem.cumulativeOffset()[1]; var height = document.viewport.getDimensions().height; var realtop = mytop - scrolltop; var thirty = height * 0.3; if (realtop > (height-thirty)) { window.scrollBy(0,thirty); } return false; }; page.util.processJSProtoString = function (string, checkToken) { // This value must match the value passed as the 2nd parameter to this string. // The goal is to pass a known value, as a constant, through the javascript: pseudo-protocol // handler. We can then examine the result to determine the decoding method used by the current // browser. var sniffToken = '%C3%A9'; // There are three known decoding cases, non-translated, UTF8, and unescape if (checkToken === unescape(sniffToken)) { // Unescape decoded return decodeURIComponent(escape(string)); } else if (checkToken === sniffToken) { // Non-translated return decodeURIComponent(string); } else { // UTF8 Decoded/Unknown return string; } }; /** * Find the first action bar that precedes sourceElement * Returns the action bar div element if found, null otherwise * * @param sourceElement */ page.util.findPrecedingActionBar = function( sourceElement ) { var actionBar = null; // Loop through each ancestor of sourceElement, // starting with parent, until an action bar is found sourceElement.ancestors().each( function( item ) { actionBar = item.previous('div.tabActionBar') || item.previous('div.actionBarMicro') || item.previous('div.actionBar'); if (actionBar) { throw $break; } }); return actionBar; }; page.util.getLargestDimensions = function (element) { var width = 0; var height = 0; var dim; while (element != document) { dim = $(element).getDimensions(); if (dim.width > width) { width = dim.width; } if (dim.height > height) { height = dim.height; } element = element.up(); } return { width: width, height: height }; }; /* * Resize the current window so that it will fit the largest dimensions found for the given element. * Will also reposition on the screen if required to fit. Will not size larger than the screen. * NOTE that this will only work for popup windows - main windows are typically in a tabset in * the browser and they don't allow resizing like this. That's OK because the main use case * for this method is to make sure popup windows are resized appropriately for their content. */ page.util.resizeToContent = function (startElement) { var dim = page.util.getLargestDimensions(startElement); var newWidth = dim.width; newWidth += 25; // TODO: Haven't figured out why I need this extra space yet... if (window.innerWidth > newWidth) { newWidth = window.innerWidth; } if (newWidth > screen.width) { newWidth = screen.width; } var newHeight = dim.height; newHeight += 100; // TODO: Haven't figured out why I need this extra space yet if (window.innerHeight > newHeight) { newHeight = window.innerHeight; } if (newHeight > screen.height) { newHeight = screen.height; } var left = 0; var top = 0; if ( window.screenLeft ) { left = window.screenLeft; top = window.screenTop; } else if ( window.screenX ) { left = window.screenX; top = window.screenY; } if (left + newWidth > screen.width) { left = screen.width - newWidth; if (left < 0) { left = 0; } } if (top + newHeight > screen.height) { top = screen.height - newHeight; if (top < 0) { top = 0; } } window.moveTo(left,top); window.resizeTo(newWidth,newHeight); }; /** * Sets the css position of all li elements that are contained in action bars on the page. * Since z-index only works on positioned elements, this function can be used to ensure that * divs with a higher z-index will always appear on top of any action bars on the page. * * @param cssPosition */ page.util.setActionBarPosition = function( cssPosition ) { $$( 'div.actionBar', 'div.tabActionBar', 'div.actionBarMicro' ).each( function( actionbar ) { actionbar.select( 'li' ).each( function( li ) { li.setStyle( {position: cssPosition} ); }); }); }; /** * Class for controlling the course menu-collapser. Also ensures the menu is * the right height */ page.PageMenuToggler = Class.create(); page.PageMenuToggler.prototype = { /** * initialize */ initialize: function( isMenuOpen,key,temporaryScope ) { page.PageMenuToggler.toggler = this; this.key = key; if (temporaryScope) { this.temporaryScope = temporaryScope; } else { this.temporaryScope = false; } this.isMenuOpen = isMenuOpen; this.puller = $('puller'); this.menuPullerLink = $(this.puller.getElementsByTagName('a')[0]); this.menuContainerDiv = $('menuWrap'); this.navigationPane = $('navigationPane'); this.contentPane = $('contentPanel') || $('contentPane'); this.navigationPane = $('navigationPane'); this.locationPane = $(this.navigationPane.parentNode); this.breadcrumbBar = $('breadcrumbs'); this.menu_pTop = parseInt(this.menuContainerDiv.getStyle('paddingTop'), 10); this.menu_pBottom = parseInt(this.menuContainerDiv.getStyle('paddingBottom'), 10); this.loc_pTop = parseInt(this.locationPane.getStyle('paddingTop'), 10); if ( this.breadcrumbBar ) { this.bc_pTop = parseInt(this.breadcrumbBar.getStyle('paddingTop'), 10); this.bc_pBottom = parseInt(this.breadcrumbBar.getStyle('paddingBottom'), 10); } else { this.bc_pTop = 0; this.bc_pBottom = 0; } this.toggleListeners = []; this.onResize( null ); // fix the menu size // Doesn't work in IE or Safari.. //Event.observe( window, 'resize', this.onResize.bindAsEventListener( this ) ); Event.observe( this.menuPullerLink, 'click', this.onToggleClick.bindAsEventListener( this ) ); }, /** * Adds a listener for course menu toggle events */ addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, /** * Notifies all registered toggle event listeners that a toggle has occurred. */ _notifyToggleListeners: function( isOpen ) { this.toggleListeners.each( function( listener ) { listener( isOpen ); }); }, notifyToggleListeners: function( isOpen ) { // we call once the toggle is complete and the DOM in its new state. 2012 themes add transition, which seems // to collide with the logic to get dimensions of dom element, so the delay is a 1 sec to let time for those // transitions to be done. this._notifyToggleListeners.bind( this, isOpen ).delay( 1 ); }, /** * getAvailableResponse */ getAvailableResponse : function ( req ) { var originalMenuOpen = this.isMenuOpen ; if ( req.responseText.length > 0 ) { if ( req.responseText == 'true' ) { this.isMenuOpen = true; } else { this.isMenuOpen = false; } } if ( originalMenuOpen != this.isMenuOpen ) { this.notifyToggleListeners( this.isMenuOpen ); this.menuContainerDiv.toggle(); this.puller.toggleClassName("pullcollapsed"); this.contentPane.toggleClassName("contcollapsed"); this.navigationPane.toggleClassName("navcollapsed"); } }, /** * Expands the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ expand : function () { this.menuContainerDiv.show(); this.puller.removeClassName("pullcollapsed"); this.contentPane.removeClassName("contcollapsed"); this.navigationPane.removeClassName("navcollapsed"); this.isMenuOpen = true; var msg = page.bundle.messages[ "coursemenu.hide" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( true ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, true ); } else { UserDataDWRFacade.setStringPermScope( this.key, true ); } }, /** * Collapses the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ collapse : function () { this.menuContainerDiv.hide(); this.puller.addClassName("pullcollapsed"); this.contentPane.addClassName("contcollapsed"); this.navigationPane.addClassName("navcollapsed"); this.isMenuOpen = false; var msg = page.bundle.messages[ "coursemenu.show" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( false ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, false ); } else { UserDataDWRFacade.setStringPermScope( this.key, false ); } }, /** * Event triggered when the puller toggle control is clicked. Changes the * menu from open to closed or closed to open depending on existing state. */ onToggleClick: function( event ) { if ( this.isMenuOpen ) { this.collapse(); } else { this.expand(); } Event.stop( event ); }, /** * onResize */ onResize: function( event ) { var menuHeight = this.menuContainerDiv.getHeight(); var contentHeight = this.contentPane.getHeight(); var maxHeight = ( menuHeight > contentHeight ) ? menuHeight : contentHeight; this.contentPane.setStyle({height: maxHeight + 'px'}); this.navigationPane.setStyle({height: maxHeight + 'px'}); } }; page.PageMenuToggler.toggler = null; /** * Class for controlling the page help toggler in the view toggle area */ page.PageHelpToggler = Class.create(); page.PageHelpToggler.prototype = { initialize: function( isHelpEnabled, showHelpText, hideHelpText, assumeThereIsHelp ) { page.PageHelpToggler.toggler = this; this.toggleListeners = []; this.isHelpEnabled = isHelpEnabled; this.showText = showHelpText; this.hideText = hideHelpText; this.contentPanel = $('contentPanel') || $('contentPane'); var helperList = []; if ( this.contentPanel && !assumeThereIsHelp) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { helperList.push( $(el) ); } } } var helpTextToggleLink = $('helpTextToggleLink'); if ( ( !helperList || helperList.length === 0) && !assumeThereIsHelp ) { if ( helpTextToggleLink ) { helpTextToggleLink.remove(); } } else { if ( !isHelpEnabled ) { helperList.invoke( "toggle" ); } if ( !this.showText ) { this.showText = page.bundle.getString("viewtoggle.editmode.showHelp"); } if ( !this.hideText ) { this.hideText = page.bundle.getString("viewtoggle.editmode.hideHelp"); } this.toggleLink = helpTextToggleLink; this.toggleImage = $(this.toggleLink.getElementsByTagName('img')[0]); Event.observe( this.toggleLink, "click", this.onToggleClick.bindAsEventListener( this ) ); $(this.toggleLink.parentNode).removeClassName('hidden'); this.updateUI(); } }, addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, _notifyToggleListeners: function() { this.toggleListeners.each( function( listener ) { listener( this.isHelpEnabled ); }); }, notifyToggleListeners: function() { // we notify once the whole menu collapse/expand is done, so the DOM is in final state this._notifyToggleListeners.bind( this ).delay( ); }, updateUI: function( ) { if ( this.isHelpEnabled ) { $("showHelperSetting").value = 'true'; this.toggleImage.src = "/images/ci/ng/small_help_on2.gif"; this.toggleLink.setAttribute( "title", this.showText ); this.toggleImage.setAttribute( "alt", this.showText ); } else { $("showHelperSetting").value = 'false'; this.toggleImage.src = "/images/ci/ng/small_help_off2.gif"; this.toggleLink.setAttribute( "title", this.hideText ); this.toggleImage.setAttribute( "alt", this.hideText ); } }, onToggleClick: function( event ) { // Toggle all elements that have the css class "helphelp" var helperList = []; if ( this.contentPanel ) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { $(el).toggle(); } } } if ( this.isHelpEnabled ) { this.isHelpEnabled = false; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "false" ); } else { this.isHelpEnabled = true; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "true" ); } this.updateUI(); this.notifyToggleListeners(); Event.stop( event ); } }; /** * Class for controlling the display of a context menu. */ page.ContextMenu = Class.create(); page.ContextMenu.prototype = { initialize: function( contextMenuContainer, divId, forceMenuRefresh ) { this.displayContextMenuLink = contextMenuContainer.down("a"); this.contextMenuContainer = contextMenuContainer; this.forceMenuRefresh = forceMenuRefresh; this.uniqueId = this.displayContextMenuLink.id.split('_')[1]; this.contextMenuDiv = this.displayContextMenuLink.savedDiv; if ( !this.contextMenuDiv ) { this.contextMenuDiv = contextMenuContainer.down("div");//$('cmdiv_' + this.uniqueId); this.displayContextMenuLink.savedDiv = this.contextMenuDiv; page.ContextMenu.hiddenDivs.set(divId,this.contextMenuDiv); } this.originalContextMenuDiv = this.contextMenuDiv.cloneNode(true); $(this.contextMenuDiv).setStyle({zIndex: 200}); this.displayContextMenuLink.appendChild( this.contextMenuDiv ); // Temporarily add the menu back where it started this.closeContextMenuLink = contextMenuContainer.down(".contextmenubar_top").down(0); this.contextParameters = contextMenuContainer.readAttribute("bb:contextParameters"); this.menuGeneratorURL = contextMenuContainer.readAttribute("bb:menuGeneratorURL"); this.nav = contextMenuContainer.readAttribute("bb:navItem"); this.enclosingTableCell = contextMenuContainer.up("td"); this.menuOrder = contextMenuContainer.readAttribute("bb:menuOrder"); this.overwriteNavItems = contextMenuContainer.readAttribute("bb:overwriteNavItems"); this.beforeShowFunc = contextMenuContainer.readAttribute("bb:beforeShowFunc"); if (this.beforeShowFunc) { this.beforeShowFunc = eval(this.beforeShowFunc); } if ( this.menuOrder ) { this.menuOrder = this.menuOrder.split(','); } if ( !this.contextParameters ) { this.contextParameters = ""; } if ( !this.menuGeneratorURL ) { this.menuGeneratorURL = ""; } if ( !this.nav ) { this.nav = ""; } this.dynamicMenu = false; if ( this.menuGeneratorURL ) { this.dynamicMenu = true; } if (this.dynamicMenu) { Event.observe( this.displayContextMenuLink, "click", this.generateDynamicMenu.bindAsEventListener( this ) ); } else { Event.observe( this.displayContextMenuLink, "click", this.onDisplayLinkClick.bindAsEventListener( this ) ); } Event.observe( this.closeContextMenuLink, "click", this.onCloseLinkClick.bindAsEventListener( this ) ); Event.observe( this.contextMenuDiv, "keydown", this.onKeyPress.bindAsEventListener( this ) ); // adding nowrap to table cell containing context menu // If no enclosing td is found, try th if ( !this.enclosingTableCell ) { this.enclosingTableCell = contextMenuContainer.up("th"); } if ( this.enclosingTableCell ) { if ( !this.enclosingTableCell.hasClassName("nowrapCell") ) { this.enclosingTableCell.addClassName("nowrapCell"); } // if label tag is an immediate parent of context menu span tag, it needs nowrap as well if ( this.enclosingTableCell.down("label") && !this.enclosingTableCell.down("label").hasClassName("nowrapLabel")) { this.enclosingTableCell.down("label").addClassName("nowrapLabel"); } } if ( !this.dynamicMenu ) { var contexMenuItems = contextMenuContainer.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; // remove the context menu div from the page for performance reasons - add it back when we need to show it Element.remove( this.contextMenuDiv ); }, onKeyPress: function( event ) { var elem, children, index; var key = event.keyCode || event.which; if ( key == Event.KEY_UP ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_ESC ) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_TAB ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( (!event.shiftKey && index == children.length - 1) || (event.shiftKey && index === 0)) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } } else if ( key == Event.KEY_RETURN ) { if ( this.useARIA ) { elem = Event.element ( event ); (function() { page.util.fireClick( elem ); }.bind(this).defer()); Event.stop( event ); } } }, onAnchorFocus: function ( event ) { Event.element( event ).setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { Event.element( event ).setStyle({ backgroundColor: '' }); }, afterMenuGeneration: function( req ) { if ( this.dynamicMenu ) { var result; this.dynamicMenu = this.forceMenuRefresh; try { result = req.responseText.evalJSON( true ); if ( result.success == "true" ) { // append uniqueId to each li var menuHTML = result.contentMenuHTMLList.replace(/(<li.*?id=")(.*?)(".*?>)/g,"$1$2_"+this.uniqueId+"$3"); if ( this.forceMenuRefresh ) { this.contextMenuDiv.innerHTML = this.originalContextMenuDiv.innerHTML; } this.contextMenuDiv.insert({bottom:menuHTML}); $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); var contexMenuItems = this.contextMenuDiv.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } else { new page.InlineConfirmation("error", result.errorMessage, false ); } } catch ( e ) { new page.InlineConfirmation("error", result.errorMessage, false ); } } this.showMenu(); //focus on the first menu item (function() { this.contextMenuDiv.down("a").focus(); }.bind(this).defer()); }, appendItems: function( items, menuItemContainer ) { if (!menuItemContainer) { var uls = this.contextMenuDiv.getElementsBySelector("ul"); menuItemContainer = uls[uls.length-1]; } items.each( function ( item ) { if ( item.type == "seperator" ) { if (menuItemContainer.getElementsBySelector("li").length === 0) { return; } var ul = new Element('ul'); menuItemContainer.parentNode.appendChild( ul ); menuItemContainer = ul; return; } if ( !this.menuItemTempate ) { var menuItems = this.contextMenuDiv.getElementsBySelector("li"); this.menuItemTempate = menuItems[menuItems.length-1]; } var mi = this.menuItemTempate.cloneNode( true ); var a = mi.down('a'); var name = item.key ? page.bundle.getString( item.key ) : item.name ? item.name : "?"; a.update( name ); a.title = item.title ? item.title : name; a.href = "#"; menuItemContainer.appendChild( mi ); Event.observe( a, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( a, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( a, 'click', this.onItemClick.bindAsEventListener( this, item.onclick ) ); }.bind( this ) ); }, onItemClick: function( evt, func ) { this.onCloseLinkClick(); func(); Event.stop( evt ); }, setItems: function( items ) { // rather than try to match up new items with existing items, it's easier to delete the existing items // (except for the close item) and then add the new items // remove existing menu items, except close menu var menuItems = this.contextMenuDiv.getElementsBySelector("li").each( function (li ) { if ( !li.hasClassName("contextmenubar_top") ) { if (!this.menuItemTempate) { this.menuItemTempate = li; } li.stopObserving(); li.remove(); } }.bind( this ) ); // should only be one menuItemContainer var menuItemContainers = this.contextMenuDiv.getElementsBySelector("ul").each( function (ul) { if ( !ul.down("li") ) { ul.remove(); } }.bind( this ) ); this.appendItems(items, menuItems[0].parentNode); }, showMenu : function() { if (this.beforeShowFunc) { this.beforeShowFunc(this); } page.ContextMenu.registerContextMenu( this ); this.reorderMenuItems(); if ( this.useARIA ) { this.initARIA(); } var offset = this.displayContextMenuLink.cumulativeOffset(); var scrollOffset = this.displayContextMenuLink.cumulativeScrollOffset(); var viewportScrollOffset = document.viewport.getScrollOffsets(); if ( this.displayContextMenuLink.up( 'div.lb-content' ) ) { // Fix offset for context menu link inside a lightbox offset[0] = offset[0] + viewportScrollOffset[0]; offset[1] = offset[1] + viewportScrollOffset[1]; } else { // Fix the offset if the item is in a scrolled container offset[0] = offset[0] - scrollOffset[0] + viewportScrollOffset[0]; offset[1] = offset[1] - scrollOffset[1] + viewportScrollOffset[1]; } document.body.appendChild( this.contextMenuDiv ); this.contextMenuDiv.setStyle({display: "block"}); var width = this.contextMenuDiv.getWidth(); var bodyWidth = $(document.body).getWidth(); if ( page.util.isRTL() ) { offset[0] = offset[0] + this.displayContextMenuLink.getWidth() - width; } if ( offset[0] + width > bodyWidth ) { offset[0] = offset[0] - width + 30; } if ( this.keepMenuToRight ) { // In case the link is very wide (i.e. gradecenter accessible mode cell link for really wide cell) // make sure the menu renders to the right side of the link var linkWidth = this.displayContextMenuLink.getDimensions().width; if (linkWidth > width) { // Only worry if the link is actually wider than the menu offset[0] += (linkWidth-width); } } // Don't start the menu off the left side of the window if ( offset[0] < 0 ) { offset[0] = 0; } var height = this.contextMenuDiv.getHeight(); var bodyHeight = $(document.body).getHeight(); var ypos = offset[1] + this.displayContextMenuLink.getHeight() + 17; if ( ( height + ypos ) > bodyHeight ) { ypos -= height; ypos -= 34; } // Don't start the menu off the top of the screen if (ypos < 0 ) { ypos = 0; } if (height > bodyHeight) { // If the menu is too big to fit on the screen, set it to the height of the screen and allow scrollbars inside the menu this.contextMenuDiv.setStyle({ height: bodyHeight + "px", overflowY: "auto", overflowX: "hidden", left: offset[0] + "px", top: ypos + "px" }); } else { this.contextMenuDiv.setStyle({ left: offset[0] + "px", top: ypos + "px"}); } if ( !this.shim ) { this.shim = new page.popupShim( this.contextMenuDiv ); } this.shim.open(); }, initARIA: function() { if ( !this.initializedARIA ) { this.displayContextMenuLink.setAttribute( "aria-haspopup", "true" ); this.displayContextMenuLink.setAttribute( "role", "menubutton" ); this.contextMenuDiv.setAttribute( "role", "menu" ); this.contextMenuDiv.down( "ul" ).setAttribute( "role", "presentation" ); $A( this.contextMenuDiv.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval( decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "0"; link.setStyle( {cursor: 'pointer'} ); // make it look like a link. } }); this.initializedARIA = true; // Only initialize once. } }, reorderMenuItems : function() { if ( !this.menuOrder || this.menuOrder.length < 2 ) { return; } var orderMap = {}; var closeItem = null; var extraItems = []; // items not in order // Gather up all of the <li> tags in the menu and stick them in a map/object of id to the li object $A(this.contextMenuDiv.getElementsByTagName("li")).each( function( listItem ) { if (listItem.hasClassName("contextmenubar_top")) { closeItem = listItem; } else { if (this.menuOrder.indexOf(listItem.id) > -1) { orderMap[listItem.id] = listItem; // add item to map } else { extraItems.push(listItem); // listItem id not specified in menuOrder, so add listItem to extraItems } } }.bind(this) ); // Remove all the content from the context menu div $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list ) { Element.remove(list); }.bind(this) ); // Re-add the special "close" item as the first item. var ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); ulElement.insert({bottom:closeItem}); // Loop through the order, adding a <ul> at the start, and starting a new <ul> whenever a "*separator*" // is encountered, and adding the corresponding <li> for each of the ids in the order using the map/object this.menuOrder.each( function( id ) { if (id == "*separator*") { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); } else { ulElement.insert({bottom:orderMap[id]}); } }.bind(this) ); // Add any extraItems to thier own ul if (extraItems.length > 0) { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); extraItems.each( function( lineItem ) { ulElement.insert({bottom:lineItem}); }.bind(this) ); } // Remove any empty ULs and ensure that the added <ul>s have id of form "cmul${num}_${uniqueId}" $A(this.contextMenuDiv.getElementsByTagName("ul")).findAll( function( list ) { if ( list.childElements().length === 0 ) { list.remove(); return false; } else { return true; } }).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); this.menuOrder = null; // only re-order once }, generateDynamicMenu : function(event) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { var context_parameters = this.contextParameters; var menu_generator_url = this.menuGeneratorURL; var nav = this.nav; var overwriteNavItems = this.overwriteNavItems; if ( context_parameters ) { context_parameters = context_parameters.toQueryParams(); } else { context_parameters = {}; } var params = Object.extend({nav_item: nav }, context_parameters ); params = Object.extend( params, { overwriteNavItems : overwriteNavItems } ); new Ajax.Request(menu_generator_url, { method: 'post', parameters: params, onSuccess: this.afterMenuGeneration.bind( this ) }); } else { this.afterMenuGeneration(this); } $(event).preventDefault(); }, onDisplayLinkClick: function( event ) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { this.generateDynamicMenu(event); this.dynamicMenu = false; } else { this.showMenu(); //focus on the first menu item (function() { if (this.contextMenuDiv.style.display != 'none') { this.contextMenuDiv.down("a").focus(); } }.bind(this).defer()); $(event).preventDefault(); } }, onCloseLinkClick: function( event ) { this.close(); // grade center hides displayContextMenuLink onMouseOut, so we need to check if it is visible // before setting focus or IE will complain. Need to do funky visibility check because IE8 // sets display to empty string when removing parent container class (bug?) var disp = this.displayContextMenuLink.style.display; if ( disp != 'none' && disp != '' ) { this.displayContextMenuLink.focus(); } if (event) { Event.stop( event ); } }, close: function() { this.contextMenuDiv.style.display = "none"; // Delay the removal of the element from the page so firefox will continue to process // the click on the menu item chosen (otherwise it stops processing as soon as we remove the // element resulting in the menu not actually working) (function() { Element.remove( this.contextMenuDiv ); }.bind(this).delay(0.1)); if ( this.shim ) { this.shim.close(); } }, closeNow: function() { if (this.contextMenuDiv.style.display != "none") { this.contextMenuDiv.style.display = "none"; Element.remove( this.contextMenuDiv ); if ( this.shim ) { this.shim.close(); } } } }; /** * Function called to change the 'arrow' of a breadcrumb to face downward when they are clicked for the * contextual menu. * @param uniqId - unique number which identifies the crumb which was clicked * @param size - the size of the breadcrumb * @return */ page.ContextMenu.changeArrowInBreadcrumb = function (uniqId, event) { page.ContextMenu.alignArrowsInBreadcrumb(event); $('arrowContext_'+uniqId).addClassName('contextArrowDown').removeClassName('contextArrow'); //Stop the click event to propagate anymore -else all arrows will be aligned again Event.stop( event ); return false; }; //To align all breadcrumb arrows in one direction page.ContextMenu.alignArrowsInBreadcrumb = function (event) { if ($('breadcrumbs') !== null){ var bList = $($('breadcrumbs').getElementsByTagName('ol')[0]); var bs = bList.immediateDescendants(); if (bs.length !== null && bs.length >1){ for (var i = 2; i <= bs.length; i++) { var arrowSpan = $('arrowContext_'+i); if (arrowSpan !== null ){ $('arrowContext_'+i).addClassName('contextArrow').removeClassName('contextArrowDown'); } } } } return false; }; // "static" methods page.ContextMenu.LI = function(event, divId, forceMenuRefresh) { page.LazyInit(event,['focus','mouseover'],'new page.ContextMenu(page.util.upToClass(target,\'contextMenuContainer\'), \'' + divId + '\',' + forceMenuRefresh + ');'); }; page.ContextMenu.contextMenus = []; // _Open_ context menus page.ContextMenu.registerContextMenu = function( menu ) { page.ContextMenu.contextMenus.push( menu ); }; page.ContextMenu.hiddenDivs = $H(); // All the menu divs on the page - only needed for cases such as view_spreadsheet2.js where we try to modify the menus outside this framework page.ContextMenu.hideMenuDiv = function( uniqueId) { var linkId = 'cmlink_' + uniqueId; var link = document.getElementById(linkId); if (link && !link.savedDiv ) { var elementId = 'cmdiv_' + uniqueId; var element = link.nextSibling; // Should be the text between the link and div but check anyways if ( !element || element.id != elementId) { element = element.nextSibling; if ( !element || element.id != elementId) { element = document.getElementById(elementId); } } if (element) { link.savedDiv = element; page.ContextMenu.hiddenDivs.set(uniqueId,element); Element.remove( element ); } } }; page.ContextMenu.addDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { document.body.appendChild(ele); }); }; page.ContextMenu.removeDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { Element.remove(ele); }); }; page.ContextMenu.closeAllContextMenus = function( event ) { var deferClose = false; if ( event ) { var e = Event.findElement( event, 'a' ); if ( e && e.href.indexOf("#contextMenu") >= 0 ) { Event.stop( event ); return; } deferClose = true; } page.ContextMenu.contextMenus.each( function( menu ) { if ( menu != this ) { if (deferClose) { menu.close(); } else { menu.closeNow(); } } }); page.ContextMenu.contextMenus = []; }; /** * Enables flyout menus to be opened using a keyboard or mouse. Enables * them to be viewed properly in IE as well. */ page.FlyoutMenu = Class.create(); page.FlyoutMenu.prototype = { initialize: function( subMenuListItem ) { this.subMenuListItem = $(subMenuListItem); this.menuLink = $(subMenuListItem.getElementsByTagName('a')[0]); //special case to render iframe shim under new course content build menu if (this.subMenuListItem.hasClassName('bcContent')) { var buildContentDiv = this.subMenuListItem.down("div.flyout"); if ( !buildContentDiv ) { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } else { this.subMenu = buildContentDiv; } } else { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } this.menuLink.flyoutMenu = this; // calculate the next/previous tab stops this.previousSibling = this.subMenuListItem.previous(); while ( this.previousSibling && (!this.previousSibling.down('a') || !this.previousSibling.visible()) ) { this.previousSibling = this.previousSibling.previous(); } this.nextSibling = this.subMenuListItem.next(); while ( this.nextSibling && (!this.nextSibling.down('a') || !this.nextSibling.visible()) ) { this.nextSibling = this.nextSibling.next(); } var rumble = $(this.subMenuListItem.parentNode.parentNode); this.inListActionBar = rumble && ( rumble.hasClassName("rumble_top") || rumble.hasClassName("rumble") ); Event.observe( this.menuLink, 'mouseover', this.onOpen.bindAsEventListener( this ) ); Event.observe( subMenuListItem, 'mouseout', this.onClose.bindAsEventListener( this ) ); Event.observe( this.menuLink, 'click', this.onLinkOpen.bindAsEventListener( this ) ); Event.observe( this.subMenuListItem, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); $A( this.subMenu.getElementsByTagName('li') ).each ( function( li ) { $A(li.getElementsByTagName('a')).each( function( link ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( link, 'click', this.onLinkClick.bindAsEventListener( this, link ) ); }.bind( this ) ); }.bind( this ) ); // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; if ( this.useARIA ) { this.initARIA(); } this.enabled = true; }, initARIA: function() { var inListActionBar = this.inListActionBar; if ( inListActionBar ) { this.subMenuListItem.up('ul').setAttribute( "role", "menubar" ); } this.subMenuListItem.setAttribute( "role", "menuitem" ); this.subMenu.setAttribute( "role", "menu" ); if ( !this.menuLink.hasClassName("notMenuLabel") ) { this.subMenu.setAttribute( "aria-labelledby", this.menuLink.id ); } $A( this.subMenu.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); // List action bars have onclick handlers that prevent submission of the page // if no items are selected, so we can't register new onclicks here because // otherwise we can't stop them from executing. if ( !inListActionBar ) { if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval(decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "-1"; link.style.cursor = 'pointer'; // make it look like a link. } } }); }, setEnabled: function( enabled ) { this.enabled = enabled; if ( !enabled ) { this.subMenu.setStyle({ display: '' }); } }, onKeyPress: function( event ) { if (!this.enabled) { return; } var key = event.keyCode || event.which; var elem = Event.element ( event ); var children, index, link; if ( key == Event.KEY_UP ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } else if ( index === 0 ) { children[children.length - 1].focus(); // wrap to bottom } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index == -1 ) { this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); } else if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } else if ( index == ( children.length - 1 ) ) { children[0].focus(); // wrap to top } Event.stop( event ); } else if ( key == Event.KEY_LEFT ) { if ( !this.previousSibling || ( this.previousSibling.hasClassName("mainButton") || this.previousSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, true ); } else if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( !link || !this.previousSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_RIGHT ) { if ( !this.nextSibling || ( this.nextSibling.hasClassName("mainButton") || this.nextSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, false ); } else if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( !link || !this.nextSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_ESC ) { this.close(); this.menuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_RETURN && this.useARIA && !this.inListActionBar ) { page.util.fireClick( elem ); Event.stop( event ); } else if ( key == Event.KEY_TAB && this.useARIA ) { this.executeTab( event, false, event.shiftKey ); } }, executeTab: function( event, forceMenuLinkTab, shift ) { var elem = Event.element ( event ); var link; if ( ( elem != this.menuLink ) || forceMenuLinkTab ) { if ( shift ) { // Go to previous menu if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } else { // Go to next menu if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } this.close(); Event.stop( event ); } }, onOpen: function( event ) { if (!this.enabled) { return; } this.open(); }, onClose: function( event ) { var to = $(event.relatedTarget || event.toElement); if ( !to || to.up('li.sub') != this.subMenuListItem ) { this.close(); } }, onLinkOpen: function( event ) { if (!this.enabled) { return; } this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); Event.stop( event ); }, resizeAfterShowHide: function() { // TODO - ideally this would just resize the outer div, but closing and opening 'works' this.close(); this.open(); }, open: function() { var alreadyShown = this.subMenu.getStyle('display') === 'block'; // If the menu is already showing (i.e. as_ce4 theme, we don't need to position it) if ( !alreadyShown ) { // Set position of action bar elements to static to enable z-index stack order page.util.setActionBarPosition( 'static' ); var menuTop = this.subMenuListItem.getHeight(); if ( this.subMenu.hasClassName( 'narrow' ) ) { menuTop = 0; } this.subMenuListItem.setStyle( {position: 'relative'} ); this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: menuTop+'px', left: '0px', width: '', height: '', overflowY: '' }); var offset = Position.cumulativeOffset( this.subMenuListItem ); var menuDims = this.subMenu.getDimensionsEx(); var menuHeight = menuDims.height; var popupWidth = this.subMenu.getWidth(); var subListItemDims = this.subMenuListItem.getDimensions(); var menuWidth = subListItemDims.width; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); var offsetTop = offset[1] - scrollOffsets.top; this.subMenu.flyoutMenu = this; if ( (offsetTop + menuHeight + subListItemDims.height) > viewportDimensions.height) { if ( (offsetTop - menuHeight) > 0 ) { // if menu goes below viewport but still fits on-page, show it above button this.subMenu.setStyle({ top: '-'+menuHeight+'px' }); } else { // we need to create scrollbars var newWidth = this.subMenu.getWidth() + 15; popupWidth = newWidth + 5; var newMenuHeight = viewportDimensions.height - (offsetTop + subListItemDims.height) - 20; var newMenuTop = menuTop; if (newMenuHeight < offsetTop) { // More space above than below newMenuHeight = offsetTop; newMenuTop = -offsetTop; } this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: newMenuTop+'px', left: '0px', width: newWidth + 'px', height: newMenuHeight + 'px', overflowY: 'auto' }); } } var offsetLeft = offset[0] - scrollOffsets.left; if ( (offsetLeft + popupWidth) > viewportDimensions.width ) { var subMenuWidth = this.subMenuListItem.getWidth(); var newLeft = popupWidth - (viewportDimensions.width-offsetLeft); if ((newLeft > 0) && (newLeft < offsetLeft)) { newLeft = -newLeft; } else { newLeft = -offsetLeft; } this.subMenu.setStyle({ left: newLeft+'px' }); } if ( page.util.isRTL() ) { var newRight = 0; if ( (offsetLeft + menuWidth) - popupWidth < 0 ) { newRight = (offsetLeft + menuWidth) - popupWidth; } this.subMenu.setStyle({ left: '', right: newRight+'px'}); } if (!this.shim) { this.shim = new page.popupShim( this.subMenu); } this.shim.open(); } }, close: function() { // Reset position of action bar elements to relative page.util.setActionBarPosition( 'relative' ); this.subMenuListItem.setStyle({position: ''}); this.subMenu.setStyle({ display: '', top: '', left: '', width: '', height: '', overflowY: '' }); if ( this.shim ) { this.shim.close(); } }, onLinkClick: function( event, link ) { if (!this.enabled) { return; } setTimeout( this.blurLink.bind( this, link), 100); }, blurLink: function( link ) { link.blur(); if (page.util.hasClassName( link, "donotclose" )) { link.focus(); } else { this.close(); } }, onAnchorFocus: function ( event ) { if (!this.enabled) { return; } var link = Event.element( event ); link.setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { var link = Event.element( event ); link.setStyle({ backgroundColor: '' }); } }; /** * Class for providing functionality to menu palettes */ page.PaletteController = Class.create(); page.PaletteController.prototype = { /** * Constructor * * @param paletteIdStr Unique string identifier for a palette * @param expandCollapseIdStr Id value of anchor tag to be assigned * the palette expand/collapse functionality * @param closeOtherPalettesWhenOpen Whether to close all other palettes when this one is open */ initialize: function( paletteIdStr, expandCollapseIdStr, closeOtherPalettesWhenOpen, collapsed ) { // palette id string this.paletteItemStr = paletteIdStr; // palette element this.paletteItem = $(this.paletteItemStr); // default id string to palette contents container element this.defaultContentsContainerId = page.PaletteController.getDefaultContentsContainerId(this.paletteItemStr); // the currently active palette contents container element this.activeContentsContainer = $(this.defaultContentsContainerId); // expand/collapse palette toggle element this.paletteToggle = $(expandCollapseIdStr); if (this.paletteToggle) { Event.observe(this.paletteToggle, 'click', this.toggleExpandCollapsePalette.bindAsEventListener(this)); } this.closeOtherPalettesWhenOpen = closeOtherPalettesWhenOpen; page.PaletteController.registerPaletteBox(this); if (collapsed) { this.collapsePalette(true); } }, /** * Set the currently active palette contents container element * * @param container palette contents container element */ setActiveContentsContainer: function ( container ) { this.activeContentsContainer = container; }, /** * Get the currently active palette contents container element * * @return palette contents container element */ getActiveContentsContainer: function () { return this.activeContentsContainer; }, /** * Expands the palette if it's not already expanded. * * @return palette contents container element */ expandPalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display == "none" ) { itemList.style.display = "block"; itemPalClass.length = itemPalClass.length - 1; this.paletteItem.className = itemPalClass.join(" "); lastDiv.className = "bottomRound"; firstDiv.className = "topRound"; h2.className = ""; var itemTitle = expandCollapseLink.innerHTML.stripTags().trim(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_collapse.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.collapse.section.param', itemTitle); } if ( doNotPersist ) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Collapses the palette if it's not already collapsed. * * @return palette contents container element */ collapsePalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display != "none" ) { itemList.style.display = "none"; itemPalClass[itemPalClass.length] = 'navPaletteCol'; this.paletteItem.className = itemPalClass.join(" "); if (itemPalClass.indexOf('controlpanel') != -1) { lastDiv.className = "bottomRound controlpanelCol"; // colors the bottomRound to match the h2 background } if (itemPalClass.indexOf('listCm')!=-1) { lastDiv.className = "bottomRound listCmCol"; // colors the bottomRound to match the h2 background firstDiv.className = "topRound listCmCol"; // colors the topRound to match the h2 background h2.className = "listCmCol"; // colors h2 background (removes background image) } if (itemPalClass.indexOf('tools') != -1) { lastDiv.className = "bottomRound toolsCol"; firstDiv.className = "topRound listCmCol"; h2.className = "toolsCol"; } var itemTitle = expandCollapseLink.innerHTML.stripTags(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags().trim(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_expand.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.expand.section.param', itemTitle); } if (doNotPersist) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Takes in a key value pair to save to the session as sticky data. * * @param key The key that will have the current course id appended to it to be saved to the session. * @param value The value to the key. */ saveSessionStickyInfo: function( key, value ) { /* Get the course id off of the global variable if exists, so that data is saved per * user session per course. If course doesn't exist, use empty string. */ var current_course_id = window.course_id ? window.course_id : ""; UserDataDWRFacade.setStringTempScope( key + current_course_id, value ); }, /** * Whether the first tag has js onclick event binding on it for palette collapse/expand * * @param h2 */ useFirstTagForExpandCollapse: function ( h2 ) { return h2.getElementsByTagName('a')[0].id.indexOf( "noneExpandCollapseTag" ) > -1 ? false : true; }, /** * Toggles a palette from expand to collapse and vice versa. * * @param event Optional event object if this method was bound to event. */ toggleExpandCollapsePalette: function ( event, doNotPersist ) { // To prevent default event behavior if ( event ) { Event.stop( event ); } if ( this.activeContentsContainer.style.display == "none" ) { // palette is currently closed, so we will be expanding it if ( this.closeOtherPalettesWhenOpen ) { // if closeOtherPalettesWhenOpen is set to true for this palette, close all other palettes page.PaletteController.closeAllOtherPalettes(this.paletteItemStr, doNotPersist); } this.expandPalette( doNotPersist ); } else { // palette is currently expanded, so we will be collapsing it this.collapsePalette( doNotPersist ); } } }; // "static" methods page.PaletteController.paletteBoxes = []; page.PaletteController.registerPaletteBox = function( paletteBox ) { page.PaletteController.paletteBoxes.push( paletteBox ); }; /** * Get the palette controller js object by palette id * * @param paletteId */ page.PaletteController.getPaletteControllerObjById = function( paletteId ) { return page.PaletteController.paletteBoxes.find( function( pb ) { return ( pb.paletteItemStr == paletteId ); } ); }; /** * Closes all palettes except the specified one * * @param paletteToKeepOpen */ page.PaletteController.closeAllOtherPalettes = function( paletteToKeepOpen, doNotPersist ) { for(var i = 0; i < page.PaletteController.paletteBoxes.length; i++) { var paletteItem = page.PaletteController.paletteBoxes[i]; if (paletteToKeepOpen !== paletteItem.paletteItemStr) { paletteItem.collapsePalette( doNotPersist ); } } }; /** * Toggles (expand/collapse) the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.toggleExpandCollapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.toggleExpandCollapsePalette( null, doNotPersist); }; /** * Collapses the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.collapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.collapsePalette( doNotPersist); }; /** * Expand the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.expandPalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.expandPalette( doNotPersist); }; /** * Set the active palette contents container (element containing the body * contents of a palette). The active contents container is used to toggle * visibility when expanding and collapsing menu palettes. * * @param paletteId * @param paletteContentsContainer Optional container to set. * If not given, the palette's active * container will not be changed. * @return The new active palette contents container element. * If no paletteContentsContainer element was passed, * The current active palette contents container element * will be returned. */ page.PaletteController.setActivePaletteContentsContainer = function( paletteId, paletteContentsContainer ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); if ( paletteContentsContainer ) { paletteObj.setActiveContentsContainer( paletteContentsContainer ); } return paletteObj.getActiveContentsContainer(); }; /* * Get the default palette contents container id string * * @param paletteId */ page.PaletteController.getDefaultContentsContainerId = function( paletteId ) { return paletteId + "_contents"; }; /** * Class for providing expand/collapse functionality (with dynamic loading) */ page.ItemExpander = Class.create(); page.ItemExpander.prototype = { /** * Constructor * - expandLink - the link that when clicked will expand/collapse the item * - expandArea - the actual area that will get expanded/collapsed (if the item is dynamically loaded, this area will be populated dynamically) * - expandText - the text to show as a tooltip on the link for expanding * - collapseText - the text to show as a tooltip on the link for collapsing * - expandTitleText - the customized text for link title afer expanding the item; if null/undefined, use expandText * - collapseTitleText - the customized text for link title after collapsing the item;if null/undefined, use collapseText * - dynamic - whether the contents are dynamically loaded * - dynamicUrl - the URL to get the contents of the item from * - contextParameters - additional URL parameters to add when calling the dynamicUrl * - sticky - load/save expand state from UserData; true if null/undefined * - expanded - initially expanded; false if null/undefined */ initialize: function( expandLink, expandArea, expandText, collapseText, dynamic, dynamicUrl, contextParameters, expandTitleText, collapseTitleText, sticky, expanded ) { this.expandLink = $(expandLink); this.expandLinkImage = this.expandLink.down('img'); this.expandArea = $s(expandArea); // Register the expander so it can be found page.ItemExpander.itemExpanderMap[this.expandLink.id] = this; this.expandText = expandText.unescapeHTML(); this.collapseText = collapseText.unescapeHTML(); if ( expandTitleText !== null && expandTitleText !== undefined ) { this.expandTitleText = expandTitleText.unescapeHTML(); } else { this.expandTitleText = this.expandText; } if ( collapseTitleText !== null && collapseTitleText !== undefined ) { this.collapseTitleText = collapseTitleText.unescapeHTML(); } else { this.collapseTitleText = this.collapseText; } this.dynamic = dynamic; this.dynamicUrl = dynamicUrl; if ( contextParameters !== null && contextParameters !== undefined ) { this.contextParameters = contextParameters.toQueryParams(); } else { this.contextParameters = {}; } this.sticky = ( sticky !== null && sticky !== undefined ) ? sticky : true; this.expanded = ( expanded !== null && expanded !== undefined ) ? expanded : false; this.hasContents = !this.dynamic; if ( this.sticky ) { // get the course id off of the global variable if exists, because data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.getStringTempScope( this.expandLink.id + current_course_id, this.getAvailableResponse.bind( this ) ); } this.expandCollapse( !this.expanded ); Event.observe( this.expandLink, "click", this.onToggleClick.bindAsEventListener( this ) ); }, getAvailableResponse : function ( response ) { var originalExpanded = this.expanded ; var cachedExpanded = false; if ( response.length > 0 ) { if ( response == 'true' ) { cachedExpanded = true; } else { cachedExpanded = false; } } if ( originalExpanded != cachedExpanded ) { //because we want the menu to be in the cached state, //we pass in the opposite so that expandCollapse changes the menu state. this.expandCollapse(originalExpanded); } }, onToggleClick: function( event ) { if ( event ) { Event.stop( event ); } this.expandCollapse(this.expanded); if ( this.sticky ) { // get the course id off of the global variable if exists, so that data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.setStringTempScope( this.expandLink.id + current_course_id, this.expanded ); } }, expandCollapse: function(shouldCollapse) { var combo; if ( shouldCollapse ) //Collapse the item { $(this.expandArea).hide(); this.expandLink.title = this.expandTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.expandText; this.expandLinkImage.src = "/images/ci/icons/generic_expand.gif"; } if ( this.expandLink.hasClassName("comboLink_active") ) { combo = this.expandLink.up("li").down(".submenuLink_active"); this.expandLink.removeClassName("comboLink_active"); this.expandLink.addClassName("comboLink"); if ( combo ) { combo.removeClassName("submenuLink_active"); combo.addClassName("submenuLink"); } } else { this.expandLink.removeClassName("open"); } this.expanded = false; } else //Expand the item { if ( this.hasContents ) { $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.collapseText; this.expandLinkImage.src = "/images/ci/icons/generic_collapse.gif"; } if ( this.expandLink.hasClassName("comboLink") ) { combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } } else if ( this.dynamic ) { this.loadData(); } this.expanded = true; } }, loadData: function() { new Ajax.Request( this.dynamicUrl, { method: "post", parameters: this.contextParameters, requestHeaders: { cookie: document.cookie }, onSuccess: this.afterLoadData.bind( this ) }); }, afterLoadData: function( req ) { try { var result = req.responseText.evalJSON( true ); if ( result.success != "true" ) { new page.InlineConfirmation("error", result.errorMessage, false ); } else { this.hasContents = true; this.expandArea.innerHTML = result.itemContents; $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; this.expandLinkImage.alt = this.collapseText; if ( this.expandLink.hasClassName("comboLink") ) { var combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } this.expanded = true; } } catch ( e ) { //Invalid response } } }; page.ItemExpander.itemExpanderMap = {}; /** * Class for controlling the "breadcrumb expansion" (i.e. the "..." hiding the inner * breadcrumbs) */ page.BreadcrumbExpander = Class.create(); page.BreadcrumbExpander.prototype = { initialize: function( breadcrumbBar ) { var breadcrumbListElement = $(breadcrumbBar.getElementsByTagName('ol')[0]); var breadcrumbs = breadcrumbListElement.immediateDescendants(); if ( breadcrumbs.length > 4 ) { this.ellipsis = document.createElement("li"); var ellipsisLink = document.createElement("a"); ellipsisLink.setAttribute("href", "#"); ellipsisLink.setAttribute("title", page.bundle.getString('breadcrumbs.expand') ); ellipsisLink.innerHTML = "..."; this.ellipsis.appendChild( ellipsisLink ); this.ellipsis = Element.extend( this.ellipsis ); Event.observe( ellipsisLink, "click", this.onEllipsisClick.bindAsEventListener( this ) ); this.hiddenItems = $A(breadcrumbs.slice(2,breadcrumbs.length - 2)); breadcrumbListElement.insertBefore( this.ellipsis, this.hiddenItems[0] ); this.hiddenItems.invoke( "hide" ); } // Make sure the breadcrumbs don't run into the mode switcher var breadcrumbContainer = $(breadcrumbListElement.parentNode); var modeSwitcher = breadcrumbBar.down('.modeSwitchWrap'); if ( modeSwitcher ) { var containerWidth = breadcrumbContainer.getWidth(); var containerOffset = breadcrumbContainer.cumulativeOffset(); var modeSwitcherOffset = modeSwitcher.cumulativeOffset(); var modeSwitcherWidth = modeSwitcher.getWidth(); if ( page.util.isRTL() ) { if ( modeSwitcherOffset[0] + modeSwitcherWidth > containerOffset[0] ) { breadcrumbContainer.setStyle({ paddingLeft: ( modeSwitcherOffset[0] + modeSwitcherWidth ) + 'px'} ); } } // else //{ // breadcrumbContainer.setStyle({ paddingRight: ( containerWidth - ( modeSwitcherOffset[0] - containerOffset[0] ) ) + 'px'} ); //} } }, onEllipsisClick: function( event ) { this.hiddenItems.invoke( "show" ); this.ellipsis.hide(); Event.stop( event ); } }; /** * Dynamically creates an inline confirmation. */ page.InlineConfirmation = Class.create(); page.InlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, oneReceiptPerPage ) { var receiptId = $s('receipt_id'); // do not insert a duplicate receipt, if one already exists if(receiptId && oneReceiptPerPage) { return; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if ( type == "warning" ) { cssClass = "warningReceipt"; } var contentPane = $('contentPanel') || $('portalPane'); var receiptHtml = '<div id="receipt_id" class="receipt '+ cssClass +'">'+ '<a name="inlineReceipt" tabindex="-1" style="color:#FFFFFF">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } receiptHtml += '<a class="close" href="#close" title="'+ page.bundle.getString("inlineconfirmation.close") +'" onClick="Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="'+ page.bundle.getString("inlineconfirmation.close") +'" src="/images/ci/ng/close_mini.gif"></a></div>'; contentPane.insert({top:receiptHtml}); // use aria live region to announce this confirmation message rather than setting focus to it. (Too many things are fighting over setting focus) // Note: if this confirmation is invoked from a menu handler, it may not announce if focus is lost when the menu closes. See how courseTheme.js sets focus before invoking. var insertedA = contentPane.down('a[name="inlineReceipt"]'); insertedA.setAttribute("aria-live","assertive"); insertedA.parentNode.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced } }; page.NestedInlineConfirmationIdCounter = 0; page.NestedInlineConfirmation = Class.create(); page.NestedInlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, previousElement,showCloseLink, extracss, insertBefore, oneReceiptPerPage, fadeAway, focusDiv, fadingTime, insertTop, receiptDivId, focusOnRender ) { if ( Object.isUndefined( focusOnRender ) ) { focusOnRender = true; } var receiptId = $s('receipt_nested_id'); // do not insert a duplicate receipt, if one already exists var newDivId = 'receipt_nested_id'; if(receiptId) { if (oneReceiptPerPage) { return; } newDivId = newDivId + (page.NestedInlineConfirmationIdCounter++); } if (receiptDivId) { // Remove the old message with the same receiptDivId if there is one before adding a new one if ( $( receiptDivId ) != null ) $( receiptDivId ).remove(); newDivId = receiptDivId; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if (type == "warning") { cssClass = "warningReceipt"; } if (!extracss) { extracss = ""; } var arrowSpan = ''; if (extracss.indexOf( "point", 0 ) != -1) { arrowSpan = '<span class="arrow"></span>'; } var contentPane = $(previousElement); if (!contentPane) { // TODO - if we can't find the element we wanted to insert before, is it OK to just drop the notification? return; } var receiptHtml = '<div id="'+newDivId+'" style="display:none" class="receipt '+ cssClass +' '+extracss +'">'+arrowSpan+ '<a name="inlineReceipt" class="areceipt" tabindex="-1">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } if (showCloseLink) { // either this is a JS Snippet to execute on close or a simple true in which case we do nothing extra var onCloseFunction = ""; if ( typeof showCloseLink === "string" || showCloseLink instanceof String ) { if ( !page.closeReceiptLinkCounter ) { page.closeReceiptLinkCounter = 0; } else { ++page.closeReceiptLinkCounter; } onCloseFunction = "onReceiptClosed" + page.closeReceiptLinkCounter; receiptHtml += "<script type='text/javascript'>window." + onCloseFunction + " = function( ) { " + showCloseLink + " ; }; </script>"; onCloseFunction += "( );" } receiptHtml += '<a class="close" href="#close" style="z-index:1000" title="' + page.bundle.getString("inlineconfirmation.close") + '" onClick="' + onCloseFunction + 'Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="' + page.bundle.getString("inlineconfirmation.close") + '" src="/images/ci/ng/close_mini.gif"></a></div>'; } if ( insertBefore ) { contentPane.insert({before:receiptHtml}); } else if (insertTop) { contentPane.insert({top:receiptHtml}); } else { contentPane.insert({after:receiptHtml}); } this.insertedDiv = insertBefore?contentPane.previousSibling:(insertTop?contentPane.firstChild:contentPane.nextSibling); $(this.insertedDiv).show(); var insertedA = $(this.insertedDiv).down('a[name="inlineReceipt"]'); var fadingDuration = fadingTime ? fadingTime : 5000; if ( focusOnRender ) { try { ( function() { try { if ( focusDiv ) { page.util.focusAndScroll( $( focusDiv ) ); } else { page.util.focusAndScroll( insertedA ); } } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } }.defer() ); } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } } else { // not setting focus to this confirmation, so we make it an aria live region so it will be announced to the screen reader if ( focusDiv ) { page.util.ensureVisible( $( focusDiv ) ); } else { page.util.ensureVisible( insertedA ); } insertedA.setAttribute("aria-live","assertive"); this.insertedDiv.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced (needed for jaws 12) } if ( fadeAway ) { setTimeout( function() { Element.fade( contentPane.nextSibling, { duration : 0.3 } ); }, fadingDuration ); } }, close: function() { if ( this.insertedDiv ) { this.insertedDiv.remove(); } } }; page.NestedInlineFadeAwayConfirmation = Class.create(); page.NestedInlineFadeAwayConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; page.NestedInlineFadeAwaySingleConfirmation = Class.create(); page.NestedInlineFadeAwaySingleConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time, newDivId ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore, false /*only one instance*/, null, null, null, null, newDivId ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; /** * Make sure the container as position: relative so that the offset can work */ page.MiniReceipt = Class.create(); page.MiniReceipt.prototype = { initialize: function( message, containerElement, top, left, time ) { var visibleDuration = time ? time : 2000; var top = top?top:-22; // usually show receipt above var left = left?left:0; var alreadyExistingReceipt = $( containerElement ).down( "div.miniReceipt" ); if ( alreadyExistingReceipt ) { alreadyExistingReceipt.hide( ); } var receiptHtml = '<div class="miniReceipt adding" style="display: none; top:' + top + 'px; left:'+ left + 'px" role="alert" aria-live="assertive">' + message + '</div>'; var receiptElement = $( containerElement ).insert( { top:receiptHtml } ).firstDescendant( ); receiptElement.show( ); setTimeout( function() { Element.fade( receiptElement, {duration:0.3, afterFinish: function() { receiptElement.remove() } } ); }, visibleDuration ); } }; page.extendedHelp = function( helpattributes, windowName ) { window.helpwin = window.open('/webapps/blackboard/execute/viewExtendedHelp?' + helpattributes,windowName,'menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); window.helpwin.focus(); }; page.decoratePageBanner = function() { var bannerDiv = $('pageBanner'); var containerDiv = $('contentPanel') || $('contentPane'); if ( bannerDiv && containerDiv ) { // append hasTopBanner class to container div to hide topRound containerDiv.addClassName('hasTopBanner'); // hide empty title bar if ( !$('pageTitleText') && $('pageTitleDiv') ) { $('pageTitleDiv').hide(); } } }; page.initializeSinglePopupPage = function( pageId ) { // Initialize the single popup page, make sure the window will be closed by clicking submit or cancel, and the parent // window will be refreshed after submit. var items = document.forms; for ( var i = 0; i < items.length; i++ ) { var formItem = items[ i ]; formItem.observe( 'submit', function() { (function() { window.close(); if( window.opener.refreshConfirm ) { window.opener.refreshConfirm(pageId); } }.defer()); } ); if ( formItem.top_Cancel ) { Event.observe( formItem.top_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } if ( formItem.bottom_Cancel ) { Event.observe( formItem.bottom_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } } }; page.openLightbox = function( link, title, url, width, height ) { var lightboxParam = { defaultDimensions : { w : width ? width : 1000, h : height ? height : 800 }, contents : '<iframe src="' + url + '" width="100%" height="100%"/>', title : title, closeOnBodyClick : false, showCloseLink : true, useDefaultDimensionsAsMinimumSize : true }; var lightboxInstance = new lightbox.Lightbox( lightboxParam ); lightboxInstance.open(); }; page.printAndClose = function() { (function() { window.print(); window.close(); }.defer()); }; /** * Utility for data collection step manipulation */ page.steps = {}; page.steps.HIDE = "hide"; page.steps.SHOW = "show"; /** * Hide or show an array of steps given the step ids and * renumber all visible steps on the page. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepIdArr - string array of step ids */ page.steps.hideShowAndRenumber = function ( action, stepIdArr ) { // hide or show each of the step ids given ($A(stepIdArr)).each( function( stepId ) { page.steps.hideShow( action, stepId ); }); // get all H3 elements that contain css class of "steptitle" var stepTitleTags = []; $A(document.getElementsByTagName('h3')).each( function( tag ) { if ( page.util.hasClassName( tag, 'steptitle' ) ) { stepTitleTags.push( $(tag) ); } }); // starting at number 1, renumber all of the visible steps var number = 1; stepTitleTags.each(function( stepTitleTag ) { if ( stepTitleTag.up('div').visible() ) { stepTitleTag.down('span').update(number); number++; } }); }; /** * Hide or show a single step given the step id. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepId - string identifier to a single step */ page.steps.hideShow = function ( action, stepId ) { if ( action == page.steps.SHOW ) { $(stepId).show(); } else if ( action == page.steps.HIDE ) { $(stepId).hide(); } }; page.showChangeTextSizeHelp = function( ) { page.extendedHelp('internalhandle=change_text_size&helpkey=change_text_size','change_text_size' ); return false; }; page.showAccessibilityOptions = function() { var win = window.open('/webapps/portal/execute/changePersonalStyle?cmd=showAccessibilityOptions', 'accessibilityOptions','menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); win.focus(); }; page.toggleContrast = function( ) { new Ajax.Request('/webapps/portal/execute/changePersonalStyle?cmd=toggleContrast', { onSuccess: function(transport, json) { var fsWin; if (window.top.nav) { fsWin = window.top; } else if (window.opener && window.opener.top.nav) { fsWin = window.opener.top; window.close(); } if (fsWin) { fsWin.nav.location.reload(); fsWin.content.location.reload(); } else { window.top.location.reload(); } } }); return false; }; /** * IFrame-based shim used with popups so they render on top of all other page elements (including applets) */ page.popupShim = Class.create(); page.popupShim.prototype = { initialize: function( popup ) { this.popup = popup; }, close: function( ) { this.toggleOverlappingEmbeds( false ); }, open: function( ) { this.toggleOverlappingEmbeds( true ); }, toggleOverlappingEmbeds: function( turnOff ) { ['embed','object','applet','select'].each( function( tag ) { var elems = document.getElementsByTagName( tag ); for ( var i = 0, l = elems.length; i < l; i++ ) { var e = $(elems[i]); if ( !turnOff || ( page.util.elementsOverlap( this.popup, e ) && !e.descendantOf( this.popup ) ) ) { elems[i].style.visibility = ( turnOff ? 'hidden' : '' ); } } }.bind( this ) ); } }; /** * Class for controlling the vtbe enable toggle. */ page.VTBEToggle = Class.create(); page.VTBEToggle.prototype = { initialize: function( vtbeDiv, vtbeOnOffToolKey ) { var toggleFunc = this.toggleVTBE.bindAsEventListener( this ); this.vtbeOnOffToolKey = ( vtbeOnOffToolKey ) ? vtbeOnOffToolKey : "textbox.wysiwyg"; var vtbeDivs = null; if ( vtbeDiv ) { // autowire the specified vtbe vtbeDivs = [ vtbeDiv ]; } else { // autowire all vtbe divs on the page vtbeDivs = document.getElementsByTagName('div'); } $A(vtbeDivs).each( function( div ) { // add toggle listener for each vtbe switch if ( page.util.hasClassName(div, 'vtbeSwitch') ) { div = $(div); if ( div.up('form') ) { var anchor = div.down('a'); page.VTBEToggle.form = div.up('form'); Event.observe( anchor, 'click', toggleFunc ); // save original form data so we can detect unsaved data when toggling VTBE if ( page.VTBEToggle.form && !page.VTBEToggle.origFormData ) { page.VTBEToggle.origFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); } } } }); }, toggleVTBE: function( event ) { // Stop the event to handle firefox behavior when posting into a page. Event.stop(event); // check & warn user of modified form data if ( page.VTBEToggle.form && page.VTBEToggle.origFormData ) { var origFormData = page.VTBEToggle.origFormData; if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var currentFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); for(var i in origFormData) { if ( origFormData.hasOwnProperty( i ) ) { var origVal = origFormData[i]; var currVal = currentFormData[i]; if ( currVal && typeof currVal != 'object' && ( ( typeof currVal != 'string' && origVal != currVal ) || ( typeof currVal == 'string' && origVal.trim() != currVal.trim().replace("&nbsp;","") ) ) ) { if (!confirm( page.bundle.getString("wysiwyg.visual.editor.confirm.unsaved.changes") )) { return; } break; } } } } // get current state of vtbe, toggle it, then reload page UserDataDWRFacade.getStringPermScope( this.vtbeOnOffToolKey, function( wysiwyg ) { UserDataDWRFacade.setStringPermScope( this.vtbeOnOffToolKey, (wysiwyg == 'Y') ? 'N' : 'Y', function() { // If there's a lightbox open, give it a chance to update itself instead of reloading the window if (!window.lightbox || !lightbox.deferUpdateLightboxContent()) { window.location.reload(); } }); }.bind( this )); } }; /** * Looks through the children of the specified element for links with the specified * class name, and if it finds any, autowires lightboxes to them. If lightbox.js/effects.js * hasn't already been loaded, load it. */ page.LightboxInitializer = Class.create( { initialize: function( className, parentElement ) { this.className = className; var links = parentElement.getElementsByTagName('a'); for ( var i = 0, l = links.length; i < l; i++ ) { if ( page.util.hasClassName( links[i], className ) ) { if ( window.lightbox && window.Effect) { this._autowire(); } else { this._load(); } break; } } }, _autowire: function() { lightbox.autowireLightboxes( this.className ); }, _load: function() { var h = $$('head')[0]; var scs = ( !window.lightbox ? ['/javascript/ngui/lightbox.js'] : []).concat( !window.Effect ? ['/javascript/scriptaculous/effects.js'] : [] ); scs.each( function( sc ) { var s = new Element('script', { type: 'text/javascript', src: sc } ); h.appendChild( s ); }); this._wait(); }, _wait: function() { var count = 0; new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( window.lightbox && window.Effect ) { pe.stop(); this._autowire(); } } else // give up if it takes longer than 5s to load lightbox.js/effects.js { pe.stop(); } }.bind(this), 0.05 ); } }); page.YouTubeControls = { toggleAXControls : function( playerid, openYtControlsId, event ) { if( $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display != 'block' ) { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'block'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'block'; $( openYtControlsId ).addClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } else { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'none'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'none'; $( openYtControlsId ).removeClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } Event.stop( event ); }, formatTime : function ( sec ) { var duration = parseInt( sec, 10 ); var totalMinutes = Math.floor( duration / 60 ); var hours = Math.floor( totalMinutes / 60 ); var seconds = duration % 60; var minutes = totalMinutes % 60; if ( hours > 0 ) { return hours + ':' + this.padZero( minutes ) + ':' + this.padZero( seconds ); } else { return this.padZero( minutes ) + ':' + this.padZero( seconds ); } }, padZero : function ( number ) { if (number < 10) { return "0" + number; } else { return number; } }, updateButtonLabels : function ( ytplayer, muteBtnId, playBtnId, status ) { if( ytplayer.isMuted() ) { $( muteBtnId ).update( page.bundle.getString( 'yt.unmute' ) ); } else { $( muteBtnId ).update( page.bundle.getString( 'yt.mute' ) ); } if( status == 1 ) { $( playBtnId ).update( page.bundle.getString( 'yt.pause' ) ); } else { $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); } } }; function onYouTubePlayerReady( playerid ) { var ytplayer = $( playerid ); if( !ytplayer ) { //ie fix: grab object tag instead of embed tag var objTagId = playerid.sub( 'ytEmbed', 'ytObject' ); ytplayer = $( objTagId ); } var playBtnId = playerid.sub( 'ytEmbed', 'playVideo' ); Event.observe( $( playBtnId ), 'click', function( event ) { if( ytplayer.getPlayerState() == 1 ) { ytplayer.pauseVideo(); } else { ytplayer.playVideo(); } Event.stop( event ); } ); var stopBtnId = playerid.sub( 'ytEmbed', 'stopVideo' ); Event.observe( $( stopBtnId ), 'click', function( event ) { ytplayer.pauseVideo(); ytplayer.seekTo( "0" ); $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); Event.stop( event ); } ); var volUpBtnId = playerid.sub( 'ytEmbed', 'volUp' ); Event.observe( $( volUpBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol > 89 ) { ytplayer.setVolume( 100 ); } else { ytplayer.setVolume( currVol + 10 ); } Event.stop( event ); } ); var volDownBtnId = playerid.sub( 'ytEmbed', 'volDown' ); Event.observe( $( volDownBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol < 11 ) { ytplayer.setVolume( 0 ); } else { ytplayer.setVolume( currVol - 10 ); } Event.stop( event ); } ); var muteBtnId = playerid.sub( 'ytEmbed', 'mute' ); Event.observe( $( muteBtnId ), 'click', function( event ) { if( ytplayer.isMuted() ) { ytplayer.unMute(); } else { ytplayer.mute(); } Event.stop( event ); } ); var timeDivId = playerid.sub( 'ytEmbed', 'currentTime' ); var statusDivId = playerid.sub( 'ytEmbed', 'currentStatus'); var dtTime = new Date(); new PeriodicalExecuter( function( pe ) { //lightbox closed, so stop this PeriodicalExecuter if( !$( timeDivId ) ) { pe.stop(); return; } //update the current time $( timeDivId ).update( page.YouTubeControls.formatTime( ytplayer.getCurrentTime() ) ); //update the current status var status = ytplayer.getPlayerState(); var statusStr = page.bundle.getString( 'yt.stopped' ); switch( status ) { case -1 : statusStr = page.bundle.getString( 'yt.stopped' ); break; case 0 : statusStr = page.bundle.getString( 'yt.ended' ); break; case 1 : statusStr = page.bundle.getString( 'yt.playing' ); break; case 2 : statusStr = page.bundle.getString( 'yt.paused' ); break; case 3 : statusStr = page.bundle.getString( 'yt.buffering' ); break; case 5 : statusStr = page.bundle.getString( 'yt.cued' ); break; } page.YouTubeControls.updateButtonLabels( ytplayer, muteBtnId, playBtnId, status ); $( statusDivId ).update( statusStr ); }.bind(this), 0.5 ); //wire the open/close controls wrapper var openYtControlsId = playerid.sub( 'ytEmbed', 'openYtControls' ); Event.observe( $( openYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); var closeYtControlsId = playerid.sub( 'ytEmbed', 'closeYtControls' ); Event.observe( $( closeYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); } page.util.flyoutMenuMainButtonKeyboardHandler = function( event ) { var key = event.keyCode || event.which; if (key == Event.KEY_LEFT || key == Event.KEY_RIGHT) { var elem = Event.element( event ); var target = elem.up( 'li' ); while ( true ) { if ( key == Event.KEY_LEFT ) { target = target.previous(); } else if ( key == Event.KEY_RIGHT ) { target = target.next(); } if ( !target || page.util.hasClassName( target, 'sub' ) || page.util.hasClassName( target, 'mainButton' ) || page.util.hasClassName( target, 'mainButtonType' ) ) { break; } } if ( target ) { var menuLinks = $A( target.getElementsByTagName( 'a' ) ); if ( menuLinks && menuLinks.length > 0 ) { menuLinks[ 0 ].focus(); Event.stop( event ); } } } }; page.util.initFlyoutMenuBehaviourForListActionMenuItems = function( container ) { //Initialize accessible flyout menu behavior if ( !container ) { container = document; } var uls = document.getElementsByTagName('ul'); if (uls) { var numUls = uls.length; for (var i = 0; i < numUls; i++) { var ul = uls[i]; if (page.util.hasClassName(ul, 'nav')) { var lis = ul.getElementsByTagName('li'); if (lis) { var numLis = lis.length; for (var j = 0; j < numLis; j++) { var li = lis[j]; if (page.util.hasClassName(li, 'sub')) { new page.FlyoutMenu($(li)); } else if (page.util.hasClassName(li, 'mainButton') || page.util.hasClassName(li, 'mainButtonType')) { var menuLinks = $A($(li).getElementsByTagName('a')); if (menuLinks && menuLinks.length > 0) { Event.observe(menuLinks[0], 'keydown', page.util.flyoutMenuMainButtonKeyboardHandler.bindAsEventListener(menuLinks[0])); } } } } } } } }; page.subheaderCleaner = { init : function( entityKind ) { var allHidden = true; var firstUl = null; var className = 'portletList-img courseListing ' + entityKind; $A( document.getElementsByClassName( className ) ).each( function( ul ) { if ( !ul.down() ) { ul.previous( 'h3' ).hide(); ul.hide(); if ( !firstUl ) { firstUl = ul; } } else { allHidden = false; } }); if ( allHidden && firstUl ) { firstUl.previous( 'div' ).show(); } } }; /** * Set up any JavaScript that will always be run on load (that doesn't depend on * any application logic / localization) here. * * Please leave this at the bottom of the file so it's easy to find. * */ FastInit.addOnLoad( function() { Event.observe( document.body, "click", page.ContextMenu.closeAllContextMenus.bindAsEventListener( window ) ); Event.observe( document.body, "click", page.ContextMenu.alignArrowsInBreadcrumb.bindAsEventListener( window ) ); Event.observe( document.body, 'keydown', function(event) { var key = event.keyCode || event.which; if ( key == 116 ) // reload current page on F5 key press { Event.stop( event ); // prevent browser from reloading complete frameset if ( Prototype.Browser.IE ) { event.keyCode = 0; } (function() { window.location.reload( true ); }.defer()); return false; } }); page.util.initFlyoutMenuBehaviourForListActionMenuItems(); if ( $('breadcrumbs') ) { new page.BreadcrumbExpander($('breadcrumbs')); // If we're in the content wrapper, hide the content wrapper breadcrumb frame // so that we don't get stacked breadcrumbs. if ( window.name === 'contentFrame' ) { var parent = window.parent; if ( parent ) { var frameset = parent.document.getElementById( 'contentFrameset' ); if ( frameset ) { frameset.rows = "*,100%"; } } } } var contentPane = $('contentPanel') || $('portalPane'); if ( contentPane ) { new page.LightboxInitializer( 'lb', contentPane ); } // add a label for inventory table checkboxes, if needed $A(document.getElementsByTagName("table")).each( function( table ) { if ( !page.util.hasClassName( table, 'inventory' ) ) { return; } var rows = table.rows; if ( rows.length < 2 ) { return; } for (var r = 0, rlen = rows.length - 1; r < rlen; r++) { var cells = rows[r+1].cells; // skip header row for (var c = 0, clen = cells.length; c < clen; c++) { var cell = $(cells[c]); var inp = cell.down('input'); if ( !inp || ( inp.type != 'checkbox' && inp.type != 'radio' ) ) { // We're only looking for checkbox/radio cells to label, so move on continue; } var lbl = cell.down('label'); if (lbl && !lbl.innerHTML.blank()) { break; // skip cells that already have a non-blank label } if ( !lbl ) { // add new label to checkbox lbl = new Element('label', {htmlFor: inp.id} ); lbl.addClassName('hideoff'); cell.insert({bottom:lbl}); } var headerCell = $(cell.parentNode).down('th'); if ( !headerCell ) { break; // skip rows without header cell } // create a temporary clone of the header cell and remove any hidden divs I.e. context menus var tempCell = $(headerCell.cloneNode(true)); var tempCellDivs = tempCell.getElementsByTagName("div"); for ( var i = 0; i < tempCellDivs.length; i++ ) { var d = tempCellDivs[i]; if ( d && !$(d).visible() ) { d.remove(); } } var lblBody = tempCell.innerHTML.replace( /<\/?[^>]*>/g, '' ); // strip html tags from header lblBody = page.bundle.getString('inventoryList.select.item', lblBody); lbl.update( lblBody ); // set label to header contents (minus tags) break; } } }); //set default font sizes to display text. hack to fix IE7 default font size issue. var sizes = {1:'xx-small', 2:'x-small', 3:'small', 4:'medium', 5:'large', 6:'x-large', 7:'xx-large'}; var fonts = document.getElementsByTagName('font'); for ( var i = 0; i < fonts.length; i++ ) { var font = fonts[i]; if ( font.size ) { // Since some font elements may be manually created by end users we have to handle random // values in here. if (!font.size.startsWith("+") && !font.size.startsWith("-")) { var fsize = parseInt(font.size, 10); if (fsize > 0 && fsize < 8) { font.style.fontSize = sizes[fsize]; } } } } try { if ( top && top.document.getElementById( 'bbFrameset' ) && window.name != 'nav' ) { top.document.getElementsByName('content')[0].title = page.bundle.getString( "frameset.contentframe.title" ) + " : " + document.title; } } catch ( err ) { // When Content System is loaded within a Vista popup window, cross-site security will prevent // accesses to top.document. Ignore this error and continue } page.scrollToEnsureVisibleElement(); page.isLoaded = true; }); /** * Class for adding an insertion marker within a list */ page.ListInsertionMarker = Class.create(); page.ListInsertionMarker.prototype = { initialize: function( listId, position, key, text ) { var list = $(listId); var listElements = list.childElements(); // create a marker list item var marker = new Element('li',{'id':listId+':'+key, 'class':'clearfix separator' }); marker.update('<h3 class="item" id=""><span class="reorder editmode"><span><img alt="" src="/images/ci/icons/generic_updown.gif"></span></span><span class="line"></span><span class="text">'+text+'</span></h3>'); //marker.setStyle({ position: 'relative', minHeight: '10px', padding: '0px', background: '#CCCCCC' }); position = ( position > listElements.length ) ? listElements.length : position; // add marker to list if (listElements.length == 0) { list.insert({top:marker}); // add marker to top of empty list } else if (listElements.length == position) { list.insert({bottom:marker}); // add marker after last element } else { listElements[position].insert({before:marker}); // add marker before element at position } var select = $('reorderControls'+listId).down('select'); // add a option for the marker to the keyboard repostioning select, if any if (select) { var option = new Element('option',{'value':key}).update( '-- '+text+' --' ); if (listElements.length == 0) { select.insert({top:option}); } else if (listElements.length == position) { select.insert({bottom:option}); } else { $(select.options[position]).insert({before:option}); } } } }; page.scrollToEnsureVisibleElement = function( ) { var params = window.location.search.parseQuery(); var ensureVisibleId = params.ensureVisibleId; if ( !ensureVisibleId ) { return; } var ensureVisibleElement = $(ensureVisibleId); if ( !ensureVisibleElement ) { return; } var pos = ensureVisibleElement.cumulativeOffset(); var scrollY = pos.top; var bodyHeight = $( document.body ).getHeight(); if (scrollY + ensureVisibleElement.getHeight() < bodyHeight) { return; // element is already visible } var receipt = $('inlineReceipt_good'); if ( receipt && receipt.visible() ) // pin receipt to top { var offset = receipt.cumulativeOffset(); offset.top = 0; var w = parseInt(receipt.getStyle('width'), 10); if ( Prototype.Browser.IE ) // width in IE includes border & padding, need to remove it { var bw = parseInt(receipt.getStyle('borderLeftWidth'), 10) + parseInt(receipt.getStyle('borderRightWidth'), 10); var pw = parseInt(receipt.getStyle('paddingLeft'), 10) + parseInt(receipt.getStyle('paddingRight'), 10); w = w - bw - pw; } receipt.setStyle({ position:"fixed", zIndex:"1000", left: offset.left + "px", top: offset.top + "px", width: w + "px"}); scrollY = scrollY - 2 * receipt.getHeight(); } // scroll window to show ensureVisibleElement window.scrollTo(0, scrollY ); }; /** * Recursively walks up the frameset stack asking each window to change their * document.domain attribute in anticipation of making a cross-site scripting * call to an LMS integration. * * <p>This should only be called from popup windows, as changing the document.domain * value of a window that is going to be reused later could do surprising things. * * @param domain Domain name shared by the Learn and LMS servers. */ page.setLmsIntegrationDomain = function( domain ) { if ( '' == domain ) { return; } try { if ( parent.page.setLmsIntegrationDomain ) { parent.page.setLmsIntegrationDomain( domain ); } } catch ( err ) { /* Ignore */ } document.domain = domain; }; page.refreshTopFrame = function() { if ( window.top.nav ) { window.top.nav.location.reload(); } }; page.rewriteTaskStatusUntilDone = function( spanId, taskId) { var theSpan = $(spanId); if (theSpan) { new Ajax.Request("/webapps/blackboard/execute/getSystemTaskStatus?taskId=" + taskId, { method: 'post', onSuccess: function(transport, json) { var result = transport.responseText.evalJSON( true ); theSpan = $(spanId); // reload it just in case it was removed between the request and response if (theSpan) { theSpan.update(result.text); if (result.complete == "false") { setTimeout(function() {page.rewriteTaskStatusUntilDone(spanId, taskId);}, 3000); } } }, onFailure: function(transport, json) { theSpan = $(spanId); //reload the span as above if (theSpan) { theSpan.hide(); $(spanId+'error').show(); } } }); } }; /* * Clean up the task id which associated with the specified course, so that the inline warning does not show up again */ page.cleanTaskId = function( courseId ) { //we don't care about the result, at worse it will display again on the next page new Ajax.Request("/webapps/blackboard/execute/courseMain?action=cleanTaskId&course_id=" + courseId, { method: 'post' }); }; } /* ================================================================== *The JavaScript Validation objects to be used in form validation. * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ /** * General purpose DOM utility methods. There's probably a better place for this. * Private methods and properties have names prefixed with "_". */ var bbDomUtil = { _inputTypes: [ 'input', 'textarea', 'select', 'button' ], _maxRecursion: 500, /** * @param elName name of the form input element (the request parameter name). * @return an array of two or more elements, a single element, or null. */ getInputElementByName: function( elName ) { var elArray = this._getInputElementsByNameInSection( 'dataCollectionContainer', elName ); if ( elArray.length === 0 ) { elArray = this._getInputElementsByName( elName ); } return ( elArray.length === 0 ) ? null : ( elArray.length == 1 ? elArray[ 0 ] : elArray ); }, /* * @param sectionId the ID of any element inside a form * @return the enclosing form element or null */ getEnclosingForm: function( sectionId ) { var form = null; if ( sectionId ) { var count; var section = document.getElementById( sectionId ); while ( section ) { ++count; if ( count > this._maxRecursion ) { break; } if ( section.tagName && section.tagName.toLowerCase() == "form" ) { form = section; break; } section = section.parentNode; } } return ( !form ) ? ( document.forms.length === 0 ? null : document.forms[ 0 ] ) : form; }, /** * Adds some additional processing to account for an IE bug * @param id the ID of an element */ getElementById: function( id ) { var el = $( id ); try { if ( el && /msie|internet explorer/i.test( navigator.userAgent ) && el.attributes.id && el.attributes.id.value != id && document.all ) { // IE usually returns item at 0 for ( var i = 0; i < document.all[ id ].length; ++i ) { if ( document.all[ id ][ i ].attributes.id && document.all[ id ][ i ].attributes.id.value == id ) { return $( document.all[ id ][ i ] ); } } } } catch ( e ) { // Ignore all exceptions } return el; }, syncCheckboxToInput: function( checkboxElement, inputElement ) { var checkbox = $( checkboxElement ); var input = $( inputElement ); if ( checkbox && input ) { var checkIfNotEmpty = function( ) { checkbox.checked = ( input.value.strip?input.value.strip( ):input.value )?true:false; } input.observe( 'change', checkIfNotEmpty ); input.observe( 'blur', checkIfNotEmpty ); } }, /** * @param sectionId the ID of an element that restricts the scope of elements. Cannot be null. * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name in the scope of the specified parent element. */ _getInputElementsByNameInSection: function( sectionId, elName ) { var result = []; if ( sectionId ) { var section = document.getElementById( sectionId ); if ( section ) { for ( var i = 0; i < this._inputTypes.length; ++i ) { var elements = section.getElementsByTagName( this._inputTypes[ i ] ); for ( var j = 0; j < elements.length; ++j ) { if ( elements[ j ].name == elName ) { result.push( elements[ j ] ); } } } } } return result; }, /** * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name. */ _getInputElementsByName: function( elName ) { var result = []; var elArray = document.getElementsByName( elName ); var formName = null; for ( var i = 0; i < elArray.length; ++i ) { if ( elArray[ i ].tagName.match( /^(input|select|textarea|button)$/i ) ) { if ( elArray[ i ].form !== null ) { if ( !formName ) { formName = elArray[ i ].form.name; } else if ( formName != elArray[ i ] .form.name ) { // Ignore elements that don't belong to the same form as the first one found. continue; } result.push( elArray[ i ] ); } } } return result; } }; /************************************************************ * Object formCheckList. Use this object to hold form objects * to be validated and perform form validation ************************************************************/ var addElement, removeElement, removeAllElements, getElement, checkForm, CheckGroup; var formCheckList = new formCheckList(); var dblSubmit = false; var skipValidation=false; function formCheckList() { this.checkList = []; this.addElement = addElement; this.removeElement = removeElement; this.removeAllElements = removeAllElements; this.getElement = getElement; this.check = checkForm; } function addElement(element) { if ( typeof element.group != 'undefined' ) { for ( var i=0; i < this.checkList.length;i++ ) { if ( this.checkList[i].name == element.group ) { this.checkList[i].addElement(element); return; } } var grp = new CheckGroup(element); grp.addElement(element); this.checkList[this.checkList.length] = grp; return; } this.checkList[this.checkList.length] = element; } function removeElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { this.checkList.splice(i, 1); } } } function getElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { return this.checkList[i]; } } } function removeAllElements() { var valSize = this.checkList.length; this.checkList.splice(0, valSize); } function checkForm() { if ( typeof(window.invalidAnswersTmp)!='undefined' ) { window.invalidAnswersTmp=[]; } var valid =true; for ( var i=0;i<this.checkList.length;i++ ) { if ( this.checkList[i].canValidate && !this.checkList[i].canValidate() ) { // cannot validate the input so skip it and continue onto the next input continue; } if ( !this.checkList[i].check() ) { if ( this.checkList[i].answerChk ) { valid=false; } else { return false; } } } return valid; } ///////////////////End of object formCheckList//////////////// /************************************************************ * Object: inputText. Use this object to validate text input in * your form (for input type == text|password|textarea|BUT NOT FILE!!! (FILE IS READ-ONLY)) ************************************************************/ function inputText(h) { if (h.id) { this.element = bbDomUtil.getElementById( h.id ); } else { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; } this.shouldFocus = h.shouldFocus; if ( h.shouldFocus === undefined ) { this.shouldFocus = true; } if ( this.shouldFocus ) { this.formatElement = 'bbDomUtil.getInputElementByName("'+h.display_format+'")'; this.focusElement = h.focus_element; // override element for focus in case of error } this.fieldName = h.name; this.disable_script = h.disable_script; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.minlength = h.minlength; this.maxlength = h.maxlength; this.trim = h.trim; this.regex = h.regex; this.regex_msg = h.regex_msg; this.regex_match = h.regex_match; this.verify = h.verify; this.check = inputTextCheck; this.valid_number = h.valid_number; this.min_value = h.min_value; this.max_value = h.max_value; this.nonnegative = h.nonnegative; this.valid_float = h.valid_float; this.allow_negative_float = h.allow_negative_float; this.valid_percent = h.valid_percent; this.allow_negative_percent = h.allow_negative_percent; this.valid_efloat = h.valid_efloat; // float with optional exponent this.valid_email = h.valid_email; this.valid_url = h.valid_url; this.required_url = h.required_url; this.invalid_chars = h.invalid_chars; // eg: /[%&#<>=+,]/g this.cmp_element = 'bbDomUtil.getInputElementByName("'+h.cmp_field+'")'; this.cmp_ref_label = h.cmp_ref_label; this.xor = h.xor; this.cmp_required = h.cmp_required; this.activeX = h.activeX; // synch activeX to hidden field before submission this.isHtmlDoc = h.isHtmlDoc; // is portfolio with body and html this.img_check = h.img_check; this.empty_value_warn = h.empty_value_warn; this.valid_system_role_id = h.valid_system_role_id; this.required = h.required; this.canValidate = h.canValidate; // callback function to determine whether the inputtext should be validated if (h.ref_and_regex === undefined) { this.ref_and_regex = true; } else { this.ref_and_regex = h.ref_and_regex; } if ( document.all && document.getElementById(h.name+'_ax') ) { this.axobj = document.getElementById(h.name+'_ax'); } // Add here anything you need to validate } function isAnEmptyVtbe(val) { // Different browsers populate an 'empty' VTBE with a different blank line - look for any of the known combinations and ignore them. // NOTE: Changes to this method need to be reflected in AssessmentDisplayControl.isAnEmptyVtbe return ( !val || !val.replace(/<p><\/p>/gi,'').trim() || !val.replace(/<br \/>/gi,'').trim() || !val.replace(/&nbsp;/gi,'').trim()); } // Do actual check here function inputTextCheck() { if ( this.shouldFocus === undefined ) { this.shouldFocus = true; } var element = eval(this.element); var cmp_element = eval(this.cmp_element); if ( element ) { // don't validate disabled elements if (element.disabled) { return true; } var focusElement = element; if ( this.axobj ) { focusElement = this.axobj; } this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.custom_alert_cmp = (typeof this.custom_alert_cmp != 'undefined') ? this.custom_alert_cmp : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( isAnEmptyVtbe(val) ) { val=''; } var trimmedVal, numVal, isValidNum, re; if ( this.activeX && isEmptyWysiwyg(element) ) { element.value = ''; val = ''; } if ( typeof eval(this.formatElement) != "undefined" && eval(this.formatElement) !== null ) { //Check if it is a mathml where; if ( /<APPLET ID="(\d+)" NAME="(\w+)"/.test(element.value) ) { if ( getRadioValue(eval(this.formatElement)) == 'P' ) { if ( !confirm(JS_RESOURCES.getString('validation.plain_text.confirm')) ) { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } } if ( this.trim ) { val = val.trim(); element.value = val; } //Remove leading & trailing spaces if needed if ( typeof cmp_element != 'undefined' ) { if ( this.xor ) { if ( val.trim()=='' ^ cmp_element.value.trim()=='' ) { if ( val.trim()=='' ) { alert( this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } } else { alert(this.custom_alert_cmp ? this.custom_alert_cmp : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.cmp_ref_label, this.ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } } return false; } } } if ( this.disable_script ) { if ( typeof eval(this.formatElement) == "undefined" || getRadioValue(eval(this.formatElement)) != 'P' ) { re = /<\s*script/ig; var re1 = /<\s*\/\s*script\s*>/ig; val = val.replace(re,'<disabled-script'); val = val.replace(re1,'</disabled-script>'); var re2 = /href\s*=\s*(['"]*)\s*javascript\s*:/ig; val = val.replace(re2,"href=$1disabled-javascript:"); element.value = val; } } if ( this.valid_number ) { trimmedVal = val.trim(); //added this check bcoz for numeric fields which are not required, this function was not working if ( trimmedVal!="" ) { var numLocalizer = new NumberLocalizer(); if ( numLocalizer === undefined ) { numVal = parseInt(trimmedVal, 10); } else { numVal = numLocalizer.parseNumber( trimmedVal ); } isValidNum = !isNaN(numVal); if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if (this.nonnegative && numVal<0) { alert(JS_RESOURCES.getFormattedString('validation.negative', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if ( ( (this.min_value || this.min_value === 0) && numVal < this.min_value ) || ( this.max_value && ( numVal > this.max_value ) ) ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_value', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_float ) { trimmedVal = val.trim(); var numFormat; if ( this.allow_negative_float ) { numFormat = LOCALE_SETTINGS.getString('float.allow.negative.format'); } else { numFormat = LOCALE_SETTINGS.getString('float.format'); } if ( numFormat ) { //hand parse for l10n re = new RegExp( numFormat ); isValidNum = trimmedVal.search( re ) === 0; } else { //try to use platform native (non-localized) numVal = parseFloat(trimmedVal); isValidNum = !isNaN(numVal); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test(trimmedVal.substring(numVal.toString().length)); } } if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_percent ) { if ( this.allow_negative_percent ) { if ( !isValidNegativePercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.allow_negtive.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { if ( !isPercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_efloat ) { if ( !isNumeric(val) ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { focusElement = (this.focusElement ? this.focusElement : this.element); if ( focusElement.focus ) { safeFocus( focusElement ); } } return false; } } if ( this.valid_email ) { if ( val.trim() == '' ) { if ( confirm(JS_RESOURCES.getString('warning.email')) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { re = /^(['`a-zA-Z0-9_+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; if ( !re.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.email', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } // confirms via javascript pop-up if input field is empty; // user can click Ok to proceed or cancel to go back with the element focused // the message that pops up is the message passed in with ref_label if ( this.empty_value_warn ) { if ( val.trim() == '' ) { if ( confirm(this.ref_label) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } var extra = 0; if (navigator.appName=="Netscape" && parseInt(navigator.appVersion, 10 )>=5) { var index = val.indexOf('\n'); while(index != -1) { extra += 1; index = val.indexOf('\n',index+1); } } if ( this.maxlength < val.length + extra ) { var newlength = val.length + extra; if ( (newlength - this.maxlength) > 1 ) { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.plural', [this.ref_label,this.maxlength,(newlength-this.maxlength)])); } else { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.singular', [this.ref_label,this.maxlength])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } // required_url, unlike valid_url, flags empty strings as invalid URLs. if ( this.required_url ) { if ( val.trim() == '' ) { alert(JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } if ( !isValidUrl(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_url ) { if ( val.trim()=='' ) { return true; } var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; if ( !oRegExp.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( typeof(this.regex) == 'string' ) { this.regex=eval(this.regex); } if ( (typeof(this.regex) == 'object' || typeof(this.regex) == 'function') && val.trim() != '' ) { re =this.regex; if ( this.regex_match && val.search(re) == -1 ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } if ( !this.regex_match && re.test(val) ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.invalid_chars ) { // if string was passed, convert to regular expression object if( Object.isString( this.invalid_chars ) ) { var stringToParse = this.invalid_chars; var firstSlashPos = stringToParse.indexOf("/"); var lastSlashPos = stringToParse.lastIndexOf("/"); var pattern = stringToParse.substring( ++firstSlashPos, lastSlashPos ); var modifier = stringToParse.substring( ++lastSlashPos, stringToParse.length ); this.invalid_chars = new RegExp( pattern, modifier ); } var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.verify ) { var chk_field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'_chk')); var field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'')); if ( chk_field.value != val ) { alert(JS_RESOURCES.getFormattedString('validation.mismatch', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( chk_field ); } return false; } // Encode password if ( element.type == 'password' ) { element.value = element.value.trim(); if ( element.value != '' ) { element.value = field.value = chk_field.value = calcMD5(element.value); } else { alert(JS_RESOURCES.getString('validation.password')); element.value = field.value =''; if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.cmp_required && element.value.trim()!='' ) { if ( !cmp_element.value.trim().length ) { alert(JS_RESOURCES.getFormattedString('validation.cmp_field.rejected', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } return false; } } if ( this.img_check ) { return image_check(element); } //AS-102122, if a image tag without ALT properties <img src="1.jpg">, add a null ALT for it. <img src="1.jpg" alt=""> imgTag_check(element,0); // System role ids cannot begin with "BB" as of 7.2; such ids are reserved for solely for Blackboard use // Checks field to see if string begins with "BB" case-insensitive and if so, alert the user if ( this.valid_system_role_id ) { if ( element.value.indexOf('BB') === 0 || element.value.indexOf('bb') === 0 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.system_role.reserve', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } else { return true; } } } return true; } ///////////////////End of object inputText/////////////////// //check ALT propertity for <img tag, if there isn't ALT propertiry, add ALT="" for this tag function imgTag_check(element , start){ var imgStart = element.value.indexOf("<img",start); // img: <img src=... > if (imgStart > -1 ){ var end = element.value.indexOf(">",imgStart); if (end == -1 ){ return; } var imgData = element.value.substring(imgStart, end+1); // <img src=... > if(imgData.indexOf("alt") == -1){ imgData = "<img alt=\"\" " + imgData.substring(4); element.value = element.value.substring(0,imgStart) + imgData + element.value.substring(end+1); } imgTag_check(element, end); } } function image_check(element) { var ext = element.value.match(/.*\.(.*)/); ext = ext ? ext[1] :''; var re = /gif|jpeg|png|tif|bmp|jpg/i; if ( ! re.test(ext) && element.value ) { if ( ! confirm(JS_RESOURCES.getFormattedString('validation.image_type', [ext])) ) { element.focus(); return false; } } return true; } /************************************************************ * Object: inputDate. Use this object to validate that the * associated date fields are not empty ************************************************************/ var inputDateCheck; function inputDate(h) { this.element_mm = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mm")'; this.element_dd = 'bbDomUtil.getInputElementByName("'+h.name+'_0_dd")'; this.element_yyyy = 'bbDomUtil.getInputElementByName("'+h.name+'_0_yyyy")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputDateCheck; // Add here anything you need to validate } // Do actual check here function inputDateCheck() { var element_mm = eval(this.element_mm); var element_dd = eval(this.element_dd); var element_yyyy = eval(this.element_yyyy); if ( typeof element_mm != 'undefined' && element_dd !='undefined' && element_yyyy !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = ( this.ref_label ) ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_mm.name]); if ( element_mm.selectedIndex == -1 || element_dd.selectedIndex == -1 || element_yyyy == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.date.required', [this.ref_label])); if ( element_mm.selectedIndex == -1 ) { element_mm.focus(); } else if ( element_dd.selectedIndex == -1 ) { element_dd.focus(); } else { element_yyyy.focus(); } return false; } } return true; } ///////////////////End of object inputDate/////////////////// /************************************************************ * Object: inputTime. Use this object to validate that the * associated time fields are not empty ************************************************************/ var inputTimeCheck; function inputTime(h) { this.element_hh = 'bbDomUtil.getInputElementByName("'+h.name+'_0_hh")'; this.element_mi = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mi")'; this.element_am = 'bbDomUtil.getInputElementByName("'+h.name+'_0_am")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputTimeCheck; // Add here anything you need to validate } // Do actual check here function inputTimeCheck() { var element_hh = eval(this.element_hh); var element_mi = eval(this.element_mi); var element_am = eval(this.element_am); if ( typeof element_hh != 'undefined' && element_mi !='undefined' && element_am !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_hh.name]); if ( element_hh.selectedIndex == -1 || element_mi.selectedIndex == -1 || element_am == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.time.required', [this.ref_label])); if ( element_hh.selectedIndex == -1 ) { element_hh.focus(); } else if ( element_mi.selectedIndex == -1 ) { element_mi.focus(); } else { element_am.focus(); } return false; } } return true; } ///////////////////End of object inputTime/////////////////// /************************************************************ * Object: inputSelect. Use this object to validate that the * associated select field is not empty ************************************************************/ var inputSelectCheck; function inputSelect(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.minSelected = h.minSelected; this.maxSelected = h.maxSelected; this.title = h.title; this.isMultiSelect = h.isMultiSelect; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputSelectCheck; // Add here anything you need to validate } // Do actual check here function inputSelectCheck() { var element = eval(this.element); var checked = 0; if ( typeof element != 'undefined' ) { if ( this.isMultiSelect) { if( this.minSelected ) { //check that at least minSelected number of options is selected //bsomala checked = element.options.length; if(checked < this.minSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.minItems', [this.minSelected])); element.focus(); return false; } } checked = 0; if ( this.maxSelected ) { checked = element.options.length; if(checked > this.maxSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.maxItems', [this.maxSelected])); element.focus(); return false; } } } else { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); if ( (element.selectedIndex == -1) || (element.options[element.selectedIndex].value == "") ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); element.focus(); return false; } } } return true; } ///////////////////End of object inputSelect/////////////////// /************************************************************ * Object: inputFile. Use this object to validate that the file upload is not empty. IMPORTANT: file type is READ ONLY ************************************************************/ var inputFileCheck; function inputFile(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.invalid_chars = h.invalid_chars; this.minlength = h.minlength; this.img_check = h.img_check; this.check = inputFileCheck; // Add here anything you need to validate } // Do actual check here function inputFileCheck() { var element = eval(this.element); if ( typeof element != 'undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( this.invalid_chars ) { var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); shiftFocus( element, false); return false; } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } return false; } if ( this.img_check ) { return image_check(element); } } return true; } ///////////////////End of object inputFile/////////////////// /************************************************************ * Object: Check_EventTime. Use this object to make sure * that the end time is not before the start time, confirm pastdue time, * check duration of the event. *************************************************************/ var Check_EventTime_check; function Check_EventTime(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check; } function Check_EventTime_check() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( (document.forms[0].restrict_start && document.forms[0].restrict_end)|| (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end) ) { if ( (document.forms[0].restrict_start && document.forms[0].restrict_end && document.forms[0].restrict_start.checked && document.forms[0].restrict_end.checked) || (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end && document.forms[1].restrict_start.checked && document.forms[1].restrict_end.checked) ) { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } } else { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end && end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /* * SCR 17696 * This validation check should be used in the date widgets instead of the earlier one * as that has the chackboxes names hardcoded in them. The existing date wodgets * use it, but going ahead this should be the used. It helps specially when there are * multiple date widgets on the same page. */ var Check_EventTime_check_multiple; function Check_EventTime_multiple(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check_multiple; } function Check_EventTime_check_multiple() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( restr && cmp_restr ) { //This block has been aded due to SCR 17696. //Reason : if this method is directly called from a JSP page which is not a part of // the existing date widgets, and the parameters of stsrt date, end date, start checkbox and // end checkbox are passed, and additionally the page has another if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /*We always need time in our favorite format */ function sql_datetime(dat) { var year = dat.getFullYear(); var mon = dat.getMonth(); mon++; mon = (mon<10)?'0'+mon:mon; var day = dat.getDate(); day = (day<10)?'0'+day:day; var hh = dat.getHours(); hh = (hh<10)?'0'+hh:hh; var mi = dat.getMinutes(); mi = (mi<10)?'0'+mi:mi; var ss = dat.getSeconds(); ss = (ss<10)?'0'+ss:ss; return year+'-'+mon+'-'+day+' '+hh+':'+mi+':'+ss; } ///////////////////End of object Check_EventTime///////////// /******************************************************************************** * Object DoubleSubmit(): * Use this object to prevent multiple times form submission * Second argument is wait image source; first argument is image name (string) or * instance of ImageSwapper object created for submit button (if it has rollovers) *********************************************************************************/ var checkDoubleSubmit; // Prevent multiple form submission function DoubleSubmit() { this.submitted = 0; this.check = checkDoubleSubmit; } function checkDoubleSubmit() { if ( this.submitted > 0 ) { alert (JS_RESOURCES.getString('notification.submit')); return false; } else { this.submitted++; } return true; } ///////////////////End of Object DoubleSubmit()////////////////// /******************************************************************************** * Object RadioCheckBox(): * Use this object to make sure that at least one item is selected from the group of * radio/checkbox groups. Just attach this code to checkbox/radio group (refered below as 'element'): * formCheckList.addElement(new RadioCheckBox({name:'element or subgroup name',group:'group name',ref_label:"group label in alerts"})); *********************************************************************************/ var groupAddElement, checkGroupChecked, groupIsChecked; // Constructor function function RadioCheckBox(h) { return h; } function CheckGroup(h) { this.name = h.group; this.ref_label = h.ref_label; this.elements = []; this.addElement = groupAddElement; this.check = checkGroupChecked; } function groupAddElement(h) { this.elements[this.elements.length] = h.name; } function checkGroupChecked() { var list = this.elements; var chk = false; for ( var i = 0; i < list.length; i++ ) { if ( groupIsChecked(list[i]) ) { return true; } } var msg = null; var group = bbDomUtil.getInputElementByName(list[0]); group = (typeof group[0] != 'undefined') ? group[0]:group; if ( group.type == "radio" ) { msg = JS_RESOURCES.getFormattedString('validation.radio.required', [this.ref_label]); } else { msg = JS_RESOURCES.getFormattedString('validation.option.required', [this.ref_label]); } alert(msg); group.focus(); return false; } function groupIsChecked(groupName) { var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var checked = false; if ( typeof group != 'undefined' ) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( group[i].checked ) { checked = true; return checked; } } } else { if ( group.checked ) { checked = true; return checked; } } } return checked; } ///////////////////End of Object CheckGroup()//////////////////// /******************************************************************************** * Object selector(): * Use this object to make sure that at least one item is available in the Selector element (see PickerElement.java) * For use when Selector is marked Required: * formCheckList.addElement(new CheckSelector({name:'element or subgroup name',ref_label:"group label in alerts"})); *********************************************************************************/ var selectorCheck, selectorElementAvailable; // Constructor function function selector(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.required = h.required; this.check = selectorCheck; // Add here anything you need to validate } // Do actual check here function selectorCheck() { if(this.required) { var isAvailable = selectorElementAvailable(this.fieldName); this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element.name]); if ( !isAvailable ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } } return true; } function selectorElementAvailable(groupName) { // we need at least one "Remove" checkbox to be present and unchecked (one element is added but not removed) var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var available = false; if ( typeof group != 'undefined' && group !== null) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( !group[i].checked ) { available = true; return available; } } } else { if ( !group.checked ) { available = true; return available; } } } return available; } ///////////////////End of Object CheckSelector()//////////////////// //////////////// Start some useful generic functions //////////// /* Function ltrim(): Remove leading spaces in strings: Usage:trimmedString = originalString.ltrim(); */ function ltrim() { return this.replace( /^\s+/g,''); } String.prototype.ltrim = ltrim; /* Function rtrim(): Remove trailing spaces in strings: Usage:trimmedString = originalString.rtrim(); */ function rtrim() { return this.replace( /\s+$/g,''); } String.prototype.rtrim = rtrim; /* Function trim(): Remove leading and trailing spaces in strings: Usage:trimmedString = originalString.trim(); */ function trim() { return this.rtrim().ltrim(); } String.prototype.trim = trim; /* Function invalidChars(): Returns an array of illegal chars Usage: var listOfChars = myStringToSearch.invalidChars(regularExpression); regularExpression = /[illegal chars]/g; Sample re = /[! &^$#]/g */ function invalidChars (re) { var chrs = this.match(re); if ( chrs ) { for ( var j=0;j<chrs.length;j++ ) { if ( chrs[j]===' ' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.space'); } else if ( chrs[j]==',' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.comma'); } else if ( chrs[j]=='\\' ) { chrs[j]='\\\\'; } } } return chrs; } String.prototype.invalidChars = invalidChars; /** Function getRadioValue(): Returns selected value for group of radio buttons * Usage: var selectedValue = getRadioValue(radio); radio - reference to radio group */ function getRadioValue(radio) { for ( var i=0;i< radio.length;i++ ) { if ( radio[i].checked ) { return radio[i].value; } } } /** Function isEmptyWysiwyg(): Checks WYSIWYG control for value */ function isEmptyWysiwyg(field) { // first remove any HTML tags from the value, then check if it's empty (all spaces or &nbsp;s) // explicitly adding the unicode non-breaking space and line feed/break since IE and safari // don't seem to include them in \s var EMPTY_REGEXP = /^(\s|\u00A0|\u2028|\u2029|&nbsp;)*$/i; // Input is not empty if it contains one of the following tags: img/object/embed var SPECIALTAGS = /(<\s*(img)|(object)|(embed)|(hr)|(input)|(applet))/i; if ( field && typeof(field.value) == 'string' && field.value ) { var notags = field.value.replace(/<.*?>/g,''); var result = EMPTY_REGEXP.test(notags); return ( result && !SPECIALTAGS.test(field.value) ); } return true; } /** Function isValidUrl(): Checks if given string is in the general URL format */ var VALID_URL_REGEXP = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; function isValidUrl(string) { return( VALID_URL_REGEXP.test(string) ); } /** Numeric */ var EFLOAT_REGEXP = LOCALE_SETTINGS.getString('efloat.format'); var THOUSANDS_SEP = LOCALE_SETTINGS.getString('thousand.sep.format'); /*rejectThousandSep: if true then the presence of the thousands-separator is an error (non-numeric) * e.g. we don't accept it for point, since point/score is rarely in thousands range. */ function isNumeric(string, rejectThousandSep ) { string = string.trim(); if ( rejectThousandSep !== null && rejectThousandSep ) { var hasThousands = ( string.search( new RegExp( THOUSANDS_SEP ) ) !== -1 ) ; if (hasThousands) { return false; } } string = string.replace(new RegExp(THOUSANDS_SEP, 'g'), ''); if ( string.search( new RegExp(EFLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return !isNaN(floatValue); } return false; } /** Float between 0 and 100 */ var FLOAT_REGEXP = LOCALE_SETTINGS.getString('float.format'); function isPercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= 0 && floatValue <= 100 ); } return false; } /** Float between -100 and 100 */ var FLOAT_ALLOW_NEGATIVE_REGEXP = LOCALE_SETTINGS.getString('float.allow.negative.format'); function isValidNegativePercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_ALLOW_NEGATIVE_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= -100 && floatValue <= 100 ); } return false; } /*Function submitForm() Call this function to validate and submit form @param form the name of the form or the DOM object representing the form. If null or undefined, submits first form on page. */ function submitForm(form) { if ( validateForm() ) { if (form) { if ( typeof( form ) == "string" ) { document.forms[ form ].submit(); } else { form.submit(); } } else { document.forms[0].submit(); } } } /* Sort numerical array in ascending order */ function numericalArraySortAscending(a, b) { return (a-b); } /*Function validateForm() * Call this function onSubmit inside <form> tag */ function validateForm() { // Set textarea value to VTBE contents if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if ( skipValidation ) { return true; } /* Validate form */ var valid = formCheckList.check(); var i; /*Check for invalid answers if any present */ var invalidAnswersArray = []; var invAns = window.invalidAnswers; if ( typeof( invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } invAns = window.invalidAnswersTmp; if ( typeof(invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } var stringArg = ''; if ( invalidAnswersArray.length > 0 ) { invalidAnswersArray.sort(numericalArraySortAscending); var lastIndex = invalidAnswersArray.length - 1; for ( var x = 0; x < invalidAnswersArray.length; x++ ) { stringArg += invalidAnswersArray[x]; if ( x < lastIndex ) { if ( ( (x+1) % 10 ) === 0 ) { stringArg += ",\n"; } else { stringArg += ","; } } } } if ( stringArg !== '' && valid ) { var msgKey; if ( !assessment.backtrackProhibited ) { msgKey = 'assessment.incomplete.confirm'; } else { msgKey = 'assessment.incomplete.confirm.backtrackProhibited'; } if (assessment.isSurvey) { msgKey = msgKey + ".survey"; } if ( !confirm( JS_RESOURCES.getFormattedString( msgKey, [stringArg] ) ) ) { valid = false; // User decided not to submit } else { assessment.userReallyWantsToSubmit = true; } window.invalidAnswersTmp = []; // Clearing up } /* Go back to placeholders if validation failed (valid == false) */ if ( ismath && !valid ) { api.setMathmlBoxes(); } /* If everything is OK and ready to go,check that the form was not already submitted */ if ( valid && dblSubmit ) { valid = dblSubmit.check(); } return valid; } /*Function boxSelector() * Use this function to select, unselect or invert selection for specified checkbox groups * Call: boxSelector(['name1','name2',...,'namen'],action), here action is 'select', or 'unselect', or 'invert' */ function boxSelector(list,action) { action = (action == 'select') ? true : (action == 'unselect') ? false : action; for ( var i=0;i<list.length;i++ ) { var group = 'bbDomUtil.getInputElementByName("'+list[i]+'")'; if ( typeof (group = eval(group)) != 'undefined' ) { var j; if ( action == 'invert' ) { for ( j=0;j<group.length;j++ ) { group[j].checked = !group[j].checked; } } else { for ( j=0;j<group.length;j++ ) { group[j].checked = action; } } } } } function setHidden (from,to) { var hide = eval(to); hide.value = from.value; } ////////////////////////////////////////////////////////////////// /** * Check_Answer object was added by request specified in mscr 524 * to provide validation to student answers * Variable invalidAnswers has to be added to the page where assessment is submitted * It should contain the list of unfinished questions excluding question(s) on current page * Check_Answer object will perform final validation and display all unfinished questions in confirm box */ var invalidAnswers = []; // the java code will populate this array on final QbyQ page /** Object constructor for answers walidation * */ var Check_Answer_check; function Check_Answer (vobj) { if ( typeof(window.invalidAnswersTmp)=='undefined' ) { window.invalidAnswersTmp=[]; } this.form = 'document.forms[0]'; this.element = 'bbDomUtil.getInputElementByName("'+vobj.name+'")'; this.name = vobj.name; this.answerChk = true; //Check_Answer is special check, it makes a list of unfinished questions and always return true this.ref_label = vobj.ref_label; this.check = Check_Answer_check; } //Test if at least one member of radio or checkbox group is selected function isChecked(grp) { if (typeof(grp.length) != 'undefined') { for ( var i=0;i< grp.length;i++ ) { if ( grp[i].checked ) { return true; } } return false; } else { return grp.checked; } } function Check_Answer_check() { //create form element object var el = eval(this.element); //Extract question type information from element name var qtype = /^(\w+)-/.exec(this.name); if ( !qtype ) { qtype = /^([^_]+)_/.exec(this.name); } qtype = qtype[1]; if ( qtype == 'ma' ) { qtype = /-\d+$/.test(this.name) ? 'mat' : 'ma'; } // Perform actual check-up if ( qtype == 'tf' || qtype == 'mc' || qtype == 'ma' || qtype == 'eo' ) { if ( !isChecked(el) ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]=this.ref_label; } } else if ( qtype == 'ord' || qtype == 'mat' ) { if ( el.selectedIndex === 0 && this.ref_label != window.invalidAnswersTmp[window.invalidAnswersTmp.length-1] ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'fitb' || qtype == 'essay' || qtype == 'num' || qtype == 'calc' || qtype == 'hs' || qtype == 'jumbled_sentence' || qtype == 'fib_plus' || qtype == 'quiz_bowl' ) { //remove isEmptyWysiwyg for these question types, since they should allow some chars as < > var val = el.value; if ( isAnEmptyVtbe(val) ) { val=''; } if ( val.trim().length < 1 ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'file' ) { var haveFile = false; var hiddenField = eval(this.form + '.elements["' + this.name + '-override"]'); if ( hiddenField && hiddenField.value == "true" ) { haveFile = true; } el = eval(this.form + '.elements["' + this.name + '_attachmentType"]'); if ( !haveFile && el && el.value !== "" ) { haveFile = true; } if ( !haveFile ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } // eliminate duplicates // TODO: think of a better way to do this if ( window.invalidAnswersTmp.length > 0 ) { var tmpArray = []; var tmpObject = {}; for ( var i = 0; i < window.invalidAnswersTmp.length; ++i ) { if ( !tmpObject[window.invalidAnswersTmp[i]] ) { tmpObject[window.invalidAnswersTmp[i]] = true; tmpArray[tmpArray.length] = window.invalidAnswersTmp[i]; } } window.invalidAnswersTmp = tmpArray; } return true; //Always true, we can make decision later through confirm } // wrapper function for focus() calls function shiftFocus(el, isVTBE) { if ( el ) { if ( isVTBE && editors && editors[el.name] && typeof(editors[el.name].focusEditor) == 'function' ) { editors[el.name].focusEditor(); } else if ( !el.disabled && !el.readOnly && el.type != "hidden" ) { safeFocus( el ); } } return; } function safeFocus( e ) { try { if ( e && e.focus ) { e.focus(); } } catch (er) { //Ignore, element is hidden in IE and can't be focused. } } /** * A validator that checks to see that a certain radio button in a group is * selected. This is intended to be used for conditional validation -- * validators that only apply when a certain radio button selection is made. * Note that if there are no selected values, this validator will return false * when checked. * - name - radio button group to check * - value - the radio button value to check for selection */ var RadioButtonValueValidator_check; function RadioButtonValueValidator( name, value ) { this.element = bbDomUtil.getInputElementByName(name); this.value = value; this.check = RadioButtonValueValidator_check; } function RadioButtonValueValidator_check() { for ( var i = 0; i < this.element.length; i++ ) { if ( this.element[i].value == this.value ) { return this.element[i].checked; } } return false; } /** * A validator that performs a logical, short-circuit OR on its two arguments. */ var OrValidator_check; function OrValidator( first, second ) { this.first = first; this.second = second; this.check = OrValidator_check; } function OrValidator_check() { return this.first.check() || this.second.check(); } /* This is a sample code that has to be added to every corresponding form element in take assessment page, where you perform question validation for completness; ref_lablel value is used to refer to element, name is field full name: <script type="text/javascript"> formCheckList.addElement(new Check_Answer({ref_label:"Question 3",name:"tf-ans-_190_1"})); </script> */ var nonceUtil = {}; /** * Finds the form element holding the nonceId * @param formId is the id of the form the nonce element exists within */ nonceUtil.getNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce') }; nonceUtil.getAjaxNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce.ajax') }; nonceUtil.getNonceIdEx = function(formId, elName) { var nonceId = null; if(formId && $s(formId) ) { nonceId= $s(formId).elements[elName]; } if( !nonceId ) { // take a cheap shot at retreiving the first nonceId on the page nonceId = document.getElementsByName( elName )[0]; // Note : nonceId can be null if the form does not have a nonce element declared. This should be a sign of a xsrf loophole } return nonceId; }; /** * Finds the form element holding the nonceId * @param formElementId is the id of a form element on the page. It is expected that the nonceId corresponds * to the same form. */ nonceUtil.getNonceIdByFormElementId = function(formElementId) { var nonceId = null; if( formElementId && $s(formElementId) ) { var elementFormId = bbDomUtil.getEnclosingForm(formElementId); nonceId = $s(elementFormId).elements['blackboard.platform.security.NonceUtil.nonce']; } return nonceId; }; nonceUtil.getNonceIdValue = function(formId) { var nonceId = nonceUtil.getNonceId(formId); return nonceId ? nonceId.value : ""; }; /** * Copies the nonceid from one form on the page to another form. Useful when using flyout forms. */ nonceUtil.copyNonceId = function( sourceFormId, targetFormId ) { var nonceId = nonceUtil.getNonceIdValue( sourceFormId ); var targetElem = new Element( 'input', { type: 'hidden', name: 'blackboard.platform.security.NonceUtil.nonce', value: nonceId } ); $( targetFormId ).appendChild( targetElem ); }; /** * Updates the form's nonceId based on the JSON response from an AjaxSecureForm */ nonceUtil.updateFromAjaxRequest = function( headerJSON ) { if ( headerJSON ) { var nonceId = nonceUtil.getNonceId(); if( nonceId ) { nonceId.value = headerJSON.nonceId; } } }; var NumberLocalizer = Class.create(); NumberLocalizer.prototype = { initialize : function() { var thousandsSeparator = LOCALE_SETTINGS[ 'number_format.thousands_sep' ]; var decimalSeparator = LOCALE_SETTINGS[ 'number_format.decimal_point' ]; this.thousandsSeparator = ( thousandsSeparator === null ) ? ',' : thousandsSeparator; this.needToConvertThousands = ( this.thousandsSeparator !== ',' ) ? true : false; this.decimalSeparator = ( decimalSeparator === null ) ? '.' : decimalSeparator; this.needToConvertDecimal = ( this.decimalSeparator !== '.' ) ? true : false; }, // Takes a number that is unlocalized and converts it to // the current locale format. formatNumber : function( f ) { var result; result = f.toString(); // Replace and thousands delimiter with a token so we can // replace it with the final symbol after we replace the decimal symbol. if ( this.needToConvertThousands ) { result = result.replace( ',', '[comma]' ); } if ( this.needToConvertDecimal ) { result = result.replace( '.', this.decimalSeparator ); } if ( this.needToConvertThousands ) { result = result.replace( '[comma]', this.thousandsSeparator ); } return result; }, // Takes a number that is in the current locale format and // converts it back to an unlocalized number. parseNumber : function( num ) { var result; result = num.toString(); // Parsing string to return as a float, so we don't need the thousands // separator anymore. result = result.replace( this.thousandsSeparator, '' ); if ( this.needToConvertDecimal ) { result = result.replace( this.decimalSeparator, '.' ); } return parseFloat( result ); } };var AccessibleSelect = {}; /** * Wire up the accessible event listeners to any <select>s on the page that have an onchange listener already */ AccessibleSelect.initializePage = function() { var selects = document.getElementsByTagName("select"); for ( var i = 0; i < selects.length; i++ ) { var currentSelect = selects[i]; if ( currentSelect.onchange ) { currentSelect.changed = false; currentSelect.onfocus = AccessibleSelect.onfocus; currentSelect.onkeydown = AccessibleSelect.onkeydown; currentSelect.onclick = AccessibleSelect.onclick; currentSelect.onchange = AccessibleSelect.createOnchange( currentSelect.onchange ); } } }; /** * Functor that creates an onchange function which if the <select> has actually been changed, will call the * specified callback (i.e. the original onchange function ) */ AccessibleSelect.createOnchange = function( callback ) { return function( theElement ) { var theSelect; if ( theElement && theElement.value ) { theSelect = theElement; } else { theSelect = this; } if (theSelect.changed) { // bind "theSelect" as the "this" for the callback. callback.apply(theSelect); return true; } else { return false; } }; }; /** * Event listener called when the <select> is clicked */ AccessibleSelect.onclick = function() { this.changed = true; // If the select size is greater than 0, then the onchange event occurs before the onclick event // and the "changed" attribute is false when the onchange event listener method runs and the select // element's onchange method does not get called. Therefore, we are going to call it here. if( this.size > 0 ) { this.onchange(this); } }; /** * Event listener called when the <select> gains focus */ AccessibleSelect.onfocus = function() { this.initValue = this.value; return true; }; /** * Event listener called when a key is pressed in the <select>. */ AccessibleSelect.onkeydown = function(e) { var theEvent; var keyCodeTab = "9"; var keyCodeEnter = "13"; var keyCodeEsc = "27"; if (e) { theEvent = e; } else { theEvent = event; } var largeSize = (this.size > 0); if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && ( largeSize || this.value != this.initValue) ) { this.initValue = this.value; this.changed = true; this.onchange(this); // returning true logically denotes that the change has been made, but more importantly it will make sure the default // behavior (what would have happened without the onkeydown event) is honored. For example, user pressing 'tab' key will // move the focus to the next element on the page return true; } else if (theEvent.keyCode == keyCodeEsc) { this.value = this.initValue; return false; } else { this.changed = false; } return true; }; // This script does not work for Safari. See AS-110404, AS-110426 if (!/webkit|khtml/i.test(navigator.userAgent)) { //When the page is loaded, initialize the select boxes if ( window.addEventListener) { window.addEventListener('load', AccessibleSelect.initializePage, false); } else if ( window.attachEvent ) { window.attachEvent('onload', AccessibleSelect.initializePage); } }var popup = { /** * Launches a new popup window. This method is used for an random popup that * might be necessary (preview window for example). If you are launching a * "picker" window you should use launchPicker() instead. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). This is required. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param resizable whether the new window should be resizable. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @param showStatus whether the new window should be show the status bar. If * not provided a default value will be used. Do not provide unless * your specific requirements dictate it. * @param scrolling whether the new window should allow scrolling. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @return a reference to the popup window generated */ launch: function( url, name, width, height, resizable, showStatus, scrolling ) { if ( typeof( width ) == 'undefined' ) { // for RTL, the width needs to be wider, to prevent vertical line overlapping in the popup if ( page.util.isRTL() ) { width = 890; } else { width = 825; // wide enough to prevent a horizontal scrollbar in most cases } } if ( typeof( height ) == 'undefined' ) { height = 500; } if ( typeof( resizable ) == 'undefined' ) { resizable = 'yes'; } if ( typeof( showStatus ) == 'undefined' ) { showStatus = 'yes'; } if ( typeof( scrolling ) == 'undefined' ) { scrolling = 'yes'; } // figure out placement of the new window we will open. If the desired size // of the new window is bigger than the screen size then make the window // smaller and put it far left. Otherwise, center the window on screen. var screenX = 0; if ( screen.width <= width ) { width = screen.width; // new window should not be wider than the screen } else { screenX = ( screen.width - width ) / 2; // center on the screen } var popup = window.open( url, name, 'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrolling + ',status=' + showStatus + ',top=20' + ',screenY=20' + ',screenX=' + screenX + ',left=' + screenX ); if ( popup ) { popup.focus(); if ( !popup.opener ) { popup.opener = self; } window.top.name = 'bbWin'; } return popup; }, /** * Launches a new "picker" window. * <p> * At the moment the only difference between this method and launch (besides * the inability to specify some advanced and rarely used options) is that * this method will default the {@code name} value if not provided. However, * you should still use this method if you are launching a "picker" type * window as additional differences may be introduced in the future. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). If not provided a default value will be used. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @return a reference to the picker window generated */ launchPicker: function( url, name, width, height ) { if ( typeof( name ) == 'undefined' ) { name = 'picker'; } return popup.launch( url, name, width, height ); }, /** * Launches a new Content System folder "picker" window. * * @param element a reference to the form element into which the value chosen * in the picker should be set. If not provided, the value will not be * set. * @return a reference to the picker window generated */ launchCsDirectoryPicker: function( element ) { var picker = popup.launchPicker( "/webapps/cmsmain/folderpicker" ); if ( picker !== null ) { if ( ( typeof( element ) != 'undefined' ) && ( element !== null ) ) { picker.opener.inputEntryURLToSet = document.getElementById( element ); } picker.opener.returnFullURL = false; } return picker; } }; var BrowserSpecific = { registerListeners: function() { if( Prototype.Browser.IE ) { var inputs = $A(document.getElementsByTagName('input')); //Enter key submit handling added only for IE browser. if( inputs ) { inputs.each( function( input ) { if(input.type === 'text' && !page.util.hasClassName(input,'noFormSubmitIE')) { Event.observe( input, "keypress", this.checkEnterKeyToSubmit.bindAsEventListener( this, input ) ); } }.bind( this ) ); } } }, checkEnterKeyToSubmit: function(event, input) { //if generated character code is equal to ascii 13 (if enter key) if(event.keyCode == 13 && input.form) { var submitButtons = $(input.form).getInputs('submit'); if(submitButtons && submitButtons.size() > 0) { submitButtons.first().click(); } Event.stop(event); } else { return true; } }, // Fix FireFox bug which converts absolute links pasted into a VTBE into relative ones which // start with a variable number of "../". // https://bugzilla.mozilla.org/show_bug.cgi?id=613517 handleFirefoxPastedLinksBug: function( baseUrl, vtbeText ) { if ( !baseUrl || !vtbeText ) { return vtbeText; } if ( Prototype.Browser.Gecko ) { if( !$( baseUrl.empty() ) && !$( vtbeText.empty() ) ) { //e.g. extract out "http://localhost:80" from "http://localhost:80/webapps/Bb-wiki-BBLEARN/" // port is optional var absoluteUrlPrefix = baseUrl.match(/https?:[\d]*\/\/[^\/]+/); // e.g."../../../bbcswebdav/xid-2202_1" into "http://localhost:80/bbcswebdav/xid-2202_1" vtbeText = vtbeText.replace(/(\.\.\/)+(sessions|bbcswebdav|courses|@@)/g, absoluteUrlPrefix + "/" + "$2"); } } return vtbeText; }, disableEnterKeyInTextBoxes: function (document) { var inputs = $A(document.getElementsByTagName('input')); if( inputs ) { inputs.each ( function( input ) { //must add special className for IE textboxes if( Prototype.Browser.IE ) { input.addClassName( 'noFormSubmitIE' ); } Event.observe( input, 'keypress', this.disableEnterKey ); }.bind( this ) ); } }, disableEnterKey: function( event ) { if( event.keyCode != Event.KEY_RETURN ) { return; } Event.stop( event ); return; } };

/** * Inserts the given HTML content into the extra content cell of the standard * title bar. * * @param content The HTML content to place */ function insertTitlebarContent(content) { var contentCell = document.getElementById("_titlebarExtraContent"); contentCell.innerHTML = content; }

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Declare an object to which we can add real functions. */ if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; /** * Set an alternative error handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setErrorHandler = function(handler) { dwr.engine._errorHandler = handler; }; /** * Set an alternative warning handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setWarningHandler = function(handler) { dwr.engine._warningHandler = handler; }; /** * Setter for the text/html handler - what happens if a DWR request gets an HTML * reply rather than the expected Javascript. Often due to login timeout */ dwr.engine.setTextHtmlHandler = function(handler) { dwr.engine._textHtmlHandler = handler; }; /** * Set a default timeout value for all calls. 0 (the default) turns timeouts off. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setTimeout = function(timeout) { dwr.engine._timeout = timeout; }; /** * The Pre-Hook is called before any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPreHook = function(handler) { dwr.engine._preHook = handler; }; /** * The Post-Hook is called after any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPostHook = function(handler) { dwr.engine._postHook = handler; }; /** * Custom headers for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setHeaders = function(headers) { dwr.engine._headers = headers; }; /** * Custom parameters for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setParameters = function(parameters) { dwr.engine._parameters = parameters; }; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.XMLHttpRequest = 1; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.IFrame = 2; /** XHR remoting type constant. See dwr.engine.setRpcType() */ dwr.engine.ScriptTag = 3; /** * Set the preferred remoting type. * @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setRpcType = function(newType) { if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) { dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" }); return; } dwr.engine._rpcType = newType; }; /** * Which HTTP method do we use to send results? Must be one of "GET" or "POST". * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setHttpMethod = function(httpMethod) { if (httpMethod != "GET" && httpMethod != "POST") { dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" }); return; } dwr.engine._httpMethod = httpMethod; }; /** * Ensure that remote calls happen in the order in which they were sent? (Default: false) * @see getahead.org/dwr/browser/engine/ordering */ dwr.engine.setOrdered = function(ordered) { dwr.engine._ordered = ordered; }; /** * Do we ask the XHR object to be asynchronous? (Default: true) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setAsync = function(async) { dwr.engine._async = async; }; /** * Does DWR poll the server for updates? (Default: false) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setActiveReverseAjax = function(activeReverseAjax) { if (activeReverseAjax) { // Bail if we are already started if (dwr.engine._activeReverseAjax) return; dwr.engine._activeReverseAjax = true; dwr.engine._poll(); } else { // Can we cancel an existing request? if (dwr.engine._activeReverseAjax && dwr.engine._pollReq) dwr.engine._pollReq.abort(); dwr.engine._activeReverseAjax = false; } // TODO: in iframe mode, if we start, stop, start then the second start may // well kick off a second iframe while the first is still about to return // we should cope with this but we don't }; /** * The default message handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultErrorHandler = function(message, ex) { dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true); if (message == null || message == "") alert("A server error has occured."); // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message); else alert(message); }; /** * The default warning handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultWarningHandler = function(message, ex) { dwr.engine._debug(message); }; /** * For reduced latency you can group several remote calls together using a batch. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.beginBatch = function() { if (dwr.engine._batch) { dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" }); return; } dwr.engine._batch = dwr.engine._createBatch(); }; /** * Finished grouping a set of remote calls together. Go and execute them all. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.endBatch = function(options) { var batch = dwr.engine._batch; if (batch == null) { dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" }); return; } dwr.engine._batch = null; if (batch.map.callCount == 0) return; // The hooks need to be merged carefully to preserve ordering if (options) dwr.engine._mergeBatch(batch, options); // In ordered mode, we don't send unless the list of sent items is empty if (dwr.engine._ordered && dwr.engine._batchesLength != 0) { dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch; } else { dwr.engine._sendData(batch); } }; /** @deprecated */ dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); }; dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); }; dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); }; dwr.engine.setPollType = function() { dwr.engine._debug("Manually setting the Poll Type is not supported"); }; //============================================================================== // Only private stuff below here //============================================================================== /** The original page id sent from the server */ dwr.engine._origScriptSessionId = "FFEAAF8EC7DA17F5B23C8BF5AC380780"; /** The session cookie name */ dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID /** Is GET enabled for the benefit of Safari? */ dwr.engine._allowGetForSafariButMakeForgeryEasier = "false"; /** The script prefix to strip in the case of scriptTagProtection. */ dwr.engine._scriptTagProtection = "throw 'allowScriptTagRemoting is false.';"; /** The default path to the DWR servlet */ dwr.engine._defaultPath = "/webapps/assessment/dwr_open"; /** Do we use XHR for reverse ajax because we are not streaming? */ dwr.engine._pollWithXhr = "false"; /** The read page id that we calculate */ dwr.engine._scriptSessionId = null; /** The function that we use to fetch/calculate a session id */ dwr.engine._getScriptSessionId = function() { if (dwr.engine._scriptSessionId == null) { dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000); } return dwr.engine._scriptSessionId; }; /** A function to call if something fails. */ dwr.engine._errorHandler = dwr.engine.defaultErrorHandler; /** For debugging when something unexplained happens. */ dwr.engine._warningHandler = dwr.engine.defaultWarningHandler; /** A function to be called before requests are marshalled. Can be null. */ dwr.engine._preHook = null; /** A function to be called after replies are received. Can be null. */ dwr.engine._postHook = null; /** An map of the batches that we have sent and are awaiting a reply on. */ dwr.engine._batches = {}; /** A count of the number of outstanding batches. Should be == to _batches.length unless prototype has messed things up */ dwr.engine._batchesLength = 0; /** In ordered mode, the array of batches waiting to be sent */ dwr.engine._batchQueue = []; /** What is the default rpc type */ dwr.engine._rpcType = dwr.engine.XMLHttpRequest; /** What is the default remoting method (ie GET or POST) */ dwr.engine._httpMethod = "POST"; /** Do we attempt to ensure that calls happen in the order in which they were sent? */ dwr.engine._ordered = false; /** Do we make the calls async? */ dwr.engine._async = true; /** The current batch (if we are in batch mode) */ dwr.engine._batch = null; /** The global timeout */ dwr.engine._timeout = 0; /** ActiveX objects to use when we want to convert an xml string into a DOM object. */ dwr.engine._DOMDocument = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; /** The ActiveX objects to use when we want to do an XMLHttpRequest call. */ dwr.engine._XMLHTTP = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; /** Are we doing comet or polling? */ dwr.engine._activeReverseAjax = false; /** The iframe that we are using to poll */ dwr.engine._outstandingIFrames = []; /** The xhr object that we are using to poll */ dwr.engine._pollReq = null; /** How many milliseconds between internal comet polls */ dwr.engine._pollCometInterval = 200; /** How many times have we re-tried to poll? */ dwr.engine._pollRetries = 0; dwr.engine._maxPollRetries = 0; /** Do we do a document.reload if we get a text/html reply? */ dwr.engine._textHtmlHandler = null; /** If you wish to send custom headers with every request */ dwr.engine._headers = null; /** If you wish to send extra custom request parameters with each request */ dwr.engine._parameters = null; /** Undocumented interceptors - do not use */ dwr.engine._postSeperator = "\n"; dwr.engine._defaultInterceptor = function(data) { return data; }; dwr.engine._urlRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._contentRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._replyRewriteHandler = dwr.engine._defaultInterceptor; /** Batch ids allow us to know which batch the server is answering */ dwr.engine._nextBatchId = 0; /** A list of the properties that need merging from calls to a batch */ dwr.engine._propnames = [ "rpcType", "httpMethod", "async", "timeout", "errorHandler", "warningHandler", "textHtmlHandler" ]; /** Do we stream, or can be hacked to do so? */ dwr.engine._partialResponseNo = 0; dwr.engine._partialResponseYes = 1; dwr.engine._partialResponseFlush = 2; /** Is this page in the process of unloading? */ dwr.engine._unloading = false; /** * @private Send a request. Called by the Javascript interface stub * @param path part of URL after the host and before the exec bit without leading or trailing /s * @param scriptName The class to execute * @param methodName The method on said class to execute * @param func The callback function to which any returned data should be passed * if this is null, any returned data will be ignored * @param vararg_params The parameters to pass to the above class */ dwr.engine._execute = function(path, scriptName, methodName, vararg_params) { var singleShot = false; if (dwr.engine._batch == null) { dwr.engine.beginBatch(); singleShot = true; } var batch = dwr.engine._batch; // To make them easy to manipulate we copy the arguments into an args array var args = []; for (var i = 0; i < arguments.length - 3; i++) { args[i] = arguments[i + 3]; } // All the paths MUST be to the same servlet if (batch.path == null) { batch.path = path; } else { if (batch.path != path) { dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." }); return; } } // From the other params, work out which is the function (or object with // call meta-data) and which is the call parameters var callData; var lastArg = args[args.length - 1]; if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() }; else callData = args.pop(); // Merge from the callData into the batch dwr.engine._mergeBatch(batch, callData); batch.handlers[batch.map.callCount] = { exceptionHandler:callData.exceptionHandler, callback:callData.callback }; // Copy to the map the things that need serializing var prefix = "c" + batch.map.callCount + "-"; batch.map[prefix + "scriptName"] = scriptName; batch.map[prefix + "methodName"] = methodName; batch.map[prefix + "id"] = batch.map.callCount; for (i = 0; i < args.length; i++) { dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i); } // Now we have finished remembering the call, we incr the call count batch.map.callCount++; if (singleShot) dwr.engine.endBatch(); }; /** @private Poll the server to see if there is any data waiting */ dwr.engine._poll = function() { if (!dwr.engine._activeReverseAjax) return; var batch = dwr.engine._createBatch(); batch.map.id = 0; // TODO: Do we need this?? batch.map.callCount = 1; batch.isPoll = true; if (dwr.engine._pollWithXhr == "true") { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } else { if (navigator.userAgent.indexOf("Gecko/") != -1) { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseYes; } else { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } } batch.httpMethod = "POST"; batch.async = true; batch.timeout = 0; batch.path = dwr.engine._defaultPath; batch.preHooks = []; batch.postHooks = []; batch.errorHandler = dwr.engine._pollErrorHandler; batch.warningHandler = dwr.engine._pollErrorHandler; batch.handlers[0] = { callback:function(pause) { dwr.engine._pollRetries = 0; setTimeout(dwr.engine._poll, pause); } }; // Send the data dwr.engine._sendData(batch); if (batch.rpcType == dwr.engine.XMLHttpRequest && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._checkCometPoll(); } }; /** Try to recover from polling errors */ dwr.engine._pollErrorHandler = function(msg, ex) { // if anything goes wrong then just silently try again (up to 3x) after 10s dwr.engine._pollRetries++; dwr.engine._debug("Reverse Ajax poll failed (pollRetries=" + dwr.engine._pollRetries + "): " + ex.name + " : " + ex.message); if (dwr.engine._pollRetries < dwr.engine._maxPollRetries) { setTimeout(dwr.engine._poll, 10000); } else { dwr.engine._activeReverseAjax = false; dwr.engine._debug("Giving up."); } }; /** @private Generate a new standard batch */ dwr.engine._createBatch = function() { var batch = { map:{ callCount:0, page:window.location.pathname + window.location.search, httpSessionId:dwr.engine._getJSessionId(), scriptSessionId:dwr.engine._getScriptSessionId() }, charsProcessed:0, paramCount:0, parameters:{}, headers:{}, isPoll:false, handlers:{}, preHooks:[], postHooks:[], rpcType:dwr.engine._rpcType, httpMethod:dwr.engine._httpMethod, async:dwr.engine._async, timeout:dwr.engine._timeout, errorHandler:dwr.engine._errorHandler, warningHandler:dwr.engine._warningHandler, textHtmlHandler:dwr.engine._textHtmlHandler }; if (dwr.engine._preHook) batch.preHooks.push(dwr.engine._preHook); if (dwr.engine._postHook) batch.postHooks.push(dwr.engine._postHook); var propname, data; if (dwr.engine._headers) { for (propname in dwr.engine._headers) { data = dwr.engine._headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (dwr.engine._parameters) { for (propname in dwr.engine._parameters) { data = dwr.engine._parameters[propname]; if (typeof data != "function") batch.parameters[propname] = data; } } return batch; }; /** @private Take further options and merge them into */ dwr.engine._mergeBatch = function(batch, overrides) { var propname, data; for (var i = 0; i < dwr.engine._propnames.length; i++) { propname = dwr.engine._propnames[i]; if (overrides[propname] != null) batch[propname] = overrides[propname]; } if (overrides.preHook != null) batch.preHooks.unshift(overrides.preHook); if (overrides.postHook != null) batch.postHooks.push(overrides.postHook); if (overrides.headers) { for (propname in overrides.headers) { data = overrides.headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (overrides.parameters) { for (propname in overrides.parameters) { data = overrides.parameters[propname]; if (typeof data != "function") batch.map["p-" + propname] = "" + data; } } }; /** @private What is our session id? */ dwr.engine._getJSessionId = function() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length); if (cookie.indexOf(dwr.engine._sessionCookieName + "=") == 0) { return cookie.substring(dwr.engine._sessionCookieName.length + 1, cookie.length); } } return ""; }; /** @private Check for reverse Ajax activity */ dwr.engine._checkCometPoll = function() { for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { var text = ""; var iframe = dwr.engine._outstandingIFrames[i]; try { text = dwr.engine._getTextFromCometIFrame(iframe); } catch (ex) { dwr.engine._handleWarning(iframe.batch, ex); } if (text != "") dwr.engine._processCometResponse(text, iframe.batch); } if (dwr.engine._pollReq) { var req = dwr.engine._pollReq; var text = req.responseText; if (text != null) dwr.engine._processCometResponse(text, req.batch); } // If the poll resources are still there, come back again if (dwr.engine._outstandingIFrames.length > 0 || dwr.engine._pollReq) { setTimeout(dwr.engine._checkCometPoll, dwr.engine._pollCometInterval); } }; /** @private Extract the whole (executed an all) text from the current iframe */ dwr.engine._getTextFromCometIFrame = function(frameEle) { var body = frameEle.contentWindow.document.body; if (body == null) return ""; var text = body.innerHTML; // We need to prevent IE from stripping line feeds if (text.indexOf("<PRE>") == 0 || text.indexOf("<pre>") == 0) { text = text.substring(5, text.length - 7); } return text; }; /** @private Some more text might have come in, test and execute the new stuff */ dwr.engine._processCometResponse = function(response, batch) { if (batch.charsProcessed == response.length) return; if (response.length == 0) { batch.charsProcessed = 0; return; } var firstStartTag = response.indexOf("//#DWR-START#", batch.charsProcessed); if (firstStartTag == -1) { // dwr.engine._debug("No start tag (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed) + "'"); batch.charsProcessed = response.length; return; } // if (firstStartTag > 0) { // dwr.engine._debug("Start tag not at start (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed, firstStartTag) + "'"); // } var lastEndTag = response.lastIndexOf("//#DWR-END#"); if (lastEndTag == -1) { // dwr.engine._debug("No end tag. unchanged charsProcessed=" + batch.charsProcessed); return; } // Skip the end tag too for next time, remembering CR and LF if (response.charCodeAt(lastEndTag + 11) == 13 && response.charCodeAt(lastEndTag + 12) == 10) { batch.charsProcessed = lastEndTag + 13; } else { batch.charsProcessed = lastEndTag + 11; } var exec = response.substring(firstStartTag + 13, lastEndTag); dwr.engine._receivedBatch = batch; dwr.engine._eval(exec); dwr.engine._receivedBatch = null; }; /** @private Actually send the block of data in the batch object. */ dwr.engine._sendData = function(batch) { batch.map.batchId = dwr.engine._nextBatchId; dwr.engine._nextBatchId++; dwr.engine._batches[batch.map.batchId] = batch; dwr.engine._batchesLength++; batch.completed = false; for (var i = 0; i < batch.preHooks.length; i++) { batch.preHooks[i](); } batch.preHooks = null; // Set a timeout if (batch.timeout && batch.timeout != 0) { batch.timeoutId = setTimeout(function() { dwr.engine._abortRequest(batch); }, batch.timeout); } // Get setup for XMLHttpRequest if possible if (batch.rpcType == dwr.engine.XMLHttpRequest) { if (window.XMLHttpRequest) { batch.req = new XMLHttpRequest(); } // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) { batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP); } } var prop, request; if (batch.req) { // Proceed using XMLHttpRequest if (batch.async) { batch.req.onreadystatechange = function() { if (typeof dwr != 'undefined') dwr.engine._stateChange(batch); }; } // If we're polling, record this for monitoring if (batch.isPoll) { dwr.engine._pollReq = batch.req; // In IE XHR is an ActiveX control so you can't augment it like this if (!(document.all && !window.opera)) batch.req.batch = batch; } // Workaround for Safari 1.x POST bug var indexSafari = navigator.userAgent.indexOf("Safari/"); if (indexSafari >= 0) { var version = navigator.userAgent.substring(indexSafari + 7); if (parseInt(version, 10) < 400) { if (dwr.engine._allowGetForSafariButMakeForgeryEasier == "true") batch.httpMethod = "GET"; else dwr.engine._handleWarning(batch, { name:"dwr.engine.oldSafari", message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier." }); } } batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); try { batch.req.open(batch.httpMethod, request.url, batch.async); try { for (prop in batch.headers) { var value = batch.headers[prop]; if (typeof value == "string") batch.req.setRequestHeader(prop, value); } if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain"); } catch (ex) { dwr.engine._handleWarning(batch, ex); } batch.req.send(request.body); if (!batch.async) dwr.engine._stateChange(batch); } catch (ex) { dwr.engine._handleError(batch, ex); } } else if (batch.rpcType != dwr.engine.ScriptTag) { var idname = batch.isPoll ? "dwr-if-poll-" + batch.map.batchId : "dwr-if-" + batch.map.batchId; // Removed htmlfile implementation. Don't expect it to return before v3 batch.div = document.createElement("div"); // Add the div to the document first, otherwise IE 6 will ignore onload handler. document.body.appendChild(batch.div); batch.div.innerHTML = "<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='" + idname + "' name='" + idname + "' onload='dwr.engine._iframeLoadingComplete (" + batch.map.batchId + ");'></iframe>"; batch.document = document; batch.iframe = batch.document.getElementById(idname); batch.iframe.batch = batch; batch.mode = batch.isPoll ? dwr.engine._ModeHtmlPoll : dwr.engine._ModeHtmlCall; if (batch.isPoll) dwr.engine._outstandingIFrames.push(batch.iframe); request = dwr.engine._constructRequest(batch); if (batch.httpMethod == "GET") { batch.iframe.setAttribute("src", request.url); } else { batch.form = batch.document.createElement("form"); batch.form.setAttribute("id", "dwr-form"); batch.form.setAttribute("action", request.url); batch.form.setAttribute("style", "display:none;"); batch.form.setAttribute("target", idname); batch.form.target = idname; batch.form.setAttribute("method", batch.httpMethod); for (prop in batch.map) { var value = batch.map[prop]; if (typeof value != "function") { var formInput = batch.document.createElement("input"); formInput.setAttribute("type", "hidden"); formInput.setAttribute("name", prop); formInput.setAttribute("value", value); batch.form.appendChild(formInput); } } batch.document.body.appendChild(batch.form); batch.form.submit(); } } else { batch.httpMethod = "GET"; // There's no such thing as ScriptTag using POST batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); batch.script = document.createElement("script"); batch.script.id = "dwr-st-" + batch.map["c0-id"]; batch.script.src = request.url; document.body.appendChild(batch.script); } }; dwr.engine._ModePlainCall = "/call/plaincall/"; dwr.engine._ModeHtmlCall = "/call/htmlcall/"; dwr.engine._ModePlainPoll = "/call/plainpoll/"; dwr.engine._ModeHtmlPoll = "/call/htmlpoll/"; /** @private Work out what the URL should look like */ dwr.engine._constructRequest = function(batch) { // A quick string to help people that use web log analysers var request = { url:batch.path + batch.mode, body:null }; if (batch.isPoll == true) { request.url += "ReverseAjax.dwr"; } else if (batch.map.callCount == 1) { request.url += batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr"; } else { request.url += "Multiple." + batch.map.callCount + ".dwr"; } // Play nice with url re-writing var sessionMatch = location.href.match(/jsessionid=([^?]+)/); if (sessionMatch != null) { request.url += ";jsessionid=" + sessionMatch[1]; } var prop; if (batch.httpMethod == "GET") { // Some browsers (Opera/Safari2) seem to fail to convert the callCount value // to a string in the loop below so we do it manually here. batch.map.callCount = "" + batch.map.callCount; request.url += "?"; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.url += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&"; } } request.url = request.url.substring(0, request.url.length - 1); } else { // PERFORMANCE: for iframe mode this is thrown away. request.body = ""; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = []; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { buf.push(prop + "=" + batch.map[prop] + dwr.engine._postSeperator); } } request.body = buf.join(""); } else { // Use string concat on other browsers (fastest) for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.body += prop + "=" + batch.map[prop] + dwr.engine._postSeperator; } } } request.body = dwr.engine._contentRewriteHandler(request.body); } request.url = dwr.engine._urlRewriteHandler(request.url); return request; }; /** @private Called by XMLHttpRequest to indicate that something has happened */ dwr.engine._stateChange = function(batch) { var toEval; if (batch.completed) { dwr.engine._debug("Error: _stateChange() with batch.completed"); return; } var req = batch.req; try { if (req.readyState != 4) return; } catch (ex) { dwr.engine._handleWarning(batch, ex); // It's broken - clear up and forget this call dwr.engine._clearUp(batch); return; } if (dwr.engine._unloading) { dwr.engine._debug("Ignoring reply from server as page is unloading."); return; } try { var reply = req.responseText; reply = dwr.engine._replyRewriteHandler(reply); var status = req.status; // causes Mozilla to except on page moves if (reply == null || reply == "") { dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data received from server" }); } else if (status != 200) { dwr.engine._handleError(batch, { name:"dwr.engine.http." + status, message:req.statusText }); } else { var contentType = req.getResponseHeader("Content-Type"); if (!contentType.match(/^text\/plain/) && !contentType.match(/^text\/javascript/)) { if (contentType.match(/^text\/html/) && typeof batch.textHtmlHandler == "function") { batch.textHtmlHandler({ status:status, responseText:reply, contentType:contentType }); } else { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidMimeType", message:"Invalid content type: '" + contentType + "'" }); } } else { // Comet replies might have already partially executed if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._processCometResponse(reply, batch); } else { if (reply.search("//#DWR") == -1) { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" }); } else { toEval = reply; } } } } } catch (ex) { dwr.engine._handleWarning(batch, ex); } dwr.engine._callPostHooks(batch); // Outside of the try/catch so errors propogate normally: dwr.engine._receivedBatch = batch; if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, ""); dwr.engine._eval(toEval); dwr.engine._receivedBatch = null; dwr.engine._validateBatch(batch); if (!batch.completed) dwr.engine._clearUp(batch); }; /** * @private This function is invoked when a batch reply is received. * It checks that there is a response for every call in the batch. Otherwise, * an error will be signaled (a call without a response indicates that the * server failed to send complete batch response). */ dwr.engine._validateBatch = function(batch) { // If some call left unreplied, report an error. if (!batch.completed) { for (var i = 0; i < batch.map.callCount; i++) { if (batch.handlers[i] != null) { dwr.engine._handleWarning(batch, { name:"dwr.engine.incompleteReply", message:"Incomplete reply from server" }); break; } } } } /** @private Called from iframe onload, check batch using batch-id */ dwr.engine._iframeLoadingComplete = function(batchId) { // dwr.engine._checkCometPoll(); var batch = dwr.engine._batches[batchId]; if (batch) dwr.engine._validateBatch(batch); } /** @private Called by the server: Execute a callback */ dwr.engine._remoteHandleCallback = function(batchId, callId, reply) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true); return; } // Error handlers inside here indicate an error that is nothing to do // with DWR so we handle them differently. try { var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (!handlers) { dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true); } else if (typeof handlers.callback == "function") handlers.callback(reply); } catch (ex) { dwr.engine._handleError(batch, ex); } }; /** @private Called by the server: Handle an exception for a call */ dwr.engine._remoteHandleException = function(batchId, callId, ex) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; } var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; } if (ex.message == undefined) ex.message = ""; if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex); else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); }; /** @private Called by the server: The whole batch is broken */ dwr.engine._remoteHandleBatchException = function(ex, batchId) { var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: Reverse ajax should not be used */ dwr.engine._remotePollCometDisabled = function(ex, batchId) { dwr.engine.setActiveReverseAjax(false); var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: An IFrame reply is about to start */ dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) { if (iframe != null) dwr.engine._receivedBatch = iframe.batch; dwr.engine._callPostHooks(dwr.engine._receivedBatch); }; /** @private Called by the server: An IFrame reply is just completing */ dwr.engine._remoteEndIFrameResponse = function(batchId) { dwr.engine._clearUp(dwr.engine._receivedBatch); dwr.engine._receivedBatch = null; }; /** @private This is a hack to make the context be this window */ dwr.engine._eval = function(script) { if (script == null) return null; if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; } // dwr.engine._debug("Exec: [" + script + "]", true); return eval(script); }; /** @private Called as a result of a request timeout */ dwr.engine._abortRequest = function(batch) { if (batch && !batch.completed) { dwr.engine._clearUp(batch); if (batch.req) batch.req.abort(); dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" }); } }; /** @private call all the post hooks for a batch */ dwr.engine._callPostHooks = function(batch) { if (batch.postHooks) { for (var i = 0; i < batch.postHooks.length; i++) { batch.postHooks[i](); } batch.postHooks = null; } }; /** @private A call has finished by whatever means and we need to shut it all down. */ dwr.engine._clearUp = function(batch) { if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; } if (batch.completed) { dwr.engine._debug("Warning: Double complete", true); return; } // IFrame tidyup if (batch.div) batch.div.parentNode.removeChild(batch.div); if (batch.iframe) { // If this is a poll frame then stop comet polling for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { if (dwr.engine._outstandingIFrames[i] == batch.iframe) { dwr.engine._outstandingIFrames.splice(i, 1); } } batch.iframe.parentNode.removeChild(batch.iframe); } if (batch.form) batch.form.parentNode.removeChild(batch.form); // XHR tidyup: avoid IE handles increase if (batch.req) { // If this is a poll frame then stop comet polling if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null; delete batch.req; } // Timeout tidyup if (batch.timeoutId) { clearTimeout(batch.timeoutId); delete batch.timeoutId; } if (batch.map && (batch.map.batchId || batch.map.batchId == 0)) { delete dwr.engine._batches[batch.map.batchId]; dwr.engine._batchesLength--; } batch.completed = true; // If there is anything on the queue waiting to go out, then send it. // We don't need to check for ordered mode, here because when ordered mode // gets turned off, we still process *waiting* batches in an ordered way. if (dwr.engine._batchQueue.length != 0) { var sendbatch = dwr.engine._batchQueue.shift(); dwr.engine._sendData(sendbatch); } }; /** @private Abort any XHRs in progress at page unload (solves zombie socket problems in IE). */ dwr.engine._unloader = function() { dwr.engine._unloading = true; // Empty queue of waiting ordered requests dwr.engine._batchQueue.length = 0; // Abort any ongoing XHRs and clear their batches for (var batchId in dwr.engine._batches) { var batch = dwr.engine._batches[batchId]; // Only process objects that look like batches (avoid prototype additions!) if (batch && batch.map) { if (batch.req) { batch.req.abort(); } dwr.engine._clearUp(batch); } } }; // Now register the unload handler if (window.addEventListener) window.addEventListener('unload', dwr.engine._unloader, false); else if (window.attachEvent) window.attachEvent('onunload', dwr.engine._unloader); /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleError = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleWarning = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex); else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** * @private Marshall a data item * @param batch A map of variables to how they have been marshalled * @param referto An array of already marshalled variables to prevent recurrsion * @param data The data to be marshalled * @param name The name of the data being marshalled */ dwr.engine._serializeAll = function(batch, referto, data, name) { if (data == null) { batch.map[name] = "null:null"; return; } switch (typeof data) { case "boolean": batch.map[name] = "boolean:" + data; break; case "number": batch.map[name] = "number:" + data; break; case "string": batch.map[name] = "string:" + encodeURIComponent(data); break; case "object": if (data instanceof String) batch.map[name] = "String:" + encodeURIComponent(data); else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data; else if (data instanceof Number) batch.map[name] = "Number:" + data; else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime(); else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name); else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name); break; case "function": // We just ignore functions. break; default: dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." }); batch.map[name] = "default:" + data; break; } }; /** @private Have we already converted this object? */ dwr.engine._lookup = function(referto, data, name) { var lookup; // Can't use a map: getahead.org/ajax/javascript-gotchas for (var i = 0; i < referto.length; i++) { if (referto[i].data == data) { lookup = referto[i]; break; } } if (lookup) return "reference:" + lookup.name; referto.push({ data:data, name:name }); return null; }; /** @private Marshall an object */ dwr.engine._serializeObject = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; // This check for an HTML is not complete, but is there a better way? // Maybe we should add: data.hasChildNodes typeof "function" == true if (data.nodeName && data.nodeType) { return dwr.engine._serializeXml(batch, referto, data, name); } // treat objects as an associative arrays var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{"; var element; for (element in data) { if (typeof data[element] != "function") { batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[element], childName); reply += encodeURIComponent(element) + ":reference:" + childName + ", "; } } if (reply.substring(reply.length - 2) == ", ") { reply = reply.substring(0, reply.length - 2); } reply += "}"; return reply; }; /** @private Returns the classname of supplied argument obj */ dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError }; dwr.engine._getObjectClassName = function(obj) { // Try to find the classname by stringifying the object's constructor // and extract <class> from "function <class>". if (obj && obj.constructor && obj.constructor.toString) { var str = obj.constructor.toString(); var regexpmatch = str.match(/function\s+(\w+)/); if (regexpmatch && regexpmatch.length == 2) { return regexpmatch[1]; } } // Now manually test against the core Error classes, as these in some // browsers successfully match to the wrong class in the // Object.toString() test we will do later if (obj && obj.constructor) { for (var errorname in dwr.engine._errorClasses) { if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname; } } // Try to find the classname by calling Object.toString() on the object // and extracting <class> from "[object <class>]" if (obj) { var str = Object.prototype.toString.call(obj); var regexpmatch = str.match(/\[object\s+(\w+)/); if (regexpmatch && regexpmatch.length==2) { return regexpmatch[1]; } } // Supplied argument was probably not an object, but what is better? return "Object"; }; /** @private Marshall an object */ dwr.engine._serializeXml = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; var output; if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data); else if (data.toXml) output = data.toXml; else output = data.innerHTML; return "XML:" + encodeURIComponent(output); }; /** @private Marshall an array */ dwr.engine._serializeArray = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = ["Array:["]; for (var i = 0; i < data.length; i++) { if (i != 0) buf.push(","); batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); buf.push("reference:"); buf.push(childName); } buf.push("]"); reply = buf.join(""); } else { // Use string concat on other browsers (fastest) var reply = "Array:["; for (var i = 0; i < data.length; i++) { if (i != 0) reply += ","; batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); reply += "reference:"; reply += childName; } reply += "]"; } return reply; }; /** @private Convert an XML string into a DOM object. */ dwr.engine._unserializeDocument = function(xml) { var dom; if (window.DOMParser) { var parser = new DOMParser(); dom = parser.parseFromString(xml, "text/xml"); if (!dom.documentElement || dom.documentElement.tagName == "parsererror") { var message = dom.documentElement.firstChild.data; message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data; throw message; } return dom; } else if (window.ActiveXObject) { dom = dwr.engine._newActiveXObject(dwr.engine._DOMDocument); dom.loadXML(xml); // What happens on parse fail with IE? return dom; } else { var div = document.createElement("div"); div.innerHTML = xml; return div; } }; /** @param axarray An array of strings to attempt to create ActiveX objects from */ dwr.engine._newActiveXObject = function(axarray) { var returnValue; for (var i = 0; i < axarray.length; i++) { try { returnValue = new ActiveXObject(axarray[i]); break; } catch (ex) { /* ignore */ } } return returnValue; }; /** @private Used internally when some message needs to get to the programmer */ dwr.engine._debug = function(message, stacktrace) { var written = false; try { if (window.console) { if (stacktrace && window.console.trace) window.console.trace(); window.console.log(message); written = true; } else if (window.opera && window.opera.postError) { window.opera.postError(message); written = true; } } catch (ex) { /* ignore */ } if (!written) { var debug = document.getElementById("dwr-debug"); if (debug) { var contents = message + "<br/>" + debug.innerHTML; if (contents.length > 2048) contents = contents.substring(0, 2048); debug.innerHTML = contents; } } };

// Provide a default path to dwr.engine if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; if (UserDataDWRFacade == null) var UserDataDWRFacade = {}; UserDataDWRFacade._path = '/webapps/assessment/dwr_open'; UserDataDWRFacade.getStringTempScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringTempScope', p0, callback); } UserDataDWRFacade.setStringTempScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringTempScope', p0, p1, callback); } UserDataDWRFacade.getStringPermScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringPermScope', p0, callback); } UserDataDWRFacade.setStringPermScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringPermScope', p0, p1, callback); }

var assessment = {}; assessment.submitDrawerUrl=""; assessment.questionVisibility = true; assessment.blockToLeaveVisible = 'null'; assessment.savingRightNow = false; // aka - might rename to (if not remove eventually): assessment.nonceHasBeenUsed assessment.submittingRightNow = false; // set to true when we're submitting the assessment as a whole - used to block other submits assessment.gotNewNonceIdFlag = false; assessment.userReallyWantsToSubmit = false; assessment.isInUse = false; assessment.safetyNetDelay = 60; // Number of seconds to wait before telling the user that it is taking too long. assessment.alreadySavedSafetyNetId = null; assessment.saveSequence = 0; // TODO: Set from the server based on time when page is loaded assessment.isOneByOne = false; /************************** methods related to pool and test canvas per question add/edit/ copy/ remove********************/ function findAssessmentForm() { var assessmentForm = null; var documentForms = document.getElementsByTagName('form'); assessmentForm = $A( documentForms ).find( function( documentForm ) { var theAction = $( documentForm ).readAttribute( "action" ); return theAction.indexOf( "webapps/assessment/" ) != -1; }); return assessmentForm; } function submit(method, theForm) { if (!validateForm()) { return false; } if ( !theForm ) { // no form specified so try to find it theForm = findAssessmentForm(); } if(method == "createNew") { theForm.elements.assessmentId.value = null; } theForm.elements.method.value = method; theForm.submit(); return false; } function getFormByInputElement( elementName ) { var element = document.getElementsByName( elementName )[0]; return element.form; } // TODO: Rewrite this file to put all these methods into a namespace like assessment.XXX function modifyAssessment() { submit('modifyAssessment'); } function setQuestionId(questionId) { getFormByInputElement("questionId").questionId.value = questionId; } function modifyContentSettings( val ) { // properties|feedback|presentation|metadata submit( val ); } function addQuestionBefore(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated var theForm = getFormByInputElement("relativeId"); assessment.checkTheCheckBox (qId); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionBefore', theForm); } function addQuestionAfter(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (qId); var theForm = getFormByInputElement("relativeId"); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionAfter', theForm); } function addNGQuestion(sectionId, qtype, position) { var theForm = getFormByInputElement("questionType"); theForm.questionType.value = qtype; theForm.sectionId.value = sectionId; theForm.position.value = position; submit('addQuestion', theForm); } function modifyAssessmentInfo() { submit('modifyAssessmentInfo'); } function modifyHelper(questionId, method) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); setQuestionId(questionId); submit(method, theForm); } function modifyQuestion(questionId) { modifyHelper(questionId, 'modifyQuestion'); } function modifyRandomBlock(questionId) { modifyHelper(questionId, 'modifyRandomBlock'); } function modifyLinkQuestion(questionId) { getFormByInputElement("isLinkedQuestion").isLinkedQuestion.value = 'true'; modifyQuestion(questionId); } function copyQuestion(sectionId, questionId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("sectionId"); theForm.sectionId.value = sectionId; setQuestionId(questionId); submit('copyQuestion', theForm); } function copyLinkQuestion(sectionId, questionId, qbId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); theForm.sectionId.value = sectionId; theForm.questionBlockId.value = qbId; setQuestionId(questionId); submit('copyLinkQuestion', theForm); } function remove(id, type ) { if ( assessment.isInUse ) { var suffix = ( assessment.type == 'Survey'?'.survey':''); if ( !type ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_question.regrade" + suffix ) ); } else if ( type == 'question_link' ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.remove_question_link.regrade" + suffix ) ); } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_item.regrade" + suffix ) ); } } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString("confirm.delete_item")); } } assessment.removeEntity= function(id, message) { if (window.confirm(message)) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (id); var theForm = getFormByInputElement("questionId"); setQuestionId(id); submit('remove', theForm); } }; function reposition(id, position) { setQuestionId(id); var theForm = getFormByInputElement("questionId"); theForm.position.value = position; submit('reposition', theForm); } assessment.submitModifyQuestion = function() { submit('modifyQuestion'); }; assessment.cancelWarning = function() { var theForm = getFormByInputElement("methodEx"); theForm.elements.methodEx.value = 'modifyAssessment'; theForm.submit(); return false; }; function isCheckbox(element) { return (element && element.type && element.type == "checkbox"); } /******************* methods related to bulk update logic on the test/pool canvas*********************/ assessment.removeAll= function(container,showCount) { var count = 0; var inputs = list.checkboxes.get(container); for(var i=0; i<inputs.length; i++){ if(isCheckbox(inputs[i]) && inputs[i].checked ) { count ++; } } if (showCount?window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count",[count])):window.confirm(ASSESSMENT_RESOURCES.getString("confirm.delete_items")) ) { submit('removeBulk'); } }; assessment.removeAllPublished= function(message) { if (window.confirm(message)) { submit('removeBulk'); } }; assessment.updatePointsForAll = function(){ var element = document.getElementsByName("points_bulk"); if ( assessment.validatePoints(element) && ( !assessment.isInUse || confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) ) { submit('updatePointsBulk'); } return false; }; assessment.updatePointsInput = function(event) { var elements = document.getElementsByName("points_bulk"); var element = Event.findElement(event); var pointsValue = element.value; if (pointsValue ) { if (elements) { elements[0].value = pointsValue; elements[1].value = pointsValue; } } }; /*************************** common js methods for assessments**********************************************/ /** validate Input Field value **/ assessment.validateMiniFlyoutInputValue = function(element){ var value = null; if($(element) ) { value = $(element).value; } if ( !value ) { return ASSESSMENT_RESOURCES.getString("update.input.value"); } if ( !isNumeric( value, true ) ) { return ASSESSMENT_RESOURCES.getString("update.input.valid.value"); } return ""; }; assessment.validatePoints = function(element){ if (element) { var pointsTextBox = element[0] || element[1]; var pointsValue = pointsTextBox.value; return assessment.validateNumericInput(pointsTextBox, pointsValue, ASSESSMENT_RESOURCES.getString("update.points.value"), ASSESSMENT_RESOURCES.getString("update.points.valid.value"),true); } return true; }; assessment.validateCount = function(element) { if (element) { var countValue = element.value; return assessment.validateNumericInput(element, countValue, ASSESSMENT_RESOURCES.getString("update.count.value"), ASSESSMENT_RESOURCES.getString("update.count.valid.value")); } return true; }; assessment.validateNumericInput = function(textBox, value, blankMsg, badMsg,isFloat) { var checkForFloats = false; var numFormat = LOCALE_SETTINGS.getString('float.format'); var isValidNum = false; var re, trimmedVal; trimmedVal = value.trim(); if(isFloat != 'null') { checkForFloats = true; } if ( !value ) { alert(blankMsg); textBox.focus(); return false; } var numVal = null; if (!checkForFloats) { numVal = parseInt( value, 10); isValidNum = (!isNaN(numVal) && numVal >= 0); } else if ( typeof ( numFormat ) != 'undefined' ) { // hand parse for l10n re = new RegExp( numFormat ); isValidNum = ( trimmedVal.search( re ) === 0 ); } else { // try to use platform native (non-localized) numVal = parseFloat( trimmedVal ); isValidNum = !isNaN( numVal ); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test( trimmedVal.substring( numVal.toString().length ) ); } } if (!isValidNum) { alert(badMsg); textBox.value=""; textBox.focus(); return false; } return true; }; function back() { submit('back'); } function persistDisplayPreference(element, value){ UserDataDWRFacade.setStringTempScope( element, value ); } assessment.refreshParent = function( url ) { if ( window.opener ) { window.opener.location.href = url; if ( window.opener.progressWindow ) { window.opener.progressWindow.close(); } window.close(); } else { // We expected to be in a new window, but aren't. Perhaps this was a link from an announcement? window.location = url; } }; assessment.checkTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = true; } }; assessment.unCheckTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = false; } }; var startX; //set x offset of bar in pixels var startY; var padding = 53; var verticalpos="fromtop"; //enter "fromtop" or "frombottom" function setPadding(pad) { padding = pad; } function iecompattest(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body; } function resetInstructionHeight() { startY = document.getElementById("instructionBlock").offsetTop +document.getElementById("instructionBlock").clientHeight + padding; startX = document.getElementById("instructionBlock").offsetLeft; document.getElementById("dataCollectionContainer").style.position = "relative"; var tbh = document.getElementById("topbar").clientHeight; document.getElementById("containerdiv").style.paddingBottom = (32 + tbh) + "px"; if (document.getElementById("topbar").offsetTop !== 0) { document.getElementById("dataCollectionContainer").style.top=tbh+"px"; } } function staticbar(){ var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera; var d = document; function ml(id){ var el=d.getElementById(id); el.style.visibility="visible"; if(d.layers) { el.style=el; } el.sP=function(x,y,r) { this.style.left=x+"px"; this.style.top=y+6+"px"; if(r>-1) {this.style.right=r+"px";}; }; el.x = startX; el.y = startY; return el; } window.stayTopLeft = function() { var right = -1; var pY = ns ? window.pageYOffset : iecompattest().scrollTop; if (pY < startY) { window.ftlObj.y = startY - pY; document.getElementById("dataCollectionContainer").style.top=document.getElementById("topbar").clientHeight+4+"px"; } else { window.ftlObj.y = 0; } window.ftlObj.x = document.getElementById("instructionBlock").offsetLeft; if(page.util.isRTL()) { right = document.documentElement.clientWidth - (ftlObj.x + document.getElementById("instructionBlock").offsetWidth); } window.ftlObj.sP( window.ftlObj.x, window.ftlObj.y, right); setTimeout("stayTopLeft()", 20); }; resetInstructionHeight(); window.ftlObj = ml("topbar"); window.stayTopLeft(); } var AIM = { frame : function(c) { var n = 'f' + Math.floor(Math.random() * 99999); var d = document.createElement('DIV'); d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>'; document.body.appendChild(d); var i = document.getElementById(n); if (c && typeof(c.onComplete) == 'function') { i.onComplete = c.onComplete; } return n; }, form : function(f, name) { f.setAttribute('target', name); }, submit : function(f, c) { AIM.form(f, AIM.frame(c)); if (c && typeof(c.onStart) == 'function') { return c.onStart(); } else { return true; } }, loaded : function(id) { var i = document.getElementById(id); var d; if (i.contentDocument) { d = i.contentDocument; } else if (i.contentWindow) { d = i.contentWindow.document; } else { d = window.frames[id].document; } if (d.location.href == "about:blank") { return; } if (typeof(i.onComplete) == 'function') { i.onComplete(d.body.innerHTML); } } }; function resetContaindivHeight() { // adjust containdiv height // TODO: I don't see a reason for any of this code anymore... //if (document.getElementById('statusBlock').style.display=="" || document.getElementById('statusBlock').style.display=="inline") { // var statusHeight = document.getElementById('topbar').offsetHeight-22; // 22 is padding - be better to dynamically determine this value. //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight+statusHeight; //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} } function hideElement(element) { var msgspan=element; var msgimg=element+"img"; // TODO: I don't see a reason for any of this code anymore... //if (msgspan=="statusBlock") { // var statusHeight = document.getElementById('topbar').offsetHeight; //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight-statusHeight-22; // 22 is padding - be better to dynamically determine this value. //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} document.getElementById(msgspan).style.display="none"; document.images[msgimg].src="/images/ci/ng/more_options_dark.gif"; var alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; } function showElement(element) { var msgspan=element; var msgimg=element+"img"; document.getElementById(msgspan).style.display="inline"; document.images[msgimg].src="/images/ci/ng/less_options.gif"; var alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; if (msgspan=="statusBlock") { resetContaindivHeight(); } } function toggleElement(element){ var curStyle = document.getElementById(element).style.display; if(curStyle=="" || curStyle=="inline") { hideElement(element); persistDisplayPreference(element,'none'); } else { showElement(element); persistDisplayPreference(element,'inline'); } resetInstructionHeight(); } /********************************************* methods related to lightbox preview in pool/test canvas********************/ assessment.previewLightbox = null; assessment.copyLinkLightbox = null; assessment.showLightBox = function (event,baseContainer,numparents,previewUrl) { var e = event || window.event; // IE does not capture the event if( e && e.type == 'click') { Event.stop(e); } if ( !assessment.previewLightbox ) { assessment.previewLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 500 ,h : 375}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 125, horizontalBorder: 125 }); } assessment.previewLightbox.cfg.ajax={url:previewUrl, loadExternalScripts:true}; assessment.previewLightbox.cfg.content=null; assessment.previewLightbox.open(); }; assessment.showCopyLinkLightBox = function ( url) { var params = url.toQueryParams(); if ( !assessment.copyLinkLightbox ) { assessment.copyLinkLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 150 ,h : 200}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 50, horizontalBorder: 50 }); } assessment.copyLinkLightbox.cfg.ajax={url:'/webapps/assessment/do/authoring/questionSearch?method=copyLink&discoverUrl=' + encodeURIComponent(url) + '&course_id=' + params.course_id }; assessment.copyLinkLightbox.cfg.content=null; assessment.copyLinkLightbox.cfg.closeOnBodyClick=false; assessment.copyLinkLightbox.open(); }; assessment.showDiscover = function(url,title,width,height) { assessment.submitDrawerUrl = url; var screenX=Math.floor((screen.width)/2)-Math.floor(width/2); var screenY=Math.floor((screen.height)/2)-Math.floor(height/2)-20; var top=screenY; var left=screenX; var features="'"+'toolbar=no,scrollbars=yes,status=yes,resizable=yes,top='+ top+',left='+ left+',screenX='+ screenX+',screenY='+ screenY+',width='+ width+',height='+ height+"'"; var discover = window.open(url,title,features); if (window.focus) { if (discover) { discover.focus(); } else { alert(ASSESSMENT_RESOURCES.getString("pop.up.blocker.enabled")); } } }; assessment.discoverOptions = function(url,title,width,height,hideCopyLink){ if(!hideCopyLink) { //check if the UserPreference is set in session UserDataDWRFacade.getStringPermScope( "AssessmentUtils.DISCOVER_MODE_IS_LINKING", function( copyLinkSet ) { if (copyLinkSet == '') { assessment.showCopyLinkLightBox(url); } else{ assessment.showDiscover(url,title,width,height); } }); } else{ assessment.showDiscover(url,title,width,height); } }; assessment.onCloseCopyLinkLightbox = function ( url ) { var copyLinkId = $('copylink_link'); var copyCopyId = $('copylink_copy'); var copyLinkValueSet = false; if(copyLinkId && copyCopyId ) { copyLinkValueSet = copyLinkId.checked || copyCopyId.checked; } if ( !copyLinkValueSet ) { if (window.confirm(ASSESSMENT_RESOURCES.getString("confirm.set_copy_link"))) { assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } } else{ assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } }; /**************************** methods related to question block on the test canvas*************************************/ assessment.createQuestionBlock = function() { }; function addQuestionToBlock(questionId, assessmentType, assessmentId, courseId ) { var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=addQuestionsToQuestionBlock" + "&questionId=" +questionId + "&assessmentType=" +assessmentType + "&assessmentId=" +assessmentId + "&course_id=" +courseId; assessment.discoverOptions(url,'discover','900','675',true); } /********************** methods related to inline pool points flyout***************************/ assessment.poolFlyout = null; assessment.initPoolFlyout = function(title) { if ( !assessment.poolFlyout ) { assessment.poolFlyout = new miniFlyout.MiniFlyout({ title: title, miniFlyoutTemplate: "<label class='hideoff' for='#{inputFieldName}_id'>#{title}</label> <input id='#{inputFieldName}_id'type='text' style='width: 2em;' size='3' value='0' name='#{inputFieldName}'/> <a href='#' title='#{closeButtonName}' bb_flyout_title='Cancel' class='genericButtonImg button-3-img'><img alt='#{closeButtonName}' src='/images/ci/ng/remove_li.png'/></a> <a href='#' title='#{submitButtonName}' bb_flyout_title='Submit' class='genericButtonImg button-3-img'><img alt='#{submitButtonName}' src='/images/ci/ng/checkmark_li.png'/></a>", inputFieldName: "inline_points", errorMessage: page.bundle.getString("points.failure"), miniFlyoutDivClass: "liveArea liveArea-slim", onSubmitValidate : "return assessment.validateMiniFlyoutInputValue('inline_points_id')" }); } miniFlyout.closeCurrentMiniFlyout(); }; assessment.showPoolFlyout = function (event,title,assessmentId,id, courseId) { var e = event || window.event; // IE does not capture the event var aLink = Event.element(e); if( e && e.type == 'click') { Event.stop(e); } assessment.initPoolFlyout(title); assessment.poolFlyout.cfg.openLink = aLink ; assessment.poolFlyout.cfg.containerId = aLink.parentNode.parentNode; assessment.poolFlyout.cfg.inputFieldDefaultSource = "ipoints_" + id; assessment.poolFlyout.cfg.inputFieldName= "inline_points"; assessment.poolFlyout.cfg.onSubmit = "return assessment.saveQuestionPoints('" + assessmentId + "','" + id + "','" + courseId + "',false, false, assessment.poolFlyout.cfg.containerId);"; assessment.poolFlyout.open(); }; /*************************************************** methods related to test canvas selection by type*******************/ assessment.selectByType = function(container) { var selected = document.getElementsByName('selectbyQuestionType')[0];// either use 0 or 1, since both are updated to the same var checkboxes = list.checkboxes.get(container); for ( var i=0; i < checkboxes.length; ++i ) { checkboxes[ i ].checked = false; } var className = selected.options[selected.selectedIndex].value; checkboxes.each( function(e){ if(e.className.trim() ==className.trim()) { e.checked=true; } } ); $('selectbyQuestionType_idTop').options[selected.selectedIndex].selected=true; $('selectbyQuestionType_idBot').options[selected.selectedIndex].selected=true; }; assessment.toggleQuestionBlockDiv = function(rawId){ var ul = $('questionBlockDiv'+rawId); var a = $('questionBlockDivLink'+rawId).getElementsByTagName('a')[0]; Effect.toggle(ul, 'blind', { duration: 0.3 }); if(ul.style.display=="none"){ a.className="itemHead itemHeadOpen"; } else if(ul.style.display=="block" || ul.style.display==""){ a.className="itemHead"; } return false; }; /************************** methods related to discover drawer functionality********************************************/ assessment.inBasicDiscoverMode = function () { if (document.copyQuestionsForm.method.value == 'save') { return true; } return false; }; assessment.cancelDrawer = function() { var myDrawer = drawer.model.getCurrentInstance(); myDrawer.discard(); document.copyQuestionsForm.elements.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener ) { //close question discovery popup window.close(); } return false; }; assessment.cancelRandomBlock = function () { document.copyQuestionsForm.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener !== null) { //close question discovery popup window.close(); } return false; }; function findAndDisableInputElements(el) { if (el === null) { return; } var elems = el.getElementsByTagName('input'); for ( var i = 0; i < elems.length; i++ ) { el.addClassName('disabled'); el.disabled = true; } } /****************** Ajax method related to Test/pool canvas***************************************************/ function postAndUpdateCanvas(form) { var method = form.method.value; var assessmentId = form.assessmentId.value; var courseId = form.course_id.value; var nonceId = nonceUtil.getNonceId('bb-question-discover'); var questionId = ""; if (form.questionId ) { questionId = form.questionId.value; } var url = "/webapps/assessment/do/authoring/copyQuestions?method=" +method + "&assessmentId="+assessmentId + "&course_id=" + courseId + "&sectionId=" + form.sectionId.value + "&assessmentType=" +form.assessmentType.value + "&itemIds=" +form.itemIds.value + "&overridePoints=" +form.overridePoints.value + "&questionId=" +questionId + "&ajaxMode=true" + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (form.searchCriterion !== null) { url = url + "&searchCriterion=" + encodeURIComponent(form.searchCriterion.value); } findAndDisableInputElements( $('cartSubmit') ); var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { window.opener.location="/webapps/assessment/do/authoring/modifyAssessment?method=modifyAssessment&assessmentId="+assessmentId+"&course_id="+courseId; if (json !== null) { // capture any error message and display if (json.errorMessage ) { // exception message looks ugly for the end-user, hence use a more user-friendly message to indicate the ajax refresh failed new page.InlineConfirmation("error", json.errorMessage, false ); } else if (json.successMessage ) { // WIP // var startingEl = window.parent.document.getElementById('blockstart_' + questionId); // new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false ); } } setTimeout('window.close()', 1500); }, onFailure: function(transport, json) { new page.InlineConfirmation("error", "Failure post discover pop-up", false ); } }); } assessment.submitRandomBlock = function () { if ($('listContainer_datatable')) { var searchCriterion = activeFilter.getSearchCriteriaInstance(false).getSearchCriteriaAsXml(); document.copyQuestionsForm.searchCriterion.value = searchCriterion; if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } } else { alert(ASSESSMENT_RESOURCES.getString("cannot.submit.with.no.matching.questions")); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.submitDrawer = function () { var myDrawer = drawer.model.getCurrentInstance(); var selectedItems = myDrawer.getItems(true); var i; var allIds = ""; for (i=0;i<selectedItems.length;i++) { var qId = selectedItems[i].itemId; var mode = selectedItems[i].mode; allIds += qId + ":" + mode + ","; } document.copyQuestionsForm.itemIds.value = allIds; myDrawer.discard(); if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.OnCompleteUpdateCanvas = function(questionId, req, showNestedReceipt) { var json = req.responseText.evalJSON( true ); var pointsEl = $s('ipoints_' + questionId); var totalQuestionsCountEl = $s('totalNoQuestions' + questionId); var currentQuestionCountEl = $s('questionCount' + questionId); var totalBlockPointsEl = $s('totalPoints_' + questionId); var totalTestPointsEl =$s('totalTestPoints'); var totalQuestionsEl = $s('totalQuestions'); var startingEl = $s('blockstart_' + questionId); if( !json.errorMessage && pointsEl && json.points ) { // update per question points pointsEl.childNodes[0].nodeValue = json.points; } if( !json.errorMessage && totalQuestionsCountEl && json.totalQuestionsCount ) { // update per question points totalQuestionsCountEl.childNodes[0].nodeValue = json.totalQuestionsCount; } if( !json.errorMessage && currentQuestionCountEl && json.currentQuestionsCount ) { // update per question points currentQuestionCountEl.childNodes[0].nodeValue = json.currentQuestionsCount; } if( !json.errorMessage && totalBlockPointsEl && json.totalBlockPoints ) { // update the total points totalBlockPointsEl.childNodes[0].nodeValue = json.totalBlockPoints; } if( !json.errorMessage && totalQuestionsEl && json.totalQuestions ) { // update the total questions totalQuestionsEl.innerHTML = json.totalQuestions; } if( !json.errorMessage && totalTestPointsEl && json.totalTestPoints ) { // update total Test points, not for survey or pool totalTestPointsEl.innerHTML = json.totalTestPoints; } if (showNestedReceipt) { if (json.securityErrorMsg ) { new page.NestedInlineConfirmation("error", json.securityErrorMsg, true, startingEl, true); } else if (json.successMessage ) { if (json.successMessage.indexOf('regrading_queued_status')> 0) { // If we are displaying a confirmation including regrading status then DO NOT fade it away - let it stay and get updated. new page.NestedInlineConfirmation("success", json.successMessage, false, startingEl, true); } else { new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false); } } } assessment.result = json.errorMessage; assessment.setQuestionNumbers(); }; assessment.removeQuestionsFromBlock= function(listId, questionBlockId, courseId,assessmentId) { var allcheckBoxes = list.checkboxes.get(listId); var checkedCount = 0; var ids = ""; for (var i = 0; i < allcheckBoxes.length; i++) { var separator = (i == (allcheckBoxes.length - 1)) ? " " : ','; if (allcheckBoxes[i].checked ) { checkedCount ++; ids = ids + allcheckBoxes[i].value + separator; } } if (window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count", [checkedCount]))) { // ajax request var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + questionBlockId); var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=removeQuestionsFromQuestionBlock" + "&block_id=" + questionBlockId + "&course_id=" + courseId + "&assessment_id=" + assessmentId + "&questionIds=" + ids + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; nonceId.value = json.nonceId; inventoryList.ajaxPostOnClick(null, listId); if(json.errorMessage ) { new page.NestedInlineConfirmation("error", json.errorMessage, false, startingEl, false); } }, onSuccess: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); }, onFailure: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); } }); } }; assessment.result = ""; assessment.saveQuestionCount = function(assessmentId, blockId, courseId, forRandomBlock ) { var countEl = document.getElementsByName('question_count')[0]; var originalCountEl = document.getElementById('questionCount' + blockId); var originalCount = originalCountEl.childNodes[0].nodeValue; var newCount = countEl.value; if (newCount == originalCount) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + blockId); var url = "/webapps/assessment/do/authoring/modify"+(forRandomBlock?"Random":"Question")+"Block?method=saveQuestionCount" + "&block_id="+blockId + "&course_id=" + courseId + "&new_count=" + newCount + "&assessment_id=" + assessmentId + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(req) { var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); }, onFailure: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); } }); return assessment.result; }; assessment.updateExtraCredit = function (newExtraCreditValue, questionId) { var extraCreditDiv = $('extra_credit_' + questionId); if (extraCreditDiv) { if (newExtraCreditValue) { extraCreditDiv.removeClassName('hidden'); extraCreditDiv.addClassName('extraCredit'); } else { extraCreditDiv.addClassName('hidden'); extraCreditDiv.removeClassName('extraCredit'); } } }; assessment.updateFullCredit = function (newFullCredit, questionId) { document.getElementById('original_fullCredit_value_' + questionId).value = newFullCredit.toString(); if (newFullCredit) { document.getElementById('full_credit_' + questionId).show(); } else { document.getElementById('full_credit_' + questionId).hide(); } }; // copied or linked question assessment.saveQuestionPoints = function(assessmentId, questionId, courseId, isBlock, isInUse, containerId ) { var pointsToSave = document.getElementsByName('inline_points'); var extraCredit =$s('inline_points_extra_credit_id'); var newExtraCreditValue = false; if(extraCredit) { newExtraCreditValue = extraCredit.checked; } var newPoints = pointsToSave[0].value; var originalPointsEl = document.getElementById('ipoints_' + questionId); var originalExtraCreditValue = false; var originalExtraCreditEl = $('extra_credit_' + questionId); if(originalExtraCreditEl) { originalExtraCreditValue = !originalExtraCreditEl.hasClassName('hidden'); } var originalPoints; if( originalPointsEl.childNodes ) { originalPoints = originalPointsEl.childNodes[0].nodeValue; } var originalFullCredit; var newFullCredit; var fullCreditCheckbox = document.getElementById('inline_points_full_credit_' + questionId); if (fullCreditCheckbox !== null) { newFullCredit = fullCreditCheckbox.checked; originalFullCredit = document.getElementById('original_fullCredit_value_' + questionId).value; } if ( (newPoints == originalPoints ) && ( originalExtraCreditValue == newExtraCreditValue ) && (!fullCreditCheckbox || (originalFullCredit == newFullCredit.toString())) ) { return ""; } if ( isInUse && !confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); if( !extraCredit ) { newExtraCreditValue = ""; } if( !isBlock) { isBlock = false; } else { isBlock = true; } var url = "/webapps/assessment/do/authoring/modifyAssessment?method=updateQuestionPoints" + "&question_id=" + questionId + "&course_id=" + courseId + "&points_value=" + newPoints + "&extra_credit=" + newExtraCreditValue + "&assessment_id=" + assessmentId + "&is_Block=" + isBlock + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (fullCreditCheckbox) { url = url + "&full_credit=" + newFullCredit; } new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req){ var json = req.responseText.evalJSON( true ); var showNestedReceipt = false; if( !containerId ) { showNestedReceipt = true; } assessment.OnCompleteUpdateCanvas(questionId,req,showNestedReceipt); if(extraCredit) { assessment.updateExtraCredit(newExtraCreditValue,questionId); } if (fullCreditCheckbox) { assessment.updateFullCredit(newFullCredit,questionId); } if (!showNestedReceipt) { // show receipt in pool , table cell var status_msg = null; if (json.successMessage != "") { status_msg = $('status_msg_succ'); } var link = containerId.down(1); link.hide(); containerId.appendChild(status_msg); (status_msg).show(); setTimeout( function(){ (status_msg).fade({ duration: 0.5 }); },500); setTimeout( function(){ link.appear({duration:0.5}); },1000); link.focus(); } }, onFailure: function(req){ new page.InlineConfirmation("error", page.bundle.getString("updatePointsFailed"), false); } }); return assessment.result; }; assessment.setDefaultLinkingMode = function(isLinkingMode, courseIdStr) { var courseId = courseIdStr || document.copyQuestionsForm.course_id.value; var url = "/webapps/assessment/do/authoring/questionSearch?method=saveLinkingMode" + "&linkingMode="+isLinkingMode+ "&course_id=" +courseId ; new Ajax.Request(url, { method: 'post', onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { document.body.style.cursor = 'default'; }, onSuccess: function(transport, json) { }, onFailure: function(transport, json) { } }); }; assessment.setDisplayFullText = function(displayFull, listId) { var extras = []; // Note - Constants.DISPLAY_FULL_TEXT = "displayFullText" extras.displayFullText=displayFull; inventoryList.ajaxPostOnClick(null, listId, extras, true); }; assessment.rewriteSectionForScreenReader = function(elementName) { var element = document.getElementById(elementName); element.setAttribute("aria-live", "assertive"); element.setAttribute("aria-relevant", "all"); element.setAttribute("aria-atomic", "true"); element.setAttribute("aria-busy", "true"); var myContents = element.innerHTML; element.innerHTML = myContents; element.setAttribute("aria-busy", "false"); return false; }; assessment.clearQuestionModifiedStatuses = function() { // Called on page load to make sure we don't have any stranded questions-to-monitor kicking around. assessment.questions_to_monitor = []; assessment.questions_to_monitor_index = 0; }; assessment.QMonitor = Class.create(); assessment.QMonitor.prototype = { initialize: function( entity, index) { this.index = index; Event.observe(entity, 'change', this.onChange.bindAsEventListener(this)); }, onChange: function( event) { assessment.questions_to_monitor[this.index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[this.index].qnum); } }; assessment.getSaveButton = function(questionNum) { var myButton = document.getElementById("saveButton_" + questionNum); if (!myButton) { if (assessment.isOneByOne) { if (questionNum == document.forms.saveAttemptForm.current_question.value) { myButton = document.getElementById("saveAnswerSubmitId"); // for one-at-a-time tests } } } return myButton; }; assessment.setModifiedIcon = function(questionNum) { var saveAnswerLabel = page.bundle.getString('takeSaveAnswer'); var myButton = assessment.getSaveButton(questionNum); if (myButton) { myButton.value = saveAnswerLabel; Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); } // TODO - Either rip this out or put in appropriate image, style, and text // NOTE - can't actually enable this until on-the-fly onchange support in the VTBE is done // (as opposed to the current on-unload check for change) // Also - would need to deal with leaving this image on-page in this scenario: // Save Q1 // Modify Q1 // Save Q2 // -- at this point, we update the status icons and lose the modified icon for Q1 /* var mySpan =document.getElementById("span_"+questionNum); var myImg = document.getElementById("img_"+questionNum); mySpan.className = "qIncomplete"; myImg.src = "/images/ci/icons/needs_grading.gif"; // better icon myImg.alt = "TODO: Incomplete"; myImg.height= "10"; myImg.width= "10"; */ }; assessment.addQuestionToMonitor = function(qid,qnum, isFileUploadQuestion) { var questionBlock = $(qid); assessment.questions_to_monitor[assessment.questions_to_monitor_index] = {}; // TODO - is there a more efficient way to do this? $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, assessment.questions_to_monitor_index); }); assessment.questions_to_monitor[assessment.questions_to_monitor_index].qid = qid; assessment.questions_to_monitor[assessment.questions_to_monitor_index].qnum = qnum; // Status: 0 == not changed, 1 = changed, 2 = attempted to be auto-saved since last change assessment.questions_to_monitor[assessment.questions_to_monitor_index].status = 0; assessment.questions_to_monitor[assessment.questions_to_monitor_index].isFileUploadQuestion = isFileUploadQuestion; assessment.questions_to_monitor_index++; }; assessment.remonitorFileUpload = function(qid, qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { if (assessment.questions_to_monitor[i].isFileUploadQuestion) { var questionBlock = $(qid); $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, i); }); } else { return; } } } } }; assessment.questionBeingSaved = -1; assessment.markQuestionAsSaved = function (qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { assessment.questions_to_monitor[i].status = 0; } } } }; assessment.hasUnsavedAnswers = function() { if (assessment.questions_to_monitor_index > 0) { var i = 0; if (typeof(finalizeEditorsAnyChange) == "function") { finalizeEditorsAnyChange(assessment.vtbeChanged); } for(i=0;i<assessment.questions_to_monitor_index;i++) { //alert("Question " + assessment.questions_to_monitor[i].qid + " number " + assessment.questions_to_monitor[i].qnum + " status " + assessment.questions_to_monitor[i].status); if (assessment.questions_to_monitor[i].status >= 1) { return true; } else if (assessment.questions_to_monitor[i].isFileUploadQuestion) { // In IE, the assessment.QMonitor onchange handle disappears after the first file selection and I can't seem to add it back. // This at least gets the saving to work so it doesn't appear totally broken. The button doesn't change to 'save answer' immediately // after you attach a file a second time though, but we have to live with that for now. var actionDivName = 'file_upload_ans_' + assessment.questions_to_monitor[i].qid + '_selectedFileActions'; var actionDiv = $(actionDivName); if (actionDiv && actionDiv.visible()) { assessment.questions_to_monitor[i].status = 1; return true; } } } } return false; }; assessment.registerVTBEChange = function() { if (typeof(registerOnChangeCallback) == "function") { registerOnChangeCallback(assessment.vtbeChangedCallback, assessment.getVtbeQuestionIndex); } }; assessment.autoSaveExecutor = ''; assessment.autoSaveInterval = 10; // seconds assessment.startAutoSave = function(interval) { assessment.autoSaveInterval = interval; assessment.autoSaveExecutor = new PeriodicalExecuter(assessment.doAutoSave, assessment.autoSaveInterval); }; assessment.stopAutoSave = function() { if (assessment.autoSaveExecutor != '') { assessment.autoSaveExecutor.stop(); } }; assessment.toggleAutoSave = function(interval) { assessment.stopAutoSave(); if ($s('autoSaveCheckbox').checked) { assessment.startAutoSave(interval); } }; assessment.doAutoSave = function(pe) { if (assessment.submittingRightNow) { // Ignore if submitting right now return; } if (assessment.savingRightNow) { // If we are already saving, do nothing right now. return; } var doneOne = false; if (assessment.hasUnsavedAnswers()) { for(var i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].status == 1) // explicitly only check for status 1, skipping status==2 { if (doneOne) { // We can only submit one question per pass because otherwise the nonce fails. Switch // to a higher frequency to save all the outstanding questions faster. pe.stop(); pe.frequency = 1; pe.registerCallback(); return; } assessment.questions_to_monitor[i].status = 2; // flag to indicate we've already tied to auto-save this // Will be reset to 0 after a successful save or 1 if the user modifies their answer again. saveOneItem( assessment.questions_to_monitor[i].qid, assessment.questions_to_monitor[i].qnum, true, false ); doneOne = true; } } } if (!doneOne) { if (pe.frequency != assessment.autoSaveInterval) { pe.stop(); pe.frequency = assessment.autoSaveInterval; pe.registerCallback(); } } }; assessment.vtbeChanged = function(ifr) { var index = assessment.getVtbeQuestionIndex( ifr ); assessment.vtbeChangedCallback(ifr,index); }; assessment.vtbeChangedCallback = function(ifr,index) { if (index != -1) { assessment.questions_to_monitor[index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[index].qnum); } }; assessment.getVtbeQuestionIndex = function(ifr) { var parents = ifr.ancestors(); var num = parents.length; for ( var i = 0; i < num; i++ ) { var parent = parents[i]; if ( page.util.hasClassName(parent, 'takeQuestionDiv') ) { var divid = parent.id; for ( var j = 0; j < assessment.questions_to_monitor_index; j++ ) { if ( assessment.questions_to_monitor[j].qid == divid ) { return j; } } return -1; } } return -1; }; assessment.warnBeforeLeavingIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var prefix = "test"; if (isSurvey) { prefix = "survey"; } var timermsg = ''; if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } if (isForced) { return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.forced.beforeunload.warning"); } return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.beforeunload.warning") + timermsg; }; assessment.queueUpWarning = function(msg, oneByOneAndForceUnload) { var url = assessment.getNextActionUrl() + '&method=queueUpWarning'; var params = Object.extend({ 'msg' : msg, 'oneByOneAndForceUnload' : oneByOneAndForceUnload, 'course_assessment_id' : document.forms.saveAttemptForm.course_assessment_id.value } ); var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, asynchronous: false }); }; assessment.warnOnLeaveIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var timermsg = ''; var prefix = "test"; if (isSurvey) { prefix = "survey"; } if (assessment.hasUnsavedAnswers()) { // Since we are always auto-saving anyways, we might as well just always save unsaved answers here. saveAllQuestions(false); } if (isForced) { assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.forced.warning", assessment.currentTestName), true ); } else { if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.warning", assessment.currentTestName )+timermsg, false); } }; assessment.setDefaultQuestionDisplay = function(blockToLeaveVisible) { assessment.blockToLeaveVisible = blockToLeaveVisible; UserDataDWRFacade.getStringPermScope( "assessment.questionsExpanded", function( questionsExpanded ) { if (questionsExpanded == 'false') { assessment.toggleQuestionDisplay(); } assessment.blockToLeaveVisible = 'null'; }); }; assessment.toggleQuestionDisplay = function() { var newVis = !assessment.questionVisibility; if (newVis) { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", true ); } else { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", false ); } // Note -most of the time this will be "contentListItem:null" - that's OK var idToIgnore = "contentListItem:" + assessment.blockToLeaveVisible; $A(document.getElementsByTagName('li'))._each(function(entity) { // hide|show the given entity if it is one we care about var id = entity.id; if (id.startsWith("contentListItem:") && id != idToIgnore) { $A(entity.getElementsByTagName('div'))._each(function(adiv) { if (page.util.hasClassName(adiv,'details')) { if (newVis) { $(adiv).show(); } else { $(adiv).hide(); } } }); if (newVis) { entity.removeClassName('hideQuestionDetails'); } else { entity.addClassName('hideQuestionDetails'); } } }); var buttonText = page.bundle.getString( newVis ? "hide.question.details" : "show.question.details" ); $('content_listContainer_hideshowQuestions_top').down('a').update( buttonText ); $('content_listContainer_hideshowQuestions_bottom').down('a').update( buttonText ); assessment.questionVisibility = newVis; }; assessment.setDisableFlag = function(questionId, flag) { modifyHelper(questionId, 'setDisableFlag' + flag); }; assessment.questionLabelMap = {}; assessment.dndHooksAdded = false; assessment.setQuestionNumbers = function() { var index = 1; // loop through line items in list of questions var questions = $('content_listContainer'); if (questions) { $A(questions.childElements()).each( function( li ) { var h3 = li.down('h3'); var span = h3.down('span.questionNumber'); if ( !span ) // create & add span for questionNumber if none exists { span = new Element('span',{'class':'questionNumber autoQuestionNumber'}); h3.insert({top:span}); } var id = h3.up('div').id; var qSetSize = $('questionCount'+id); var qNumStr = ''+index; if ( qSetSize ) // show number range for question sets { var s = parseInt(qSetSize.innerHTML, 10); index += s - 1; if ( s > 1 ) { qNumStr += ' - '+index; } else if ( s === 0 ) { qNumStr = ''; } } qNumStr = qNumStr + '.'; index++; span.update(qNumStr); assessment.questionLabelMap[id] = h3.innerHTML.stripTags(); // save numbered label in map for loading accessible reorder select }); } if ( !assessment.dndHooksAdded ) { var dndCtrl = dragdrop.getControllerObjById( 'pageListReorderControls' ); if (dndCtrl) { // Set question numbers in the accessible reorder select before opening it's popup. // Setting the question numbers needs to be defered until the popup is added to the DOM, which // happens just before the popup is opened dndCtrl.extPreOpenCallback = assessment.setAccessibleReorderQuestionNumbers; // call this function to set question numbers after a dnd or accessible reorder happens dndCtrl.extPostOrderCallback = assessment.setQuestionNumbers; assessment.dndHooksAdded = true; } } }; assessment.setAccessibleReorderQuestionNumbers = function() { $A($('pageListReorderControlSelect').options).each( function( option ) { option.text = assessment.questionLabelMap[option.value]; }); }; assessment.viewReferencingCanvases = function(courseId, assessmentId) { var url = "/webapps/assessment/do/authoring/modifyAssessment?course_id=" + courseId + "&method=getReferringCanvases&assessmentId=" + assessmentId; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ document.body.style.cursor = 'default'; }, onSuccess: function(req){ $('referencingCanvasesPlaceholder').update(req.responseText); }, onFailure: function(req){ $('referencingCanvasesPlaceholder').update(ASSESSMENT_RESOURCES.getString("error.loading.referrers")); } }); }; assessment.normalizedWidth = 0; assessment.setNormalizedButtonWidth = function(myButton) { if (assessment.normalizedWidth === 0) { myButton.value = page.bundle.getString('takeSaveAnswer'); Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); assessment.normalizedWidth = myButton.clientWidth; myButton.value = page.bundle.getString('takeSaveAnswerAgain'); Element.addClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } myButton.value = page.bundle.getString('savingAnswer'); Element.addClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } } //myButton.style.width = assessment.normalizedWidth + 'px'; return; }; assessment.resetFields = function() { window.document.assessmentSubmitted = false; window.document.assessmentActuallySubmitted = true; }; assessment.getNextActionUrl = function() { var url = document.forms.saveAttemptForm.action; url = url + '?saveSequence=' + (assessment.saveSequence++); return url; }; assessment.submitAttemptForm = function() { var myForm = document.forms.saveAttemptForm; var origUrl = myForm.action; myForm.action = assessment.getNextActionUrl(); try { myForm.submit(); } catch (err) { // Make sure we get to the next line and reset the url just in case. } myForm.action = origUrl; }; // This is the final save-and-submit request for the test/survey assessment.doConfirmSubmit = function(msg) { document.forms.saveAttemptForm.save_and_submit.value='true'; try { if (confirmSubmit(msg)) { assessment.resetFields(); assessment.submitAttemptForm(); } } catch (err) { // If we had an error, continue to clear the saveandsubmit value } document.forms.saveAttemptForm.save_and_submit.value=''; return false; }; assessment.alertSaveStatus = function (status) { if (status == 'COMPLETED' ) { alert(page.bundle.getString("confirm_saveall_success")); } else if (status == 'PARTIAL' ) { alert(page.bundle.getString("confirm_save_partial")); } else if (status == 'UNANSWERED' ) { alert(page.bundle.getString("confirm_save_empty")); } else { alert(page.bundle.getString("confirm_save_error")); } }; assessment.removeFileUploadAnswer = function (fieldName, divName, questionId, questionNumber, remAnsSuffix, takeDupeSaveMsg) { document.getElementById(divName).style.display = "none"; document.forms.saveAttemptForm.elements.method.value = "fileremove"; document.forms.saveAttemptForm.elements[fieldName + '-override'].value = "false"; document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = "true"; try { if (checkAlreadySaved(takeDupeSaveMsg)) { saveOneItem( questionId, questionNumber, true, false); } } catch (err) { // Ignore - just want to make sure we do the next statement } document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = ""; return false; }; assessment.updateQuestionStatusResponse = function(originalRequest ) { var qnums = originalRequest.responseText; var lines = qnums.split("\n"); var qnum=lines[0].split(","); for (var i=0; i<qnum.length; i++) { var num = qnum[i]; if (num > 0) { setSavedIcon(num); } else { setNotSavedIcon(-num); } } for (var j=1;j<lines.length;j++) { var fileUpload = lines[j].split(":"); if (fileUpload.length == 2) { var divName = "file_upload_div_" + fileUpload[0]; var divElement = document.getElementById(divName); if (fileUpload[1] == "HIDE") { if(divElement !== null) { divElement.style.display = "none"; } } else { var spanName = "file_upload_span_" + fileUpload[0]; var cancelFileButton = "file_upload_ans_" + fileUpload[0] + "_cancelFileButton"; var cancelElement = document.getElementById(cancelFileButton); var overrideName = "file_upload_ans_" + fileUpload[0] + "-override"; var overrideElement = document.forms.saveAttemptForm.elements[overrideName]; var spanElement = document.getElementById(spanName); if(divElement !== null) //we must check if item exists for one question at a time format { divElement.style.display = "block"; } if(spanElement !== null) { spanElement.innerHTML = fileUpload[1]; } if(cancelElement !== null) { cancelElement.click(); } if (typeof overrideElement !== 'undefined' && overrideElement !== null) { overrideElement.value = "true"; } } } } }; assessment.prepareForSubmit = function(doValidation) { // MUST VALIDATE FORM TO PERSIST WYSIWYG // Set textarea value to VTBE contents: if (typeof(finalizeEditors) == "function") { finalizeEditors(); } /* Transform equations place holders into html before validation*/ var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if (doValidation) { /* Validate form TODO: Why not call validateForm()*/ var valid = formCheckList.check(); return valid; } return true; };

var widget = {}; widget.colorPickers = {}; widget.ColorPicker = Class.create(); widget.ColorPicker.prototype = { /** * Constructor * * @param name - id of the color picker * @param initialColor - initial color hex string ("#000000") * @param alertMsg - localized error msg string ("Error: A valid color value must be specified") * @param previewIdStr - optional id string of the color preview DIV container user can specify * @param allowTransparent - optional boolean whether to render an option to select transparent. Default is false. */ initialize : function( name, initialColor, alertMsg, previewIdStr, previewBackgroundIdStr, allowTransparent ) { this.theColorPickerName = name; this.allowTransparent = ( !allowTransparent ) ? false : true; this.theMenu = $( name ); this.alertMsg = alertMsg; this.userPreviewContainer = $( previewIdStr ); // may be undefined this.userPreviewBackgroundContainer = $( previewBackgroundIdStr ); // may be undefined if ( typeof this.userPreviewContainer == "undefined" ) { this.userPreviewContainer = null; } if ( typeof this.userPreviewBackgroundContainer == "undefined" ) { this.userPreviewBackgroundContainer = null; } this.colorListParent = $( name + '_colorlist_parent' ); widget.ColorPicker.registerColorPicker( this ); this.ie = document.all && navigator.userAgent.indexOf( "Opera" ) == -1; this.color_hidden_input = $( name + "_title_color_input" ); this.color_hidden_input.value = initialColor; this.color_hidden_input._defaultValue = initialColor; this.anch_link = $( name + "_link" ); this.color_link = $( name + "_img" ); this.color_name_label = $( name + "_color_name_label" ); this.title_color_input = $( name + "_title_color" ); this.setDisplay( initialColor, this.getDisplayColorInfo( initialColor, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( initialColor, true ); var backgroundStyle = initialColor; if( initialColor === "transparent" ) { backgroundStyle = 'url(/images/swatches/transparent.gif)'; } this.color_link.setStyle( { background : backgroundStyle } ); this.updateUserPreviewContainerColor( initialColor ); if ( this.anch_link ) { Event.observe( this.anch_link, "click", this.onOpen.bindAsEventListener( this ) ); } Event.observe( document.body, "click", this.closeColorPickers.bindAsEventListener( this ) ); Event.observe( this.theMenu, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_previewColorLink', 'click', this.previewListener .bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_cancelButton', 'click', this.onClose.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_submitButton', 'click', this.onApply.bindAsEventListener( this ) ); this.skip_link = $( name + "_skip_link" ); if ( this.skip_link ) { Event.observe( this.skip_link, "click", this.onSkipLinkClick.bindAsEventListener( this ) ); } // relocate color picker popup div to the bottom of the doc b/c of css display issues Element.remove( this.theMenu ); document.body.appendChild( this.theMenu ); widget.colorPickers[ this.theColorPickerName ] = this; }, onSkipLinkClick : function( event ) { $( this.theColorPickerName + '_submitButton' ).focus(); }, onKeyPress : function( event ) { var key = event.keyCode || event.which; if ( key == Event.KEY_ESC ) { this.onClose( event ); } }, closeColorPickers : function( event ) { var element = Event.element( event ); widget.ColorPicker.colorPickers.each( function( cp ) { if ( cp != this && !element.descendantOf( cp.theMenu ) ) { cp.close(); } }.bind( this ) ); }, setOnChangeHandler : function( handler ) { this.onChangeHandler = handler; }, setDefaultColor : function( colorValue ) { this.color_hidden_input.value = colorValue; this.color_hidden_input._defaultValue = colorValue; if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); }, setColor : function( colorValue ) { widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, colorValue ); if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); this.updateUserPreviewContainerColor( colorValue ); if ( this.onChangeHandler ) { this.onChangeHandler(); } }, getPaletteInstance : function() { if ( !this.paletteInstance ) { this.paletteInstance = Element.clone( widget.ColorPicker.colorPalette, true ); } return this.paletteInstance; }, deletePaletteInstance : function() { if ( this.paletteInstance ) { Event.stopObserving( this.paletteInstance, 'click' ); this.paletteInstance.remove(); delete this.paletteInstance; } }, onOpen : function( event ) { this.closeColorPickers( event ); this.colorListParent.appendChild( this.getPaletteInstance() ); this.initializeTransparent(); Event.observe( this.getPaletteInstance(), 'click', this.setColorFromSwatch.bindAsEventListener( this ) ); var offset = Position.cumulativeOffset( this.anch_link ); this.theMenu.setStyle( { display : "block", position : "absolute" } ); var width = this.theMenu.getWidth(); var bodyWidth = $( document.body ).getWidth(); var menuDims = this.theMenu.getDimensionsEx(); var anchorDims = this.anch_link.getDimensionsEx(); var menuHeight = menuDims.height; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); // Use viewport relative offsets to figure out placement within the view var offsetTop = offset[ 1 ] - scrollOffsets.top; var offsetLeft = offset[ 0 ] - scrollOffsets.left; var xpos = offsetLeft; if ( page.util.isRTL() ) { xpos = xpos + this.anch_link.getWidth() - width; } if ( xpos + width > viewportDimensions.width ) { // First try to position it on the left of the link instead of the right xpos = offsetLeft - width + anchorDims.width; if ( xpos < 0 ) { // If we go off the page though, just try our best xpos = viewportDimensions.width - width; } } if ( xpos < 0 ) { xpos = 0; } var ypos = offsetTop + anchorDims.height; if ( ( ypos + menuHeight ) > viewportDimensions.height ) { // Try to position above the color picker first ypos = offsetTop - menuHeight; if ( ypos < 0 ) { // but if it goes off the top of the page just do a best-effort. ypos = ypos - ( ypos + menuHeight - viewportDimensions.height ); if ( ypos < 0 ) { ypos = 0; } } } // The color swatch is positioned absolutely, so adjust offsets to include the scrollofset ypos = ypos + scrollOffsets.top; xpos = xpos + scrollOffsets.left; this.theMenu.setStyle( { left : xpos + "px", top : ypos + "px" } ); this.title_color_input.focus(); ( function() { if ( !this.shim ) { this.shim = new page.popupShim( this.theMenu ); } this.shim.open(); }.bind( this ).defer() ); Event.stop( event ); }, /** * Removes the transparent choice from the palette if the picker is not supposed to support transparency. */ initializeTransparent : function() { if ( !this.allowTransparent ) { var transparentLi = this.colorListParent.down( 'li#colorlist_transparent' ); if ( transparentLi ) { Element.remove( transparentLi ); } } }, /** * Hides the color picker. */ onClose : function() { this.close(); this.anch_link.focus(); }, close : function() { this.deletePaletteInstance(); this.theMenu.setStyle( { display : "none" } ); if ( this.shim ) { this.shim.close(); } }, /** * Sets the preview color and text to the color selected by the user in the palette */ setColorFromSwatch : function( event ) { var element = Event.element( event ); if ( element.hasClassName( 'transparent' ) ) { this.setDisplay( "transparent", page.bundle.getString( "colorpicker.color.transparent" ) ); } else { var text = element.childNodes[ 0 ].nodeValue; if ( text ) { this.setDisplay( text.substring( 0, 7 ), this.getDisplayColorInfo( text.substring( 0, 7 ), false ) ); } } Event.stop( event ); }, getDisplayColorInfo : function( hexValue, onlyColorName ) { var transparent = false; var localizedName; var safeColorCode; if ( hexValue === "transparent" ) { transparent = true; localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ hexValue ]; } else { safeColorCode = this.getSafeColorCode( hexValue ).toUpperCase(); //The keys in ColorPickerMap are all 6 digit safe color codes, that's we need to make sure that we're using the correct key to lookup the color. localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ safeColorCode ]; } if ( !localizedName ) { localizedName = ''; } var colorName; colorName = localizedName + ' (' + hexValue + ')'; if ( onlyColorName || transparent ) { colorName = localizedName; } return colorName; }, /** * Returns a Six digit Hexadecimal Color Code. */ getSafeColorCode : function( hexValue ) { return hexValue.replace( /#([\d0-9A-Fa-f])([\d0-9A-Fa-f])([\d0-9A-Fa-f])$/,'#$1$1$2$2$3$3'); }, /** * Handles the Preview functionality on the swatch. If an inappropriate color is choosen, a msg is displayed to the * user. Else updates the color preview with the manually entered color. */ previewListener : function( event ) { if ( !this.isValidColor( this.title_color_input.value ) ) { alert( this.alertMsg ); return; } if ( this.title_color_input.value.length != 6 ) { return; } var prevCol; if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { prevCol = "transparent"; this.setDisplay( prevCol, page.bundle.getString( 'colorpicker.color.transparent' ) ); } else { prevCol = '#' + this.title_color_input.value; this.setDisplay( prevCol, this.getDisplayColorInfo( prevCol, false ) ); } Event.stop( event ); }, /** * Updates the color preview panel in the picker pop up */ setDisplay : function( col, text ) { if ( col === "transparent" ) { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : 'url(/images/swatches/transparent_lrg.gif)' } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : '#ffffff' } ); this.title_color_input.value = 'XXXXXX'; } else { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : col } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : col } ); this.title_color_input.value = ( col.startsWith( '#' ) ) ? col.substr( 1 ) : col; } $( this.theColorPickerName + '_title_color_name' ).innerHTML = text; }, /** * Checks for a valid color value. */ isValidColor : function( color_value ) { var isValid = false; isValid = ( /^[0-9A-Fa-f]{6}/ ).test( color_value ); if ( !isValid && this.allowTransparent ) { isValid = color_value.toLowerCase() === "xxxxxx"; } return isValid; }, /** * Manages the functionality for the Apply button the swatch. */ onApply : function( event ) { var color = this.title_color_input.value; if ( !this.isValidColor( color ) ) { return; } if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); color = "transparent"; this.color_name_label.innerHTML = page.bundle.getString( "colorpicker.color.transparent" ); } else { color = '#' + color; this.color_link.setStyle( { background : color } ); this.color_name_label.innerHTML = this.getDisplayColorInfo( color, true ); } widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, color ); this.updateUserPreviewContainerColor( color ); this.onClose(); if ( this.onChangeHandler ) { this.onChangeHandler(); } Event.stop( event ); }, /** * If the user specified preview container element exists, update its color style to the color given. * * @param color - color hex string */ updateUserPreviewContainerColor : function( color ) { if ( this.userPreviewContainer ) { this.userPreviewContainer.style.color = color; } else if ( this.userPreviewBackgroundContainer ) { this.userPreviewBackgroundContainer.style.background = color; } } }; // end widget.ColorPicker.prototype widget.ColorPicker.colorPickers = []; widget.ColorPicker.colorPickerMap = {}; widget.ColorPicker.colorPickerPaletteMap = {}; widget.ColorPicker.registerColorPicker = function( cp ) { widget.ColorPicker.colorPickers.push( cp ); widget.ColorPicker.colorPickerMap[ cp.theColorPickerName ] = cp; // grab the color definition and remove it from the DOM for the time being if ( !widget.ColorPicker.colorPalette ) { var colorPalette = $( 'picker_colorlist' ); // Store the colors and their localized names so we can look them up later. widget.ColorPicker.colorPickerPaletteMap[ "default" ] = {}; var arrColors = Element.getElementsBySelector( colorPalette, "a" ); for ( var i = 0; i < arrColors.length; i++ ) { if ( !arrColors[ i ].hasClassName( "transparent" ) ) { widget.ColorPicker.colorPickerPaletteMap[ "default" ][ arrColors[ i ].innerHTML.substring( 0, 7 ).toUpperCase() ] = arrColors[ i ].innerHTML .substring( 8 ); } } widget.ColorPicker.colorPickerPaletteMap[ "default" ].transparent = page.bundle .getString( "colorpicker.color.transparent" ); widget.ColorPicker.colorPalette = colorPalette; // deferring so that the name lookup for colors can succeed during init ( function() { Element.remove( colorPalette ); }.defer() ); } }; widget.ColorPicker.closeAllColorPickers = function() { widget.ColorPicker.colorPickers.each( function( cp ) { cp.close(); } ); }; widget.MultiSelect = Class.create(); widget.MultiSelect.multiselectBoxes = []; // ---------------- "static" methods widget.MultiSelect.registerMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.push( ms ); }; widget.MultiSelect.unRegisterMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.remove( ms ); }; widget.MultiSelect.prototype = { initialize : function( multiSelectDiv, formName ) { this.multiSelectDiv = $( multiSelectDiv ); this.formName = formName; if ( this.multiSelectDiv ) { this.leftClickListeners = []; this.rightClickListeners = []; var divs = this.multiSelectDiv.getElementsByTagName( 'div' ); var leftDiv = $( divs[ 0 ] ); var buttonDiv = $( divs[ 1 ] ); var rightDiv = $( divs[ 2 ] ); var inputs = this.multiSelectDiv.getElementsByTagName( 'input' ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); var leftSelects = leftDiv.getElementsByTagName( 'select' ); var rightSelects = rightDiv.getElementsByTagName( 'select' ); this.leftSelectBox = $( leftSelects[ 0 ] ); this.rightSelectBox = $( rightSelects[ 0 ] ); var buttons = buttonDiv.getElementsByTagName( 'button' ); var moveRightButton = $( buttons[ 0 ] ); var moveLeftButton = $( buttons[ 1 ] ); var leftInputs = leftDiv.getElementsByTagName( 'input' ); var leftInvertSelectionButton = $( leftInputs[ 0 ] ); var leftSelectAllButton = $( leftInputs[ 1 ] ); var rightInputs = rightDiv.getElementsByTagName( 'input' ); var rightInvertSelectionButton = $( rightInputs[ 0 ] ); var rightSelectAllButton = $( rightInputs[ 1 ] ); widget.MultiSelect.registerMultiSelect( this ); Event.observe( moveLeftButton, "click", this.onMoveLeftClick.bindAsEventListener( this ) ); Event.observe( moveRightButton, "click", this.onMoveRightClick.bindAsEventListener( this ) ); Event.observe( leftInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, true ) ); Event.observe( rightInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, false ) ); Event.observe( leftSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, true ) ); Event.observe( rightSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, false ) ); // This for the MultiSelectAction Bean. // If actionBean list is less than 1, button is displayed and not the dropdown if ( leftSelects.length > 1 ) { this.actionBeanLeftSelect = $( leftSelects[ 1 ] ); this.actionBeanRightSelect = $( rightSelects[ 1 ] ); var actionBeanLeftGoBox = $( leftInputs[ 2 ] ); var actionBeanRightGoBox = $( leftInputs[ 2 ] ); Event.observe( actionBeanLeftGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, true ) ); Event.observe( actionBeanRightGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, false ) ); } } }, actionBeanFunc : function( event, leftSelect ) { var destination = this.actionBeanLeftSelect; var selectedBox = this.leftSelectBox; if ( !leftSelect ) { destination = this.actionBeanRightSelect; selectedBox = this.rightSelectBox; } var myindex = destination.selectedIndex; if ( myindex == -1 || myindex > destination.length - 1 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return false; } var sFunctionName = destination.options[ myindex ].value; var oFunc = window[ sFunctionName ]; oFunc( selectedBox.name, this.formName ); this.setHiddenValues(); }, /* * listener registration for leftmove and rightmove clicks */ addToLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.push( listenerFunc ); } }, addToRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.push( listenerFunc ); } }, removeFromLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.remove( listenerFunc ); } }, removeFromRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.remove( listenerFunc ); } }, removeAllLeftClickListeners : function() { this.leftClickListeners = []; }, removeAllRightClickListeners : function() { this.rightClickListeners = []; }, removeFromLeft : function( id ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var toRemoveElement = leftItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToLeft : function( id, value, sortString ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var returnItem = leftItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { this.rawAddToLeft( id, value, sortString ); this.setHiddenValues(); } } }, rawAddToLeft : function( id, value, sortString ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.leftSelectBox.appendChild( item ); }, removeFromRight : function( id ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var toRemoveElement = rightItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToRight : function( id, value, sortString ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var returnItem = rightItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.rightSelectBox.appendChild( item ); this.setHiddenValues(); } } }, resetRightBox : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); rightItems.invoke( "remove" ); this.setHiddenValues(); } }, resetLeftBox : function() { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); leftItems.invoke( "remove" ); this.setHiddenValues(); } }, getAllLeftAvailableElements : function() { if ( this.leftSelectBox ) { return this.leftSelectBox.immediateDescendants(); } else { return []; } }, getAllRightElements : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); return rightItems; } else { return []; } }, onMoveLeftClick : function( event ) { var rightItems = this.rightSelectBox.immediateDescendants(); var selectedItems = rightItems.findAll( function( item ) { return item.selected; } ); var leftItems = this.leftSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { leftItems.push( item ); } ); leftItems = leftItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); leftItems.each( function( item ) { this.leftSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.leftClickListeners ) { this.leftClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, onMoveRightClick : function( event ) { var leftItems = this.leftSelectBox.immediateDescendants(); var selectedItems = leftItems.findAll( function( item ) { return item.selected; } ); var rightItems = this.rightSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { rightItems.push( item ); } ); rightItems = rightItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); rightItems.each( function( item ) { this.rightSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.rightClickListeners ) { this.rightClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, setHiddenValues : function() { var leftString; var rightString; var temp = ""; // Populate select box values comma separated into leftString,rightString. if ( this.leftSelectBox ) { this.leftSelectBox.immediateDescendants().each( function( option ) { leftString = option.value; temp += leftString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.leftValues.value = temp; temp = ""; } if ( this.rightSelectBox ) { this.rightSelectBox.immediateDescendants().each( function( option ) { rightString = option.value; temp += rightString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.rightValues.value = temp; temp = ""; } }, onSelectAllClick : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } Event.stop( event ); }, onInvertSelection : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } } }; /** * A dynamic picker list */ widget.PickerList = Class.create(); widget.PickerList.prototype = { /** * Creates a new picker list * * @param id id of the picker list table * @param cellGenerators an array of functions to be called to generate the HTML for the cells for a new row in the * table. * @param columnAlignments an array of the alignments of the columns * @param columnStyles optional styles to applied to columns * @param reorderable whether the table is to be reorderable * @param reorderingUrl url that reordering changes will be persisted to (can be null) * @param contextParameters parameters that are passed along with the reordering action. */ initialize : function( id, cellGenerators, columnAlignments, columnStyles, reorderable, reorderingUrl, contextParameters ) { this.table = $( id ); this.reorderable = reorderable; if ( this.table ) { this.tableBody = $( this.table.getElementsByTagName( 'tbody' )[ 0 ] ); if ( reorderable ) { this.dragDrop = new dragdrop.ListReordering( this.tableBody, this.table.id + '_reorderControls', false, 'tr', 'dndHandle', 'span', reorderingUrl, contextParameters, new Date().getTime(), null ); } } this.cellGenerators = cellGenerators; this.columnAlignments = columnAlignments; this.columnStyles = columnStyles; }, /** * This function takes any number of arguments. They will be passed directly to the generator functions. If this * list is reorderable, the first two arguments must be: - id of the item added. - name of the item added. */ addRow : function() { var generatorArgs = arguments; var row = $( document.createElement( "tr" ) ); if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var id = arguments[ 0 ]; var name = arguments[ 1 ]; // Set the row id so that the drag and drop code can identify the row row.id = this.table.id + '_row:' + id; // Add the reordering handle. var cell = document.createElement( "td" ); cell.className = 'smallCell dndHandle'; cell.valign = 'top'; cell.innerHTML = '<span class="reorder"><span><img src="/images/ci/icons/generic_updown.gif" alt="" /></span></span>'; row.appendChild( cell ); // Add the item to the accessible controls. var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); accessibleSelect.options[ accessibleSelect.length ] = new Option( name, id ); dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } this.cellGenerators.each( function( generator, index ) { var alignment = this.columnAlignments[ index ]; var cell = $( document.createElement( "td" ) ); cell.setAttribute( "align", alignment ); var columnStyle = this.columnStyles[ index ]; if ( '' != columnStyle ) { cell.addClassName( columnStyle ); } cell.innerHTML = generator.apply( window, generatorArgs ); row.appendChild( cell ); }.bind( this ) ); if ( generatorArgs[ 0 ] && generatorArgs[ 0 ].incompatibleFile ) { return; } else { this.tableBody.appendChild( row ); } if ( this.reorderable ) { // Toggle drag and drop so that it picks up the new item. this.dragDrop.disableDragAndDrop(); this.dragDrop.enableDragAndDrop(); this.dragDrop.calculateItemOrder(); } return row; }, /** * Removes the row with the specified id or index * * @param idOrIndex - if the argument is a string - it is taken as the id of one of the rows in the table - if the * argument is a number - the row at the specified index will be removed. */ removeRow : function( idOrIndex ) { var rowToRemove = null; if ( Object.isString( idOrIndex ) ) { rowToRemove = $( this.table.id + "_row:" + idOrIndex ); } else { rowToRemove = this.tableBody.childElements()[ idOrIndex ]; } if ( rowToRemove ) { // Remove the row from the accessible repositioning controls if applicable if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var idToCheck = rowToRemove.id.split( ':' )[ 1 ]; var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); var options = accessibleSelect.childElements(); for ( var i = 0; i < options.length; i++ ) { if ( options[ i ].value == idToCheck ) { Element.remove( options[ i ] ); break; } } dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } Element.remove( rowToRemove ); if ( this.reorderable ) { this.dragDrop.calculateItemOrder(); } } } }; widget.PickerList.noopGenerator = function() { return '&nbsp;'; }; /** * File picker */ widget.FilePicker = Class.create(); widget.FilePicker.prototype = { /** * Creates a new file picker * * @param pickerList the javascript object representing the picker list (of currently attached files) * @param baseElementName the base name for the file picker elements * @param required whether a file is required to be chosen * @param overrideLocalBehavior whether the CS options to override local behavior should be shown * @param csPickerUrl url to the CS file picker * @param showAddMetadata whether the "submit and add metadata" content system functionality should be enabled. * @param onAttachFile Optional callback function triggered when a new file is attached */ initialize : function( pickerList, baseElementName, required, overrideLocalBehavior, csPickerUrl, showAddMetadata, showSpecialAction, allowMultipleFiles, onAttachFile ) { this.pickerList = pickerList; this.baseElementName = baseElementName; this.required = required; this.overrideLocalBehavior = overrideLocalBehavior; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.allowMultipleFiles = allowMultipleFiles; this.onAttachFile = onAttachFile; this.pickCSButton = $( this.baseElementName + '_csBrowse' ); this.pickLocalButton = $( this.baseElementName + '_localBrowse' ); this.localFilePicker = $( this.baseElementName + '_chooseLocalFile' ); this.pickURLButton = $( this.baseElementName + '_urlBrowse' ); this.selectedCSFile = $( this.baseElementName + '_selectedCSFile' ); this.selectedCSFileName = $( this.baseElementName + '_selectedCSFileName' ); this.selectedCSFilePath = $( this.baseElementName + '_selectedCSFilePath' ); this.selectedCSFileSize = $( this.baseElementName + '_selectedCSFileSize' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_selectedCSFileMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_selectedCSFileMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_selectedCSFileMetadataFormat' ); } // single file selected area this.selectedFileActionsArea = $( this.baseElementName + '_selectedFileActions' ); this.selectedFileName = $( this.baseElementName + '_selectedFileName' ); this.selectedFileSource = $( this.baseElementName + '_selectedFileSource' ); this.selectedFileLinkTitle = $( this.baseElementName + '_selectedFileLinkTitle' ); this.selectedFileSpecialAction = $( this.baseElementName + '_selectedFileSpecialAction' ); this.attachFileButton = $( this.baseElementName + '_attachFileButton' ); this.cancelFileButton = $( this.baseElementName + '_cancelFileButton' ); this.allowCS = this.pickCSButton ? true : false; this.allowLocal = this.pickLocalButton ? true : false; this.allowURL = this.pickURLButton ? true : false; // Wire up events if ( this.overrideLocalBehavior ) { this.pickTargetButton = $( this.baseElementName + '_CSTargetButton' ); this.targetCSLocation = $( this.baseElementName + '_CSTarget' ); Event.observe( this.pickTargetButton, "click", this.onPickTargetClick.bindAsEventListener( this ) ); } this.pickMDButton = $( this.baseElementName + '_CSTargetMetaButton' ); if ( this.pickMDButton ) { window.CSMetadataPickerCallBack = this.afterPickMD.bind( this ); Event.observe( this.pickMDButton, "click", this.onPickMDClick.bindAsEventListener( this ) ); } if ( $( this.baseElementName + '_permissionPickerButton0' ) ) { Event.observe( $( this.baseElementName + '_permissionPickerButton0' ), "click", widget.FilePicker.openPermPicker .bindAsEventListener( this, this.csPickerUrl, this.baseElementName + "_permissions0_manual", "", this.selectedCSFilePath, widget.FilePicker.permPickerCallback .curry( this.baseElementName, this.baseElementName + '_csPermFileList0', 0 ) ) ); } if ( this.allowCS ) { Event.observe( this.pickCSButton, "click", this.onCSBrowse.bindAsEventListener( this ) ); Event.observe( this.selectedCSFile, "change", this.onCSPick.bindAsEventListener( this ) ); } if ( this.allowLocal ) { this.localFileContainer = this.localFilePicker.up(); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } if ( this.allowURL ) { this.linkId = $( this.baseElementName + "_urlBrowse" ); this.formDivId = $( this.baseElementName + "_addUrlForm" ); this.formContainerId = $( this.baseElementName + "_urlContainerDiv" ); var flyout = new flyoutform.FlyoutForm( { linkId : this.linkId, formDivId : this.formDivId, inlineFormContainerId : this.formContainerId, customCallbackObject : this, customOnSubmitHandler : this.onURLPick } ); this.flyout = flyout; } if ( this.cancelFileButton ) { Event.observe( this.cancelFileButton, "click", this.onCancelClick.bindAsEventListener( this ) ); } Event.observe( this.allowLocal ? this.pickLocalButton.form : this.pickCSButton.form, "submit", this.onSubmit .bindAsEventListener( this ) ); this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv && this.pickerList && this.pickerList.tableBody && ( this.pickerList.tableBody .getElementsBySelector( 'input[type="hidden"]' ).length > 0 || this.pickerList.tableBody .getElementsBySelector( 'input[type="file"]' ).length > 0 ) ) { this.listHtmlDiv.show(); } if ( !this.allowMultipleFiles && this.selectedFileSource.value != '' ) { // A file is already attached, so show the selected files area and // turn off the file choosing button (and metadata button if any). this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } } widget.FilePicker.registerFilePicker( this ); }, /** * For the override local behavior: show the picker to pick the location */ onPickTargetClick : function( event ) { var remote = popop.launchPicker( '/webapps/cmsmain/folderpicker/', 'picker_browse' ); if ( remote ) { remote.opener.inputEntryURLToSet = this.targetCSLocation; remote.opener.returnFullURL = false; remote.methodCall = this.onPickMDClick.bind( this ); } }, /** * For the override local behavior: show the picker to pick the metadata */ onPickMDClick : function( event ) { var location = this.targetCSLocation; var file = this.localFilePicker; if ( file.value == '' ) { return; } var url = '/webapps/cmsmain/execute/metadatapicker/manage?action=pick&file=' + file.value; if ( location && location.value != '' ) { url += 'location=' + location.value; } popup.launchPicker( url, 'picker_browse' ); }, /** * For the override local behavior: callback from the metadata picker */ afterPickMD : function( metadata, selection, synchronised, format ) { $( this.baseElementName + '_CSTargetmetadata' ).value = metadata; $( this.baseElementName + '_CSTargetselection' ).value = selection; $( this.baseElementName + '_CSTargetSynchronised' ).value = synchronised; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = format; }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.inputEntryURLToSet = this.selectedCSFile; this.csBrowseWindow.opener.inputFileSizeToSet = this.selectedCSFileSize; this.csBrowseWindow.opener.linkName = this.selectedCSFileName; if ( this.selectedCSFilePath ) { this.csBrowseWindow.opener.filePath = this.selectedCSFilePath; } this.csBrowseWindow.opener.customHandler = this.onCSPick.bind( this ); if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, /** * Called after file has been chosen from CS file picker with metadata added. */ afterMD : function( metadata, synced, format, fileId ) { var metadataString = metadata.join( "#" ); if ( fileId ) { if ( $( this.baseElementName + '_CSMetadata_' + fileId ) ) { $( this.baseElementName + '_CSMetadata_' + fileId ).value = metadataString; } if ( $( this.baseElementName + '_CSMetadataSync_' + fileId ) ) { $( this.baseElementName + '_CSMetadataSync_' + fileId ).value = synced; } if ( $( this.baseElementName + '_CSMetadataFormat_' + fileId ) ) { $( this.baseElementName + '_CSMetadataFormat_' + fileId ).value = format; } } else { if ( this.selectedCSFileMetadata ) { this.selectedCSFileMetadata.value = metadataString; } if ( this.selectedCSFileMetadataSync ) { this.selectedCSFileMetadataSync.value = synced; } if ( this.selectedCSFileMetadataFormat ) { this.selectedCSFileMetadataFormat.value = format; } } }, /** * Callback called after a file has been chosen from the CS file picker in single file mode - updating selected * files section */ onCSPick : function( fileList ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { // picker was opened in multiple mode but one of the legacy page was hit // see how legacy pages with radio buttons submit its selection - pickmultiple.jspf // create object cell generator is expecting using hidden input if ( typeof ( fileList ) == 'string' ) { var filePath = this.selectedCSFilePath ? this.selectedCSFilePath.value : ""; var csFile = { fileName : this.selectedCSFile.value, fullUrlToFile : this.selectedCSFile.value, linkTitle : this.selectedCSFileName.value, filePath : filePath, size : this.selectedCSFileSize.value }; this.onCSPickAllowMultiple( [ csFile ] ); } else { this.onCSPickAllowMultiple( fileList ); } } else { this.csBrowseWindow = null; this.selectedFileSource.value = 'C'; this.selectedFileName.innerHTML = this.selectedCSFileName.value; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = this.selectedCSFileName.value; } this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } if ( $( this.baseElementName + '_csPermissionsLi' ) ) { var fileName = this.selectedCSFileName.value; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. if ( ( /html|htm/i ).test( ext ) ) { $( this.baseElementName + "_permissionOptionsIndex" ).value = 0; $( this.baseElementName + '_csPermissionsLi' ).show(); } } if ( this.onAttachFile ) { this.onAttachFile( this, false ); } } }, /** * Called after a file is chosen from the local file picker in single file mode - updating selected files section */ onLocalPick : function( event ) { if ( this.localFilePicker.value != '' ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { this.onLocalPickAllowMultiple( event ); } else { var localFileName = this.getFileName( this.localFilePicker.value ); this.selectedFileName.innerHTML = localFileName; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = localFileName; } this.selectedFileSource.value = 'L'; this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.show(); } if ( this.onAttachFile ) { this.onAttachFile( this, true ); } } } }, /** * Callback called after files have been chosen from the CS file picker in multiple files mode - updating table */ onCSPickAllowMultiple : function( fileList ) { this.csBrowseWindow = null; fileList.each( function( selectedFile ) { selectedFile.baseElementName = this.baseElementName; selectedFile.showAddMetadata = this.showAddMetadata; selectedFile.csPickerUrl = this.csPickerUrl; this.pickerList.addRow( selectedFile, false ); // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); if ( this.onAttachFile ) { this.onAttachFile( this, false ); } }.bind( this ) ); }, /** * Called after a file is chosen from the local file picker in multiple files mode - updating table */ onLocalPickAllowMultiple : function( event ) { var row = this.pickerList.addRow( this, true ); if ( row === null ) { return; } // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); var cell = $( row.getElementsByTagName( 'td' )[ 0 ] ); var title = this.localFilePicker.title; Element.remove( this.localFilePicker ); this.localFilePicker.removeClassName( "hiddenInput" ); this.localFilePicker.setStyle( { position : "absolute", top : '-10000px' } ); this.localFilePicker.disabled = false; cell.appendChild( this.localFilePicker ); // Set up the names of the local file fields this.pickerList.tableBody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = this.baseElementName + '_LocalFile' + index; }.bind( this ) ); // Create and insert a new local file picker for more local file attaching this.localFilePicker = new Element( 'input', { title : title, type : 'file' } ); this.localFilePicker.addClassName( 'hiddenInput' ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); if ( this.onAttachFile ) { this.onAttachFile( this, true ); } }, /** * If a) Special Actions are enabled, and b) the embed options are configure to show up: - Wires up an on change * even on the special action select box that shows the embed options when the embed action is chosen. */ registerEmbedOptionsListener : function( index ) { if ( this.showSpecialAction ) { var specialAction = $( this.baseElementName + '_specialAction' + index ); var embedOptions = $( this.baseElementName + '_embedOptions' + index ); if ( embedOptions ) { specialAction.observe( 'change', function( event ) { if ( "EMBED" == specialAction.options[ specialAction.selectedIndex ].value ) { embedOptions.show(); } else { embedOptions.hide(); } } ); } } }, /** * Called after a url is chosen from the local file picker in multiple files mode - updating table */ onURLPick : function( widget ) { var selectedURL = document.getElementById( widget.baseElementName + '_newUrlName' ); if (selectedURL.value.blank()) // TODO: More exhaustive URL validation? { alert(page.bundle.getString('filePicker.validate.invalid.url')); return false; } if ( widget.listHtmlDiv ) { widget.listHtmlDiv.show(); } if ( widget.allowMultipleFiles ) { var urlFile = { fileName : selectedURL.value, fullUrlToFile : selectedURL.value, linkTitle : selectedURL.value }; widget.onCSPickAllowMultiple( [ urlFile ] ); } else { widget.selectedFileSource.value = 'C'; widget.selectedFileName.innerHTML = selectedURL.value; if ( widget.selectedFileLinkTitle ) { widget.selectedFileLinkTitle.value = selectedURL.value; } widget.selectedFileActionsArea.show(); widget.togglePickerButtons( false ); if ( widget.pickMDButton ) { widget.pickMDButton.hide(); } if ( widget.onAttachFile ) { widget.onAttachFile( widget, false ); } } // Purge entry widget.flyout.close(); selectedURL.value = ''; return true; }, /** * Called when the "Do not attach file" button is clicked */ onCancelClick : function( event ) { this.selectedFileActionsArea.hide(); this.clearSelectedFileInfo(); this.togglePickerButtons( true ); if ( event ) { Event.stop( event ); } }, /** * Toggles the enabled state of the Local/CS picker buttons to the specified state */ togglePickerButtons : function( enabled ) { if ( this.allowLocal ) { this.pickLocalButton.disabled = !enabled; if ( enabled ) { this.pickLocalButton.className = 'browse visibleInput'; this.localFilePicker.position = 'relative'; this.localFilePicker.style.top = ''; } else { this.pickLocalButton.className = 'disabled'; this.localFilePicker.position = 'absolute'; this.localFilePicker.style.top = '-10000px'; } if ( this.allowMultiple ) { this.localFilePicker.disabled = !enabled; } } if ( this.allowCS ) { this.pickCSButton.disabled = !enabled; if ( enabled ) { this.pickCSButton.className = 'browse visibleInput'; } else { this.pickCSButton.className = 'disabled'; } } if ( this.allowURL ) { this.pickURLButton.disabled = !enabled; if ( enabled ) { this.pickURLButton.className = 'browse visibleInput'; } else { this.pickURLButton.className = 'disabled'; } } }, /** * Clears the info associated to the current attached file (if the user cancelled, or chose to attach another file ) */ clearSelectedFileInfo : function() { var isLocal = this.selectedFileSource.value == 'L'; this.selectedFileName.innerHTML = ""; this.selectedFileSource.value = ""; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = ""; } if ( this.pickMDButton ) { $( this.baseElementName + '_CSTargetmetadata' ).value = ""; $( this.baseElementName + '_CSTargetselection' ).value = ""; $( this.baseElementName + '_CSTargetSynchronised' ).value = ""; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = ""; } if ( $( this.baseElementName + "_permissionOptionsIndex" ) ) { $( this.baseElementName + '_permissionOptionsIndex' ).value = -1; $( this.baseElementName + '_permissions0_all' ).checked = true; } if ( this.selectedFileSpecialAction ) { this.selectedFileSpecialAction.selectedIndex = 0; } if ( isLocal ) { var title = ""; if ( !this.allowMultipleFiles ) { title = this.localFilePicker.title; Element.remove( this.localFilePicker ); } this.localFilePicker = $( document.createElement( "input" ) ); if ( !this.allowMultipleFiles ) { this.localFilePicker.name = this.baseElementName + '_LocalFile0'; } this.localFilePicker.title = title; this.localFilePicker.type = "file"; this.localFilePicker.addClassName( "hiddenInput" ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } else { this.selectedCSFile.value = ""; this.selectedCSFileName.value = ""; if ( this.selectedFilePath ) { this.selectedFilePath = ""; } this.selectedCSFileSize.value = ""; if ( this.showAddMetadata ) { this.selectedCSFileMetadata.value = ""; this.selectedCSFileMetadataSync.value = ""; this.selectedCSFileMetadataFormat.value = ""; } } }, /** * Gets the file name based on the full file path. */ getFileName : function( fullPath ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return result; }, setRequired : function( required ) { this.required = required; }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.allowMultipleFiles ) { if ( this.pickerList.tableBody.immediateDescendants().length === 0 ) { alert( page.bundle.getString( "filePicker.validate.atLeastOne" ) ); if ( event ) { Event.stop( event ); } return false; } } else { if ( ( this.selectedCSFile && this.selectedCSFile.value == '' ) && ( this.localFilePicker && this.localFilePicker.value == '' ) ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); if ( event ) { Event.stop( event ); } return false; } } } return true; } }; // Creates hidden input items for selected files/folders if giving access to additional files/folder // when attaching an HTML file widget.FilePicker.permPickerCallback = function( baseElementName, permFileList, index, itemList ) { if ( itemList && itemList.length > 0 ) { var i; var permFileListElem = $( permFileList ); var hiddenInputs = ""; if ( !permFileListElem ) { return; } hiddenInputs += '<input type="hidden" name="' + baseElementName + '_permittedFiles' + index + '" value="' + itemList[ 0 ].fileName; for ( i = 1; i < itemList.length; i++ ) { hiddenInputs += ':' + itemList[ i ].fileName; } hiddenInputs += '">'; permFileListElem.innerHTML = hiddenInputs; } }; /** * Toggles the "mark for removal" status of an item in the currently attached files table. Should be called from an * onclick attribute on the toggle link in the table. */ widget.FilePicker.toggleForRemove = function( event, removeLink ) { var e = event || window.event; removeLink = $( removeLink ); var tableRow = removeLink.up( "tr" ); var hiddenField = removeLink.up( "td" ).down( 'input[type="hidden"]' ); tableRow.toggleClassName( "removeCell" ); if ( hiddenField.disabled ) { hiddenField.disabled = false; removeLink.innerHTML = page.bundle.getString( "filePicker.unmarkForRemove" ); } else { hiddenField.disabled = true; removeLink.innerHTML = page.bundle.getString( "filePicker.markForRemove" ); } Event.stop( e ); }; widget.FilePicker.togglePickerButton = function( pickerButton, enabled ) { if ( enabled ) { $( pickerButton ).setAttribute( "href", "#" ); $( pickerButton ).removeClassName( "disabled" ); } else { $( pickerButton ).removeAttribute( "href" ); $( pickerButton ).addClassName( "disabled" ); } }; /** * Removes the specified pending attachment. Should be called from an onclick handler on a link in the currently * attached files table */ widget.FilePicker.removePendingAttachment = function( event, removeLink, baseElementName ) { var e = event || window.event; if ( confirm( page.bundle.getString( "filePicker.doNotAttach.confirm" ) ) ) { removeLink = $( removeLink ); var row = removeLink.up( "tr" ); var tbody = row.up( "tbody" ); // Remove the pending row Element.remove( row ); // Re-index the local file inputs. tbody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = baseElementName + '_LocalFile' + index; } ); // Hide the whole attached files table if there are no more attached files. var rowTotal = tbody.getElementsByTagName( 'tr' ).length; if ( rowTotal === 0 ) { var listHtmlDiv = $( baseElementName + "_listHtmlDiv" ); if ( listHtmlDiv ) { listHtmlDiv.hide(); } } } Event.stop( e ); }; widget.FilePicker.getPermPickerUrl = function( csPickerUrl, path, pathElement ) { // reuse current file picker's url as fall back plan var baseUrl = csPickerUrl.split( "?" )[ 0 ]; var queryParams = csPickerUrl.toQueryParams(); if ( !queryParams.multipicker ) { queryParams.multipicker = 'true'; } if ( !path && pathElement ) { path = pathElement.value; } // if we have path, construct proper full url from scratch using the provided path & extracted principalId if ( path ) { var principalId = baseUrl.match( /\/webapps\/cmsmain\/.*picker\/([^\/]*)\/?/ ); baseUrl = "/webapps/cmsmain/picker"; if ( principalId ) { baseUrl += "/" + principalId[ 1 ]; } if ( baseUrl.charAt( baseUrl.length - 1 ) === '/' ) { baseUrl = baseUrl.slice( 0, baseUrl.length - 1 ); } baseUrl += path; } return baseUrl + "?" + $H( queryParams ).toQueryString(); }; widget.FilePicker.openPermPicker = function( event, csPickerUrl, pid, path, pathElement, callback ) { if ( !( pid && $( pid ) && $( pid ).type == 'radio' && $( pid ).checked ) ) { return false; } var permPickerUrl = widget.FilePicker.getPermPickerUrl( csPickerUrl, path, pathElement ); var remote = popup.launchPicker( permPickerUrl ); if ( remote ) { if ( callback ) { remote.opener.customHandler = callback; } else { remote.opener.customHandler = null; } } var e = event || window.event; if ( e ) { var eventElement = Event.element( e ); Event.stop( e ); } return false; }; /** * A registry of defined file pickers and methods to access this registry */ widget.FilePicker.filePickers = {}; widget.FilePicker.registerFilePicker = function( filePicker ) { widget.FilePicker.filePickers[ filePicker.baseElementName ] = filePicker; }; widget.FilePicker.unRegisterFilePicker = function( filePicker ) { delete widget.FilePicker.filePickers[ filePicker.baseElementName ]; }; widget.FilePicker.getFilePicker = function( baseElementName ) { return widget.FilePicker.filePickers[ baseElementName ]; }; /** * Cell generators for the current attached files table */ widget.FilePicker.cellGenerators = { fileName : function( filePicker, isLocal ) { var result = '<input type="hidden" name="' + filePicker.baseElementName + '_attachmentType" value="' + ( isLocal ? 'L' : 'C' ) + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_fileId" value="new">'; if ( isLocal ) { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.getFileName( filePicker.localFilePicker.value ) + '</span>'; } else { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.linkTitle + '</span>'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFile" value="' + filePicker.fileName + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFileUrl" value="' + filePicker.fullUrlToFile + '">'; if ( filePicker.showAddMetadata ) { result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadata" id="' + filePicker.baseElementName + '_CSMetadata_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataSync" id="' + filePicker.baseElementName + '_CSMetadataSync_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataFormat" id="' + filePicker.baseElementName + '_CSMetadataFormat_' + filePicker.xythosId + '" value="">'; } } return result; }, fileType : function( filePicker, isLocal ) { var result = null; if ( isLocal ) { result = page.bundle.getString( "filePicker.fileType.attachment" ); } else { result = page.bundle.getString( "filePicker.fileType.content" ); } return result; }, linkTitle : function( filePicker, isLocal ) { var linkTitle = ""; if ( isLocal ) { linkTitle = filePicker.getFileName( filePicker.localFilePicker.value ); } else { if ( filePicker.linkTitle ) { linkTitle = filePicker.linkTitle; } } return '<input type="text" name="' + filePicker.baseElementName + '_linkTitle" value="' + linkTitle + '" title="' + page.bundle .getString( "filePicker.nameOfLink" ) + " " + linkTitle + '">'; }, size : function( filePicker, isLocal ) { if ( !isLocal && filePicker.size ) { return '<input type="hidden" name="' + filePicker.baseElementName + '_size" value="' + filePicker.size + '"> ' + filePicker.size; } else { return ""; } }, fileAction : function( filePicker, isLocal ) { return widget.FilePicker.cellGenerators.fileActionEmbedOptions( filePicker, isLocal, true ); }, fileActionEmbedOptions_index : 0, // used to uniquely identify embed options form elements on the page. fileActionEmbedOptions : function( filePicker, isLocal, suppressOptions ) { var index = widget.FilePicker.cellGenerators.fileActionEmbedOptions_index++; var baseName = filePicker.baseElementName; var fileName = isLocal ? filePicker.getFileName( filePicker.localFilePicker.value ) : filePicker.linkTitle; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. var isType = { image : ( /gif|jpeg|png|tif|bmp|jpg/i ).test( ext ), videoQt : ( /qt|mov|moov|movie/i ).test( ext ), videoOther : ( /avi|mpg|mpeg|wmv|asf|wma|mpe/i ).test( ext ), real : ( /ra|ram|rm/i ).test( ext ), flash : ( /swa|swf/i ).test( ext ), audio : ( /aif|aiff|au|mp3|wav/i ).test( ext ), html : ( /html|htm/i ).test( ext ) }; var isMedia = isType.image || isType.videoQt || isType.videoOther || isType.flash || isType.audio; var result = ''; if ( isMedia ) { result += '<select id="' + baseName + '_specialAction' + index + '" name="' + baseName + '_specialAction"'; result += ' title="' + page.bundle.getString( "filePicker.specialAction.for" ) + " " + fileName + '">'; result += '<option value="LINK">' + page.bundle.getString( "filePicker.specialAction.link" ) + '</option>'; result += '<option value="EMBED">' + page.bundle.getString( "filePicker.specialAction.embed" ) + '</option>'; result += '</select>'; // Render the embed options (if not suppressed) if ( !suppressOptions ) { result += '<ul style="display: none;" class="nestedList smallControls liveArea liveArea-slim" id="' + baseName + '_embedOptions' + index + '">'; // Alignment var fid = baseName + 'align' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.alignment' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_l" name="' + fid + '" value="Left" checked> <label for="' + fid + '_l">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.left' ) + '</label>' + '<input type="radio" id="' + fid + '_c" name="' + fid + '" value="Center"> <label for="' + fid + '_c">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.center' ) + '</label>' + '<input type="radio" id="' + fid + '_r" name="' + fid + '" value="Right"> <label for="' + fid + '_r">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.right' ) + '</label></fieldset></div></li>'; // Placement fid = baseName + 'placement' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.placement' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.placement' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_a" name="' + fid + '" value="Above"> <label for="' + fid + '_a">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.above' ) + '</label>' + '<input type="radio" id="' + fid + '_b" name="' + fid + '" value="Below" checked> <label for="' + fid + '_b">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.below' ) + '</label></fieldset></div></li>'; // Dimensions if ( !isType.audio ) { fid = baseName + 'width' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.width' ) + '</label></div><div class="field"><input class="width" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; fid = baseName + 'height' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.height' ) + '</label></div><div class="field"><input class="height" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; } // Autoplay if ( !isType.image ) { fid = baseName + 'autostart' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.autostart' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.autostart' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Loop if ( !isType.image && !isType.real ) { fid = baseName + 'loop' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.loop' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.loop' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + baseName + 'loop' + index + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Control (radio) if ( isType.videoQt || isType.real ) { fid = baseName + 'controls' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.controls' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="Full" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="None"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Controls (drop down) if ( isType.videoOther || isType.audio ) { fid = baseName + 'controls' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="controls">' + '<option value="None">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_none' ) + '</option>' + '<option value="Mini">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_mini' ) + '</option>' + '<option value="Full" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.controls_full' ) + '</option>' + '</select></div></li>'; } // Quality if ( isType.flash ) { fid = baseName + 'quality' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.set_quality' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="quality">' + '<option value="Low">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_low' ) + '</option>' + '<option value="Medium">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_med' ) + '</option>' + '<option value="High">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_high' ) + '</option>' + '<option value="Best" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.quality_best' ) + '</option>' + '</select></div></li>'; } if ( isType.image ) { // URL fid = baseName + 'url' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.url' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25">' + '</div></li>'; // New Window fid = baseName + 'newwin' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.new_window' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.new_window' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label>' + '</fieldset></div></li>'; // Border fid = baseName + 'border' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.border' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="border">' + '<option value="0" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.none' ) + '</option>' + '<option value="1>1</option><option value="2">2</option><option value="3">3</option>' + '<option value="4">4</option></select></div></li>'; } // Alt text fid = baseName + 'alttext' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25" value=""></div><span class="fieldHelp clearfloats">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text.instructions' ) + '</span></li>'; result += '</ul>'; } } else { result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialAction" value="LINK">'; result += page.bundle.getString( "filePicker.specialAction.link" ); } // The index is used to find the correct request parameters on the backend. result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialActionIndex" value="' + ( isMedia && !suppressOptions ? index : -1 ) + '">'; if ( filePicker.shouldManagePermission && !isLocal ) { // permission management options var permissionCsPickerUrl = filePicker.csPickerUrl; if ( permissionCsPickerUrl.indexOf( 'multipicker=true' ) != -1 ) { var xythosId = filePicker.fileName.sub( '/xid-', '' ).strip(); if ( xythosId ) { permissionCsPickerUrl = permissionCsPickerUrl + '&preselectedItemId=' + xythosId; } } result += '<ul id="' + filePicker.baseElementName + '_imgSpecOptions" class="nestedList smallControls liveArea liveArea-slim">'; result += '<li>'; var pid = baseName + "_permissions" + index; var pickerButtonId = baseName + "_permissionPickerButton" + index; var permFileListName = baseName + '_csPermFileList' + index; result += '<input type="radio" name="' + pid + '" value="A" id="' + pid + '_all" checked="checked" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.all" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="O" id="' + pid + '_this" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.this" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="S" id="' + pid + '_manual" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', true)" />' + page.bundle .getString( "fm.permission.grant.manual" ); result += '<a id="' + pickerButtonId + '" class="button-4 disabled" style="margin:0 3px" onclick="widget.FilePicker.openPermPicker( event, \'' + permissionCsPickerUrl + '\', \'' + pid + '_manual\',\'' + filePicker.filePath + '\', null, widget.FilePicker.permPickerCallback.curry( \'' + baseName + '\', \'' + permFileListName + '\', ' + index + ' ) );">' + page.bundle .getString( "filePicker.browse" ) + '</a>'; result += '</li>'; result += '</ul>'; result += '<div id="' + permFileListName + '" style="display: none;"></div>'; } result += '<input type="hidden" name="' + baseName + '_permissionOptionsIndex" value="' + ( isType.html && !isLocal ? index : -1 ) + '">'; return result; }, remove : function( filePicker, isLocal ) { var result = '<a href="#" onclick="widget.FilePicker.removePendingAttachment(event, this, '; result += "'" + filePicker.baseElementName + "'"; result += ');">' + page.bundle.getString( "filePicker.doNotAttach" ) + '</a>'; return result; }, // attach CS file alignment to course item align : function(filePicker, isLocal) { var alignOptionsName = "csAlignedResources"; var html = '<label for="csAlignedResources" style="white-space:nowrap">' + '<input type="checkbox" id="' + alignOptionsName + '"' + ' name="' + alignOptionsName + '"' + ' value="' + filePicker.filePath + '"' + '/>' + ' ' + page.bundle.getString('wysiwyg.insert_picture.csalign') + '</label>'; return html; } }; widget.InlineSingleCSFilePicker = Class.create(); widget.InlineSingleCSFilePicker.prototype = { initialize : function( baseElementName, csPickerUrl, showAddMetadata, showSpecialAction ) { this.baseElementName = baseElementName; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.browseButton = $( baseElementName + '_csBrowse' ); this.fileEntry = $( baseElementName + '_CSFile' ); this.fileId = $( baseElementName + '_fileId' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_CSMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_CSMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_CSFileMetadataFormat' ); } Event.observe( this.browseButton, 'click', this.onCSBrowse.bindAsEventListener( this ) ); }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = "picker" + new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.inputEntryURLToSet = this.fileEntry; this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.linkName = this.fileId; if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, afterMD : function( metadata, synced, format ) { var metadataString = metadata.join( "#" ); this.selectedCSFileMetadata.value = metadataString; this.selectedCSFileMetadataSync.value = synced; this.selectedCSFileMetadataFormat.value = format; } }; /** * Inline single local file picker - $baseElementName_attachmentType - 'AL' or 'L' or '' - $baseElementName_localBrowse - * $baseElementName_fileId */ widget.InlineSingleLocalFilePicker = Class.create(); widget.InlineSingleLocalFilePicker.prototype = { initialize : function( baseElementName, currentAttachedFile, required, showSpecialAction ) { this.baseElementName = baseElementName; this.fileInput = $( baseElementName + '_chooseLocalFile' ); this.fileInputWrapper = $( this.fileInput.parentNode ); this.attachmentType = $( baseElementName + '_attachmentType' ); this.fullFileName = $( baseElementName + '_fileId' ); this.attachmentNameSpan = $( baseElementName + '_attachmentName' ); this.removeLink = $( baseElementName + '_removeLink' ); this.inputArea = $( baseElementName + '_inputArea' ); this.attachedFileArea = $( baseElementName + '_attachedFileArea' ); this.required = required; this.showSpecialAction = showSpecialAction; // Wire up events Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); Event.observe( this.removeLink, "click", this.onRemoveClick.bindAsEventListener( this ) ); Event.observe( this.fileInput.form, "submit", this.onSubmit.bindAsEventListener( this ) ); // Set up initial values if ( currentAttachedFile ) { this.setDefaultCurrentAttachedFile( currentAttachedFile ); } widget.InlineSingleLocalFilePicker.pickerMap[ baseElementName ] = this; }, setCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, file ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, setDefaultCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentType._defaultValue = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } this.fullFileName.value = file; this.fullFileName._defaultValue = file; this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; this.fullFileName.value = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, onAfterChooseFile : function( event ) { this.attachmentNameSpan.innerHTML = this.getFileName( this.fileInput.value, true ); this.attachmentType.value = 'L'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fileInput.value ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); Event.stop( event ); }, onRemoveClick : function( event ) { this.clearFileInput(); if ( this.attachmentType.value == 'AL' ) { this.removeHiddenField = document.createElement( 'input' ); this.removeHiddenField.type = 'hidden'; this.removeHiddenField.name = this.baseElementName + '_remove'; this.removeHiddenField.id = this.baseElementName + '_remove'; this.removeHiddenField.value = this.fullFileName.value; this.attachedFileArea.insertBefore( this.removeHiddenField, this.attachedFileArea.firstChild ); widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fullFileName.value ); } else { this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); } this.attachmentNameSpan.innerHTML = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); Event.stop( event ); }, clearFileInput : function() { var title = this.fileInput.title; Element.remove( this.fileInput ); this.fileInput = $( document.createElement( "input" ) ); this.fileInput.title = title; this.fileInput.type = "file"; this.fileInput.addClassName( "hiddenInput" ); this.fileInput.name = this.baseElementName + '_LocalFile0'; this.fileInput._defaultValue = ''; this.fileInputWrapper.insertBefore( this.fileInput, this.fileInputWrapper.firstChild ); Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); }, /** * Gets the file name based on the full file path. * * @param fullPath Fully-qualified path of file * @param isDecodedName (optional) Indicates that the filename has already been URL decoded */ getFileName : function( fullPath, isDecodedName ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return isDecodedName ? result : decodeURI( result ); }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.fullFileName.value == '' ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); Event.stop( event ); return; } } } }; widget.InlineSingleLocalFilePicker.pickerMap = {}; /** * Read Only File picker */ widget.ReadOnlyFilePicker = Class.create(); widget.ReadOnlyFilePicker.prototype = { /** * Creates a new file picker * * @param baseElementName the base name for the file picker elements */ initialize : function( baseElementName ) { this.baseElementName = baseElementName; this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } widget.ReadOnlyFilePicker.pickerMap[ baseElementName ] = this; } }; widget.ReadOnlyFilePicker.pickerMap = {}; widget.UserRoleSelect = Class.create(); widget.UserRoleSelect.prototype = { initialize : function( userSelectRoleDivStr, moveMsgJS, noRoleMsgJs ) { this.sourceValueName = "_left_values"; this.secondaryValueName = "_right_values"; this.primaryValueName = "_primary_value"; this.userSelectRoleDiv = $( userSelectRoleDivStr ); if ( this.userSelectRoleDiv ) { var selects = this.userSelectRoleDiv.getElementsByTagName( 'select' ); var inputs = this.userSelectRoleDiv.getElementsByTagName( 'input' ); var links = this.userSelectRoleDiv.getElementsByTagName( 'a' ); this.source = $( selects[ 0 ] ); this.primary = $( inputs[ 3 ] ); this.secondary = $( selects[ 1 ] ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); this.primaryValue = $( inputs[ 2 ] ); this.toPrimaryMove = $( links[ 0 ] ); this.toSecondaryMove = $( links[ 1 ] ); this.toSourceMove = $( links[ 2 ] ); Event.observe( this.toSourceMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, false, moveMsgJS, noRoleMsgJs ) ); Event.observe( this.toPrimaryMove, "click", this.switchPrimary.bindAsEventListener( this, moveMsgJS ) ); Event.observe( this.toSecondaryMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, true, moveMsgJS, noRoleMsgJs ) ); } }, switchPrimary : function( event, msg ) { var indx; indx = 0; var sourceArray = this.source; if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } if ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.getFromPrimary(); this.primaryValue.value = sourceArray.options[ indx ].value; this.primary.value = sourceArray.options[ indx ].text; sourceArray.options[ indx ].selected = false; sourceArray.options[ indx ] = null; sourceArray.options[ sourceArray.length ] = tmpOpt; } this.writeToSelectBoxValues( this.source, this.leftValues ); return false; }, getFromPrimary : function() { var primaryRoleField = this.primaryValue; var primaryField = this.primary; return new Option( primaryField.value, primaryRoleField.value ); }, writeToSelectBoxValues : function( selectBox, hiddenName ) { var i = 0; var values = ""; while ( i < selectBox.length ) { if ( i > 0 ) { values += ","; } values += selectBox.options[ i ].value; i++; } hiddenName.value = values; return true; }, switchUserRoleColumns : function( event, isSourceDest, msg, noRoleMsg ) { var indx; indx = 0; var sourceArray = this.source; var targetArray = this.secondary; if ( !isSourceDest ) // If we are moving from Dest to Source { var temp = sourceArray; sourceArray = targetArray; targetArray = temp; } if ( sourceArray.length <= 0 ) { alert( noRoleMsg ); return false; } if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } var rightIndex = 0; var targetLength = targetArray.length; while ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.cloneMultipleRows( sourceArray.options[ indx ] ); if ( targetLength > 0 ) { var i = targetLength; while ( i > 0 ) { var tmpOpt1 = this.cloneMultipleRows( targetArray.options[ i + rightIndex - 1 ] ); targetArray.options[ i + rightIndex ] = tmpOpt1; i--; } } sourceArray.options[ indx ].selected = false; targetArray.options[ rightIndex ] = tmpOpt; // targetArray.options[rigthIndex].selected=true; rightIndex = rightIndex + 1; sourceArray.options[ indx ] = null; } // end of while this.writeToSelectBoxValues( this.source, this.leftValues ); this.writeToSelectBoxValues( this.secondary, this.rightValues ); return false; }, cloneMultipleRows : function( opt ) { return new Option( opt.text, opt.value, opt.defaultSelected, opt.selected ); } }; widget.StepGroup = {}; widget.StepGroup.toggleStepGroup = function( e, activeTabStr ) { var event = e || window.event; var target = Event.findElement( event, 'li' ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); $( 'activeTabSpanId_' + tab.id ).innerHTML = activeTabStr; } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); $( 'activeTabSpanId_' + tab.id ).innerHTML = ""; } } ); Event.stop( event ); }; /** * Show a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.showStepGroup = function( number ) { var target = $( 'stepGroupTab_' + number ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; /** * Get the content block element to a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.getStepGroupContentBlock = function( number ) { var targetTab = $( 'stepGroupTab_' + number ); return $( targetTab.getAttribute( "bb:groupId" ) ); }; widget.StepGroup.showAllStepGroupsForSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } ); }; widget.StepGroup.revertAllStepGroupsAfterSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { if ( page.util.hasClassName( tab, 'active' ) ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } else { $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; widget.ShowUnsavedChanges = Class.create(); widget.ShowUnsavedChanges.prototype = { initialize : function( dataCollectionContainer, skipTextArea ) { widget.ShowUnsavedChanges.enabled = true; widget.ShowUnsavedChanges.registerOnValueChangeCallback( widget.ShowUnsavedChanges.showIconsForUnsavedChanges ); var container = $( dataCollectionContainer ); var inputs = $A( container.getElementsByTagName( 'input' ) ); var selects = $A( container.getElementsByTagName( 'select' ) ); var textareas = $A( container.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { input = $( input ); var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { input._defaultValue = input.checked; } else if ( type == 'hidden' || type == 'text' ) { input._defaultValue = input.value; } else { input._defaultValue = ''; } if ( type != 'hidden' && type != 'button' && type != 'submit' ) { input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); } }.bind( this ) ); selects.each( function( input ) // TODO: multiselect? { input = $( input ); input._defaultValue = input.selectedIndex; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); if ( !skipTextArea || !skipTextArea ) { textareas.each( function( input ) { input = $( input ); input._defaultValue = input.value; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); } } }; widget.ShowUnsavedChanges.onValueChangeCallback = function() { }; // do nothing widget.ShowUnsavedChanges.registerOnValueChangeCallback = function( callbackFunction ) { widget.ShowUnsavedChanges.onValueChangeCallback = callbackFunction; }; widget.ShowUnsavedChanges.dataElementsByStepGroup = {}; widget.ShowUnsavedChanges.onValueChange = function( event, elem ) { if ( widget.ShowUnsavedChanges.enabled ) { var dataElement = null; if ( event ) { dataElement = Event.findElement( event, 'li' ); } else { dataElement = elem.parentNode; while ( dataElement && dataElement.tagName.toLowerCase() != 'li' ) { dataElement = dataElement.parentNode; if ( dataElement.tagName.toLowerCase() == 'body' ) { dataElement = null; } } if ( dataElement ) { dataElement = $( dataElement ); } } if ( !dataElement ) { return; } var isDefault = true; var inputs = $A( dataElement.getElementsByTagName( 'input' ) ); var selects = $A( dataElement.getElementsByTagName( 'select' ) ); var textareas = $A( dataElement.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { isDefault &= ( input.checked == input._defaultValue ); } else if ( type == 'hidden' || type == 'text' ) { isDefault &= ( input.value == input._defaultValue ); } } ); selects.each( function( input ) // TODO: multiselect? { isDefault &= ( input.selectedIndex == input._defaultValue ); } ); textareas.each( function( input ) { isDefault &= ( input.value == input._defaultValue ); } ); // trigger call back function widget.ShowUnsavedChanges.onValueChangeCallback( isDefault, dataElement ); } }; widget.ShowUnsavedChanges.showIconsForUnsavedChanges = function( isDefault, dataElement ) { var imgs = dataElement.getElementsByTagName( 'img' ); var unsavedImg = null; for ( var i = 0; i < imgs.length; i++ ) { if ( imgs[ i ].className.indexOf( 'unsavedChangeImg' ) >= 0 ) { unsavedImg = $( imgs[ i ] ); break; } } if ( unsavedImg ) { if ( isDefault ) { dataElement.removeClassName( 'dirty' ); unsavedImg.hide(); } else { dataElement.addClassName( 'dirty' ); unsavedImg.show(); } widget.ShowUnsavedChanges.updateStepGroupIndicator(); } }; widget.ShowUnsavedChanges.updateStepGroupIndicator = function() { if ( widget.ShowUnsavedChanges.enabled ) { // Loop through each step group tab, and determine if an icon that indicates // unsaved changes should be displayed in the tab itself $$( '#dataCollectionContainer ul li.stepGroupTab' ).each( function( tab ) { var stepGroup = $( tab.getAttribute( "bb:groupId" ) ); var img = $( tab.getElementsByTagName( 'img' )[ 0 ] ); var link = $( tab.getElementsByTagName( 'a' )[ 0 ] ); var dataElements = widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ]; if ( !dataElements ) { dataElements = stepGroup.getElementsByTagName( 'li' ); widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ] = dataElements; } var dirtyCount = 0; for ( var i = 0; i < dataElements.length; i++ ) { //If the data element is hidden, we do not want to include it in the count of dirty //data elements. Doing so could result in the dirty image on the step group displaying //with no child data elements that display as dirty. if ( dataElements[ i ].hasClassName( "dirty" ) && dataElements[ i ].getStyle( "display" ) !== "none" ) { dirtyCount++; } } if ( dirtyCount > 0 && !tab.isDirty ) { img.show(); link.setStyle( { 'paddingLeft' : '20px' } ); tab.isDirty = true; } else if ( dirtyCount === 0 && tab.isDirty ) { img.hide(); link.setStyle( { 'paddingLeft' : '' } ); tab.isDirty = false; } } ); } }; // Call this when the value of a hidden data element changes that you want to // show an indicator for. Otherwise changing the value of the hidden element directly will // not cause an indicator to show. widget.ShowUnsavedChanges.changeHiddenValue = function( hiddenElem, value ) { hiddenElem.value = value; if ( widget.ShowUnsavedChanges.enabled ) { widget.ShowUnsavedChanges.onValueChange( null, hiddenElem ); } }; widget.ShowUnsavedChanges.enabled = false; /** * Supports a counter widget attached to a textbox -- it keeps track of the number of characters in the text box, and * updates a counter whenever that number changes. The counter turns red, and begins counting backwards, when the max * number of charters is exceeded. */ widget.TextBoxCounter = Class.create(); widget.TextBoxCounter.prototype = { /** * Contructor * * @param textBoxId The id of the textbox we're counting from * @param counterId The id of the element that countains the count * @param maxCharCount The max number of characters supported by this textbox * @param charactersRemainingLabel The label for the character count element * @param charactersOverLimitLabel The alternate label for the character element, for when the max # of characters * has been exceeded. */ initialize : function( textBoxId, counterId, maxCharCount, charactersRemainingLabel, charactersOverLimitLabel ) { this.textBoxElement = $( textBoxId ); this.counterElement = $( counterId ); this.maxCharCount = maxCharCount; this.countLabelElement = this.counterElement.up().childNodes[ 0 ]; this.charactersRemainingLabel = charactersRemainingLabel; this.charactersOverLimitLabel = charactersOverLimitLabel; // watch all keystrokes in the text area, and update the counter accordingly this.textBoxElement.observe( 'keyup', this.updateCount.bindAsEventListener( this ) ); // update the initial count this.updateCount(); this.registerCounter( textBoxId ); }, /** * Registers the current counter with the document, so that it can be accessed from anywhere on the page. * * @param id The id with which this counter can be accessed */ registerCounter : function( id ) { if ( !widget.TextBoxCounter.counters ) { widget.TextBoxCounter.counters = []; } widget.TextBoxCounter.counters[ id ] = this; }, /** * Update the counter. * * @param event The event that prompted this update, if any. */ updateCount : function( event ) { var chars = this.textBoxElement.value.length; // max character count exceeded if ( chars > this.maxCharCount ) { this.counterElement.update( chars - this.maxCharCount ).addClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersOverLimitLabel; } // max character count not exceeded else if ( chars <= this.maxCharCount ) { this.counterElement.update( this.maxCharCount - chars ).removeClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersRemainingLabel; } } }; widget.ColorPalettePicker = Class.create(); widget.ColorPalettePicker.prototype = { initialize : function( onChange, themeChangeElementId ) { widget.ColorPalettePicker.picker = this; this.onChange = onChange; var palettes = []; $A( $( 'paletteLibraryPanel' ).getElementsByTagName( 'li' ) ).each( function( li ) { if ( page.util.hasClassName( li, 'palette' ) ) { palettes.push( $( li ) ); } } ); this.palettes = palettes; this.libraryOpen = false; this.paletteLibraryPanel = $( 'paletteLibraryPanel' ); this.paletteLibraryButton = $( 'paletteLibraryButton' ); var updateHandler = this.updateCurrentSelection.bindAsEventListener( this ); // this.paletteLibraryPanel.toggleLibrary(); if ( this.palettes ) { this.palettes.each( function( palette ) { Event.observe( palette, "click", updateHandler ); } ); } if ( this.paletteLibraryButton ) { Event.observe( 'paletteLibraryButtonLink', "click", this.toggleLibrary.bindAsEventListener( this ) ); } if ( themeChangeElementId !== "" ) { Event.observe( themeChangeElementId, "change", this.changePaletteThemeTypeStyles.bindAsEventListener( this ) ); } }, changePaletteThemeTypeStyles : function( event ) { var dropdown = event.currentTarget; var themeExtRef = $F( dropdown ); var extRefToThemeTypeJson = $F( "themeExtRefToThemeTypeJson" ); var extRefToThemeTypeMap = this.convertJsonToObject( decodeURIComponent( extRefToThemeTypeJson ) ); var themeType = extRefToThemeTypeMap[themeExtRef]; var mapKey = null; this.palettes.each( function( palette ) { if( palette.id === "currentsystemthemecolorpalette" ) { mapKey = "theme_type_" + themeExtRef; } else { if( themeType !== null ) { mapKey = "theme_type_" + themeType; } else { mapKey = "theme_type_"; } } var styleJson = $F( palette.down('input[type=hidden]') ); var styleMap = this.convertJsonToObject( decodeURIComponent( styleJson ) ); var schemePreviewStyle = styleMap[mapKey]['schemePreview']; var schemePreviewHeadStyle = styleMap[mapKey]['schemePreviewHead']; var schemePreviewBodyStyle = styleMap[mapKey]['schemePreviewBody']; var modulePreviewStyle = styleMap[mapKey]['moduleBorder']; var modulePreviewHeadStyle = styleMap[mapKey]['moduleTitle']; var modulePreviewBodyStyle = styleMap[mapKey]['moduleBody']; palette.down('.schemePreview').writeAttribute("style", schemePreviewStyle); palette.down('.schemePreviewHead').writeAttribute("style", schemePreviewHeadStyle); palette.down('.schemePreviewBody').writeAttribute("style", schemePreviewBodyStyle); palette.down('.modulePreview').writeAttribute("style", modulePreviewStyle); palette.down('.modulePreviewHead').writeAttribute("style", modulePreviewHeadStyle); palette.down('.modulePreviewBody').writeAttribute("style", modulePreviewBodyStyle); }, this ); }, convertJsonToObject : function( json ) { if ( typeof ( JSON ) === 'object' && typeof ( JSON.parse ) === 'function' ) { return JSON.parse( json ); } else { return eval( '(' + json + ')' ); } }, toggleLibrary : function( event ) { var img = this.paletteLibraryButton.getElementsByTagName( 'img' )[ 0 ]; if ( this.libraryOpen ) { // Collapse the library. img.src = "/images/db/p.gif"; img.alt = page.bundle.getString( "dynamictree.expand" ); this.paletteLibraryPanel.hide(); this.libraryOpen = false; } else { // Expand the library. img.src = "/images/db/m.gif"; img.alt = page.bundle.getString( "dynamictree.collapse" ); this.paletteLibraryPanel.show(); this.libraryOpen = true; } // stop the event if exists; there will not be an event if called on page onLoad if ( event ) { Event.stop( event ); } }, selectColorPaletteByExtRef : function( extRef ) { var eventElement = $( extRef ); this.selectColorPaletteByElement( eventElement ); }, selectColorPaletteByElement : function( eventElement ) { this.palettes.each( function( p ) { if ( p.hasClassName( "selected" ) ) { p.removeClassName( 'selected' ); } } ); var selPal = eventElement; while ( selPal && selPal.tagName != 'LI' ) { selPal = selPal.parentNode; if ( selPal.tagName == 'BODY' ) { selPal = null; } } selPal.addClassName( 'selected' ); widget.ShowUnsavedChanges.changeHiddenValue( $( 'currentPaletteExtRef' ), selPal.id == 'currentsystemthemecolorpalette' ? '' : selPal.id ); eval( this.onChange ); $( 'currentPaletteLabel' ).update( $( selPal.id + '_label' ).innerHTML ); this.copyStyles( selPal.down( '.schemePreview' ), $( 'currentPalettePreview' ) ); this.copyStyles( selPal.down( '.schemePreviewHead' ), $( 'currentPalettePreviewHead' ) ); this.copyStyles( selPal.down( '.schemePreviewBody' ), $( 'currentPalettePreviewBody' ) ); this.copyStyles( selPal.down( '.modulePreview' ), $( 'currentModulePalettePreview' ) ); this.copyStyles( selPal.down( '.modulePreviewHead' ), $( 'currentModulePalettePreviewHead' ) ); this.copyStyles( selPal.down( '.modulePreviewBody' ), $( 'currentModulePalettePreviewBody' ) ); $( 'selectedPalette' ).show(); }, updateCurrentSelection : function( event ) { var eventElement = Event.element( event ); this.selectColorPaletteByElement( eventElement ); Event.stop( event ); }, copyStyles : function( s, d ) { d.style.cssText = s.style.cssText; } }; widget.ColorPalettePicker.picker = null; /** * node picker */ widget.MINodePicker = Class.create(); /** Constants used for the picker */ widget.MINodePicker.Constants = { EXISTING_NODE_SUFFIX : "", EXISTING_NODE_DELETE_SUFFIX : "", NEW_NODE_SUFFIX : "" }; widget.MINodePicker.prototype = { initConstants : function() { widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeSuffix" ); widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeDeleteSuffix" ); widget.MINodePicker.Constants.NEW_NODE_SUFFIX = page.bundle.getString( "nodePicker.const.newNodeSuffix" ); }, /** * Creates a new node picker * * @param baseElementName the base name for the node picker elements * @param pickerList the javascript object representing the picker list (of currently attached files) * @param allowMultipleSelect boolean indicating whether the picker should allow single or multiple select * @param entitlements comma delimited list of entitlement UIDs in which to check on node search * @param popupInstructions key value pair of bundle name and bundle key for instructions to be displayed in the pop * up * @param addPrimaryEntitlement Entitlement required to display primary radio button. * @param removeNodeEntitlement Entitlement required to display remove node link. */ initialize : function( baseElementName, pickerList, allowMultipleSelect, entitlements, popupInstructions, addPrimaryEntitlement, removeNodeEntitlement ) { this.initConstants(); this.baseElementName = baseElementName; this.allowMultipleSelect = allowMultipleSelect; this.entitlements = entitlements; this.nodePickerPopupButton = $( this.baseElementName + '_nodeBrowseButton' ); this.nodePickerUrl = "/webapps/blackboard/execute/institutionalHierarchy/nodePicker?cmd=openPicker&allowMultipleSelect=" + this.allowMultipleSelect + "&instructionKey=" + popupInstructions + "&entitlements=" + this.entitlements + "&addPrimaryEntitlement=" + addPrimaryEntitlement + "&removeNodeEntitlement=" + removeNodeEntitlement; Event.observe( this.nodePickerPopupButton, "click", this.onNodeBrowse.bindAsEventListener( this ) ); this.pickerList = pickerList; this.selectedNodesListContainer = $( this.baseElementName + '_listHtml' ); // make sure that all removedNodes are hidden var removedNodes = this.selectedNodesListContainer .getElementsBySelector( 'input[name=' + this.baseElementName + widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX + ']' ); removedNodes.each( function( node ) { node.up( 'tr' ).hide(); } ); var showList; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { showList = this.selectedNodesListContainer && this.pickerList && this.pickerList.tableBody && !this.pickerList.tableBody .empty(); } // For single node picker, the attached node is contained within a span element else { showList = this.selectedNodesListContainer && this.selectedNodesListContainer.select( "input.selectedNodeData" ) && this.pickerList; } if ( this.pickerList && this.pickerList.tableBody ) { // If no visible row then hide the table label and headers. if ( !this.pickerList.tableBody.select( "tr" ).any( function( row ) { return row.visible(); } ) ) { showList = false; } } this.showHideSelectedNodesList( showList ); widget.MINodePicker.registerNodePicker( this ); }, /** * Pop up the node search window from which to pick nodes */ onNodeBrowse : function( event ) { this.nodePickerWindow = null; var windowId = new Date().getTime(); if ( $( 'primaryNodeIdStr' ) ) { this.nodePickerUrl += '&primaryNodeIdStr=' + $F( 'primaryNodeIdStr' ); } if ( $( 'objectType' ) ) { this.nodePickerUrl += '&objectType=' + $F( 'objectType' ); } this.nodePickerWindow = popup.launchPicker( this.nodePickerUrl, windowId ); if ( this.nodePickerWindow ) { this.nodePickerWindow.opener.customHandler = this.onNodePick.bind( this ); } Event.stop( event ); }, /** * Callback called after node(s) have been selected from the node picker pop up. This method updates the UI list of * currently select nodes. * * @param selectedNodesObjArr The array of currently selected nodes from the picker */ onNodePick : function( selectedNodesObjArr ) { this.showHideSelectedNodesList( true ); var existingNodes; if ( this.allowMultipleSelect ) { // Array of existing selected nodes in the node picker list existingNodes = this.selectedNodesListContainer.down( "tbody" ).select( "input.selectedNodeData" ); } else { // Existing selected node in the node picker list for single node picker existingNodes = this.selectedNodesListContainer.select( "input.selectedNodeData" ); } // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. if ( selectedNodesObjArr && selectedNodesObjArr.length !== 0 ) { // Switch the radio button selection to Create hierarchy under the specified entity (for single node pickers) if ( $( "selectedRoot" ) ) { $( "selectedRoot" ).checked = true; } } /* * For each selected node, add the node to the list if it is a newly selected node, otherwise unhide the node if * it is an existing selection that has been marked for delete. Specifically: - If node is an existing selected * node and marked for delete and hidden, then unmark and show - If node is an existing selected node and not * marked for delete and showing, then do nothing - If node is a newly selected node and is not already there, add * the row - If node is a newly selected node and is already there, then do nothing */ selectedNodesObjArr.each( function( node ) { // See if the picked node is already in the list of nodes var existingNode; existingNodes.each( function( inputEle ) { if ( node.nodeIdStr === inputEle.value ) { existingNode = inputEle; if ( existingNode.disabled && existingNode.checked ) { // If its a disabled primary node then restore the value of it in hidden param. $( this.baseElementName + '_disabledPrimaryNode' ).value = node.nodeIdStr; } throw $break; } } ); // If not, then add this newly picked node to list if ( !existingNode ) { var primaryRadioChecked; var existingPrimaryNodeRadios = this.selectedNodesListContainer .select( 'input[name=' + this.baseElementName + '_PrimaryNode]' ); if ( existingPrimaryNodeRadios.all( function( radio ) { return !radio.checked; } ) ) { primaryRadioChecked = true; } // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { // This calls the cell generator methods for each column in the "currently selected nodes" list this.pickerList.addRow( this.baseElementName, node, this.nodePickerWindow, primaryRadioChecked ); } // For single node picker, the attached node is contained within a span element else { this.selectedNodesListContainer.innerHTML = ""; this.pickerList.cellGenerators.each( function( generator, index ) { var args = []; args.push( this.baseElementName, node, this.nodePickerWindow ); this.selectedNodesListContainer.innerHTML += generator.apply( window, args ); }.bind( this ) ); } } else { /* * If picked node is already in the list AND is an existing selected node that is marked for delete and * hidden, then unmark node and show in list. */ if ( existingNode.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ) ) { existingNode.name = existingNode.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ); if ( this.allowMultipleSelect ) { existingNode.up( "tr" ).show(); } } } }.bind( this ) ); }, /** * Shows or hides the selected nodes list * * @param show boolean to indicate show or hide */ showHideSelectedNodesList : function( show ) { if ( this.selectedNodesListContainer ) { return show ? this.selectedNodesListContainer.show() : this.selectedNodesListContainer.hide(); } } }; /** * Removes the specified node selection from the list. Should be called from an onclick handler on a link in the * currently selected nodes table. */ widget.MINodePicker.removeSelectedNode = function( event, removeLink, baseElementName ) { var e = event || window.event; // Have user confirm removal of selected node if ( confirm( page.bundle.getString( "nodePicker.nodeRemoveConfirmMsg" ) ) ) { var visibleRows = []; var picker = widget.MINodePicker.getNodePicker( baseElementName ); var hiddenNodeDataEle; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( picker.allowMultipleSelect ) { // Get references to DOM elements in the list removeLink = $( removeLink ); var rowToHideRemove = removeLink.up( "tr" ); var tbodyEle = rowToHideRemove.up( "tbody" ); hiddenNodeDataEle = rowToHideRemove.down( "input.selectedNodeData" ); var primaryNodeRadioSelector = 'input[name=' + baseElementName + '_PrimaryNode]'; var primaryNodeRadioInCurrentRow = rowToHideRemove.down( primaryNodeRadioSelector ); if ( primaryNodeRadioInCurrentRow ) { // Check if removed node is selected as a primary node if ( primaryNodeRadioInCurrentRow.checked ) { if ( primaryNodeRadioInCurrentRow.disabled ) { // A disabled primary node is removed from UI then nullify the value of hidden param storing its value. $( baseElementName + '_disabledPrimaryNode' ).value = ''; } else { // Get the next node which is not checked as primary and is enabled. var nextNode = picker.selectedNodesListContainer.select( primaryNodeRadioSelector ).find( function( radio ) { return ( !radio.checked && !radio.disabled && radio.up( 'tr' ).visible() ); } ); if ( nextNode ) { nextNode.checked = true; } else { // In case there's no next node with primary node radio button, then uncheck current primary manually primaryNodeRadioInCurrentRow.checked = false; } } } } // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); // hide rowToHideRemove.hide(); } // If is a newly selected node else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { // remove the row from the DOM Element.remove( rowToHideRemove ); } tbodyEle.select( "tr" ).each( function( row ) { if ( row.visible() ) { visibleRows.push( row ); } } ); } // For single node picker, the attached node is contained within a span element else { hiddenNodeDataEle = picker.selectedNodesListContainer.down( "input.selectedNodeData" ); // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); } // If is a newly selected node, clear the span content else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { picker.selectedNodesListContainer.innerHTML = ""; } } // If there are no more selected nodes, hide some UI elements if ( visibleRows.length === 0 ) { // Hide the whole selected nodes table picker.showHideSelectedNodesList( false ); // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. // Switch the radio button selection to Create hierarchy under the top level (for single node pickers) if ( $( "topLevelRoot" ) ) { $( "topLevelRoot" ).checked = true; } } } Event.stop( e ); }; /** * A registry of defined node pickers and methods to access this registry */ widget.MINodePicker.nodePickers = {}; widget.MINodePicker.registerNodePicker = function( nodePicker ) { widget.MINodePicker.nodePickers[ nodePicker.baseElementName ] = nodePicker; }; widget.MINodePicker.unRegisterNodePicker = function( nodePicker ) { delete widget.MINodePicker.nodePickers[ nodePicker.baseElementName ]; }; widget.MINodePicker.getNodePicker = function( baseElementName ) { return widget.MINodePicker.nodePickers[ baseElementName ]; }; /** * Cell generators for the currently selected nodes table. Mostly copies what is in multiInstNodePickerListElement.vm. */ widget.MINodePicker.cellGenerators = { /** * Dynamic rendering of a cell in the node "Name" column */ nodeName : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { var result = '<input type="hidden" name="' + pickerNameStr + widget.MINodePicker.Constants.NEW_NODE_SUFFIX + '" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData">'; result += '<img src="/images/ci/ng/entity_small.png" alt="">'; result += selectedNodeObj.nodeName; return result; }, /** * Dynamic rendering of a cell in the node "Primary Node" column */ nodePrimary : function( pickerNameStr, selectedNodeObj, nodePickerWindow, primaryRadioChecked ) { var result = '<input type="radio" id="' + selectedNodeObj.nodeIdStr + '_Primary' + '" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData"'; if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' ) { result += ' disabled'; } if ( primaryRadioChecked ) { result += ' checked'; } result += ' >'; // Since values of disabled radio element doesn't go through the request, adding hidden param here to store its // value. if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' && primaryRadioChecked ) { result += '<input type="hidden" id="' + pickerNameStr + '_disabledPrimaryNode" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" />'; } return result; }, /** * Dynamic rendering of a cell in the remove node column */ nodeRemove : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_canRemoveObject' ).value == 'true' ) { var result = '<img src="/images/ci/icons/x_ia.gif" alt="">'; result += '<a href="#" onclick="widget.MINodePicker.removeSelectedNode(event, this, '; result += "'" + pickerNameStr + "');"; result += '">' + page.bundle.getString( "nodePicker.nodeRemoveLabel" ); result += '</a>'; return result; } else { return ''; } } };

Take Test MC Exercises Punctuation Commas Review.mht

Current Location

Take Test: MC Exercises: Punctuation: Commas Review

Content

Assistive Technology Tips [opens in new window]

Instructions

Description
Instructions

Read the following instructions carefully!

Some of the following sentences contain comma errors. If a sentence has an error, select the correct version. If the sentence is correct, select c. No change.

Multiple Attempts This Test allows multiple attempts.
Force Completion This Test can be saved and resumed later.

Collapse Question Completion Status:

1Question Incomplete 2Question Incomplete 3Question Incomplete 4Question Incomplete 5Question Incomplete 6Question Incomplete 7Question Incomplete 8Question Incomplete 9Question Incomplete 10Question Incomplete

Question 1

  1.   Louisa May Alcott’s fame rests, of course, on the novels, Little Women and Little Men. Answer
    Louisa May Alcott’s fame rests of course on the novels Little Women, and Little Men.
    Louisa May Alcott’s fame rests, of course, on the novels Little Women and Little Men.
    No change.

10 points  

Question 2

  1.   “Well, Jessica are you coming with me to hear Toni Morrison,” her brother Aaron asked “or are you staying home”? Answer
    “Well Jessica, are you coming with me to hear Toni Morrison” her brother Aaron asked “or are you staying home”?
    “Well, Jessica, are you coming with me to hear Toni Morrison,” her brother Aaron asked, “or are you staying home”?
    No change.

10 points  

Question 3

  1.   My instructor points out, repeatedly I might add that her favorite American writers are Thomas Wolfe and Richard Wright. Answer
    My instructor points out, repeatedly I might add, that her favorite American writers are, Thomas Wolfe and Richard Wright.
    My instructor points out, repeatedly I might add, that her favorite American writers are Thomas Wolfe and Richard Wright.
    No change.

10 points  

Question 4

  1.   Many critics include James Agee, Conrad Aiken, Louisa May Alcott, and Nelson Algren on their lists of major American authors. Answer
    Many critics include James Agee, Conrad Aiken Louisa May Alcott, and Nelson Algren on their lists of major American authors.
    Many critics include James Agee, Conrad Aiken, Louisa May Alcott, and Nelson Algren, on their lists of major American authors.
    No change.

10 points  

Question 5

  1.   “Too bad sis” Aaron continued, “I guess you’ll miss the party later, too. In case you can make it Brian’s apartment is just over the state line at 4420 Longwood Drive, Gurnee Illinois.” Answer
    “Too bad, sis” Aaron continued “I guess you’ll miss the party later, too. In case you can make it, Brian’s apartment, is just over the state line at 4420 Longwood Drive, Gurnee, Illinois.
    “Too bad, sis,” Aaron continued. “I guess you’ll miss the party later, too. In case you can make it, Brian’s apartment is just over the state line at 4420 Longwood Drive, Gurnee, Illinois.”
    No change.

10 points  

Question 6

  1.   Before he reached the age of fifty Nelson Algren had published his two major works, The Man with the Golden Arm and A Walk on the Wild Side. Answer
    Before he reached the age of fifty, Nelson Algren had published his two major works, The Man with the Golden Arm and A Walk on the Wild Side.
    Before he reached the age of fifty, Nelson Algren had published his two major works The Man with the Golden Arm, and A Walk on the Wild Side.
    No change.

10 points  

Question 7

  1.   Any list of great American writers, would probably name Sherwood Anderson of Winesburg, Ohio fame, and Isaac Asimov, known for I, Robot as well as the Foundation series. Answer
    Any list of great American writers would probably name Sherwood Anderson of Winesburg, Ohio fame and Isaac Asimov, known for I, Robot as well as the Foundation series.
    Any list of great American writers would probably name Sherwood Anderson of Winesburg, Ohio fame, and Isaac Asimov known for I, Robot as well as the Foundation series.
    No change.

10 points  

Question 8

  1.   James Agee published A Death in the Family, which won the Pulitzer Prize in 1957, and, Conrad Aiken won the Pulitzer Prize for poetry in 1924. Answer
    James Agee published A Death in the Family, which won the Pulitzer Prize in 1957, and Conrad Aiken won the Pulitzer Prize for poetry in 1924.
    James Agee published A Death in the Family which won the Pulitzer Prize in 1957 and Conrad Aiken won the Pulitzer Prize for poetry in 1924.
    No change.

10 points  

Question 9

  1.   After a few moments, Jessica said that she loved Morrison’s novels but had to finish her take-home exam. If she didn’t turn it in by December 14, she’d have to take a January 8, 2009, make-up test. Answer
    After a few moments Jessica said, that she loved Morrison’s novels, but had to finish her take-home exam. If she didn’t turn it in by December 14, she’d have to take a January 8, 2009, make-up test.
    After a few moments Jessica said that she loved Morrison’s novels, but had to finish her take-home exam. If she didn’t turn it in by December 14 she’d have to take a January 8, 2009 make-up test.
    No change.

10 points  

Question 10

  1.   “Yes Aaron I’m going to miss the farewell party” Jessica moaned, “but please say hi to all my friends like, Eric, Mario, Kim, Igor, and Brian okay?” Answer
    “Yes, Aaron, I’m going to miss the farewell party,” Jessica moaned, “but please say hi to all my friends, like Eric, Mario, Kim, Igor, and Brian, okay?”
    “Yes Aaron, I’m going to miss the farewell party” Jessica moaned “but please say hi to all my friends, like Eric, Mario, Kim, Igor, and Brian, okay?”
    No change.

10 points  

 Save and Submit

Click Save and Submit to save and submit. Click Save All Answers to save all answers. Click Close Window to close window.

Links to Test Questions and Answers
Read question 1 Read answers for question 1 Read question 2 Read answers for question 2 Read question 3 Read answers for question 3 Read question 4 Read answers for question 4 Read question 5 Read answers for question 5 Read question 6 Read answers for question 6 Read question 7 Read answers for question 7 Read question 8 Read answers for question 8 Read question 9 Read answers for question 9 Read question 10 Read answers for question 10

@font-face { font-family: Utilicons; src:url(fonts/utilicons/utilicons-web-webfont.eot); } HTML { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } APPLET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OBJECT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IFRAME { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H1 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H2 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H5 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H6 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } P { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ABBR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ACRONYM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ADDRESS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BIG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CITE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CODE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DFN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } EM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } INS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } KBD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } Q { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } S { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SAMP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SMALL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRIKE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRONG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUB { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } VAR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FIELDSET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FORM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LABEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LEGEND { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CAPTION { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TBODY { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TFOOT { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } THEAD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TR { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TH { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } FONT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BACKGROUND: #fff } OL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } UL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } TABLE { BORDER-COLLAPSE: collapse } TH { FONT-WEIGHT: normal } CAPTION { TEXT-ALIGN: left } TH { TEXT-ALIGN: left } TD { TEXT-ALIGN: left } BLOCKQUOTE:before { CONTENT: "" } BLOCKQUOTE:after { CONTENT: "" } Q:before { CONTENT: "" } Q:after { CONTENT: "" } BLOCKQUOTE { QUOTES: "" "" } Q { QUOTES: "" "" } INPUT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } BUTTON { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } SELECT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } .field SELECT { MAX-WIDTH: 100% } .noLabelField SELECT { MAX-WIDTH: 100% } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px !important } .vtbegenerated IMG { FILTER: alpha(opacity=auto) !important; opacity: auto } .vtbegenerated UL { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated OL { LIST-STYLE-TYPE: decimal; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated LI { LIST-STYLE-POSITION: outside; DISPLAY: list-item } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL[type=circle] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type=disc] LI { LIST-STYLE-TYPE: disc } .vtbegenerated UL[type=square] LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 24px } .inlineVtbegenerated { DISPLAY: inline } .hideme { DISPLAY: none !important } .hidden { DISPLAY: none } .clearfloats { CLEAR: both } .hideoff { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; TOP: -1000px; LEFT: -10000px } .altHideoff1 { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; LEFT: -10000px } .boldme { FONT-WEIGHT: bold } .u_inlineStack { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > LI { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > DIV { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStack SELECT { MAX-WIDTH: 300px } .u_resetFont { FONT-SIZE: 100% } .u_reverseAlign { TEXT-ALIGN: right } .u_centerAlign { TEXT-ALIGN: center } .u_normalAlign { TEXT-ALIGN: left } .u_floatThis-right { FLOAT: right } .u_floatThis-left { FLOAT: left } .u_floatWrapper-right > DIV { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-right > LI { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-left > DIV { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LI { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LABEL { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_floatWrapper-right:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_controlsWrapper:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_clearFloatsWrapper > DIV { FLOAT: none !important } .u_clearFloatsWrapper > LI { FLOAT: none !important } .u_controlsWrapper { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .u_indent { MARGIN-LEFT: 24px !important } .u_scrollPanel-vertical { OVERFLOW-Y: auto } .u_panel-short { HEIGHT: 70px; MAX-HEIGHT: 100px } .u_panel-medium { HEIGHT: 70px; MAX-HEIGHT: 150px } .u_panel-long { HEIGHT: 70px; MAX-HEIGHT: 200px } HTML { HEIGHT: 100% } BODY { MIN-WIDTH: 1000px; HEIGHT: 100% } BODY.topFrame { OVERFLOW-Y: hidden; HEIGHT: 89px } BODY.filePicker { MIN-WIDTH: 400px } BODY.popup { MIN-WIDTH: 100% } .content-system-page { MIN-WIDTH: 780px } BODY.popup DIV.locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.csMenuFrame { MIN-WIDTH: 210px; WIDTH: 100% } BODY.popupMenu { MIN-WIDTH: 210px; WIDTH: 100% } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } H1 { FONT-WEIGHT: bold } H2 { FONT-WEIGHT: bold } H3 { FONT-WEIGHT: bold } H4 { FONT-WEIGHT: bold } H5 { FONT-WEIGHT: bold } H6 { FONT-WEIGHT: bold } STRONG { FONT-WEIGHT: bold } B { FONT-WEIGHT: bold } EM { FONT-STYLE: italic } TABLE.bouncer { WIDTH: 100% } TABLE.bouncer TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .brandingImgWrap { OVERFLOW: hidden } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { POSITION: relative; OVERFLOW-Y: hidden } .topTabs-compact { POSITION: relative } .topTabs .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs-compact .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs .tabWrapper-right .appTabs { FLOAT: right } .topTabs-compact .tabWrapper-right .appTabs { FLOAT: right } .breadcrumbs { POSITION: relative } .locationPane { POSITION: relative; MIN-WIDTH: 100%; ZOOM: 1; DISPLAY: inline-block; OVERFLOW: visible } .navigationPane { POSITION: absolute; WIDTH: 200px; ZOOM: 1; CLEAR: both; OVERFLOW: visible; TOP: 0px; LEFT: 0px } .menuWrap { POSITION: relative; ZOOM: 1 } .contentPane { MIN-WIDTH: auto; MARGIN: 0px 14px 0px 212px; ZOOM: 1; DISPLAY: block; OVERFLOW: visible } #puller { Z-INDEX: 3; POSITION: absolute } #puller A { WIDTH: 15px; DISPLAY: block; BACKGROUND: #ccc; HEIGHT: 30px } .contcollapsed { MARGIN-LEFT: 15px } .content { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .container { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .containerPortal { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .popup .container { MIN-HEIGHT: 400px } .container { OVERFLOW: visible } .containerOptions { OVERFLOW: visible } .column-1 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-2 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-3 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-4 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } column-5 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-1 { WIDTH: 100% } .column-2 { WIDTH: 50% } .column-3 { WIDTH: 33.3% } .column-4 { WIDTH: 25% } .column-5 { WIDTH: 20% } #lightbox .column-3 { MARGIN: 0px; MIN-HEIGHT: 200px !important } #lightbox .column-2 { MARGIN: 0px; MIN-HEIGHT: 200px !important } INPUT[type='submit'].submit { FONT-WEIGHT: bold } .mainButton A { FONT-WEIGHT: bold } .actionBarMicro .mainButton A { FONT-WEIGHT: bold } .rumble .mainButton > A { FONT-WEIGHT: bold } .rumble_top .mainButton > A { FONT-WEIGHT: bold } .button-1 { FONT-WEIGHT: bold } .button-1-img { FONT-WEIGHT: bold } .modeSwitchWrap { TOP: 6px; RIGHT: 0px; LEFT: auto } .modeSwitchWrap DIV { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .modeSwitch { POSITION: relative; DISPLAY: block; OVERFLOW: hidden } .read-on { MARGIN-RIGHT: 0px } A.read-off IMG { POSITION: absolute; BOTTOM: 0px; LEFT: 0px } A.read-on IMG { POSITION: absolute; BOTTOM: 0px; RIGHT: 0px } .switcherLabel { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .helpLink { POSITION: relative; TOP: 1px } .helpLink A.browseIcon { DISPLAY: inline-block } .vtbeSwitch { POSITION: relative; FLOAT: right } .vtbeSwitch SPAN { DISPLAY: inline-block } .fileInputWrapper { POSITION: relative; FLOAT: left; OVERFLOW: hidden } .fileInputWrapper INPUT.hiddenInput { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: right; FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 210%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px; opacity: 0 } .fileInputWrapper INPUT[type='file'] { FILTER: alpha(opacity=0) !important } .fileInputWrapper INPUT.visibleInput { Z-INDEX: 1; POSITION: relative; TOP: 0px; RIGHT: 0px } .frameResizeToggle { POSITION: absolute; BOTTOM: 0px; DISPLAY: block; OVERFLOW: hidden; LEFT: 0px; _top: 68px } A.colorChip { DISPLAY: inline-block } A.colorChip SPAN { DISPLAY: inline-block } .clearfix:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfixParent > *:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfix { DISPLAY: block } .clearfixParent > * { DISPLAY: block } INPUT[type='button'] { } INPUT[type='submit'] { } BUTTON { } FORM#content { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } .reorder { POSITION: absolute; CURSOR: move } .contextMenuContainer { ZOOM: 1 } .gbtable .contextMenuContainer { DISPLAY: inline } .gbtable_header .contextMenuContainer { DISPLAY: inline } .gbtable_header TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } .gbtable THEAD TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } A.cmimg { ZOOM: 1 } HTML { FONT: 300 0.78em "Lucida Grande", Arial, sans-serif } H1 { FONT-SIZE: 148% } H2 { FONT-SIZE: 123.1% } H3 { FONT-SIZE: 110% } H1 { MARGIN: 1em 0px } H2 { MARGIN: 1em 0px } H3 { MARGIN: 1em 0px } A { COLOR: #128fa8; TEXT-DECORATION: none } A:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } TABLE { FONT-SIZE: 100% } THEAD TH { FONT-WEIGHT: bold } #contentFrame { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } #schemePreview { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY.topFrame { BACKGROUND: #f7f7f7 } BODY.login-page { POSITION: relative; MIN-HEIGHT: 800px } BODY.popup { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } BODY.csMenuFrame { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } BODY.popupMenu { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } .csMenuFrame { FONT-SIZE: 95% } BODY.my-places-popup { MIN-WIDTH: 300px; WIDTH: auto; BACKGROUND: #fff } BODY.external-breadcrumbs { BACKGROUND-IMAGE: none } BODY.picker { MIN-WIDTH: 400px; BACKGROUND: #fff } .breadcrumbs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 9px; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .locationPane { MARGIN-TOP: 12px } BODY.picker .locationPane { MARGIN: 0px; DISPLAY: block } .csPicker .locationPane { DISPLAY: block } .navigationPane { MARGIN: 0px; WIDTH: 210px; TOP: 0px; LEFT: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .menuWrap { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .contentPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px 0px 222px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portalPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .popup .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .picker .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .course-tools-page #listContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 0px } .picker .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } .popup .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } #puller { Z-INDEX: 3; POSITION: absolute; BOTTOM: 1px; TOP: -1px; RIGHT: -8px; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A { BORDER-BOTTOM: #777 1px solid; POSITION: relative; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 8px; BACKGROUND: url(images/reorder_bg.png) #bbb repeat-y; HEIGHT: 100%; OVERFLOW: visible; BORDER-TOP: #777 1px solid; BORDER-RIGHT: #777 1px solid; opacity: 0; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0; box-shadow: 1px 0 3px rgba(0, 0, 0, 0.4) inset } .menuWrap:hover #puller A { FILTER: alpha(opacity=100); opacity: 1; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A:after { BORDER-BOTTOM: #666 1px solid; POSITION: absolute; FILTER: alpha(opacity=0) !important; BORDER-LEFT: #666 0px solid; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1; BACKGROUND-COLOR: #777; PADDING-LEFT: 1px; PADDING-RIGHT: 6px; DISPLAY: none !important; COLOR: #fff; FONT-SIZE: 180%; BORDER-TOP: #666 1px solid; CONTENT: "\2190"; TOP: 200px; RIGHT: -30px; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 3px; opacity: 0; -webkit-transition: opacity .5s ease-in-out; -moz-transition: opacity .5s ease-in-out; border-radius: 0 12px 12px 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, .5); transition: opacity .5s ease-in-out } .pullcollapsed#puller A { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #00add0; opacity: 1 } #puller A:hover { BACKGROUND-COLOR: #777 } #puller A IMG { POSITION: relative; FILTER: alpha(opacity=0)\9; PADDING-BOTTOM: 3px; PADDING-LEFT: 1px; WIDTH: 12px; PADDING-RIGHT: 6px; BACKGROUND: url(images/menu_expand_rtl.gif) no-repeat 0px 0px; HEIGHT: 24px; TOP: 200px; RIGHT: -9px; PADDING-TOP: 3px } .pullcollapsed#puller A:hover { BACKGROUND-COLOR: #777; -webkit-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller A:after { CONTENT: "\2192"; opacity: 0 } .pullcollapsed#puller A:hover:after { opacity: 1 } #puller A:hover:after { opacity: 1 } .pullcollapsed#puller A:hover IMG { FILTER: alpha(opacity=100) } #puller A:hover IMG { FILTER: alpha(opacity=100) } .pullcollapsed#puller A:hover IMG { BACKGROUND: url(images/menu_collapse_rtl.gif) no-repeat 0px 0px } .navcollapsed { MARGIN-LEFT: -210px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller { RIGHT: -10px; opacity: 1; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navcollapsed .menuWrap { DISPLAY: block !important } .contcollapsed { MARGIN-LEFT: 12px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #topFrame { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .bgBanner { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .brandingImgWrap { HEIGHT: 46px } .brandingImgWrap A { MARGIN: 8px 12px 0px; DISPLAY: inline-block } .bannerImage { MAX-HEIGHT: 35px } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #555; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 89px; PADDING-TOP: 0px; -moz-box-shadow: 0 -6px 17px #333 inset; -webkit-box-shadow: 0 -6px 17px #333 inset } .topTabs-compact { HEIGHT: 47px } .tabWrapper-left { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-center { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-right { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .appTabs { POSITION: relative; WIDTH: auto } .topTabs-compact .tabWrapper-left { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-center { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-right { PADDING-TOP: 20px } #topTab { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A SPAN { BORDER-BOTTOM: transparent 1px dotted; PADDING-BOTTOM: 1px } .topTabs-compact .appTabs A SPAN { PADDING-BOTTOM: 0px } .appTabs A:hover { COLOR: #fff } .appTabs A:focus { COLOR: #fff } .appTabs A:hover SPAN { BORDER-BOTTOM: #fff 1px double } .appTabs A:focus SPAN { BORDER-BOTTOM: #fff 1px double } #topTabActive { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:hover { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:focus { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:hover SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:focus SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .topTabs-compact .appTabs .active .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs .active A:hover .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs A { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:hover { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:focus { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .round1 A { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .round2 A { -moz-border-radius: 12px 12px 0 0; -webkit-border-radius: 12px 12px 0 0; border-radius: 12px 12px 0 0 } .topGlobalLinks { TEXT-ALIGN: right; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); FLOAT: right; FONT-SIZE: 90%; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .topGlobalLinks UL { Z-INDEX: 1001 } .topGlobalLinks UL LI { MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; COLOR: #ccc } .loggedInAs { POSITION: relative; FONT: italic 100% Georgia; COLOR: #999; BORDER-TOP: 0px } .loggedInAs IMG { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 18px !important; PADDING-RIGHT: 1px; DISPLAY: inline-block; HEIGHT: 18px !important; TOP: -2px; RIGHT: -9px; PADDING-TOP: 1px; LEFT: auto } .loggedInAs SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: inline-block; PADDING-TOP: 6px } .topGlobalLinks A { BACKGROUND-IMAGE: none !important; MIN-WIDTH: 18px; TEXT-ALIGN: left; PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline-block; COLOR: #ccc; PADDING-TOP: 6px } .topGlobalLinks UL LI:first-child A { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks UL LI:first-child { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks A .link-icon { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); WIDTH: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; FLOAT: right; HEIGHT: 16px; OVERFLOW: hidden } .topGlobalLinks .myPlaces .link-icon { BACKGROUND-POSITION: -113px 0px } .topGlobalLinks .myPlaces:hover .link-icon { BACKGROUND-POSITION: -113px -16px } .topGlobalLinks .home .link-icon { BACKGROUND-POSITION: -129px 0px } .topGlobalLinks .home:hover .link-icon { BACKGROUND-POSITION: -129px -16px } .topGlobalLinks .logout .link-icon { DISPLAY: none } .topGlobalLinks .logout { PADDING-BOTTOM: 6px; TEXT-INDENT: 0px; PADDING-LEFT: 9px; WIDTH: auto !important; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .topGlobalLinks .help .link-icon { BACKGROUND-POSITION: -145px 0px } .topGlobalLinks .help:hover .link-icon { BACKGROUND-POSITION: -145px -16px } .topGlobalLinks A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topGlobalLinks A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topTabs-compact .loggedInAs SPAN { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks A { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks .logout { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } UL.nav LI.sub UL.narrow LI A { TEXT-INDENT: -5px; FONT-SIZE: 90% } .hotItems { Z-INDEX: 10000; POSITION: relative; WIDTH: 240px; FLOAT: right; HEIGHT: 28px; COLOR: #666; MARGIN-LEFT: 6px; FONT-SIZE: 90% } .topTabs-compact .hotItems { DISPLAY: none } .hotItems .hotLinks { POSITION: absolute; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; MAX-HEIGHT: 46px; OVERFLOW: auto; RIGHT: 0px; PADDING-TOP: 4px; LEFT: 0px; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; border-radius: 0 0 0 4px } .hotItems .hotLinks LI { DISPLAY: inline } .hotItems .hotLinks A { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT: italic 100% Georgia; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; TEXT-DECORATION: none; PADDING-TOP: 3px } .hotItems .hotLinks LI:after { POSITION: relative; COLOR: #999; CONTENT: "\2022"; RIGHT: 1px } .hotItems .hotLinks LI A:hover { COLOR: #eee; TEXT-DECORATION: underline } .path { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px } .breadcrumbs .noToggle { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .simplePath LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .path .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .path .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .simplePath .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .path A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .simplePath A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .path A:hover { COLOR: #333; TEXT-DECORATION: underline } .simplePath A:hover { COLOR: #333; TEXT-DECORATION: underline } .path .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .simplePath .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .path .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .simplePath .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .path .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='course_id']:before { CONTENT: "H" } .simplePath .root A[href*='course_id']:before { CONTENT: "H" } .path .root A[href*='admin']:before { CONTENT: "S" } .simplePath .root A[href*='admin']:before { CONTENT: "S" } .path .root A[href*='tabId=']:before { CONTENT: "m" } .simplePath .root A[href*='tabId=']:before { CONTENT: "m" } .path .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .simplePath .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .simplePath .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .path .root A:hover:before { COLOR: #888 } .simplePath .root A:hover:before { COLOR: #888 } .path .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .simplePath .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .path LI.contextPath { PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contextPath > DIV { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath > DIV:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath:hover > DIV { opacity: 1 } .contextPath:hover > DIV:hover { opacity: 1 } .contextPath A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .courseArrow A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .contextPath A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .contextPath A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow { DISPLAY: inline-block } .courseArrow A { DISPLAY: inline-block } .coursePath:hover .courseArrow { opacity: 1 } .banner + .breadcrumbs { BACKGROUND-COLOR: inherit; MARGIN: 0px } .breadcrumb-controls { FLOAT: right } .content { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #contentArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } #schemePreviewBody { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .contentBox { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .popup .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .picker .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .portal .contentBox { -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15) } #contentArea { MARGIN: 0px; COLOR: #444 } .container { MARGIN: 0px; COLOR: #444 } .containerOptions { MARGIN: 0px; COLOR: #444 } .containerPortal { MARGIN: 0px; COLOR: #444 } .containerPortal { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .portal .container { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .containerOptions .searchbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } .containerOptions .liveArea { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } #addFolderForm { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } DIV.okContainer { POSITION: relative; PADDING-BOTTOM: 60px } DIV.ok DIV.container { POSITION: relative; PADDING-BOTTOM: 60px } .collabContainer { POSITION: relative; PADDING-BOTTOM: 60px } .column-1 { MARGIN: 6px 0px 0px } .column-2 { MARGIN: 6px 0px 0px } .column-3 { MARGIN: 6px 0px 0px } .column-4 { MARGIN: 6px 0px 0px } .column-5 { MARGIN: 6px 0px 0px } .leftColumn-narrow { MARGIN: -20px 0px 0px -30px; WIDTH: 22%; FLOAT: left; OVERFLOW: auto; BORDER-RIGHT: #ccc 3px double } .picker .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .picker #bb-question-discover .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .rightColumn-narrow { WIDTH: 22%; FLOAT: right; MARGIN-LEFT: 1% } .rightColumn-wide { WIDTH: 74%; FLOAT: right } .leftColumn-wide { BORDER-LEFT: #ccc 3px double; WIDTH: 76%; FLOAT: left; MARGIN-LEFT: -3px } .picker .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker #bb-question-discover .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker .leftColumn-wide H1 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #bb-question-discover .leftColumn-wide { BORDER-LEFT: #ccc 3px double; MARGIN: -20px -20px 0px -3px; WIDTH: 80% } #bb-question-discover .leftColumn-wide + .leftColumn-wide { BORDER-LEFT: medium none; MARGIN: 0px; WIDTH: auto } #bb-question-discover .leftColumn-narrow { WIDTH: 24% } .leftColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .rightColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .leftColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .rightColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .columnPalette H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .leftColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .rightColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .leftColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } .rightColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } A.itemHead:hover { TEXT-DECORATION: underline } .leftColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .rightColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .leftColumn-narrow H3.hideoff { MARGIN: 0px } .leftColumn-narrow .columnPalette:first-child { BORDER-TOP: 0px } .paletteGroup { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .columnPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .paletteGroup DIV.columnPalette { BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .paletteItems { MARGIN: 0px 0px 4px; FONT-SIZE: 95% } .paletteItems LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 16px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } .paletteItems DIV { MARGIN: 0px 0px 0px 16px } #searchForm .paletteItems LI { MARGIN: 0px 0px 0px 24px } .paletteItems LI A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 110%; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .paletteItems LI LABEL { PADDING-LEFT: 21px; DISPLAY: inline-block } .picker .paletteItems LI LABEL { FONT-SIZE: 94% } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } UL.paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI:hover { BACKGROUND: #fff } .paletteItems LI A:hover { TEXT-DECORATION: underline } .paletteItems LI.selectedItem { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.selectedItem:hover { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active:hover { BACKGROUND: #fff4bf; COLOR: #000 } .columnActions UL LI A { DISPLAY: block } #copyright { POSITION: relative; MARGIN: 16px 0px 0px 9px; DISPLAY: inline-block; FONT-SIZE: 82% } .newCopyright { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 12px; PADDING-TOP: 20px } .logo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .legal { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .additionalInfo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 0px; MIN-HEIGHT: auto; PADDING-LEFT: 9px; PADDING-RIGHT: 12px; PADDING-TOP: 9px } .logo { POSITION: absolute; MARGIN-TOP: -20px; LEFT: 0px } .logo IMG { WIDTH: 45px } .additionalInfo { FLOAT: none } .legal P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P:first-child { PADDING-BOTTOM: 0px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } .additionalInfo P:first-child:after { POSITION: relative; COLOR: #ccc; CONTENT: "\2022"; RIGHT: -1px } .additionalInfo P:first-child A { PADDING-RIGHT: 12px } .additionalInfo P:first-child A:hover { BACKGROUND: url(images/micro_popup.png) no-repeat right 2px } .productTitle A { TEXT-ALIGN: right; LINE-HEIGHT: 1.1em; DISPLAY: block; COLOR: #333; FONT-SIZE: 125%; FONT-WEIGHT: bold; TEXT-DECORATION: none } .productTitle A:hover { TEXT-DECORATION: underline } .additionalInfo A:hover { TEXT-DECORATION: underline } .copyrightDetailContents { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #777; MARGIN: 0px; MIN-HEIGHT: 5em; PADDING-LEFT: 24px; WIDTH: 740px; PADDING-RIGHT: 24px; DISPLAY: none; COLOR: #fff; CLEAR: left; BORDER-TOP: #555 1px solid; TOP: 0px; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 12px; LEFT: 0px; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); border-radius: 3px } .productImg { MARGIN-TOP: 5px; FLOAT: left } .copyrightDetailContents UL { TEXT-ALIGN: left; MARGIN: 4px 0px 0px 24px; FLOAT: left } .copyrightDetailContents UL LI SPAN { FONT-WEIGHT: bold } A.closeCopyright { POSITION: relative; FLOAT: right; TOP: -5px; RIGHT: -16px } .contentBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 1em; MARGIN: 0px 1em 0.6em; PADDING-LEFT: 1.4em; PADDING-RIGHT: 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0.6em } .contentBlock H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; MARGIN: 0px 0px 1em; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .contentBlock UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentBlock UL.threeCol { WIDTH: 30%; FLOAT: left } .contentBlock UL.threeCol LI { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px 3px; FLOAT: none; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contentBlock UL.threeCol LI A { BACKGROUND-IMAGE: none } .contentBlock UL.threeCol LI A:hover { TEXT-DECORATION: underline } .contentBlock UL.threeCol LI A:focus { TEXT-DECORATION: underline } .contentBlock H3 INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock H3 SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock OL LI INPUT[type='checkbox'] { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .contentBlock H3 A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock INPUT.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } DIV.landingListWrapper { TEXT-ALIGN: center; MARGIN: 1.6em 0px 0px } DIV.landingListWrapper UL.landingList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI { TEXT-ALIGN: left; MARGIN: 0px 0px 1.6em; WIDTH: 50% } DIV.landingListWrapper UL.landingList-2cols LI { TEXT-ALIGN: left; MARGIN: 0px 3em 1.6em 0px; WIDTH: 45%; FLOAT: left } DIV.landingListWrapper UL.landingList LI.restart { MARGIN-TOP: -13.6em } DIV.landingListWrapper UL.landingList LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList-2cols LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList LI UL { LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em } DIV.landingListWrapper UL.landingList LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; CLEAR: left; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #000; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .containerLanding { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } DIV.landing DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } BODY.landingBody DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } .inst-email DIV.landing DIV.container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } DIV.landingPageColumn { PADDING-BOTTOM: 0px; MARGIN: 1.2em 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .twoCol { MARGIN: 1.2em 0px; WIDTH: 49% } .threeCol { MARGIN: 1.2em 0px; WIDTH: 32.5% } .landingPageColumn UL { MARGIN: 0px 0px 0px 30px } .landingPageColumn .outcomesLanding { PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI { TEXT-ALIGN: left; MARGIN: 0px 0px 2.2em } .inst-email .landingPageColumn UL LI { MARGIN: 0px } .landingPageColumn .outcomesLanding LI { MARGIN: 0px 0px 1.2em } .landingPageColumn UL LI A { TEXT-DECORATION: none } .landingPageColumn UL LI A:hover { TEXT-DECORATION: underline } .landingPageColumn H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI H3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 115%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } .landingPageColumn .outcomesLanding LI P { BORDER-TOP: 0px } .landingPageColumn H3 IMG { MARGIN: 0px 0px 0px -12px } .landingPageColumn H3.hiddenlink IMG { POSITION: absolute; FILTER: alpha(opacity=40); TOP: 0px; LEFT: 1.1em; opacity: .4 } .landingPageColumn UL LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em; PADDING-LEFT: 1.6em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #555; PADDING-TOP: 1px } .landingPageColumn UL LI UL LI.more { PADDING-TOP: 3px } .landingPageColumn UL LI UL LI.more A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; COLOR: #555; PADDING-TOP: 0px } .landingPageColumn UL LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn H3.hiddenlink { POSITION: relative; PADDING-BOTTOM: 0.6em; PADDING-LEFT: 4.2em; PADDING-RIGHT: 1.2em; PADDING-TOP: 1em } .landingPageColumn H3.hiddenlink A { COLOR: #777; TEXT-DECORATION: none } .landingPageColumn H3.hiddenlink A:hover { COLOR: #777; TEXT-DECORATION: none } .subhead_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #333; FONT-SIZE: 90%; PADDING-TOP: 0px } .list_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 1.3em; PADDING-RIGHT: 2px; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .landingPageColumn .outcomesLanding .list_text A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 3px; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; HEIGHT: 360px; OVERFLOW: auto; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.datalist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.landingPageColumn UL LI UL.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 250px; OVERFLOW: auto; BORDER-TOP: medium none; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.datalistScroll LI { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: white; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.datalistScroll LI:hover { BACKGROUND-COLOR: #ffc } DIV.landingPageColumn UL LI UL.datalistScroll LI:focus { BACKGROUND-COLOR: #ffc } DIV.datalist TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } DIV.datalistScroll TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } .emptylist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: white; MARGIN: 6px 0px 0px 1.4em; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 12px } DIV.landingPageColumn UL LI UL.subcaret { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.subcaret LI { PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.complete { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_complete_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.inprogress { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_active_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } .iconLegendLabel { MARGIN: 1px 0px 1px 1.6em; FONT-SIZE: 95% } DIV.landingPageColumn UL LI UL.subcaret LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI UL.datalist LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI DIV A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI TABLE A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI P A { TEXT-DECORATION: underline } .genericButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .genericButtonImg { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browse { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browseIcon { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } INPUT[type='submit'].submit { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble_top A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paging A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .itemHeaderControl A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .actionMenuButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paletteSearch .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } H3#cs_search + UL DIV.none:first-child .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .mainButton H2 { MARGIN: 0px; FONT-SIZE: 100% } .secondaryButton H2 { MARGIN: 0px; FONT-SIZE: 100% } #primaryButton { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble_top .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1 { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1-img { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } #secondaryButton { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2 { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2-img { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } #secondaryButton { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .sub A IMG { MARGIN: -2px -4px 0px 0px } .sub .button-1 IMG { MARGIN: -2px -4px 0px 0px } .sub .button-2 IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton A IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton .button-2 IMG { MARGIN: -2px -4px 0px 0px } .mainButton A { DISPLAY: block } .secondaryButton A { DISPLAY: block } .actionBar .button-1 { DISPLAY: block } .actionBar .button-2 { DISPLAY: block } .mainButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .mainButton H2 > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .secondaryButton > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .secondaryButton H2 > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .sub.mainButton A { PADDING-RIGHT: 12px } .sub.secondaryButton A { PADDING-RIGHT: 12px } .mainButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A { FONT-WEIGHT: 600 } .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 30px } .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 30px } .popup .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .popup .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .genericButtonImg { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } INPUT[type='submit'].genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browse { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browseIcon { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .paging A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .itemHeaderControl > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .actionMenuButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } #toolsSearchBox + .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .treeContainer .tree LI A.button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .threadButtons .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .dbThreadInfo .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .containerOptions INPUT.genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-2 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-3 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-4 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'] { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'].submit { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='button'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .genericButtonImg { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-3-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .itemHeaderControl A { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .browseIcon { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .genericButtonImg { DISPLAY: inline-block !important } INPUT[type='submit'].genericButton { FONT-WEIGHT: bold } .button-3 { FONT-WEIGHT: bold } .searchbar INPUT[type='submit'].genericButton { FONT-WEIGHT: normal } .u_reverseAlign#editGradeActionList A.genericButton { DISPLAY: inline-block; MARGIN-BOTTOM: 5px } .genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .threadButtons .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .dbThreadInfo .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img.contextArrow:hover { box-shadow: none } .button-4-img.contextArrow:focus { box-shadow: none } .paletteSearch .button-4:hover { BACKGROUND-IMAGE: none !important } .paletteSearch .button-4:focus { BACKGROUND-IMAGE: none !important } .button-5 { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5-img { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5:hover { BACKGROUND: #ededed; COLOR: black } .button-5-img:hover { BACKGROUND: #ededed; COLOR: black } .button-6 { TEXT-DECORATION: none } .mainButton A.disabled { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .rumble A { DISPLAY: block } .rumble_top A { DISPLAY: block } .rumble .sub A IMG { MARGIN: -2px -1px 0px 3px } .rumble_top .sub A IMG { MARGIN: -2px -1px 0px 3px } .paging A { DISPLAY: inline-block } .rumble_top .inventory_paging .gotolink { DISPLAY: inline-block } .rumble .inventory_paging .gotolink { DISPLAY: inline-block } .listItemSelect { MARGIN: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #555 } #threadArea .listItemSelect { MARGIN: 0px } .rumble_top .listItemSelect { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 4px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .listItemSelect { PADDING-BOTTOM: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .rumble .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble_top .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble .listItemSelect A:hover { TEXT-DECORATION: none } .rumble_top .listItemSelect A:hover { TEXT-DECORATION: none } .listItemSelect LABEL { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline; PADDING-TOP: 0px } .listItemSelect SELECT { FONT-SIZE: 95% } INPUT.calcButton { MARGIN: 2px 0px; WIDTH: 2em; DISPLAY: inline-block } INPUT#width { WIDTH: 5em } INPUT#height { WIDTH: 5em } SELECT#border { WIDTH: 5em } SELECT#controls { WIDTH: 5em } .smallControls INPUT[type='text'].width { WIDTH: 5em } .smallControls INPUT[type='text'].height { WIDTH: 5em } .smallControls SELECT.quality { WIDTH: auto } .smallControls SELECT.controls { WIDTH: auto } .smallControls SELECT.border { WIDTH: auto } .actionBarMicro .mainButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .secondaryButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .mainButton A IMG { MARGIN: 0px } .actionBarMicro .secondaryButton A IMG { MARGIN: 0px } .actionBarMicro A SPAN IMG { VISIBILITY: hidden } .actionBar A SPAN IMG { VISIBILITY: hidden } .actionBarMicro .access-reorder { -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .actionBarMicro A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBar A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBarMicro #quickViewLink A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #shortcutView A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #quickViewLink A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#quickViewLink A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #shortcutView A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#shortcutView A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #addCmItem > A SPAN { BACKGROUND-POSITION: -16px 0px } .actionBarMicro #detailViewLink2 UL LI A { WIDTH: 90px } .actionBarMicro #addCmItem:hover > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro .active#addCmItem > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro #detailViewLink A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #folderView A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #detailViewLink2 A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #folderView A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#folderView A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #courseMapButton A SPAN { BACKGROUND-POSITION: -48px 0px } .actionBarMicro #courseMapButton A:hover SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro .active#courseMapButton A SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro #refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshView A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshMenuLink A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro #refreshView A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshView A SPAN { BACKGROUND-POSITION: -64px -16px } A.access-reorder SPAN { BACKGROUND-POSITION: -80px 0px } A.access-reorder:hover SPAN { BACKGROUND-POSITION: -80px -16px } A.active.access-reorder SPAN { BACKGROUND-POSITION: -80px -16px } .actionBar .sub A .chevron { BACKGROUND-POSITION: -95px 0px } .actionBar .sub:hover A .chevron { BACKGROUND-POSITION: -95px -16px } .actionBar .sub A:focus .chevron { BACKGROUND-POSITION: -95px -16px } .actionBarMicro .active > A { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:hover { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:focus { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } A.liveAreaTab:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub H2 > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .mainButton.sub:hover H2 > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang H2:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang:hover H2:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub:hover > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .actionBarMicro UL:hover + UL .active A:after { DISPLAY: none } A.liveAreaTab:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang H2:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang:hover H2:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .sub:hover > A:after { BORDER-BOTTOM-COLOR: #d1eaef } .columnActions.actionBarMicro { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 3px } .alignPanel LI.sub { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .alignPanel LI.sub A.button-4:after { CONTENT: none } .columnActions UL { MARGIN: 0px 0px 2px } .columnActions .mainButton A { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .columnActions .mainButton A:hover { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .modeSwitchWrap { DISPLAY: inline-block; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; FONT-WEIGHT: bold; BORDER-RIGHT: transparent 1px dotted } .modeSwitch { PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: #ccc; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -moz-border-radius: 16px; -webkit-border-radius: 16px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); border-radius: 16px } .modeSwitch:before { POSITION: relative; LINE-HEIGHT: 0.9; COLOR: #bbb; FONT-SIZE: 22px; VERTICAL-ALIGN: middle; CONTENT: "\2022"; TOP: -1px; FONT-WEIGHT: normal; MARGIN-RIGHT: 2px; LEFT: 0px; font-effect: outline } .read-on { BACKGROUND-COLOR: #777; MARGIN-RIGHT: 0px } .read-on:hover { BACKGROUND: #555 } .read-on { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .read-on:before { COLOR: lime; text-shadow: 0 0 4px lime } .disabled.read-on:before { COLOR: #999 } .disabled.read-on { COLOR: #999 } .read-off:before { COLOR: #999 } .read-off { COLOR: #999 } .read-off.modeSwitch { TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } A.read-off IMG { DISPLAY: none } A.read-on IMG { DISPLAY: none } A.read-on .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } A.read-off .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } .modeSwitch SPAN { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .switcherLabel { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 4px !important; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 2px !important } .vtbeSwitch { TOP: 2px } .vtbeSwitch SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .legacy .vtbeSwitch { HEIGHT: 2.2em } .vtbeSwitch DIV.modeSwitchWrap { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ccc 1px solid; TOP: 2px; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .vtbeSwitch DIV.modeSwitchWrap A SPAN#statusText { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 0px !important } .vtbeSwitch DIV.modeSwitchWrap A.read-off { BACKGROUND-COLOR: #ddd } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover { BACKGROUND-COLOR: #fff } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover SPAN#statusText { COLOR: #000 } TABLE.vtbeTable-legacy { WIDTH: 100% } .vtbeTable-legacy TEXTAREA { WIDTH: 100% } .helpLink { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .helpLink A.browseIcon { BORDER-BOTTOM: 0px; POSITION: relative; TEXT-ALIGN: center; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#777777); BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; BACKGROUND: #777; FONT-SIZE: 115%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; box-shadow: none; border-radius: 12px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .helpLink A.browseIcon IMG { DISPLAY: none } .helpLink A.browseIcon:before { Z-INDEX: 1; POSITION: relative; WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: #fff; CONTENT: "?"; RIGHT: -4px; FONT-WEIGHT: bold } .helpLink A.browseIcon:hover { box-shadow: none } .helpLink A.browseIcon:focus { box-shadow: none } .helpLink A[title*='Off'].browseIcon:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bbbbbb,endColorstr=#bbbbbb); BACKGROUND: #bbb } .helpLink A[title*='Off'] { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } TABLE.reorder { opacity: 1 } .reorder SPAN { DISPLAY: inline-block; HEIGHT: 20px } TABLE.reorder SPAN { HEIGHT: auto } .item .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } .item .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .liItem .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .subList-reorder .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .buttonCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .dndHandle .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .portlet .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder { WIDTH: 16px } .subList-reorder .reorder { WIDTH: 16px } .buttonCm .reorder { WIDTH: 16px } .portlet .reorder SPAN { DISPLAY: block; BACKGROUND-POSITION: -237px -116px; HEIGHT: 24px } .portlet .reorder { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; BOTTOM: -1px; BORDER-TOP: #555 1px solid; TOP: -1px; BORDER-RIGHT: #555 0px solid; LEFT: -19px; opacity: 0; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px } .module-dragstate.portlet .reorder { BORDER-RIGHT-WIDTH: 0px; BOTTOM: -2px; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-LEFT-WIDTH: 2px; TOP: -2px; LEFT: -20px } .reorder IMG { FILTER: alpha(opacity=0); opacity: 0 } .item .reorder IMG { MARGIN: 6px 3px } .portlet .reorder IMG { WIDTH: 18px; HEIGHT: 20px } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .liItem:focus .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .listCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buttonCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .portlet H2:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentListPlain LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentList > LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg { MARGIN: 0px; WIDTH: 16px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -125px; HEIGHT: 16px } TABLE.inventory A.cmimg { FILTER: alpha(opacity=0); opacity: 0 } TABLE.inventory TR:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg:hover { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg:focus { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg IMG { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 15px; PADDING-RIGHT: 0px; HEIGHT: 15px; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .buttonCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .portlet A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } A.cmimg-small { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .listCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .listCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .courseMenu .subhead A.cmimg { TOP: 9px } .buttonCm .courseMenu .subhead .cmimg { TOP: 2px } .portlet A.cmimg { POSITION: relative; TOP: 2px; RIGHT: 0px } .listCm .courseMenu A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .portlet A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .buildList LI .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .item .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .buildList LI .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .item .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .listCm .courseMenu LI:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 3px; BOTTOM: 0px; PADDING-RIGHT: 4px; PADDING-TOP: 4px; -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); border-radius: 0 3px 0 0 } .frameResizeToggle A { WIDTH: 16px; DISPLAY: block; BACKGROUND: url(images/utilicons_sprite_rev.png) no-repeat -158px 0px; HEIGHT: 16px; OVERFLOW: hidden } .frameResizeToggle:hover { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle A.resize-on { BACKGROUND-POSITION: -175px 0px; opacity: .5 } .frameResizeToggle A.resize-off { BACKGROUND-POSITION: -159px 0px; opacity: .8 } .frameResizeToggle A.resize-on:hover { BACKGROUND-POSITION: -159px -16px; opacity: 1 } .frameResizeToggle A.resize-off:hover { BACKGROUND-POSITION: -175px -16px; opacity: 1 } .frameResizeToggle A IMG { WIDTH: 18px; HEIGHT: 18px } A.close { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close-menu { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close { TOP: 0px; RIGHT: 20px } A.close IMG { DISPLAY: none } A.close-menu IMG { DISPLAY: none } .lbAction IMG { DISPLAY: none } A.close:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } .lbAction:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT-SIZE: 14px } A.close:hover:before { COLOR: #888 } A.close-menu:hover:before { COLOR: #888 } .lbAction:hover:before { COLOR: #888 } .builderItem A.close { FILTER: alpha(opacity:0); opacity: 0 } .builderItem:hover A.close { FILTER: alpha(opacity:100); opacity: 1 } .liveArea A.close { TOP: 6px; RIGHT: 6px } .cmdiv A.close-menu { Z-INDEX: 100; POSITION: relative; FILTER: alpha(opacity=100); TOP: 0px; RIGHT: 0px; opacity: 1 } #bb-assessment-canvas [id*='receipt_nested'].receipt A.close { TOP: 6px; RIGHT: 6px } A.colorChip { PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 1px } .pageTitle A.colorChip { PADDING-BOTTOM: 4px; PADDING-LEFT: 7px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } A.colorChip SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -123px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } A.colorChip:hover SPAN { BACKGROUND-POSITION: -320px -141px } A.colorChip SPAN IMG { FILTER: alpha(opacity=0); WIDTH: 16px; HEIGHT: 16px; opacity: 0 } A.colorChip IMG.chipSwatch { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 16px; HEIGHT: 16px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #aaa 1px solid } SPAN.colorChipName { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: inline-block !important; VERTICAL-ALIGN: middle; PADDING-TOP: 0px !important } INPUT[type='text'] { FONT-SIZE: 90% } INPUT[type='password'] { FONT-SIZE: 90% } SELECT { FONT-SIZE: 90% } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .courseMenu INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .courseMenu INPUT[type='text'] { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { MARGIN-LEFT: 0px } #calculatorValue { MARGIN: 3px 0px; WIDTH: 10em } A.microControl { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A.microControl IMG { WIDTH: 12px; HEIGHT: 12px } A.save { BACKGROUND: url(images/controls.png) no-repeat -50px -123px } A.cancel { BACKGROUND: url(images/controls.png) no-repeat -70px -123px } .fileInputWrapper { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; MARGIN-RIGHT: 9px; PADDING-TOP: 0px } .fileInputWrapper INPUT.hiddenInput { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .backLink { POSITION: absolute; MARGIN: 0px; BOTTOM: 0px; RIGHT: 0px } .tocBottom_min .backLink { BOTTOM: 48px } .tocBottom_max .backLink { BOTTOM: 348px } .tocBottom_open .backLink { BOTTOM: 178px } .shortDoc .backLink { POSITION: relative; TEXT-ALIGN: left; MARGIN-TOP: 15px; BOTTOM: 0px; RIGHT: 0px } .backLink A { BORDER-BOTTOM: #cdcdcd 0px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 18px; DISPLAY: inline-block; BACKGROUND: #eee; COLOR: #888; BORDER-TOP: #cdcdcd 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #cdcdcd 0px solid; TEXT-DECORATION: none; PADDING-TOP: 8px; -moz-box-shadow: 1px 1px 4px #DDD inset; -webkit-box-shadow: 1px 1px 4px #ddd inset; -moz-border-radius: 4px 0 4px 0; -webkit-border-radius: 4px 0 4px 0; text-shadow: 0 1px 0 #fff } .shortDoc .backLink A { BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px } .backLink A:before { LINE-HEIGHT: 1.2; COLOR: #999; FONT-SIZE: 120%; CONTENT: "\2190" } .backLink A:hover { BACKGROUND: #ddd; COLOR: #777 } .backLink A:hover:before { COLOR: #00add0 } .sliderWrapper { BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 0px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 13px; BACKGROUND: #fff; FLOAT: left; FONT-SIZE: 85%; PADDING-TOP: 14px; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0 } #sliderHandle { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: -2px 0px 0px; WIDTH: 4px; DISPLAY: block; BACKGROUND: #999; HEIGHT: 4px; BORDER-TOP: #555 1px solid; CURSOR: ew-resize; BORDER-RIGHT: #555 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } #sliderTrack { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 6px; WIDTH: 60px; DISPLAY: inline-block; BACKGROUND: #ededed; HEIGHT: 2px; BORDER-TOP: #ccc 1px solid; TOP: -2px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .itemCounter { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #cdcdcd; FONT-SIZE: 115%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #pageHeader { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitleSmall { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } #pageHeader { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #schemePreviewHead { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitle H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitleError H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #pageHeader { FONT-SIZE: 185% } .pageTitle H1 { FONT-SIZE: 185% } .pageTitleError H1 { FONT-SIZE: 185% } .picker .pageTitle H1 { FONT-SIZE: 160% } .popup .pageTitle H1 { FONT-SIZE: 160% } .pageTitle #titleicon { DISPLAY: inline-block } .pageTitle H1 { DISPLAY: inline-block } .pageTitle A.cmimg { DISPLAY: inline-block } .pageTitle H1 + .contextMenuContainer { POSITION: relative; MARGIN-LEFT: 2px; VERTICAL-ALIGN: top; TOP: 4px } .pageTitle A.cmimg { MARGIN: 0px } .pageTitle #titleicon { MARGIN: 0px 6px 0px 0px; DISPLAY: none } .pageTitle [src*='slideshare']#titleicon { BORDER-BOTTOM: #dedede 1px solid; POSITION: absolute; BORDER-LEFT: #dedede 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; WIDTH: auto; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #fff; HEIGHT: 39px; BORDER-TOP: #dedede 0px solid; TOP: 1px; RIGHT: 7px; BORDER-RIGHT: #dedede 0px solid; PADDING-TOP: 4px; border-radius: 0 4px 0 4px } .pageTitle [src*='youtube']#titleicon { POSITION: absolute; WIDTH: auto; DISPLAY: block; HEIGHT: 44px; TOP: 8px; RIGHT: 14px } .pageTitleSmall H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #fff; FONT-SIZE: 135%; PADDING-TOP: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.9) } #pageHeader { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } #schemePreviewHead { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .hierarchy-page .pageTitle + .container { MARGIN-TOP: -20px; BACKGROUND: #fff } .picker .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popup .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } #pageHeader { BACKGROUND-COLOR: #dedede } #schemePreviewHead { BACKGROUND-COLOR: #dedede } .pageTitleIcon { DISPLAY: table-row } .pageTitle .details { DISPLAY: none } .pageTitle .contextMenuContainer { DISPLAY: inline-block !important } .pageTitle .titleButtons { DISPLAY: inline-block !important } .pageTitleEdit { DISPLAY: inline-block !important } #pageTitleBar { DISPLAY: inline-block; MARGIN-RIGHT: 6px } .pageTitle H2 { MARGIN: 0px; COLOR: #333; CLEAR: both; FONT-SIZE: 100% } .pageTitle H2 SPAN { FONT-WEIGHT: normal } .contextString { COLOR: #777; FONT-WEIGHT: normal } .pageTitle .label { COLOR: #777; FONT-WEIGHT: normal } .error .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#DB0F0F,endColorstr=#FC0202); box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6) inset } .error .pageTitle H1 { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2) } .customBanner { TEXT-ALIGN: center; BACKGROUND-COLOR: transparent; MARGIN: 0px; OVERFLOW: hidden } DIV.localViewToggle + DIV.pageTitle { PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #fafafa inset; border-radius: 0 } DIV#lightboxContent H2 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; FONT-SIZE: 130%; PADDING-TOP: 18px } .helphelp { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .pageTitle P { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .label.details { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .mapTabs + .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .mapTabs ~ .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .helphelp A { BORDER-BOTTOM: #666 1px dotted; COLOR: #666; TEXT-DECORATION: none } .helphelp A:hover { BORDER-BOTTOM-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-TOP-STYLE: solid; BORDER-LEFT-STYLE: solid } DIV.helphelp UL { MARGIN: 6px 0px } .version { MARGIN-TOP: 6px; DISPLAY: inline-block; COLOR: #666; FONT-SIZE: 60%; FONT-WEIGHT: normal } .version I { FONT-STYLE: normal; FONT-WEIGHT: bold } .version SPAN { POSITION: relative; WIDTH: 13px; DISPLAY: inline-block; OVERFLOW: hidden; TOP: -2px; LEFT: -5px } .version SPAN:before { POSITION: relative; COLOR: #00add0; FONT-SIZE: 105%; CONTENT: "+"; TOP: 0px; FONT-WEIGHT: bold; LEFT: 0px } .colophon { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px 14px; PADDING-LEFT: 55px; WIDTH: 30em; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: right; FONT-SIZE: 85%; OVERFLOW: visible; RIGHT: 0px; PADDING-TOP: 0px } .colophon IMG { POSITION: absolute; LEFT: 0px } .installation { LINE-HEIGHT: 1.3em; COLOR: #666 !important } .installation SPAN { FONT-WEIGHT: bold } .actionBar { Z-INDEX: 110; BORDER-TOP: #444 1px solid; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .hierarchy-page .actionBar { MARGIN-TOP: -21px } .hierarchy-page #toolsTabForm .actionBar { MARGIN: -21px -30px 0px } .actionBar UL LI { POSITION: relative } .actionBar UL LI.mainButton { Z-INDEX: 210 } .actionBar UL LI.secondaryButton { Z-INDEX: 209 } .actionBar UL LI.mainButton:hover { Z-INDEX: 112 } .pageTitle + .actionBar { -moz-border-radius: 0; border-radius: 0 } .actionBar .mainButton { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBar .secondaryButton { MARGIN: 0px; FLOAT: right } .actionMenu { Z-INDEX: 111; POSITION: relative } .actionMenuItem { Z-INDEX: 123; POSITION: relative } .actionBarMicro { -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .csMenuFrame .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popupMenu .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .portlet .actionBarMicro { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .portlet .actionBarMicro UL { MARGIN: 2px } .actionBarMicro UL LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBarMicro .mainButton { Z-INDEX: 1000 } .actionBarMicro .secondaryButton { Z-INDEX: 10; FLOAT: right } .actionBar { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .actionBarMicro { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .searchbar { POSITION: relative } .searchbarPicker { POSITION: relative } .subActionBar { POSITION: relative } .searchbarCanvas.searchbar { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN: -24px -30px 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dfdfdf 0px 0px; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #F0F0F0 inset; -webkit-box-shadow: 1px 0 0 #F0F0F0 inset } .picker .searchbarCanvas.searchbar { MARGIN: -24px -20px 20px } .picker .leftColumn-narrow H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } .picker .leftColumn-wide H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } #bb-question-discover .searchbarCanvas.searchbar FIELDSET H2 { DISPLAY: inline-block; FONT-SIZE: 100%; FONT-WEIGHT: normal } .subActionBar { FONT-SIZE: 95% } .searchbar TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE TD TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE FIELDSET { PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 3px } .searchbar TABLE DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .searchbar FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchbarPicker { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .searchbar:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .searchbarPicker:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .receipt A.close { FILTER: alpha(opacity=70); TOP: 1px; RIGHT: 4px; opacity: .7 } .slideshowControls { TEXT-ALIGN: center; MARGIN: 8px auto 12px; FONT-SIZE: 100% } .searchbar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbarPicker FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .subActionBar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbar H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .searchbarPicker H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .picker .searchbar H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbarPicker H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbar .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbarPicker .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .liveArea FIELDSET .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbar OL LI { MARGIN: 5px; FLOAT: left } .searchbarPicker OL LI { MARGIN: 5px; FLOAT: left } .liveArea FIELDSET OL LI { MARGIN: 5px; FLOAT: left } .searchbar OL LI > DIV { MARGIN: 0px 4px 4px 0px; DISPLAY: inline-block } .searchbar OL LI.options { FLOAT: right } .searchbarPicker OL LI.options { FLOAT: right } .liveArea FIELDSET OL LI.options { FLOAT: right } .searchbarPicker SPAN { DISPLAY: inline } .searchbar SPAN.spacer { MARGIN: 0px 4px } .cmImg { TEXT-ALIGN: center; MARGIN: 0px 0px 6px 12px; WIDTH: 180px; OVERFLOW: hidden } .cmImg IMG { WIDTH: 180px } .navDivider { PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; MARGIN: 0px 0px 4px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; LETTER-SPACING: 2px; COLOR: #999; FONT-SIZE: 80%; FONT-WEIGHT: bold; PADDING-TOP: 18px; text-shadow: 0 1px 0 #f9f9f9 } .cmPreviewWrapper { WIDTH: 212px } .navPalette { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .csMenuFrame .navPalette { MARGIN: 0px 0px 18px } .navPalette H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 105%; PADDING-TOP: 0px } .navPaletteTitle { POSITION: relative } .navPaletteTitle H3 + H3 { POSITION: absolute; TOP: 0px; RIGHT: 0px } .navPaletteCol H3 { BORDER-BOTTOM: 0px } .navPalette H4 { MARGIN: 0px; FONT-SIZE: 100% } .navPaletteContent UL LI { POSITION: relative; ZOOM: 1 } .navPaletteContent { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .listCm .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .singleControl .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .tools .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } #courseMenuPalette DIV.navPaletteContent { PADDING-BOTTOM: 14px; PADDING-TOP: 14px; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset } #courseMenuPalette { MARGIN-BOTTOM: 0px } .singleControl .navPaletteContent { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .singleControl { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPalette .discover { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPaletteContent A { PADDING-BOTTOM: 3px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; WORD-BREAK: normal; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 3px } .navPaletteContent A:hover { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A:focus { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A.comboLink { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.open { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.submenuLink { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink_active { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent A.submenuLink_active IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent UL LI:first-child H4 A { BORDER-TOP: medium none } .navPaletteContent UL LI:first-child A { BORDER-TOP: medium none } .navPaletteContent UL LI H4 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPaletteContent H3 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px; text-shadow: 0 1px 0 #f9f9f9 } .navPaletteContent H3 A:hover { TEXT-DECORATION: none } .navPaletteContent H3 A:focus { TEXT-DECORATION: none } #courseMenu { BACKGROUND-COLOR: #0078cb; COLOR: #fff } .controlpanel UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .controlpanel A { BORDER-TOP: #ccc 1px dotted } .controlpanel A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .controlpanel A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { DISPLAY: inline-block } .navPaletteContent H3 A.submenuLink_active { DISPLAY: inline-block } .controlpanel A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .controlpanel A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink_active:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .navPaletteContent H3 A.submenuLink_active:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .controlpanel A.submenuLink:hover:after { COLOR: #aaa } .controlpanel A.submenuLink_active:hover:after { COLOR: #aaa } .tools A.submenuLink:hover:after { COLOR: #aaa } .tools A.submenuLink_active:hover:after { COLOR: #aaa } .navPaletteContent H3 A.submenuLink:hover:before { COLOR: #aaa } .navPaletteContent H3 A.submenuLink_active:hover:before { COLOR: #aaa } .controlpanel A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .tools A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel H4 A.open { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navPaletteContent UL LI:first-child H4 A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore H4 { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel A.comboLink_active { Z-INDEX: 1; POSITION: relative } .tools A.comboLink_active { Z-INDEX: 1; POSITION: relative } .controlpanel H4 A.open { Z-INDEX: 1; POSITION: relative } .treeViewCs .navPaletteContent { } .treeViewCs .bottomRound B { } .courseFilesPalette { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .paletteSearch { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 6px } .classFiles H4#cs_search + UL LI:first-child { BORDER-BOTTOM: #aaa 1px dotted; PADDING-BOTTOM: 6px; MARGIN: 2px 9px 2px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 95%; PADDING-TOP: 0px } .classFiles H4#cs_search + UL LI { BACKGROUND-IMAGE: none } .classFiles A#filesPaletteContentCollectionLink { BACKGROUND-IMAGE: url(images/indicators.png); PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 98% -143px; COLOR: #aaa; PADDING-TOP: 3px } .navPaletteContent .submenu .paletteSearchElement { PADDING-BOTTOM: 9px; MARGIN: 6px 0px 0px -16px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BORDER-TOP: #bbb 1px dotted; PADDING-TOP: 10px } .paletteSearchElement INPUT { WIDTH: 99px } .classFiles UL.tree > LI { BACKGROUND-IMAGE: none !important } .listCm .courseMenu { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .ineditmode DIV.listCm UL.courseMenu { MARGIN: 0px } .ineditmode DIV.listCm UL.courseMenu LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px -1px 0px 0px; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid } .ineditmode DIV.listCm UL.courseMenu LI:hover { BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff !important; -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -moz-transition: border, margin, background, -moz-box-shadow 500ms cubic-bezier(0.420, 0.000, 1.000, 1.000); box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-transition-property: background, border, -webkit-box-shadow; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000); background-clip: padding-box } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder { -webkit-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder:before { -webkit-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .listCm .courseMenu LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .buttonCm LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .buttonCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .listCm .courseMenu A:hover { TEXT-DECORATION: underline } .listCm .courseMenu A:focus { TEXT-DECORATION: underline } .buttonCm LI A:hover { TEXT-DECORATION: underline } .buttonCm LI:focus { TEXT-DECORATION: underline } .listCm .courseMenu > LI:hover A SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:hover { COLOR: #128fa8 !important } .listCm .courseMenu A:focus { COLOR: #128fa8 !important } .listCm .courseMenu A:hover SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:focus SPAN { COLOR: #128fa8 !important } .listCm .courseMenu .here A { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:hover { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:focus { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A.cmimg { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu .here A.cmimg:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .listCm .subhead H3 { PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #courseMenu_folderView H4 A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } #courseMenu_folderView .subhead { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .navPaletteContent .subhead H3 A { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .navPaletteContent .subhead H3 A:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .listCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { BACKGROUND-IMAGE: none !important } .noteditmode .listCm .courseMenu .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .noteditmode .listCm .buttonCm .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .listCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .buttonCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .listCm .courseMenu .collapsed { PADDING-BOTTOM: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; HEIGHT: 2px; PADDING-TOP: 0px } .buttonCm .navPaletteContent { BACKGROUND: none transparent scroll repeat 0% 0% } .buttonCm LI { BACKGROUND-COLOR: transparent; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 12px 0px } .buttonCm .courseMenu .here A { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .buttonCm .courseMenu .here A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .cmLink-hidden { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-empty { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-hidden IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -123px } .cmLink-hidden { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -138px } .buttonCm .invisible .cmLink-hidden { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { RIGHT: 32px } .buttonCm .bottomRound { DISPLAY: none } .pickerMenu { POSITION: absolute; MARGIN: 0px; WIDTH: 150px; TOP: 0px; LEFT: 14px } .pickerMenu UL LI A { BACKGROUND-IMAGE: none } DIV.pickerMenu A.simpleLink { BACKGROUND-IMAGE: none } .pickerMenu A.open { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:hover { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:focus { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .discover .topRound B { } .discover .bottomRound B { } .discover .navPaletteContent { } .singleControl .topRound B { } .singleControl .bottomRound B { } .singleControl .navPaletteContent { } .discover A IMG { DISPLAY: none } .discover.navPalette { MARGIN-BOTTOM: 0px } .singleControl A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .navPalette .discover A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .singleControl A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A.enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .discover A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { COLOR: #3c0; CONTENT: "+" } .discover A:before { COLOR: #eee; CONTENT: "F" } .navPaletteContent .submenu { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; FONT-SIZE: 90%; PADDING-TOP: 0px; -moz-box-shadow: 0 1px 4px #ccc; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore .submenu { BACKGROUND: #fff; FONT-SIZE: 90% } .navPaletteContent .submenu LI { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent .submenu LI UL LI { PADDING-LEFT: 12px } .navPaletteContent .submenu LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } H4#cs_search + UL DIV A { DISPLAY: block; FONT-SIZE: 90% } .controlpanel .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu .emptyMsg { COLOR: #777 } .controlpanel .submenu A:hover { TEXT-DECORATION: underline } .controlpanel .submenu A.here { TEXT-DECORATION: underline } .controlpanel .submenu A:focus { TEXT-DECORATION: underline } .explore .submenu A:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .explore .submenu A:focus { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .tools .submenu { BACKGROUND: #fff } .controlpanel .submenu { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel .submenu LI UL { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND-COLOR: transparent } .navPalette A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .controlpanel A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPalette A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPalette A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPaletteCol H3 A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol H3 A.comboLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol .navPaletteContent H3 { BACKGROUND-IMAGE: none } .navPaletteCol .actionBarMicro { DISPLAY: none } .shortcutViewCs UL LI A { TEXT-ALIGN: center; BORDER-TOP: #ededed 1px dotted } .shortcuts LI A { BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted } .shortcuts LI A:hover { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .shortcuts LI A:focus { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .treeContainer#courseMenu_folderView { OVERFLOW-X: auto } DIV.expTreeContainer { BACKGROUND: #eee } DIV.treeContainer UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.treeContainer > UL.tree { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree > UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.listCm DIV.treeContainer UL.tree { OVERFLOW-X: auto; ZOOM: 1 } DIV.treeContainer UL.tree LI H4 + UL { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; ZOOM: 1; FONT-SIZE: 90%; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .sideTOC UL.tree > LI { OVERFLOW-X: visible } DIV.treeContainer UL.tree LI.last { BACKGROUND-IMAGE: none } UL.tree LI.last { BACKGROUND-IMAGE: none } DIV.treeContainer UL.tree LI.here A { BACKGROUND-COLOR: #ededed } UL.tree LI.here A { BACKGROUND-COLOR: #ededed } DIV.treeContainer UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.open_folder { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: #ebeffa; FONT-SIZE: 95%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.exp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folder.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI A.collapse { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folderopen.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer H4.treehead { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 2px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.treeContainer H4.first { MARGIN: 0px 0px 2px } DIV#userTreeDiv { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead { BACKGROUND-IMAGE: none; MARGIN: 0px; BORDER-TOP: #ccc 1px dotted } DIV.treeContainer UL.tree LI.subhead H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.first A { BORDER-TOP: medium none } DIV.treeContainer UL.tree LI.subhead H4 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 6px } UL.tree LI.subhead:first-child { MARGIN-TOP: 0px } UL.tree LI.subhead:first-child > A { BORDER-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.treeSubhead-collapsed A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: normal } .tableOverflowControl { OVERFLOW-X: auto } .inventory { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 0px; BORDER-SPACING: 0; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-COLLAPSE: separate; BACKGROUND: #fff; COLOR: #000; CLEAR: both; PADDING-TOP: 0px } .inventory CAPTION { TEXT-ALIGN: left; COLOR: #999; FONT-SIZE: 85% } .inventory > THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .splashTable THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .inventory > THEAD TR TH:first-child { BORDER-LEFT: medium none; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .inventory > TBODY { BORDER-BOTTOM: #ccc 2px solid } .inventory > TBODY TR { BORDER-BOTTOM: #ccc 1px solid } .inventory > TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory > TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory#drawerItems TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory#drawerItems TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory > TBODY TR TH { TEXT-ALIGN: left; FONT-WEIGHT: normal } .inventory > TBODY TR TD:first-child { BORDER-LEFT: medium none } .inventory > TBODY .gray TD { BACKGROUND: #fff4bf } .inventory > TBODY .gray TH { BACKGROUND: #fff4bf } .inventory > THEAD TR TH.sorted { BACKGROUND: #ccc } TH.sorted { BACKGROUND: #ccc } .splashTable THEAD TR TH.sorted { BACKGROUND: #ccc } .inventory > TBODY TR TD.sorted { BACKGROUND: #eee } .inventory > THEAD TR TH.sorted A { COLOR: #000 !important; FONT-WEIGHT: bold } .sortable > THEAD TH A { COLOR: #666; MARGIN-RIGHT: 9px } .sortable > THEAD TH A:hover { COLOR: #333; TEXT-DECORATION: underline } .sortable A.sortheader { POSITION: relative; PADDING-RIGHT: 17px; DISPLAY: block; MARGIN-RIGHT: 0px; text-shadow: 0 1px 0 #fff } .sortable .sortarrow { COLOR: #ff0; TOP: 0px; RIGHT: 0px; TEXT-DECORATION: none; LEFT: auto } TR.high { BACKGROUND: #fff4bf } .high { BACKGROUND: #fff4bf } .disabledCell { BACKGROUND-COLOR: #f0f0f0 } .inventory .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .inventory > TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments { WIDTH: 100% } .inventory .dndHandle { POSITION: static; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 5px } .inventory .dndHandle .reorder IMG { HEIGHT: 20px } .inventory .dndHandle .reorder:hover IMG { HEIGHT: 20px } .inventory .dndHandle .reorder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory .dndHandle .reorder:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory TR:hover .dndHandle { BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px } .reorderable > TBODY TR:hover { -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset } .reorderable > TBODY TR:hover TD { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable > TBODY TR:hover TH { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable TBODY TR TD:first-child { BORDER-LEFT: transparent 1px solid } .inventory TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .inventory > TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .attachments TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .attachments TBODY TR { BORDER-TOP: #eee 1px solid } .inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } .attachments TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .attachments TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory > TBODY UL.subtabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } TABLE.inventory > TBODY UL.subtabs LI { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.status { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; BACKGROUND: #f9f9f9; COLOR: #000; FONT-SIZE: 90%; PADDING-TOP: 1px } DIV.status A IMG { VERTICAL-ALIGN: middle } DIV.status P { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left !important; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; LINE-HEIGHT: 10%; MARGIN: 2px auto 4px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } DIV.status P IMG { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #8dafaf; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 8px; PADDING-TOP: 0px } DIV.stopped P IMG { BACKGROUND: url(images/controls.png) #fff no-repeat -20px -180px } DIV.status A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.status DIV { POSITION: relative; TEXT-ALIGN: center } DIV.status A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } TABLE.inventory-simple { MARGIN: 0px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } TABLE.attachments THEAD TR.warningRow { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TABLE.inventory-simple THEAD TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } TABLE.inventory-simple TBODY TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TH { COLOR: #000 } TABLE.inventory-simple .removeCell { BACKGROUND: #ededed; COLOR: #777 } TABLE.inventory-simple .removeCell TD { COLOR: #999 } TABLE.inventory-simple .removeCell TH { COLOR: #999 } TABLE.inventory-simple .removeCell TD A IMG { FILTER: alpha(opacity=40); opacity: .4 } TABLE.inventory-simple .smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.inventory-simple TBODY TR.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TD { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TH { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.stepItems-reorder { BORDER-SPACING: 0; MARGIN-BOTTOM: 12px; FONT-SIZE: 85% } TABLE.gbColumns { ZOOM: 1; FONT-SIZE: 90% } TABLE.stepItems-reorder TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BACKGROUND: #fff; COLOR: #999 } TABLE.gbColumns THEAD TR TH { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TD { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TH.sorted { BORDER-LEFT: #777 1px solid; BACKGROUND: #999; BORDER-RIGHT: #777 1px solid } TABLE.gbColumns THEAD TR TH A { COLOR: #fff } TABLE.gbColumns THEAD TR TD A { COLOR: #fff } TABLE.stepItems-reorder THEAD TR.lowerHeader TH { BORDER-BOTTOM: #ccc 2px solid; COLOR: #333 } TABLE.stepItems-reorder TBODY TR TD.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder THEAD TR TH.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder TR TH.clearCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TD { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TH { BORDER-TOP: 0px } TABLE.stepItems-reorder THEAD TR:first-child { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; TEXT-ALIGN: right; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD SPAN.reorder { POSITION: relative; FILTER: alpha(opacity=100); WIDTH: 18px !important; DISPLAY: block; BACKGROUND: url(images/controls.png) #ededed no-repeat -177px -122px; HEIGHT: 20px; TOP: 2px; CURSOR: move; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; LEFT: auto; opacity: 1; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } TABLE.gbColumns TBODY TR TD SPAN.reorder { BACKGROUND: url(images/controls.png) #ededed no-repeat -237px -122px } TABLE.stepItems-reorder TBODY TR.frozenbar TD SPAN.reorder { TOP: 1px } TABLE.stepItems-reorder TBODY TR TD INPUT { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: 95%; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } TABLE.stepItems-reorder TBODY TR TD.points INPUT { WIDTH: 3em } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=text] { WIDTH: 90% } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=checkbox] { WIDTH: auto } TABLE.stepItems-reorder TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px 4px 0px 0px } TABLE.gbColumns TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px; WIDTH: auto } TABLE.gbColumns TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; PADDING-TOP: 6px } TABLE.gbColumns TBODY TR.frozenbar TD { BACKGROUND: #ccc; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: 0px } TABLE.gbColumns TFOOT TR.lastRow TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #999; HEIGHT: 2px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.frozen TD { BACKGROUND: #ededed } TABLE.gbColumns THEAD TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } TABLE.gbColumns TBODY TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } DIV.areaHighlight TABLE.gbColumns THEAD TR TD.clear { BACKGROUND: inherit } TD.clear { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozen TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TFOOT TR.lastRow TD.clear { BACKGROUND: inherit } TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.gbColumns TBODY TR.placeholder TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.placeholder TD.clear { BACKGROUND: inherit } UL.dragableHighlight LI TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozen TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TFOOT TR.lastRow TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TR.rowdrag { Z-INDEX: 1; BACKGROUND: #ccc } .insertImg { Z-INDEX: 20; POSITION: relative; TOP: 12px } .insertImgUp { Z-INDEX: 20; POSITION: absolute; RIGHT: -10px } TABLE.inventory > TBODY TR TD.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > THEAD TR TH.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > TBODY TR TD.hideCell { DISPLAY: none } TABLE.inventory > THEAD TR TH.hideCell { DISPLAY: none } .clickOrder { DISPLAY: none } TABLE.inventory > TBODY TR TD.clickOrder { BORDER-LEFT: medium none; BACKGROUND-COLOR: #ddd } TABLE.inventory TR TD.endCell { PADDING-BOTTOM: 0px !important; BACKGROUND-COLOR: #ddd !important; PADDING-LEFT: 0px !important; WIDTH: 1px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.inventory TR.orderRow TD.clickOrder { TEXT-ALIGN: center; BACKGROUND-COLOR: #ddd } TABLE.inventory TR.orderRow TD.clickOrder DIV { POSITION: relative } .sortedplus { BACKGROUND-IMAGE: url(images/controls.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 48% -995px } .dragCol { BACKGROUND-COLOR: #999 } TABLE.splashTable { BORDER-BOTTOM: #ccc 2px solid; MARGIN: 3px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.splashTable THEAD TR { COLOR: #999 } TABLE.splashTable THEAD TR TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } TABLE.splashTable THEAD TR TH A { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #666; TEXT-DECORATION: none } TABLE.splashTable THEAD TR TH A:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; TEXT-DECORATION: underline } TABLE.splashTable TBODY TR { BORDER-TOP: #ddd 1px solid } TABLE.splashTable TBODY TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TH { TEXT-ALIGN: left; COLOR: #000 } TABLE.splashTable TH.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.splashTable TD.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } .contentBlock A { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -450px; TEXT-DECORATION: none } .contentBlock A.collapse { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -1045px; TEXT-DECORATION: none } .contentBlock A.collapse:hover { TEXT-DECORATION: underline } .contentBlock A.hover { TEXT-DECORATION: underline } TABLE.reorderCols { MARGIN: 18px 0px 9px; WIDTH: 100%; BORDER-COLLAPSE: collapse; CLEAR: both; FONT-SIZE: 95% } TABLE.reorderCols THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #ededed; BORDER-TOP: #ccc 1px solid; CURSOR: move; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } TABLE.reorderCols THEAD TR TH.noReorderCol { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; CURSOR: default; BORDER-RIGHT: medium none } TABLE.reorderCols TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed; COLOR: #555 } TABLE.reorderCols THEAD TH SPAN.reorderToolTip { BACKGROUND: url(images/controls.png) #ddd no-repeat -347px -122px } TABLE.reorderCols THEAD TR TH.axis { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed 0px 50%; COLOR: #555 } .ghostTd { BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; FONT: 10px arial; BACKGROUND: #eee; HEIGHT: auto; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 2px } TABLE.reorderCols THEAD TH.dragging { BACKGROUND: #ccc } TABLE.reorderCols THEAD TH.hovering { BACKGROUND: #666 } TABLE.reorderCols THEAD TH.hovering IMG { DISPLAY: none } .rumble { MARGIN: 0px 0px 9px; BACKGROUND: url(images/selected_items.png) no-repeat -1974px center } .rumble_top { MARGIN: 12px 0px 0px; BACKGROUND: url(images/selected_items.png) no-repeat 12px center } #mapCanvasForm .rumble_top { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble_top { BORDER-BOTTOM: #eee 2px solid } .noBatchActions { BACKGROUND-IMAGE: none !important; PADDING-BOTTOM: 5px !important; PADDING-LEFT: 5px !important; PADDING-RIGHT: 5px !important; PADDING-TOP: 5px !important } .rumbleBuildList { MARGIN: 0px 0px 0px 18px; BORDER-TOP: #eee 2px solid } .rumbleBuildList UL LI { Z-INDEX: 1000 } .rumbleBuildListTop UL LI { Z-INDEX: 1000 } .rumble_top UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble_top UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .rumble UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .contentListPlain .rumble LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentListPlain .rumble_top LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble_top LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .selectList .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble_top LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble LI.listActionGroup A { DISPLAY: inline } .rumble_top LI.listActionGroup A { DISPLAY: inline } .paging { TEXT-ALIGN: right; FLOAT: right; CLEAR: left } .pagingprefs { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN-TOP: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 3px } .paging SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BORDER-RIGHT: #ccc 1px dotted; PADDING-TOP: 1px } .rumble_top .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .rumble .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .jumptopage INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } .jumptopage INPUT { WIDTH: 2em; FONT-WEIGHT: normal; -moz-border-radius: 0; -webkit-border-radius: 0 } .rumble_top .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .inventory_paging A { DISPLAY: inline-block } .inventory_paging IMG { DISPLAY: inline-block } .inventory_paging SPAN { DISPLAY: inline-block } .inventory_paging DIV { DISPLAY: inline-block } .jumptopage DIV { DISPLAY: inline-block } .inventory_paging A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px } .inventory_paging IMG { MARGIN: 2px 2px 3px } .inventory_paging A.inactive { FILTER: alpha(opacity=40); opacity: .4 } A.jumpToPageOpen { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } A.jumpToPageOpen:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } DIV.jumptopage INPUT#currentpage_bot { WIDTH: auto } DIV.jumptopage INPUT#currentpage_top { WIDTH: auto } INPUT#currentpage_bot { WIDTH: auto } INPUT#currentpage_top { WIDTH: auto } .jumptopage { FLOAT: right } .jumptopage DIV { MARGIN: 0px 0px 0px 3px } .jumptopage BUTTON { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; TOP: -2px; RIGHT: 0px; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .jumptopage BUTTON IMG { MARGIN: 0px } .rumble_top .secondaryControl { FLOAT: right } .rumble .secondaryControl { FLOAT: right } .key-valueTable TR { BORDER-BOTTOM: medium none } .key-valueTable TH { BORDER-BOTTOM: medium none } .key-valueTable TD { BORDER-BOTTOM: medium none } .key-valueTable TBODY { BORDER-BOTTOM: medium none } .key-valueTable TBODY TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TH { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TR:first-child TH { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TR:first-child TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TH { COLOR: #555 } .infoListWrapper .key-valueTable { MARGIN: 3px 9px 6px } TD.removeCell { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A IMG { FILTER: alpha(opacity=30); opacity: .3 } .contentList { MARGIN: -20px -30px } .buildList { MARGIN: -20px -30px } .contentListPlain { MARGIN: -20px -30px } .announcementList { MARGIN: -20px -30px } #bb-assessment-canvas .contentListPlain { MARGIN: 0px -30px } .gradingList { MARGIN: 0px -30px } .buildList#survey { MARGIN: 0px -30px } #manageFormCanvasForm .buildList { MARGIN: 0px -30px } #mapCanvasForm .buildList { MARGIN: 0px 30px } .hierarchy-page #toolSettingsForm #dataCollectionContainer { MARGIN: -10px -30px } .leftColumn-wide .contentListPlain { MARGIN: 0px } .contentList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .buildList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentListPlain > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .announcementList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPageItem { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentList > LI.read:first-child:hover { BORDER-TOP: transparent 1px solid } .buildList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentListPlain > LI:first-child { BORDER-TOP: transparent 1px solid } .announcementList > LI:first-child { BORDER-TOP: transparent 1px solid } #bb-assessment-canvas .contentListPlain > LI:first-child { BORDER-TOP-COLOR: #ccc } #bb-assessment-canvas .contentListPlain > LI { MIN-HEIGHT: 16px; PADDING-LEFT: 42px } #bb-assessment-canvas .contentListPlain > LI .item { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-assessment-canvas .contentListPlain > LI .details { PADDING-BOTTOM: 5px; PADDING-TOP: 12px } .takeQuestionDiv { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='_'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='step'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer H3.submittitle.steptitle { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } .takeQuestionDiv H3 { MARGIN: 0px } .takeQuestionDiv + H3 { PADDING-LEFT: 28px } #assessmentGradeForm #dataCollectionContainer { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .contentList > LI { MIN-HEIGHT: 50px } .buildList > LI { MIN-HEIGHT: 50px } .contentListPlain > LI { MIN-HEIGHT: 50px } .announcementList > LI { MIN-HEIGHT: 50px } .contentPageItem { MIN-HEIGHT: 50px } .liItem:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList > LI:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList LI:first-child:hover { BORDER-TOP-COLOR: #666 } .contentList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .gradingList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .liItem A[onclick*='toggleDetails'] { POSITION: relative; VISIBILITY: hidden; TOP: -6px; RIGHT: -19px } .liItem:hover A[onclick*='toggleDetails'] { VISIBILITY: visible } .liItem A[onclick*='toggleDetails'] IMG { VISIBILITY: hidden } .liItem A[title*='Hide'] { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 0px 0px } .liItem A[title*='Show'] { BACKGROUND: url(images/portlet_expand_alt_rev.png) no-repeat 0px 0px } .contentListPlain .item_icon { DISPLAY: none } .item { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; CURSOR: move; PADDING-TOP: 0px } .contentList .item { PADDING-BOTTOM: 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .gradingList .item { PADDING-RIGHT: 120px } .announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .announcementList-read .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } #announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .item:hover { CURSOR: move } .item:focus { CURSOR: move } .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .announcementList-read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .contentList-slim .read .item { PADDING-LEFT: 48px } .read .item:hover { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .read .item:focus { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .tab-groups H3.item { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 8px; MARGIN: 0px 11em 8px -12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tab-groups H3.item .reorder + SPAN { FONT-STYLE: italic; MARGIN: 0px 4px 0px 0px; FONT-FAMILY: Georgia; COLOR: #999; FONT-SIZE: 90%; FONT-WEIGHT: normal } .item_icon { POSITION: absolute; MARGIN: 0px; TOP: 12px; LEFT: 24px } .read .item_icon { MARGIN: 0px; LEFT: 18px } .item H3 { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item .contextMenuContainer { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item H3 + .contextMenuContainer { POSITION: relative; TOP: 2px } .tab-groups .item .contextMenuContainer { FLOAT: none } .item INPUT[type=checkbox] { MARGIN: 2px 6px 0px -6px; FLOAT: left } .iconsOnly { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 24px auto; WIDTH: 80% } .iconsOnly LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 0px; FLOAT: left !important; PADDING-TOP: 0px } .iconsOnly > LI:first-child { BORDER-TOP-COLOR: #ccc } .iconsOnly .read { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconsOnly .item_icon { PADDING-BOTTOM: 0px; MIN-HEIGHT: 50px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 12px; LEFT: auto } .iconsOnly .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MIN-HEIGHT: 3em; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .iconsOnly .read .item { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .iconsOnly .item H3 { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly .item .contextMenuContainer { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly LI:hover .item_icon { BACKGROUND: #ededed } .iconsOnly LI:hover .item { BACKGROUND: #ededed } .iconsOnly LI:focus .item_icon { BACKGROUND: #ededed } .iconsOnly LI:focus .item { BACKGROUND: #ededed } .iconsOnly .read .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .read .item_icon { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read:hover .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:hover .item { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item { BACKGROUND: none transparent scroll repeat 0% 0% } .buildList LI INPUT { MARGIN: 2px 8px; FLOAT: left } .buildList INPUT.browse { MARGIN: 0px 0px 6px } .buildList INPUT.genericButton { MARGIN: 0px 0px 6px } .buildList INPUT[type=button] { MARGIN: 0px 0px 6px } .contentListRight { POSITION: absolute; RIGHT: 6px; FONT-WEIGHT: normal; LEFT: auto } .pagedContentListRight { TOP: 4px } .contentListRightOffset { MARGIN-RIGHT: 12em } .contentList .details { PADDING-LEFT: 60px } .contentListPlain .contentListRight + .details { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; PADDING-LEFT: 28px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } .announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } #announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } .contentList-slim .read .details { MARGIN-LEFT: 48px } .staffInfoList .details { MARGIN-RIGHT: 160px } .staffInfoList .hasPhoto .details { MIN-HEIGHT: 135px } .details > P { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .details .note { FONT-WEIGHT: bold } .details > P.important { PADDING-BOTTOM: 0px; MARGIN: 3px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .details > P.important SPAN { COLOR: #888; FONT-WEIGHT: normal } .itemDetails { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .itemDetails P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .announcementInfo P SPAN { COLOR: #999 } .announcementInfo SPAN { COLOR: #999 } .itemDetails SPAN { COLOR: #999 } .announcementInfo P SPAN SPAN { FONT-SIZE: 95% !important } .noItems { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } .additional + P .warnFont { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } #listContainer .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .additional + P .warnFont { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { TEXT-ALIGN: center; PADDING-TOP: 100px } .hierarchy-page .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { MARGIN: 0px auto; DISPLAY: block } .additional + P .warnFont { DISPLAY: block; PADDING-TOP: 100px } .details .attachments { WORD-WRAP: break-word; MARGIN-BOTTOM: 9px; WORD-BREAK: normal } .buildList > LI.separator { Z-INDEX: 0; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; MIN-HEIGHT: 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #ededed; TOP: 0px; PADDING-TOP: 14px; LEFT: 0px } .separator H3.item { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .external-breadcrumbs .receipt { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .separator .line { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: relative; MARGIN: 0px 24px 0px 30px; TOP: 6px; LEFT: 0px } .separator .text { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .external-breadcrumbs .receipt { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .buildList .detailList .hidden { DISPLAY: none } .buildList .detailList .tagContainer { POSITION: relative } .buildList .detailList .tagContainer .hidden { DISPLAY: none } .buildList .detailList .tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer .newTagForm { BORDER-LEFT: #999 1px dotted; MARGIN-LEFT: 6px } .tagContainer .newTagForm LABEL { PADDING-LEFT: 6px } .currentTags { Z-INDEX: 100; POSITION: absolute; LINE-HEIGHT: 1.8; WIDTH: 16em; ZOOM: 1; DISPLAY: none; OVERFLOW: hidden; TOP: 1.2em; RIGHT: 0px } .currentTags SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 18px } .currentTags A { FONT-WEIGHT: bold } .currentTags A.closeCloud { POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 1px; LINE-HEIGHT: 1; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; TOP: 0px; PADDING-TOP: 0px; LEFT: 0px } .auto_complete { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; WIDTH: 12em; BACKGROUND: #e2eefe; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid } .auto_complete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .auto_complete UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3%; WIDTH: 96%; PADDING-RIGHT: 1%; OVERFLOW: hidden; CURSOR: pointer; PADDING-TOP: 2px } .auto_complete UL LI.selected { BACKGROUND-COLOR: #fff } .auto_complete UL STRONG.highlight { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .freq1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 90%; PADDING-TOP: 0px } .freq2 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 105%; PADDING-TOP: 0px } .freq3 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 120%; PADDING-TOP: 0px } .freq4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 135%; PADDING-TOP: 0px } .freq5 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 150%; PADDING-TOP: 0px } .freq6 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 165%; PADDING-TOP: 0px } .freq1:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq2:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq3:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq4:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq5:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq6:hover { BACKGROUND: white; TEXT-DECORATION: none } .currentTags A.tagDisabled { FILTER: alpha(opacity=70); FONT-WEIGHT: normal; TEXT-DECORATION: none; opacity: .7 } .currentTags A.tagDisabled:hover { BACKGROUND: none transparent scroll repeat 0% 0% } .tab-groups .tab-group-label { FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #999 } .subList { MARGIN: 3px 0px 6px } .subList-reorder { MARGIN: 3px 0px 6px } .subList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .buildList .detailList { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .subList-reorder LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 6px } .subList-reorder LI:hover { BORDER-BOTTOM-COLOR: #bbb !important; BORDER-TOP-COLOR: #bbb !important; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #bbb !important; BORDER-LEFT-COLOR: #bbb !important } .subList LI A IMG { VERTICAL-ALIGN: middle } .subList-reorder LI A IMG { VERTICAL-ALIGN: middle } .subList LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList-reorder LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList LI P { VISIBILITY: hidden } .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .buildList .detailList LI .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder .itemDetails { DISPLAY: none } .subList-reorder .details { DISPLAY: none } .subList .details { DISPLAY: none } .itemDetails + .details { OVERFLOW: visible; MARGIN-RIGHT: 13em } .subList LI P SPAN { FONT-WEIGHT: bold } .subListArtifact { CLEAR: both } .detailList .subListArtifact { CLEAR: both } .subListArtifact LI { POSITION: static } .detailList .subListArtifact LI { POSITION: static } .detailList .subListArtifact { ZOOM: 1 } .detailList .subListArtifact LI { ZOOM: 1 } .detailList .subListArtifact LI A { ZOOM: 1 } .buildList .detailList { MARGIN: 0px 0px 0.6em 0.7em } .buildList .detailList .subList { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.buildList UL.detailList OL.subList { LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: decimal } UL.buildList UL.detailList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 0.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: table-row; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } UL.buildList UL.detailList LI SPAN { WIDTH: 135px; DISPLAY: block; FLOAT: left; FONT-WEIGHT: bold } UL.buildList UL LI > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; WIDTH: 79%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: 135px; PADDING-TOP: 0px } UL.buildList UL LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } UL.noimg LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } .buildList .pageBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } .buildList .sectionBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } DIV.itemHeaderControl { POSITION: absolute; TOP: 9px; RIGHT: 14.5em } DIV.itemHeaderControl A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.cartMode { PADDING-BOTTOM: 49px } .addedRow { COLOR: #999 } TABLE.sortable TBODY TR.addedRow TH LABEL A { COLOR: #999 } .addedRow TD A { COLOR: #999 } .addedRow { } .addedRow IMG { FILTER: alpha(opacity=50); opacity: .5 } TABLE#datatable2 TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 THEAD TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .itemSelector { MARGIN: 0px auto; WIDTH: 20px; HEIGHT: 20px } .itemSelector INPUT { FILTER: alpha(opacity=0); opacity: 0 } .available { BACKGROUND: url(../../../images/ci/ng/available_ti.png) no-repeat 0px 0px } .inprogress { BACKGROUND: url(../../../images/ci/ng/progress.png) red no-repeat 0px 0px } .remove { BACKGROUND: url(../../../images/ci/ng/remove_ti.png) no-repeat 0px 0px } .itemTray { Z-INDEX: 10000; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 18px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .picker .itemTray { RIGHT: 12px; LEFT: 12px } DIV.itemTrayContentPane { LEFT: 200px } DIV.itemTrayContentPaneWide { LEFT: 0px } .itemTray H2 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H3 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H2 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H3 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H2 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H3 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H2 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray H3 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray DIV.noItems { TEXT-ALIGN: center; COLOR: #777 } .itemTray #cartList { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .itemTray #selectedItemsWrapper { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #777; PADDING-TOP: 4px } .itemTray .cartTableWrapper { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; OVERFLOW-Y: auto; BACKGROUND: #fff; MAX-HEIGHT: 130px; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .sideTOC .cartTableWrapper { OVERFLOW: auto } #count { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .itemTray #numberOfElements { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #progress { Z-INDEX: 300; POSITION: absolute; MARGIN: 300px 50%; WIDTH: 100px; DISPLAY: none } #progress DIV { MARGIN-LEFT: -100% } #cartSubmit { Z-INDEX: 200 } #cartList FIELDSET { PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #f6f6f6; PADDING-TOP: 3px } #cartList FIELDSET UL LI INPUT[type=text] { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 2.3em; PADDING-RIGHT: 0px; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 0px } .itemGallery { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .itemGallery > LI { TEXT-ALIGN: center; MARGIN: 5px 5px 20px; WIDTH: 1.2em; ZOOM: 1; VERTICAL-ALIGN: top; PADDING-TOP: 0.06em; _height: 130px } .itemGallery .stackFix { WIDTH: 100%; HEIGHT: auto } .itemIconHolder { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px auto 0.05em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 1em; PADDING-TOP: 0px } .itemIconHolder A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; ZOOM: 1; DISPLAY: block; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .itemIconHolder A:hover { BORDER-BOTTOM-COLOR: #777; BORDER-TOP-COLOR: #777; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777 } .itemIconWrapper { BORDER-BOTTOM: #f1f1f1 0.02em solid; POSITION: absolute; BORDER-LEFT: #f1f1f1 0.02em solid; MARGIN: 0px 50%; WIDTH: auto; BOTTOM: 0px; BORDER-TOP: #f1f1f1 0.02em solid; BORDER-RIGHT: #f1f1f1 0.02em solid } .x-small LI { WIDTH: 1.8em; FONT-SIZE: 70px } .small LI { FONT-SIZE: 100px } .normal LI { FONT-SIZE: 140px } .large LI { FONT-SIZE: 180px } .x-large LI { FONT-SIZE: 220px } .u_resetFont-px { FONT-SIZE: 12px } .itemIconLink-vertical A { WIDTH: 0.78em; HEIGHT: 0.9em } .itemIconLink-square A { WIDTH: 0.78em; HEIGHT: 0.78em } .itemIconLink-horizontal A { WIDTH: 1em; HEIGHT: 0.78em } .itemIconLink-vertical IMG { WIDTH: 0.8em; HEIGHT: 0.9em; VERTICAL-ALIGN: top } .itemIconLink-square IMG { WIDTH: 0.8em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-horizontal IMG { WIDTH: 1em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-vertical .itemIconWrapper { LEFT: -0.39em } .itemIconLink-square .itemIconWrapper { LEFT: -0.39em } .itemIconLink-horizontal .itemIconWrapper { LEFT: -0.5em } .itemInfo { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-SIZE: 12px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.2em } .itemInfo LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; LINE-HEIGHT: 1.25em; MARGIN: 0px; WIDTH: 100%; FONT-SIZE: 95%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .itemInfo LI SPAN { VERTICAL-ALIGN: top } .itemInfo LI .label { TEXT-ALIGN: right } .itemInfo .cmimg { WIDTH: 18px } .itemInfo .cmimg IMG { WIDTH: 18px } .itemInfo .title { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .itemInfo INPUT[type='text'] { WIDTH: 100% } .itemInfo .high { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; BACKGROUND: #fff1c5; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .lb-content .itemInfo { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 3px } .lb-content .itemInfo LI { LINE-HEIGHT: 1.45em } .lb-content .itemInfo .title { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .iconGallery > LI { MARGIN: 5px 5px 12px; WIDTH: 75px } .iconGallery .itemIconHolder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; HEIGHT: 60px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemIconHolder A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemTitle { COLOR: #666; FONT-SIZE: 85% } .iconGallery .itemIconWrapper { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: auto; PADDING-RIGHT: 4px; BACKGROUND: #fff; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px; LEFT: -30px } .sideTOC_panelMin .container { POSITION: static !important } .sideTOC_panel .container { POSITION: static !important } .sideTOC_panelMax .container { POSITION: static !important } .tocWrapper { Z-INDEX: 200; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 0px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .tocHidden { TOP: -10000px !important } .tocHead { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #333; PADDING-TOP: 10px } .tocHead H2 { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .tocActions { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .sideTOC H2 { FLOAT: none !important; FONT-SIZE: 110%; text-shadow: 0 1px 0 #f0f0f0 } .tocActions { WHITE-SPACE: nowrap } .tocActions A { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions SPAN { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions > IMG { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .actionBar .tocNavText { PADDING-BOTTOM: 13px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; COLOR: #eee; PADDING-TOP: 13px } .actionBar .tocNavText + A { MARGIN-RIGHT: 12px } .actionBar .tocNavText + IMG { MARGIN-RIGHT: 12px } .tocActions SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .tocTreeWrapper { PADDING-BOTTOM: 0px; OVERFLOW-Y: auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .sideTOC .tocTreeWrapper { OVERFLOW: auto } UL#tocTree LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL#tocTree A.itemActive { FONT-WEIGHT: bold; TEXT-DECORATION: none } UL#tocTree SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; COLOR: #555; PADDING-TOP: 0px } .treeNodeIcon { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .sideTOC { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 200px; BOTTOM: auto; PADDING-RIGHT: 0px; BACKGROUND: #ddd; BORDER-TOP: #aaa 1px solid; TOP: 0px; RIGHT: auto; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -2px 0 2px rgba(0, 0, 0, .2) inset, 0px 3px 2px #ddd inset, 0px -3px 2px #ddd inset; -webkit-box-shadow: none; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: none } .sideTOCMinimize { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 9px !important; BOTTOM: auto; PADDING-RIGHT: 0px; BORDER-TOP: medium none; TOP: 0px; RIGHT: auto; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } .sideTOCMinimize .tocActions { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 1px; LEFT: -24px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .sideTOCMinimize .tocActions A { MARGIN: -1px 0px 0px; DISPLAY: block } .tocBottom_pullExpanded { LEFT: 228px } .tocBottom_pullCollapsed { LEFT: 18px } .tocSide_pullExpanded { TOP: 4px; LEFT: 222px } .tocSide_pullCollapsed { LEFT: 13px } .sideTOC_panel { PADDING-LEFT: 201px } .sideTOC_panelMin { PADDING-LEFT: 21px } .sideTOC_panelMax { PADDING-LEFT: 351px } .tocBottom_min { PADDING-BOTTOM: 30px } .tocBottom_max { PADDING-BOTTOM: 330px } .tocBottom_open { PADDING-BOTTOM: 160px } .tocBottom_open .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_max .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_min .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panel .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMax .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMin .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .localViewToggle { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .localViewToggle UL { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .localViewToggle UL LI { FLOAT: right } .localViewToggle UL LI.active { POSITION: relative } .localViewToggle A { PADDING-BOTTOM: 7px; TEXT-TRANSFORM: inherit; MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; DISPLAY: block; FONT-SIZE: 90%; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .localViewToggle A:hover { TEXT-DECORATION: underline } .localViewToggle .active A:hover { TEXT-DECORATION: none } .localViewToggle A.active { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } DIV.localViewToggle H2 { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } .localViewToggle A.active:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } DIV.localViewToggle H2:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .localViewToggle .separator { BORDER-LEFT: #d7bb66 1px dotted; PADDING-LEFT: 6px; MARGIN-LEFT: 6px } .localViewToggle A.miniComboButton { BORDER-BOTTOM: #d7bb66 1px solid; BORDER-LEFT: #d7bb66 1px solid; PADDING-RIGHT: 16px; BACKGROUND: url(images/controls.png) #f5e7bd no-repeat -1px -500px; COLOR: #444; BORDER-TOP: #d7bb66 1px solid; BORDER-RIGHT: #d7bb66 1px solid; TEXT-DECORATION: none !important } .containerTabs { MARGIN: 6px 24px 0px; FONT-SIZE: 100% } .containerTabs LI { POSITION: relative; FLOAT: left } .containerTabs LI A { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI H3 { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs LI H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs .active A { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:hover { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:focus { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active H3 { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .active H3:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .tabhead H3 { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 18px; COLOR: #555; PADDING-TOP: 9px } .collapseTabs .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #d1eaef } .collapseTabs .containerTabs .active A:before { CONTENT: none } .portlet .containerTabs { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 8px } .portlet .containerTabs LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .containerTabs LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } .portlet .containerTabs .active A { MARGIN: 0px } .collapseTabs .containerTabs { MARGIN: 0px } .portlet .containerTabs .active A:before { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:after { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:before { BORDER-BOTTOM-COLOR: #ddd } .portlet .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #fff4bf; BOTTOM: -1px } .mapTabs { POSITION: relative; MARGIN: 20px -30px 0px; BACKGROUND: #d1eaef; CLEAR: both; BORDER-TOP: #aaa 1px solid; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .lesson-plan-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { BORDER-BOTTOM: #bbb 1px solid } .evidence-page .mapTabs LI:before { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:after { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:before { Z-INDEX: 100; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #bbb 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 1px } .evidence-page .mapTabs LI.active + LI:after { BORDER-LEFT-COLOR: #eaeaea } .evidence-page .mapTabs LI:first-child:before { DISPLAY: none } .evidence-page .mapTabs LI:first-child:after { DISPLAY: none } .evidence-page .mapTabs LI A { PADDING-LEFT: 30px } .evidence-page .mapTabs LI.active H3 { PADDING-LEFT: 30px } .mapTabs UL { MARGIN-TOP: 0px; MARGIN-LEFT: 0px } DIV.mapTabs UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mapTabs UL LI.active H3 { POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; BACKGROUND: #eaeaea; FONT-SIZE: 100%; PADDING-TOP: 14px } .mapTabs UL LI.active H3:before { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #eaeaea; BOTTOM: -1px } .mapTabs UL LI.active:first-child H3:after { MARGIN-LEFT: 0px } .mapTabs UL LI.active:first-child H3:before { MARGIN-LEFT: 0px } .lesson-plan-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .hierarchy-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .lesson-plan-page .mapTabs UL LI.active H3:before { DISPLAY: none } .hierarchy-page .mapTabs UL LI.active H3:before { DISPLAY: none } .evidence-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #fff } .mapTabs UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; COLOR: #01869e; FONT-SIZE: 100%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .mapTabs UL LI A:hover { TEXT-DECORATION: underline } .mapTabs UL LI SPAN:hover { BORDER-BOTTOM-STYLE: solid } .mapTabs A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs LI:first-child A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 54px; BACKGROUND-POSITION: 30px 50% } .mapTabs UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI:first-child H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI DIV { PADDING-BOTTOM: 7px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: none; PADDING-TOP: 7px } .mapTabs UL LI.saveTab A { DISPLAY: none } UL.containerTabs LI.saveTab IMG { DISPLAY: none } .mapTabs UL LI.saveFadeIn { FILTER: alpha(opacity=0); opacity: 0 } .mapTabs UL LI.saveTab DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/tab_receipt_back.gif) #44b10e repeat-x center bottom; COLOR: white; FONT-WEIGHT: bold; PADDING-TOP: 5px } DIV.mapHelp { PADDING-BOTTOM: 0px; MARGIN: -1px 0px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff1c5; PADDING-TOP: 4px } UL.setStatus { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 3px; LIST-STYLE-TYPE: none; MARGIN: 15px 0px 9px 30px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #eee 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 3px } UL.setStatus LI { MARGIN: 0px 6px 0px 0px; FONT-SIZE: 95% } UL.setStatus LI INPUT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.setStatus LI LABEL { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 1px 0px } UL.setStatus LI LABEL.complete { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_complete.gif) no-repeat 1px 0px } FORM.mapCanvasForm DIV.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } FORM.mapCanvasForm H3.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } .mapTabs .containerTabs { BORDER-BOTTOM: 0px } #mapCanvasForm { MARGIN: 0px -30px } #mapCanvasForm #containerDiv { MARGIN: 20px 0px } .evidence-page .infoListWrapper H3 A.itemHead { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .infoListWrapper H3 A.itemHeadOpen { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .leftColumn-narrow { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f9f9f9; MARGIN: 0px; PADDING-LEFT: 6px; WIDTH: 26%; PADDING-RIGHT: 6px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; border-radius: 3px 3px 3px 3px } .evidence-page .leftColumn-wide { WIDTH: 69% } .sessionBox { WIDTH: 95% } .sessionBox .key-valueTable { } .sessionBox .key-valueTable TBODY TD { PADDING-RIGHT: 40px } .sessionBox .key-valueTable TBODY TH { PADDING-RIGHT: 40px } .evidence-page .criteriaSummary { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; MARGIN: 0px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 12px } .evidence-page .paletteItems LI { MARGIN-LEFT: 0px } .paneTabs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: -12px 0px 12px; ZOOM: 1; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .subtabs-framed .paneTabs { -moz-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -webkit-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; border-radius: 0 } .paneTabs UL { CLEAR: both } .paneTabs UL LI { Z-INDEX: 200; POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs .active { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs A { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 12px } .paneTabs UL LI:first-child A { BORDER-LEFT: 0px } .paneTabs A:hover { TEXT-DECORATION: underline } .paneTabs .active A:hover { TEXT-DECORATION: none } .paneTabs .active A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:focus { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active H3 { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:after { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #ccc 8px solid; BOTTOM: 0px } .paneTabs .active A:after { BOTTOM: -1px } .paneTabs .activepersonal A { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .activepersonal A:hover { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .personal A { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dedede; TEXT-DECORATION: none; PADDING-TOP: 3px } .paneTabs .external A { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #dedede no-repeat 2px center } .paneTabs .external A:hover { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #fff1c5 no-repeat 2px center } .paneTabs .activepersonal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs .personal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs A.paneTabOptions { DISPLAY: none } .paneTabs .activepersonal:hover A.paneTabOptions { FILTER: alpha(opacity=100); opacity: 1 } .paneTabs A.hiddenTabsLink { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center 6px } .paneTabs A.hiddenTabsLink IMG { FILTER: alpha(opacity=0); WIDTH: 2px; HEIGHT: 2px; opacity: 0 } .panelTabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .panelTabs LI { BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FLOAT: right; TOP: 2px !important; RIGHT: -3px; PADDING-TOP: 0px !important } .panelTabs LI.active { Z-INDEX: 2 } .panelTabs LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI.active A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI A:hover { BACKGROUND-COLOR: #f6f6f6 } .panelTabs LI.active A { BORDER-BOTTOM: 0px; COLOR: #333; FONT-WEIGHT: bold } .panelTabs LI.active A.preview { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 2px solid; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .panelTabs LI.active A.edit { BORDER-BOTTOM: 0px; MARGIN: 0px } .collapseTabs { MARGIN-BOTTOM: 12px } .collapseTabsData { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; BACKGROUND: #d1eaef; PADDING-TOP: 12px; -moz-border-radius: 3px } .containerTabsCollapsed { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .collapseTabs LI A { TEXT-DECORATION: underline } .collapseTabs LI.active { Z-INDEX: 1000 } .sequenceMapHead { MARGIN: 6px 0px } .sequenceMapHead H3 { MARGIN: 12px 0px 6px } .sequenceMapHead P { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 0px } DIV.sequenceMapHead DIV.actionBar { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #fff7de; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.searchResultList-sortOptions { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: right; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; MIN-HEIGHT: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 15px; PADDING-TOP: 10px } DIV.searchResultList-sortOptionsCount { WIDTH: auto; FLOAT: left } DIV.dropzone { BORDER-BOTTOM: #aaa 2px dashed; BORDER-LEFT: #aaa 2px dashed; BORDER-TOP: #aaa 2px dashed; BORDER-RIGHT: #aaa 2px dashed; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -moz-border-radius: 3px; -webkit-border-radius: 3px } .container DIV.dropzone { TOP: 3px !important } .modalOverlay { Z-INDEX: 90; POSITION: fixed; FILTER: alpha(opacity=1); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .01 } .cmdiv { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .menumini { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.quickAddPal { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.keyboardAccess { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .nav .sub UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .gb_currView.nav .sub > UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .menumini UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .keyboardAccess { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } SPAN.currentTags { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea-slim { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .previewArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .jumptopage { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .bcContent .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI IMG + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } DIV.treeContainer UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #learningUnitToc UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #loginLang UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .actionBar .mainButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .secondaryButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBarMicro .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton:first-child .flyout { MARGIN: 0px 0px 0px -2px } DIV.calPicker.quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI IMG + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } DIV.treeContainer UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } #learningUnitToc UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.nestedList { -moz-box-shadow: none; -webkit-box-shadow: none } .liveArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } .previewArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } #addFolderForm { MARGIN: 0px -30px } UL.tree LI A + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI IMG + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } DIV.treeContainer UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #learningUnitToc UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .builderItem .liveArea { Z-INDEX: 100; POSITION: absolute; TOP: 12px; LEFT: 22px } .previewArea { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; MARGIN-TOP: 0px; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .jumptopage { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 8px } .jumptopage LABEL { FONT-SIZE: 90% } .liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.secondaryButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { OVERFLOW: hidden } .actionBar UL LI.secondaryButton A.liveAreaTab { OVERFLOW: hidden } .liveArea-slim { PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 3px } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .columnActions .nav .sub UL { MARGIN-TOP: 0px } .nav .sub UL { POSITION: absolute; DISPLAY: none } .nav .sub .flyout { POSITION: absolute; DISPLAY: none } .nav .sub UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .nav .sub UL UL { DISPLAY: block } .nav .sub .flyout UL { DISPLAY: block } .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .nav .sub:hover .flyout { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { TOP: 18px } .rumble_top .nav .sub:hover UL { TOP: 18px } .rumble .nav .sub:hover UL { TOP: 18px } .quickAddPal { WIDTH: auto } .quickAddColor { WIDTH: 311px } .quickAddColor A.genericButton { MARGIN: 2px 0px; FLOAT: left } .cmdiv { Z-INDEX: 1150 !important; BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .cmdiv UL { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; WIDTH: 180px; PADDING-RIGHT: 4px; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 3px } .cmdiv UL:first-child { BORDER-TOP: medium none } .menumini UL:first-child { BORDER-TOP: medium none } .cmdiv UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .menumini UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .nav .sub UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .menumini A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } #loginLang UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: auto; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .nav .sub UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .nav LI.sub UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .actionBarMicro .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .actionBarMicro .nav LI.sub UL LI A:focus { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:focus { BACKGROUND-IMAGE: none } .nav LI.sub UL LI A:focus { BACKGROUND-COLOR: #fff !important } .cmdiv A:focus { BACKGROUND-COLOR: #fff !important } .menumini A:focus { BACKGROUND-COLOR: #fff !important } .nav .sub UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .paneTabs .nav .sub UL LI A { TEXT-ALIGN: left } .timediv UL LI A:hover { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { BACKGROUND-COLOR: #369; COLOR: #444 } .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; LEFT: 0px } .topTabs-compact .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; RIGHT: 0px; LEFT: auto } .cmdiv LI.contextmenubar_top { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .menumini LI.contextmenubar { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-border-radius: 0; -webkit-border-radius: 0 } .quickAddPal H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .keyboardAccess H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .quickAddPalHeader { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .comText .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .e_expandArea .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess P.paletteHelp { BORDER-BOTTOM: #fc0 1px solid; BORDER-LEFT: #fc0 1px solid; PADDING-BOTTOM: 3px; MARGIN: 6px 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; WHITE-SPACE: normal; BACKGROUND: #fff1c5; FONT-SIZE: 90%; BORDER-TOP: #fc0 1px solid; BORDER-RIGHT: #fc0 1px solid; PADDING-TOP: 3px } .bcMenuDiv-1 { WIDTH: 190px } .bcMenuDiv-2 { WIDTH: 380px } .bcMenuDiv-3 { WIDTH: 570px } .bcMenuDiv-4 { WIDTH: 760px } .bcMenuDiv-5 { WIDTH: 950px } .flyout { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 12px !important; PADDING-RIGHT: 12px !important; PADDING-TOP: 9px !important } .nav .sub .flyout DIV { POSITION: static; PADDING-BOTTOM: 6px; MARGIN: 0px; MIN-HEIGHT: 1px; FLOAT: left } .flyout H3 { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 95% Georgia, serif; LETTER-SPACING: 2px; PADDING-TOP: 0px } .flyout H3 .line { HEIGHT: 1px; BORDER-TOP: #ccc 1px solid } .flyout H3 .text { BACKGROUND: #d1eaef } .nav .sub .flyout UL { Z-INDEX: 1000; BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted; BORDER-RIGHT: 0px; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .nav .sub .flyout DIV H3 + UL { BORDER-TOP: 0px } .nav .sub .flyout DIV UL:first-child { BORDER-TOP: 0px } .nav .sub .flyout A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .quickAddPal .colorlist { MARGIN: 6px 0px 9px 6px; WIDTH: 288px } .quickAddPal .stepcontent .colorlist LI { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 14px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 14px; OVERFLOW: hidden; BORDER-TOP: #333 1px solid; CURSOR: pointer; BORDER-RIGHT: #333 1px solid; PADDING-TOP: 0px } .quickAddPal .colorlist LI A { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:link { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: 12px; HEIGHT: 12px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .quickAddPal .colorlist LI A:active { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A:focus { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:active { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:focus { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorPreview { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: white; PADDING-TOP: 3px } .quickAddPal .colorPreview IMG { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #444 1px solid; MARGIN: 3px; WIDTH: 42px; DISPLAY: block; BACKGROUND: black; FLOAT: left; HEIGHT: 42px; BORDER-TOP: #444 1px solid; BORDER-RIGHT: #444 1px solid } .quickAddPal .colorPreview DIV { WIDTH: 66%; FLOAT: left; MARGIN-LEFT: 3px } .quickAddPal .colorPreview SPAN { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 0px } SPAN.title_color_name { COLOR: #666 } .receipt { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .warning { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .inlineDialog { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .contentPaneWide.tabbedPane .receipt { Z-INDEX: 201; BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; PADDING-BOTTOM: 12px; MARGIN: -12px 0px 10px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .contentPane .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .contentPaneWide .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .container .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px; box-shadow: none } .receipt ~ #editmodeWrapper { Z-INDEX: 1; POSITION: relative } .receipt ~ .contentBox { Z-INDEX: 1; POSITION: relative } .sideTOC_panel .receipt ~ #editmodeWrapper { POSITION: static } .sideTOC_panel .receipt { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .tabbedPane .receipt A.close IMG { DISPLAY: none } .contentPane .receipt A.close IMG { DISPLAY: none } .contentPaneWide .receipt A.close IMG { DISPLAY: none } A.closeCopyright IMG { DISPLAY: none } .tabbedPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPaneWide .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .receipt A.close:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { } .receipt A.close:hover:before { COLOR: #fff } A.closeCopyright:hover:before { COLOR: #fff } .inlineDialog { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .inlineReceipt { POSITION: absolute; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .miniReceipt { Z-INDEX: 300; BORDER-BOTTOM: #bbb 1px solid; POSITION: absolute; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .bad { COLOR: #fff; FONT-WEIGHT: bold } .good { COLOR: #fff; FONT-WEIGHT: bold } .removing { COLOR: #fff; FONT-WEIGHT: bold } .adding { COLOR: #fff; FONT-WEIGHT: bold } .infoReceipt { COLOR: #fff; FONT-WEIGHT: bold } .brokenFileLink { COLOR: #fff; FONT-WEIGHT: bold } .portlet SPAN.warning.due { COLOR: #fff; FONT-WEIGHT: bold } .good A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .removing { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .brokenFileLink { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .portlet SPAN.warning.due { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .container .warningReceipt { PADDING-RIGHT: 24px } .warningReceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.areceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.close:before { } .contentPane .warningReceipt A.close { TOP: 5px; RIGHT: 5px } .warningReceipt A.close:hover:before { } .good { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .adding { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .infoReceipt { BORDER-BOTTOM-COLOR: #62758f; BORDER-TOP-COLOR: #62758f; BACKGROUND: #6d8aaf; BORDER-RIGHT-COLOR: #62758f; BORDER-LEFT-COLOR: #62758f } .attention { BORDER-BOTTOM-COLOR: #fc3; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #fc3; MARGIN: 0px 0px 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff4bf; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; BORDER-LEFT-WIDTH: 2px; FONT-WEIGHT: normal; PADDING-TOP: 4px } .removing { FONT-WEIGHT: normal } .adding { FONT-WEIGHT: normal } .brokenFileLink { FONT-WEIGHT: normal } .portlet SPAN.warning.due { FONT-WEIGHT: normal } .brokenFileLink { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet SPAN.warning.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .infoBox { BORDER-BOTTOM: #afdf61 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #afdf61 1px solid; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #afdf61 1px solid; BORDER-RIGHT: #afdf61 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .infoBox > .message { DISPLAY: block; MARGIN-BOTTOM: 4px } .info-ok { BORDER-BOTTOM-COLOR: #afdf61; BORDER-TOP-COLOR: #afdf61; BACKGROUND: #d9efa4; COLOR: #360; BORDER-RIGHT-COLOR: #afdf61; BORDER-LEFT-COLOR: #afdf61 } .nestedReceipt { Z-INDEX: 1001; PADDING-BOTTOM: 12px !important; MARGIN: 0px 20% 6px 0px; PADDING-LEFT: 12px !important; PADDING-RIGHT: 30px !important; PADDING-TOP: 6px !important } [id*='receipt_nested'].receipt { PADDING-RIGHT: 28px } .columnMsgWrapper { MARGIN-LEFT: 60% } .columnMsgWrapper .column-2 { MIN-HEIGHT: 1px } .smsIssue { POSITION: relative; MARGIN: 3px 3px 9px } .t2vIssue { POSITION: relative; MARGIN: 3px 3px 9px } .bubbleStem-bottom-center { BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: transparent 10px solid; WIDTH: 0px; BOTTOM: -12px; HEIGHT: 0px; MARGIN-LEFT: -8px; BORDER-TOP: #fc3 12px solid; BORDER-RIGHT: transparent 10px solid; LEFT: 50% } .nextStepsReceipt { BACKGROUND-IMAGE: url(images/reorder_bg.png); POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4; BACKGROUND-COLOR: #eee; MARGIN: 10px -30px -20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #545454; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3) } .nextStepsText { PADDING-BOTTOM: 18px; MARGIN: 0px 0px 0px 20px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fefefe; PADDING-TOP: 18px } .nextStepsText H5 { MIN-WIDTH: 6em; LINE-HEIGHT: 2em; DISPLAY: inline-block; COLOR: #545454; text-shadow: 1px 1px 1px #fff } .receiptCollapsed { POSITION: relative; FONT-SIZE: 90% } .external-breadcrumbs .receipt { BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; BORDER-TOP: 0px; TOP: -9px; BORDER-RIGHT: 0px; box-shadow: none } .stepcontent LI.fieldError { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; BACKGROUND: #fff1c5; PADDING-TOP: 2px } .stepcontent LI.fieldError .fieldErrorText { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { DISPLAY: inline; MARGIN-LEFT: 0px } .criteriaSummary { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px -28px 0px 0px; PADDING-LEFT: 12px; BACKGROUND: #f9f9f9 } #bb-question-discover H2 { FONT-SIZE: 110% } #filterContainer H2 { MARGIN-LEFT: 14px } #filterContainer .columnActions { MARGIN-LEFT: 14px } .criteriaSummary H3 { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .criteriaSummary .hidden { DISPLAY: none; VISIBILITY: hidden } .criteriaSummary UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .criteriaSummary UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FLOAT: left; FONT-SIZE: 90%; PADDING-TOP: 3px; border-radius: 12px } .criteriaSummary UL LI:first-child { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG { MARGIN: 0px; DISPLAY: block; FLOAT: left; COLOR: #aaa; FONT-WEIGHT: normal } .receipt-highlight { BACKGROUND: #fff4bf; box-shadow: 0 0 4px #fff } .receipt-default { BACKGROUND: none transparent scroll repeat 0% 0%; box-shadow: none } .criteriaSummary UL LI STRONG:before { POSITION: relative; LINE-HEIGHT: 1; COLOR: #aaa; FONT-SIZE: 120%; CONTENT: "+"; FONT-WEIGHT: bold; LEFT: -2px } .criteriaSummary UL LI SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI A { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI SPAN { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG + SPAN { MARGIN-LEFT: 3px } .criteriaSummary UL LI A { PADDING-RIGHT: 18px; BACKGROUND: url(../../../images/ci/icons/delete_li.gif) #eee no-repeat 96% 2px; TEXT-DECORATION: none } .search-element { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 18px; PADDING-LEFT: 9px; PADDING-RIGHT: 3px; BACKGROUND: #f9f9f9; PADDING-TOP: 18px } .search-element H2 { LINE-HEIGHT: 1; MARGIN: 0px; WIDTH: 0px; DISPLAY: inline-block; HEIGHT: 22px; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; OVERFLOW: hidden; FONT-WEIGHT: normal } .search-element H2:before { POSITION: relative; MARGIN: 0px 3px 6px 0px; FONT: 17px/1 "Utilicons"; COLOR: #aaa; VERTICAL-ALIGN: middle; CONTENT: "F"; TOP: 2px } .search-element INPUT[type='text'] { WIDTH: 60%; -moz-appearance: searchfield; -webkit-appearance: searchfield } .calPicker { Z-INDEX: 1500 !important } .calPicker .calHead { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .calPicker H3 { BORDER-BOTTOM: medium none; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 40px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .calPicker .previous { POSITION: absolute; TOP: 2px; LEFT: 2px } .calPicker .next { POSITION: absolute; TOP: 2px; RIGHT: 2px } .calPicker DIV.calFoot { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; CLEAR: both; PADDING-TOP: 6px } .calPicker A.contextmenubar { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .calPicker A.contextmenubar:hover { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .timediv { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .timediv UL { WIDTH: 8em; HEIGHT: 200px; OVERFLOW: auto } .timediv UL LI.contextmenubar_top { WIDTH: 114px; TOP: -18px } .timediv UL LI A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .csPicker { MIN-WIDTH: 300px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 12px; FONT-SIZE: 95%; PADDING-TOP: 0px } .csPicker .actionBar { FONT-SIZE: 110% } .csPicker .localViewToggle { FONT-SIZE: 110% } .csPicker .contentPaneWide { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .breadcrumbs { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .itemTray { Z-INDEX: 1000 } .csPicker .itemTray .taskbuttondiv { MARGIN: 0px; FONT-SIZE: 105% } .csPicker .itemTray H3 { FONT-SIZE: 115% } .csPicker #titleicon + H1 { MARGIN-TOP: 2px } .csPicker .itemTray #numberOfElements { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.lb-overlay { Z-INDEX: 1001; POSITION: fixed; BACKGROUND-COLOR: #000; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px } DIV.lb-wrapper { Z-INDEX: 1002; POSITION: fixed; OVERFLOW: hidden } DIV.lb-wrapper DIV.lb-header { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #dedede; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } DIV.lb-wrapper DIV.lb-header H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 15px; HEIGHT: 1.23em; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-header A { POSITION: absolute; DISPLAY: block; TOP: 10px; RIGHT: 10px } DIV.lb-wrapper DIV.lb-header A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; VERTICAL-ALIGN: top; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.lb-wrapper DIV.lb-content { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: auto; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-content DIV.lb-loading { BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) no-repeat center center } DIV.lb-wrapper DIV.topRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #lightbox DIV.bottomRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } DIV.lb-wrapper DIV.topRound B { DISPLAY: block; OVERFLOW: hidden } #lightbox DIV.bottomRound B { DISPLAY: block; OVERFLOW: hidden } DIV.lb-wrapper DIV.topRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } #lightbox DIV.bottomRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } #lightbox DIV.bottomRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightbox DIV.bottomRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightboxWrapper { Z-INDEX: 1001; POSITION: absolute; TOP: 0px; RIGHT: 0px; LEFT: 0px } #lightboxWrapper-inner { Z-INDEX: 1002; POSITION: relative; TEXT-ALIGN: center; WIDTH: 100%; TOP: 0px; LEFT: 0px } #lightbox { Z-INDEX: 1003; POSITION: relative; TEXT-ALIGN: left; MARGIN: 40px 0px 0px; DISPLAY: block; TOP: auto; LEFT: auto } .my-places-popup #lightbox { MARGIN: 0px } .my-places-popup #lightboxWrapper { POSITION: relative } #lightbox #lightboxContent { BORDER-BOTTOM: #333 2px solid; POSITION: relative; BORDER-LEFT: #333 2px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff !important; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP: #333 2px solid; BORDER-RIGHT: #333 2px solid; PADDING-TOP: 1px; -moz-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -moz-border-radius: 5px; -webkit-border-radius: 5px } .my-places-popup #lightbox #lightboxContent { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .lb-container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lb-content .container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lbAction { Z-INDEX: 1005; POSITION: absolute; TOP: 9px; RIGHT: 9px } #overlay { Z-INDEX: 1000; POSITION: fixed; FILTER: alpha(opacity=30); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .30 } .done#lightbox #lbLoadMessage { DISPLAY: none } .done#lightbox #lbContent { DISPLAY: block } .loading#lightbox #lbContent { DISPLAY: none } .loading#lightbox #lbLoadMessage { DISPLAY: block } .myPlacesContent { PADDING-BOTTOM: 16px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; HEIGHT: auto !important; MAX-HEIGHT: 500px !important; FONT-SIZE: 95%; OVERFLOW: auto; PADDING-TOP: 16px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .avatar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .myavatar { MARGIN-BOTTOM: 12px; MAX-HEIGHT: 150px; OVERFLOW: hidden } #lightbox .tallPara { PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 14px } #lightbox UL { MARGIN: 4px 0px 12px } #lightbox UL LI { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } #lightbox UL LI A:hover { TEXT-DECORATION: underline } DIV.lbContainer P.taskButtonsContent { MARGIN: 12px 0px 6px } .toBeRemoved { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .toBeRemoved > TD { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .unsavedItem { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD:first-child { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD { BACKGROUND-IMAGE: none } A.selectedItem { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } A.selectedItem:focus { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } TR.inEditMode-row { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TR.inEditMode-row TD { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 6px !important } #dataCollectionContainer { MARGIN: -20px -30px 0px } .popup #dataCollectionContainer { MARGIN: -12px -20px } DIV#dataCollectionContainer DIV.contentBlock { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-question-discover .inventoryListContainerDiv { PADDING-LEFT: 12px } .picker .inventoryListContainerDiv { PADDING-LEFT: 12px } .blogContainer .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV[id*='step'] { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } .submittitle { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #infoStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #taskStatusStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #linkedContentStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } DIV[id*='stepcontent'] { PADDING-BOTTOM: 0px; PADDING-LEFT: 48px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-TOP: 0px } .steptitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { PADDING-BOTTOM: 18px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .steptitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { MARGIN-RIGHT: 3px } #toolSettingsForm .steptitle SPAN { DISPLAY: none } #toolSettingsForm .stepcontent { PADDING-LEFT: 20px } #toolSettingsForm .steptitle { PADDING-LEFT: 9px } #toolSettingsForm .submittitle.steptitle { PADDING-LEFT: 27px } H3.noNumber { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 4px } .stepcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .stepcontent LI { PADDING-BOTTOM: 6px; MARGIN-BOTTOM: 6px } .stepcontent LI LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .stepcontent LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .stepcontent .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepcontent .stepHelp:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .stepcontent .fieldHelp { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 2px } A.browse + .fieldHelp { PADDING-TOP: 9px } .stepcontent .nonHelp { COLOR: #000; FONT-SIZE: 95% } .stepcontent .nestedList LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .nestedListSmall LI { FONT-SIZE: 90% } .nestedSubList { MARGIN: 6px 6px 6px 30px } .stepLite { PADDING-BOTTOM: 12px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 6px } .columnStep .column-3 { MIN-HEIGHT: 200px } .columnStep .column-3 TABLE.attachments { FONT-SIZE: 90% } .columnStep DIV H3 { MARGIN: 6px } .columnStep DIV DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } OL.nestedList LI DIV.imgLabel { WIDTH: auto } OL.nestedList LI DIV.imgLabel SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } OL.nestedList LI DIV.imgLabel SPAN.control { DISPLAY: inline } #title_color_value { PADDING-TOP: 6px } DIV.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.gb_gridCell_inner H3.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.field { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { WIDTH: 100% } DIV.label SPAN.contextMenuContainer { DISPLAY: inline } DIV.noLabelField BR { DISPLAY: none } SPAN.stepHelp BR { DISPLAY: block } SPAN.fieldHelp BR { DISPLAY: block } DIV.field OL P { PADDING-BOTTOM: 3px } DIV.noLabelField UL P { PADDING-BOTTOM: 3px } DIV.field EM { MARGIN-TOP: 5px; DISPLAY: inline-block; FONT: italic 100% Georgia, serif; COLOR: #888 } FIELDSET.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } DIV.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } FIELDSET.info DIV.label { COLOR: #666 } .reqfield { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 40px; PADDING-RIGHT: 0px; FONT: italic 105% Georgia, serif; FLOAT: left; COLOR: #777; PADDING-TOP: 24px } .reqfield:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .required > .label > LABEL:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .reqfield IMG { DISPLAY: none } .required > .label > LABEL IMG { DISPLAY: none } .requiredField { PADDING-BOTTOM: 6px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(../../../images/ci/icons/required.gif) no-repeat 0px center; PADDING-TOP: 6px } DIV.label IMG.indicator { POSITION: absolute; TOP: 0px; LEFT: -18px } .largeText DIV.label { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText DIV.field { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 75% !important; FONT-WEIGHT: normal } .field A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 95% } DIV.editBlock { FLOAT: left; MARGIN-RIGHT: 12px } .largeText DIV.field DIV.editBlock LABEL { FONT-SIZE: 80%; FONT-WEIGHT: normal } .largeText DIV.field DIV.exemptdiv LABEL { FONT-SIZE: 65% } .largeText TEXTAREA { FONT-SIZE: 80% } LI.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; PADDING-TOP: 3px; -moz-border-radius: 6px; -webkit-border-radius: 6px } .e_expandArea { MARGIN-TOP: 21px } #e_groups_menu { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #ceeaee; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .parent-child-listing { WIDTH: 50% } .parent-child-listing .stepHelp { MARGIN-LEFT: 24px } .parent-child-listing UL { BORDER-LEFT: #ccc 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 12px 10px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .parent-child-listing LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .stepcontent .hierarchy { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .stepcontent .hierarchy LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; PADDING-TOP: 0px } OL.hierarchy LI H5 { POSITION: relative; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 11em; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 8px } OL.hierarchy LI H5 SPAN { BORDER-BOTTOM: medium none; DISPLAY: inline; COLOR: #888; FONT-SIZE: 100% } OL.hierarchy LI H5 A { POSITION: absolute; FONT-SIZE: 90%; TOP: 9px; RIGHT: 0px; FONT-WEIGHT: normal } OL.hierarchy LI DIV { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 2px; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } OL.hierarchy LI DIV.gbData SPAN { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 2px } OL.hierarchy LI DIV.gbData SPAN:first-child { BORDER-LEFT: medium none; PADDING-LEFT: 0px; MARGIN-LEFT: 0px } OL.hierarchy LI DIV INPUT.points { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT.points { WIDTH: 2em } OL.hierarchy LI DIV INPUT.name { WIDTH: 16em } LI.parent { PADDING-BOTTOM: 0px !important } OL.hierarchy LI.parent OL LI H5 { BACKGROUND-IMAGE: none } .stepPanels { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .stepPanels LI { BORDER-BOTTOM: medium none } .panelTitle { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 4px 0px 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; CURSOR: pointer; PADDING-TOP: 3px } .mdHead A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { WIDTH: 100%; DISPLAY: block } .panelTitle .date { POSITION: absolute; COLOR: #666; FONT-SIZE: 95%; TOP: 2px; RIGHT: 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none } .panelTitle A SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 2px } .mdHead A SPAN.date { FONT-WEIGHT: normal } .mdList { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel P SPAN { COLOR: #666 } .mdList H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .mdList P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanelControls { FONT-SIZE: 90% } .contentAreaBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px 24px 24px; BACKGROUND: #fff; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .contentAreaBlock #step1 { BORDER-TOP: 0px } .taskbuttondiv { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .taskButtonsContent { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .okbutton { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .picker .taskbuttondiv { PADDING-BOTTOM: 9px; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .container .taskbuttondiv:first-child { MARGIN-TOP: 0px } DIV#dataCollectionContainer .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#dataCollectionContainer .reqfield + .taskbuttondiv { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#containerdiv .mapCanvasForm .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } #customizeDataCollection .taskbuttonhelp { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px } DIV#dataCollectionContainer .taskbuttonhelp + .taskbuttondiv { PADDING-BOTTOM: 18px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 0px } SPAN.stepTitleRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } SPAN.contentListRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } .taskButtonsContent { PADDING-BOTTOM: 0px; MARGIN: 24px -12px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 9px } P.okbutton INPUT { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 100%; PADDING-TOP: 1px } .taskbuttonhelp { PADDING-BOTTOM: 0px; FONT-STYLE: italic; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } #taskbuttondiv P { BORDER-BOTTOM: red 1px solid; TEXT-ALIGN: left; BORDER-LEFT: red 1px solid; FONT-STYLE: italic; MARGIN: 6px 0px; DISPLAY: block; FONT-SIZE: 90%; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .stepTitleRight { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; TOP: -2px; RIGHT: -2px; PADDING-TOP: 6px; LEFT: auto } LEGEND { POSITION: absolute; LINE-HEIGHT: 0; HEIGHT: 0px; TOP: -10000px } FIELDSET OL LI SPAN.tagContainer INPUT { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer A.browse { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.hidden { DISPLAY: none } .contentBlock OL LI SPAN.hidden { DISPLAY: none } .selectItems { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 639px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .selectItems SELECT { MARGIN: 6px 0px 0px; WIDTH: 300px; DISPLAY: block; MAX-WIDTH: 300px; HEIGHT: 115px; FONT-SIZE: 100% } #dataCollectionContainer .noLabelField > .selectItems { POSITION: relative; PADDING-BOTTOM: 15px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 15px } #dataCollectionContainer .noLabelField > .userRoleSelect:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems.userRoleSelect:before { LEFT: 358px } #dataCollectionContainer .noLabelField > .selectItems.cumulativeSelectItems:before { LEFT: 47% } .selectItems INPUT[type=button] { MARGIN: 6px 0px 0px } .selectItems INPUT[type=text] { MARGIN: 6px 0px; WIDTH: 300px; DISPLAY: block; FONT-SIZE: 100% } .selectArrows { POSITION: relative; MARGIN-TOP: 60px } .selectArrows A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectArrows BUTTON { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectItems H4 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px 56px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .userRoleSelect { WIDTH: auto } .userSelectedRoles { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 56px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .userSelectedRoles .selectArrows { POSITION: absolute; MARGIN: 0px; TOP: 28px; LEFT: 20px } .selectItems .available-roles H4 { MARGIN-LEFT: 0px } .selectItems .available-roles SELECT { HEIGHT: 200px } .multiSelect { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .multiSelect > DIV { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; WIDTH: 46%; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } .multiSelect SELECT { WIDTH: 100% } .multiSelect .selectArrows { TEXT-ALIGN: center; MARGIN: 40px 0px; WIDTH: 5% } .widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: 6px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } .widgetControls { FONT-SIZE: 90% } TABLE .widgetControls { FONT-SIZE: 90% } .widget .spellCheck { FLOAT: right } .widget .textBoxItem { FLOAT: right } DIV.liveArea FIELDSET.stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.liveArea FIELDSET.stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.liveArea FIELDSET.stepcontent TEXTAREA { WIDTH: 100% } DIV.liveArea FIELDSET.stepcontent SPAN.inlineHelp { DISPLAY: inline } .quickAddPal .stepcontent { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; PADDING-TOP: 3px } .quickAddPal .stepcontent LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .quickAddPal .stepcontent .label { WIDTH: 30%; PADDING-RIGHT: 2px; OVERFLOW: visible } .quickAddPal .stepcontent .field { WIDTH: 65% } .quickAddPal LI.fieldError .fieldErrorText { DISPLAY: block; COLOR: red; MARGIN-LEFT: 74px; FONT-SIZE: 85%; FONT-WEIGHT: normal } DIV.quickAddPal DIV.field INPUT[type=text] { WIDTH: 100% } DIV.quickAddPal DIV.field SELECT { WIDTH: 100% } DIV.quickAddPal DIV.field TEXTAREA { WIDTH: 100% } DIV.quickAddPal LI.stepHelp { WIDTH: auto } DIV.quickAddPal LI DIV SPAN { WIDTH: auto } DIV.field SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.field SPAN.control { DISPLAY: inline } DIV.quickAddPal DIV.field INPUT.datePickerInput { WIDTH: 8em } DIV.quickAddPal DIV.field INPUT.timePickerInput { WIDTH: 8em } .dtpickerEndDiv { PADDING-TOP: 10px } DIV#texteditor { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } DIV#texteditor TEXTAREA { WIDTH: 450px; DISPLAY: block; MARGIN-LEFT: 0px } DIV#texteditor A.textBoxItem { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 80%; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 2px } SELECT.survey_question { MAX-WIDTH: 100% } .htmlarea .toolbar DIV > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FLOAT: left; HEIGHT: 22px; PADDING-TOP: 0px } .htmlarea IFRAME { MIN-WIDTH: 300px !important } .htmlarea .toolbar A.wikiButton { WIDTH: auto !important } .htmlarea .toolbar A.wikiButton IMG { WIDTH: auto !important } .vtbe_footer { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .vtbe_footer SPAN { FONT-SIZE: 100% } .vtbe_footer INPUT[type=button] { FONT-SIZE: 95% } .vtbe_footer A { MARGIN: 0px 0px 0px 3px } .resize_handle { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BACKGROUND: url(images/controls.png) #ccc no-repeat 50% -1px; HEIGHT: 12px; BORDER-TOP: #ddd 1px solid; CURSOR: n-resize } .resize_handle:hover { BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #bbb; BORDER-TOP-COLOR: #ccc } .resize_handle IMG { WIDTH: 100%; HEIGHT: 8px } .tabGroupsPreview { MARGIN: -11px -12px 24px; FONT-SIZE: 100% } .previewContent { Z-INDEX: 1; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; BACKGROUND: url(images/backgrounds_h.png) #aaa repeat-x 0px -320px; PADDING-TOP: 14px } .previewContent IFRAME { WIDTH: 100%; HEIGHT: 300px } .previewContent .appTabs { TOP: -3px } .tabGroupsPreview TABLE DIV { DISPLAY: block } .previewOverlay { POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=30); TEXT-TRANSFORM: uppercase; WIDTH: 100%; LETTER-SPACING: 10px; COLOR: #555; FONT-SIZE: 300%; TOP: 130px; FONT-WEIGHT: bold } .tabGroupsPreview .previewOverlay { TOP: 40px } .previewOverlay SPAN { FILTER: alpha(opacity=30); PADDING-BOTTOM: 6px; BACKGROUND-COLOR: white; PADDING-LEFT: 24px; PADDING-RIGHT: 12px; PADDING-TOP: 6px; opacity: .30 } P.warning { PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #cf1d19; MARGIN: 12px 0px 24px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 9px } .warning { BACKGROUND: #a7d0df } DIV.tabPreview { Z-INDEX: 1; BORDER-BOTTOM: #cdcdcd 12px solid; POSITION: relative; BORDER-LEFT: #cdcdcd 12px solid; MARGIN: 0px 6px 6px; WIDTH: auto; BACKGROUND: #cdcdcd; BORDER-TOP: #cdcdcd 12px solid; BORDER-RIGHT: #cdcdcd 12px solid } DIV.tabPreview DIV.paneTabs { MARGIN-TOP: 12px } .buttonLibrary { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 207px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .buttonLibrary LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FLOAT: left; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .buttonLibrary LI A { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 3px } .buttonLibrary LI A.selected { FONT-WEIGHT: bold; TEXT-DECORATION: none } .buttonLibrary LI A:hover { TEXT-DECORATION: underline } DIV.menuStyleStep { MARGIN: 9px 40px 0px 0px; WIDTH: 212px; FLOAT: left } DIV.menuDefaultStyleStep { MARGIN: 9px auto; WIDTH: 212px } .schemeWrapper { MARGIN: 0px 12px 0px 0px; FLOAT: left } .buttonLibrary .schemeWrapper { PADDING-BOTTOM: 10px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #fff; FLOAT: none; PADDING-TOP: 10px; -moz-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); border-radius: 4px } .buttonLibrary .selected .schemeWrapper { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #bbb; PADDING-TOP: 10px } #selectedPalette .schemePreview { BORDER-BOTTOM: #bbb 10px solid; BORDER-LEFT: #bbb 10px solid; BORDER-TOP: #bbb 10px solid; BORDER-RIGHT: #bbb 10px solid; -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); border-radius: 4px } .schemeWrapper SPAN { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: italic 100% Georgia; PADDING-TOP: 6px } UL.buttonLibrary LI.selected { POSITION: absolute; TOP: 6px; LEFT: 0px } UL.buttonLibrary LI.selected A.selected { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A.selected SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .schemePreview { PADDING-BOTTOM: 0px; PADDING-LEFT: 16px; WIDTH: 160px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .modulePreview { BORDER-BOTTOM: 0px solid; POSITION: relative; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px !important; MARGIN: 6px 0px 0px auto; PADDING-LEFT: 0px !important; WIDTH: 140px; BOTTOM: 0px; PADDING-RIGHT: 0px !important; HEIGHT: 57px; FONT-SIZE: 85%; BORDER-TOP: 1px solid; RIGHT: 0px; BORDER-RIGHT: 0px solid; PADDING-TOP: 0px !important; LEFT: auto } .schemePreviewHead { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 6px !important } .modulePreviewHead { PADDING-BOTTOM: 4px !important; MARGIN: 0px; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-WEIGHT: bold; PADDING-TOP: 4px !important } .schemePreviewBody { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 3px } .modulePreviewBody { PADDING-BOTTOM: 3px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 4px !important } .moduleList { BORDER-TOP: #ccc 1px solid } .moduleItem { BORDER-BOTTOM: #ccc 1px solid } .module { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } .moduleHeading { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 10px } .module H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 110% } .moduleDescription { WIDTH: 90% } .more { DISPLAY: none } .moduleAction { MARGIN: 10px 0px } .moduleCategory { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .moduleCategory A { FONT-WEIGHT: bold } .moduleSample { PADDING-LEFT: 10px; DISPLAY: none } .expandedModule { BACKGROUND-COLOR: #efefef } .expandedModule .moduleDetails { WIDTH: 47% } .expandedModule .moduleSample { WIDTH: 47% } .expandedModule .more { DISPLAY: inline } .expandedModule .moduleSample { DISPLAY: block } .leftColumn-wide#moduleList .contentListPlain { PADDING-LEFT: 18px } .moduleListActionBar { PADDING-LEFT: 18px } #moduleList .contentListPlain > LI.expandedModule .moduleSample > DIV { MIN-HEIGHT: 50px !important; WORD-WRAP: normal } #moduleBody { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } #moduleBorder { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .portlet { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #efede3; MARGIN: 0px 10px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #444; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 0 2px 4px rgba(0, 0, 0, .05); border-radius: 3px } .containerPortal > DIV:first-child .portlet { MARGIN: 0px 10px 20px 0px } .reorderableModule:hover { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; -webkit-transition-property: border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border, background; -moz-transition-duration: 200ms; -moz-transition-timing-function: ease-in-out } .reorderableModule:hover H2 { COLOR: #000 } .module-dragstate { BORDER-BOTTOM-COLOR: #555; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: 2px; opacity: .9; -moz-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-transition-property: border-width, border-color, background, -webkit-box-shadow; -webkit-transition-duration: 50ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border-width, border-color, background, -moz-box-shadow; -moz-transition-duration: 50ms; -moz-transition-timing-function: ease-in-out } #moduleTitle { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 .moduleTitle { WORD-WRAP: break-word } .portlet H2.dragHandle { PADDING-LEFT: 20px } .portlet H2.dragHandle:hover { CURSOR: move } .portlet H2 A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; COLOR: #fff; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .portlet H2 A:hover { TEXT-DECORATION: underline } .portlet H2 A IMG { VERTICAL-ALIGN: middle } .portlet H2.noTitle { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 1.4em; PADDING-TOP: 0px } .portlet H2.noTitle:hover { BACKGROUND: #ededed } .portlet A { WORD-WRAP: break-word; TEXT-DECORATION: none } .portlet A:hover { TEXT-DECORATION: underline } .edit_controls { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FLOAT: right; PADDING-TOP: 7px } .portlet .edit_controls { VISIBILITY: hidden } .portlet:hover .edit_controls { VISIBILITY: visible } .edit_controls A { Z-INDEX: 201; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 1px; TEXT-DECORATION: none; PADDING-TOP: 0px; verical-align: top } .portlet .edit_controls A:hover { TEXT-DECORATION: none } .portlet:hover .edit_controls A { TEXT-DECORATION: none } .edit_controls .moduleToggleLink { Z-INDEX: 201; POSITION: absolute; FILTER: alpha(opacity=50); PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 14px; PADDING-RIGHT: 3px; HEIGHT: 14px; TOP: 3px; PADDING-TOP: 3px; LEFT: -4px; opacity: .5 } .edit_controls A IMG { DISPLAY: none } .edit_controls A:before { FONT: 16px/1 "Utilicons"; COLOR: #bcbcbc; text-shadow: 0 1px 0 #fff } .edit_controls A:hover:before { COLOR: #888 } .edit_controls A.moduleToggleLink { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px } .edit_controls A[title*='Expand'].moduleToggleLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .edit_controls A.moduleCloseLink:before { CONTENT: "X" } .edit_controls A.moduleDetachLink:before { FONT: 16px/1 "Utilicons"; CONTENT: "w" } .edit_controls A[href*='edit_module']:before { CONTENT: "S" } .collapsible { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px } .collapsible TABLE { BORDER-SPACING: 3px 2px; BORDER-COLLAPSE: separate; FONT-FAMILY: Helvetica, Arial, sans-serif; COLOR: #333; FONT-SIZE: 90% } .collapsible .help { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .imgWrapper { TEXT-ALIGN: center; MARGIN: 6px auto; OVERFLOW: auto } .portlet H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } #lightbox H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.portletBlock H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.blockContents H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .flyout H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 5px } .portlet H4 { PADDING-BOTTOM: 2px; TEXT-INDENT: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 1px } .portlet .portletList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList LI:first-child { BORDER-TOP: medium none } .portlet .portletList LI IMG { DISPLAY: none } .portlet .courseListing LI > A { FONT-WEIGHT: bold } .portlet .courseRole { COLOR: #777 } .portlet .dataBlockLabel { COLOR: #777 } .portlet .eventDate { COLOR: #777 } .portlet .eventList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .eventList LI .date { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f0f0f0; COLOR: #597298; FONT-WEIGHT: bold; PADDING-TOP: 2px; -moz-border-radius: 1px; -webkit-border-radius: 1px; border-radius: 1px } .portlet .eventList LI .event { PADDING-BOTTOM: 2px; PADDING-LEFT: 18px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .portlet .eventList LI .description { FONT-SIZE: 90% } .portlet .eventDate { FONT-SIZE: 90% } .portlet .eventList LI .event A { FONT-WEIGHT: bold } .portlet SPAN.origin { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #999; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet .portletList-img > LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList-img > LI:first-child { BORDER-TOP: medium none; PADDING-TOP: 0px } .portlet .portletList-img > LI IMG { DISPLAY: none } .portlet .courseInformation { PADDING-BOTTOM: 0px; TEXT-INDENT: -16px; MARGIN: 4px 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock { PADDING-BOTTOM: 0px; TEXT-INDENT: -4px; MARGIN: 4px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock UL { MARGIN-TOP: 5px } .portlet .courseDataBlock UL LI { TEXT-INDENT: 0px } .portlet .calculatorModule { TEXT-ALIGN: center } .portlet .calculator { PADDING-BOTTOM: 6px; MARGIN: 0px auto; PADDING-LEFT: 6px; WIDTH: 10em; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .portlet .portletPath { MARGIN: 4px; BACKGROUND: #f0f0f0; FONT-SIZE: 90%; -moz-border-radius: 1px; -webkit-border-radius: 1px } .portlet .portletPath SPAN { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; DISPLAY: inline-block; BACKGROUND: #ddd; COLOR: #666; FONT-WEIGHT: bold; PADDING-TOP: 1px; -moz-border-radius: 1px 0 0 1px; -webkit-border-radius: 1px 0 0 1px } .portlet .courseDataBlock UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px -895px; PADDING-TOP: 0px } .portlet .courseDataBlock A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock LI A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock A:hover { TEXT-DECORATION: underline } .portlet .courseDataBlock LI A:hover { TEXT-DECORATION: underline } .portletHelp { PADDING-BOTTOM: 2px; MARGIN: 4px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #688ba8; FONT-SIZE: 95%; PADDING-TOP: 1px } DIV.module_actions { PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.8em; MARGIN: 4px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.module_actions A:link { BORDER-BOTTOM: #ccc 1px outset; BORDER-LEFT: #ccc 1px outset; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 5px; COLOR: #036; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px outset; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px outset; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.module_actions A:hover { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions A:active { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions IMG { MARGIN: 0px 3px; VERTICAL-ALIGN: middle } DIV.module_actions SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.module_actions LABEL { FONT-WEIGHT: bold } DIV.scroll_div { MAX-HEIGHT: 300px; OVERFLOW: auto } .portlet DIV.scroll_div { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN-BOTTOM: 3px; BACKGROUND: #fff4bf; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .submission_list { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .submission_list LI { PADDING-BOTTOM: 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; PADDING-TOP: 9px } .submission_list LI:first-child { BORDER-TOP: medium none } .submission_list LI A { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .submission_list LI A.label { MARGIN-LEFT: 0px; FONT-SIZE: 100%; FONT-WEIGHT: bold } .submission_list LI DIV.button { MARGIN: 4px 0px 0px; FLOAT: right } .submission_list LI SPAN { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .eudModule { PADDING-BOTTOM: 24px; MARGIN: 0px } .styledModule-dark { PADDING-BOTTOM: 24px; MARGIN: 0px } .portlet .noItems { TEXT-ALIGN: center; FONT-STYLE: italic } .eudModule .eudModule-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .styledModule-dark .module-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .eud-button-wrap { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } IMG.eud-avatar { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 28px; PADDING-RIGHT: 2px; BACKGROUND: #fff; HEIGHT: 28px; PADDING-TOP: 2px; -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -moz-border-radius: 2px; -webkit-border-radius: 2px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } .actionMenuButton { FILTER: none; PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: block; BACKGROUND: #eee; VERTICAL-ALIGN: middle; PADDING-TOP: 3px } DIV[id*='actionMenu_'] { Z-INDEX: 1000; MARGIN-TOP: -4px; MARGIN-LEFT: -3px } .portlet .portletBlock { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 6px } .portlet .portletBlock:first-child { BORDER-TOP: 0px } .moduleActions + .portletBlock { BORDER-TOP: 0px } .blockGroups LI:first-child { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .portlet .memberList { MARGIN: 0px 0px 5px } .itemGroups { PADDING-BOTTOM: 0px; MARGIN: 4px 9px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .itemGroups .itemGroups { MARGIN-BOTTOM: 4px; MARGIN-LEFT: 0px } .portlet .blockGroups LI { FONT-SIZE: 100% } .portlet .itemGroups LI { PADDING-BOTTOM: 7px; LINE-HEIGHT: 120%; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .memberList LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 14px !important; PADDING-TOP: 0px } .portlet .course { DISPLAY: block; FONT-SIZE: 90% } .portlet UL.memberList { DISPLAY: block; FONT-SIZE: 90% } .portlet SPAN.refresh { DISPLAY: block; FONT-SIZE: 90% } .portlet .course { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet SPAN.noIndent { MARGIN-LEFT: 0px !important } .portlet .whatsNew SPAN.course { MARGIN-LEFT: 0px !important } .portlet SPAN.course { MARGIN-LEFT: 0px !important } .portlet UL.hierarchyList { MARGIN-LEFT: 22px } .portlet UL.hierarchyList LI { OVERFLOW-X: visible; TEXT-INDENT: -18px } .portlet UL.hierarchyList LI * { TEXT-INDENT: 0px } .portlet UL.hierarchyList LI.childless { TEXT-INDENT: 0px } .portlet UL LI UL LI SPAN.warning { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.newItemCount { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .flag { BORDER-BOTTOM: #efa495 1px solid; BORDER-LEFT: #efa495 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; BACKGROUND: #ffe4df; COLOR: #c30; FONT-SIZE: 90%; BORDER-TOP: #efa495 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #efa495 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL.memberList SPAN { FONT-SIZE: 100% } .portlet UL.memberList SPAN.newItemCount { FONT-SIZE: 100% } .portletInfoFooter { POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 9px; BOTTOM: 5px; PADDING-RIGHT: 9px; COLOR: #999; FONT-SIZE: 90%; RIGHT: 0px; PADDING-TOP: 2px } .dateSelector { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .blockGroups LI SPAN.newItemCount { COLOR: #999; FONT-WEIGHT: normal } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHead A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .portlet .portletBlock H4 A:hover { BACKGROUND: #eee } .portlet .portletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .portlet .portletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .portlet .subCategories LI A { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead:hover { CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) #fff no-repeat 1px 9px; COLOR: #0099b6 } .blockGroups .itemHeadOpen:hover { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen:focus { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups LI IMG.spacer { WIDTH: 50px; HEIGHT: 0px } .blockGroups LI SPAN.headerText:hover { CURSOR: pointer; TEXT-DECORATION: underline } .viewHeader { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .viewHeader H3 { COLOR: #666; FONT-WEIGHT: bold } DIV.waitingFrame { BACKGROUND: #fff } .moduleControlWrapper { MARGIN: 6px 0px 0px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 6px } .moduleControlWrapper A { POSITION: relative; MARGIN: 0px 2px } .moduleControlWrapper A:after { POSITION: relative; COLOR: #bbb; FONT-SIZE: 14px; CONTENT: "\2192"; RIGHT: 0px; FONT-WEIGHT: bold } .moduleBlock { MARGIN: 6px } .portlet H1 { MARGIN: 6px; FONT-SIZE: 120% } .assessmentPortlet DIV.assessmentPortletBlock { BORDER-BOTTOM-COLOR: #777; PADDING-BOTTOM: 0px; BORDER-TOP-COLOR: #777; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #f9f9f9; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4 A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4 A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet UL.subCategories { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock UL.subCategories LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet UL.subCategories LI A { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead:hover { BACKGROUND-COLOR: #e3efff; TEXT-DECORATION: underline } UL.assessmentBlockGroups LI A.itemHeadOpen { BACKGROUND: #fff no-repeat 3px center } UL.assessmentBlockGroups LI A.itemHeadOpen:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .assessmentPortlet UL.subCategories LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } UL.assessmentBlockGroups LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .assessmentPortlet UL.subCategories LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } UL.assessmentBlockGroups LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } .assessmentPortlet UL.itemGroup LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.assessmentBlockGroups LI UL.itemGroups LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet UL.itemGroup LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI UL.items { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; FONT-SIZE: 110%; PADDING-TOP: 2px } UL.assessmentBlockGroups LI UL.itemGroups LI A { FONT-WEIGHT: normal } UL.itemGroups LI UL.items LI A { FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H3 { MARGIN: 0px } .assessmentPortlet DIV.assessmentPortletBlock H3 A { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f0f0f0; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet DIV.assessmentPortletBlock H3 A:hover { TEXT-DECORATION: none } .assessmentPortlet DIV.assessmentPortletBlock:first-child H3 A { BORDER-TOP: medium none } .assessmentPortlet DIV.assessmentPortletBlock H3 A.open { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/less_options.gif) #e3efff no-repeat 99% center; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet UL.objectList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortletBlock UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .blockContents UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.memberList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet .blockContents UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet .blockContents UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .portlet #loginBoxFull { PADDING-BOTTOM: 16px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull P { MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; COLOR: #444; FONT-SIZE: 0.95em } .portlet #loginBoxFull P.welcome { PADDING-BOTTOM: 0px; MARGIN: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000; FONT-SIZE: 1em; FONT-WEIGHT: bold; PADDING-TOP: 0px } .portlet #loginBoxFull UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } .portlet #loginBoxFull LI LABEL { FONT-SIZE: 100%; FONT-WEIGHT: normal } .portlet #loginBoxFull INPUT[type='text'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='password'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull A { FONT-SIZE: 0.9em } .portlet #loginBoxFull P A { FONT-SIZE: 1em } .portlet #loginBoxFull P.welcome A { FONT-SIZE: 1em } .portlet #loginBoxFull LI + LI + LI { FLOAT: left } .portlet #loginBoxFull LI + LI + LI + LI { TEXT-ALIGN: right; FLOAT: right } .portlet #loginBoxFull LI INPUT.submit { MARGIN: -14px -3px 0px 0px } #body { PADDING-BOTTOM: 60px } #loadstatus { POSITION: relative; HEIGHT: 180px } FIELDSET.highlight { BACKGROUND: #eee } FIELDSET.highlight DIV.input { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .builderItem .item { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FONT-SIZE: 100%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 12px } .builderItem:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } #lessonPlanForm #dataCollectionContainer .contentListPlain LI:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } LI.builderItem { MIN-HEIGHT: auto } .builderItem .close { POSITION: absolute; TOP: 5px; CURSOR: pointer; RIGHT: 5px } .builderItem IFRAME { WIDTH: 100% !important } DIV.subheading { FONT-WEIGHT: bold } DIV.required DIV.inputField { PADDING-LEFT: 1.5em; BACKGROUND: url(../../images/ci/icons/required.gif) no-repeat left 2px; MARGIN-LEFT: -1.5em } .inputOptions { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.5em } .offscreen { POSITION: absolute; HEIGHT: 0px; LEFT: -999em } .label A:hover { CURSOR: pointer } #lessonPlanForm #customFormBuilderDiv { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer .contentListPlain { MARGIN: 0px } .alignPanelLightbox { MIN-WIDTH: 650px; PADDING-BOTTOM: 10px; MIN-HEIGHT: 250px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .alignHeader { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .alignPanel TABLE TD { FONT-SIZE: 90% } .alignPanel TABLE TH { FONT-SIZE: 90% } .alignPanel TABLE TD.descriptionCell { MIN-WIDTH: 120px; WORD-WRAP: break-word } .alignPanel THEAD TH.smallCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .alignPanel THEAD TH { WHITE-SPACE: nowrap } .alignPanel TD.actionCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 4px } .pageBreadcrumb { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #fff; HEIGHT: 1em; PADDING-TOP: 6px } .pageBreadcrumb UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .pageBreadcrumb LI { FLOAT: left; COLOR: #999; MARGIN-LEFT: 3px; FONT-WEIGHT: bold } .pageBreadcrumb LI A { COLOR: #036; FONT-WEIGHT: bold; MARGIN-RIGHT: 3px; TEXT-DECORATION: none } .pageBreadcrumb LI A.active { COLOR: #036; FONT-WEIGHT: bold; TEXT-DECORATION: none } .sStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #063; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .sStatusI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #c00; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .panelList { PADDING-BOTTOM: 0px; MARGIN: 2px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; PADDING-TOP: 0px } .panelList > LI { MARGIN: 0px 0px 1px } .panelNested { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #fff; MARGIN: 4px 0px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; OVERFLOW: hidden; PADDING-TOP: 4px } .panelHead { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; WORD-WRAP: break-word; BACKGROUND: #efefef; PADDING-TOP: 6px } .panelHead A { COLOR: #000; TEXT-DECORATION: none } .panelItem { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 6px } .panelList_leftCol { POSITION: absolute; TOP: 6px; LEFT: 6px } .panelList_rightCol { POSITION: absolute; TOP: 6px; RIGHT: 6px } .panelList_centerCol { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 0px } UL.logMessages { LIST-STYLE-TYPE: none; TEXT-INDENT: -1em; PADDING-LEFT: 1em; MARGIN-LEFT: 0px; LIST-STYLE-IMAGE: none } LI.logError { COLOR: red } LI.logWarning { COLOR: blue } LI.logMessage { MARGIN-TOP: 0.1em } .connectionWrapper { POSITION: relative; MARGIN-TOP: 1px; PADDING-RIGHT: 30px } .connectionWrapper A { POSITION: absolute; MARGIN-TOP: -14px; TOP: 50%; RIGHT: 0px } .invertItems { POSITION: relative; DISPLAY: block !important; MARGIN-RIGHT: 26px } .invertItems A { POSITION: absolute; TOP: -14px; RIGHT: -33px } .subcategories { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 11px !important; PADDING-RIGHT: 11px !important; PADDING-TOP: 6px !important } .subcategories H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.calendarTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.announcementTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.calendarTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.announcementTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.calMonth { PADDING-BOTTOM: 6px; MARGIN: 10px 4px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; OVERFLOW: auto; PADDING-TOP: 2px } DIV.calMonth TABLE { BORDER-BOTTOM: #a8beda 2px solid; BORDER-LEFT: #a8beda 1px solid; MARGIN: 0px auto; BORDER-COLLAPSE: collapse; BORDER-TOP: #a8beda 2px solid; BORDER-RIGHT: #a8beda 2px solid } DIV.calMonth TABLE THEAD TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE TBODY TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE THEAD TD DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TBODY TH DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE THEAD TH { BORDER-BOTTOM: #a0a0a0 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 8em; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; OVERFLOW: hidden; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } DIV.calMonth TABLE TBODY TD { BORDER-BOTTOM: #a8beda 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 8em; PADDING-RIGHT: 0px; BACKGROUND: url(images/backgrounds_h.png) white repeat-x 0px -400px; HEIGHT: 8em; OVERFLOW: hidden; BORDER-RIGHT: #a8beda 1px solid; PADDING-TOP: 0px } DIV.calMonth TABLE TH:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:focus { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:active { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD A.daylink { BORDER-BOTTOM: #a8beda 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; WIDTH: 1.2em; PADDING-RIGHT: 0.2em; DISPLAY: block; BACKGROUND: #e3efff; FLOAT: left; FONT-SIZE: 110%; FONT-WEIGHT: bold; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0.2em } DIV.calMonth TABLE TD A.daylink:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD A.daylink SPAN { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TD.today { BACKGROUND-COLOR: #fff4bf } DIV.calMonth TABLE TD.today A.daylink { BACKGROUND: #fff4bf; FONT-WEIGHT: bold } DIV.calMonth TABLE TD.today A.daylink:hover { BACKGROUND: url(images/backgrounds_h.png) #fff4bf repeat-x 0px -50px } DIV.calMonth TABLE TD.offday { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:hover { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:focus { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD DIV { WIDTH: 8em; CLEAR: both; OVERFLOW: hidden } DIV.calMonth TABLE TD DIV UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.calMonth TABLE TD DIV UL LI { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FONT-SIZE: 90%; PADDING-TOP: 1px } TABLE.calYear { POSITION: relative; MIN-WIDTH: 200px; MARGIN: 6px; BORDER-COLLAPSE: collapse; FONT-SIZE: 95% } TABLE.calYearFloat { MARGIN: 6px 0.66%; WIDTH: 32%; FLOAT: left } TABLE.calYear THEAD TD { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear TBODY TH { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear CAPTION { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 108%; PADDING-TOP: 2px } TABLE.calYear CAPTION A { FONT-WEIGHT: bold; TEXT-DECORATION: none } TABLE.calYear CAPTION A:hover { TEXT-DECORATION: underline } TABLE.calYear THEAD TH { BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } TABLE.calYear TBODY TD { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; WHITE-SPACE: nowrap; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } TABLE.calYear TD A { POSITION: relative; WIDTH: 100%; DISPLAY: block; TEXT-DECORATION: none } TABLE.calYear TD A IMG { FLOAT: left } TABLE.calYear TD:hover { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:focus { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:active { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TH:hover { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:focus { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:active { BACKGROUND-COLOR: #ccc } TABLE.calYear TD.today { BACKGROUND: #999 } TABLE.calYear TD.today:hover { BACKGROUND: #999 } TABLE.calYear TD.today:focus { BACKGROUND: #999 } TABLE.calYear TD.today A { COLOR: #fff; FONT-WEIGHT: bold; text-shadow: 0 -1px 0 #555 } TABLE.calYear TD.today A:hover { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:active { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:focus { BACKGROUND-IMAGE: none } TABLE.calYear TD.offday { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:hover { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:focus { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.hasEvent { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -50px; FONT-WEIGHT: bold } TABLE.calendarDay { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; MARGIN: 10px 0px 0px; WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #cdcdcd 1px solid; BORDER-RIGHT: #cdcdcd 1px solid } TABLE.calendarDay THEAD { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay THEAD TH { POSITION: absolute; TOP: 0px; LEFT: -1000px } UL.calendarWeek LI TABLE.calendarDay { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } TABLE.calendarDay TBODY TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 3px; WIDTH: 6%; PADDING-RIGHT: 12px; BACKGROUND: #f3f3f3; COLOR: #555; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } TABLE.calendarDay TBODY TH:hover { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:focus { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:active { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #fff; VERTICAL-ALIGN: top; BORDER-TOP: #cdcdcd 1px solid; PADDING-TOP: 0px } TABLE.calendarDay TBODY TD.hasEvent { PADDING-LEFT: 6px } TABLE.calendarDay TBODY TD.hasEvent A.jumpToEvent { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay TBODY TR.halfHour TH { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.halfHour TD { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.midday TH { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TBODY TR.midday TD { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TR.notBusinessHours TH { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #f3f3f3; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TABLE.calendarDay TR.notBusinessHours TD { BACKGROUND: #fafafa } TABLE.calendarDay TBODY TR.notBusinessHours TD.hasEvent { BACKGROUND: #fafafa } TABLE.calendarDay TR TH SPAN.ampm { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #bbb; LETTER-SPACING: 0.1em; COLOR: #fff; FONT-SIZE: 75%; TOP: -1.2em; PADDING-TOP: 0px; LEFT: -4px } TABLE.calendarDay TBODY TR:hover { -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calendarDay TBODY TR:hover TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TD DIV DIV { PADDING-BOTTOM: 1px; MARGIN: 0px 4px 0px -6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: #b5ccea; FLOAT: left; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } TABLE.calendarDay TD DIV DIV.contextMenuContainer { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px -3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: none; PADDING-TOP: 0px } TABLE.calendarDay TD DIV SPAN { COLOR: #555; FONT-SIZE: 90% } UL.calendarWeek { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #cdcdcd 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #cdcdcd 1px solid; PADDING-TOP: 0px } UL.calendarWeek LI { BORDER-BOTTOM: #cdcdcd 1px solid; POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } UL.calendarWeek LI UL:first-child { BORDER-TOP: medium none } UL.calendarWeek UL LI:first-child { BORDER-TOP: medium none } UL.calendarWeek LI H3.weekDay { PADDING-BOTTOM: 0.3em; MARGIN: 0px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BACKGROUND: #e3efff; COLOR: #666; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 0.3em } UL.calendarWeek LI H3.weekDay:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.calendarWeek LI UL LI { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ededed 1px solid; PADDING-TOP: 6px } UL.calendarWeek LI UL LI:hover { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:focus { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:active { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI H4 { PADDING-BOTTOM: 1px; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 3px; WIDTH: 10em; PADDING-RIGHT: 3px; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 1px } UL.calendarWeek LI DIV { MARGIN-LEFT: 11em } UL.calendarWeek LI DIV.contextMenuContainer { MARGIN: 0px 0px 0px -3px } UL.calendarWeek LI UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } .diffbox-wrapper { MARGIN: 9px auto; WIDTH: 80% } .legendbox-wrapper { MARGIN: 9px auto; WIDTH: 90% } .legendbox-wrapper > DIV { BORDER-LEFT: #ddd 1px solid } .legendbox-wrapper > DIV:first-child { BORDER-LEFT: medium none } .diffbox-left { FLOAT: left } .diffbox-right { FLOAT: left } .diffbox-arrow { FLOAT: left } .legendbox { FLOAT: left } .diffbox-left { WIDTH: 44% } .diffbox-right { WIDTH: 44% } .legendbox-3 { WIDTH: 33% } .legendbox-2 { WIDTH: 48% } .diffbox-left > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .diffbox-right > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #fff; PADDING-TOP: 3px } .diffbox-right > DIV { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .diffbox-left UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-right UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .legendbox UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-left UL LI:first-child { BORDER-TOP: 0px } .diffbox-right UL LI:first-child { BORDER-TOP: 0px } .legendbox UL LI:first-child { BORDER-TOP: 0px } .diffbox-left .label { WIDTH: 30%; COLOR: #666 } .diffbox-right .label { WIDTH: 30%; COLOR: #666 } .legendbox .label { WIDTH: 30%; COLOR: #666 } .diffbox-left .field { WIDTH: 59% } .diffbox-right .field { WIDTH: 59% } .legendbox .label { WIDTH: 45%; FONT-SIZE: 90% } .legendbox .field { WIDTH: 55% } .diffbox-arrow { TEXT-ALIGN: center; WIDTH: 6%; PADDING-TOP: 50px } .diffLegend-sample { POSITION: static !important; WIDTH: 90px !important; HEIGHT: 17px !important } .addedImg-sample { HEIGHT: 13px !important } .removedImg-sample { HEIGHT: 13px !important } .changedImg-sample { HEIGHT: 13px !important } .diff-html-added { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-removed { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .added-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .removed-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-added { BACKGROUND-COLOR: #cfc } .added-sample { BACKGROUND-COLOR: #cfc } .diff-html-removed { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .removed-sample { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .diff-html-changed { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .changed-sample { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .diff-html-added IMG { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .addedImg-sample { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .diff-html-removed IMG { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .removedImg-sample { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .diff-html-changed IMG { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } .changedImg-sample { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } DIV.diff-removed-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-added-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } .diff-addedImg-sample { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-removed-image { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } .diff-removedImg-sample { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } DIV.diff-added-image { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } .diff-addedImg-sample { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } DIV.blogContainer DIV.wikiPage { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid } DIV.blogContainer DIV.wikiPage H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; FONT-SIZE: 120%; PADDING-TOP: 9px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryDate { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 6px } .editWiki { MARGIN: 9px } .topRound { DISPLAY: none } .bottomRound { DISPLAY: none } .playerControls { POSITION: relative; PADDING-BOTTOM: 6px !important; MARGIN-TOP: 0px; PADDING-LEFT: 6px !important; PADDING-RIGHT: 6px !important; MARGIN-BOTTOM: 2px; PADDING-TOP: 6px !important } IMG.managedPluginStatusIcon { MARGIN: 1px 7px 3px 0px } UL.metaDataList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.metaDataList LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } UL.metaDataList LI H3 { MARGIN: 0px; DISPLAY: inline } .bb-cpgbtd { FONT-SIZE: 90% } .bb-cpgbth { FONT-SIZE: 90% } .bb-cpmgtd { COLOR: #000; FONT-SIZE: 85% } .bb-cpmgth { FONT-SIZE: 85%; FONT-WEIGHT: bold } #resizeHandle { BORDER-BOTTOM: #999 1px solid; POSITION: absolute; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 0px; WIDTH: 3px; BOTTOM: 0px; BACKGROUND: #ddd; BORDER-TOP: #999 1px solid; TOP: 0px; BORDER-RIGHT: #999 1px solid; LEFT: 200px; -moz-border-radius: 1px; -webkit-border-radius: 1px } #resizeHandle:hover { BACKGROUND: #aaa; CURSOR: e-resize } #resizeHandle .collapseControl { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #resizeHandle .pullcollapsed { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .collapseControl:hover { CURSOR: pointer } .caretTitleModifier { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; COLOR: #444; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } .landingPageColumn H3.hiddenlink .linkStatus { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0.4em } TABLE.inventory .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .additional { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .additional .left { FLOAT: left } .additional .right { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: right; COLOR: #777; PADDING-TOP: 2px } .additional .right SPAN.size { COLOR: #000; FONT-WEIGHT: bold } .additional .left SPAN.suboption { DISPLAY: block } A.add { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #b3efb3; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.add:hover { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #e4ffdf; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.remove { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffc4bf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } A.remove:hover { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffd2cf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .listColumnHead { BORDER-BOTTOM: #ccc 1px dotted; MARGIN-BOTTOM: 3px; COLOR: #555; FONT-SIZE: 90%; FONT-WEIGHT: bold } .customFormBuilderLabel { WIDTH: 88%; DISPLAY: block; WORD-WRAP: break-word } .textareaWrapper TEXTAREA { WIDTH: 100% } .textareaWrapper TABLE { WIDTH: 100% } .tools.navPalette { } DIV.instructionData { MARGIN: 0px 0px 12px } DIV.instructionData UL { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } DIV.instructionData UL LI H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 100% } DIV.instructionData UL LI.instructions { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px } DIV.instructionData UL LI.saving { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.instructionData UL LI.instructions A.browse { BORDER-BOTTOM: medium none; BORDER-LEFT: #ccc 1px solid; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .assessmentInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } .assessmentInstructions H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px }

.assessmentPortlet { Z-INDEX: 1; POSITION: fixed; RIGHT: 43px } .assessmentPortlet H3 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.assessmentPortletBlock H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.blockContents H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .savingQuestion { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: none; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #c03; FONT-SIZE: 150%; PADDING-TOP: 2px } TR.dummyVTBEFooter TD { BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 2px } .qIncomplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; COLOR: #333; BORDER-TOP: #999 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } .qComplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; BACKGROUND-COLOR: #ccc; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; FLOAT: left; COLOR: #888; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } DIV.canvasHead { PADDING-BOTTOM: 12px; MARGIN: 0.6em 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #f6f6f6; PADDING-TOP: 6px } DIV.canvasHead UL LI { BORDER-TOP: #eee 1px solid } DIV.canvasHead UL LI:first-child { BORDER-TOP: medium none } DIV.canvasHead UL LI DIV.label { COLOR: #555 } .peer_instructions { MARGIN: 12px 6px } .peerHelp { COLOR: #555 } H2.evaluator { MARGIN: 1em 0px 0.3em } H2.evaluator SPAN { FONT-SIZE: 90%; FONT-WEIGHT: normal } DIV.peerCriteriaStatus { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; BACKGROUND: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 0.3em } DIV.peerCriteriaStatus A.itemHeadOpen { MARGIN: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 90%; FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV.peerCriteriaStatus A.itemHeadOpen:hover { TEXT-DECORATION: underline } DIV.peerCriteriaStatus TD.qStatus { PADDING-BOTTOM: 4px; PADDING-LEFT: 1px; WIDTH: 5%; PADDING-RIGHT: 1px; PADDING-TOP: 4px } DIV.peerCriteriaStatus TD.qStatus A SPAN { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #fff 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 1px solid; PADDING-TOP: 1px } DIV.peerCriteriaStatus TD.qStatus A SPAN.qComplete { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qComplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qIncomplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus A SPAN IMG { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 12px; PADDING-RIGHT: 2px; HEIGHT: 12px; PADDING-TOP: 2px } .questionNumber { FONT-WEIGHT: bold } .questionType { FONT-WEIGHT: bold } .questionNumber { COLOR: #aaa } .questionDiv { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: -1px 0px 6px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.6em } .questionDiv H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: 0px 0px 0.6em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv P { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv DIV.criteriaText { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .questionDiv DIV.submission_text { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; WIDTH: 100%; PADDING-RIGHT: 4px; HEIGHT: 150px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .questionDiv TABLE { WIDTH: 98% } .questionDiv TABLE TABLE { WIDTH: auto } .questionDiv TD.label { WIDTH: 150px; WHITE-SPACE: nowrap } #creceipt { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: red; FONT-WEIGHT: bold; PADDING-TOP: 4px } UL.fileData { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.fileData LI { BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FLOAT: left; PADDING-TOP: 2px } UL.listNav { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: #ddd; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.listNav LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: #ededed; FLOAT: left; COLOR: #2d2680; PADDING-TOP: 0px } UL.listNav LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.listNav LI A:hover { BACKGROUND-COLOR: #dedede; TEXT-DECORATION: underline } UL.listNav LI A.active { BORDER-BOTTOM: #000 2px solid; BORDER-LEFT: #000 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BACKGROUND: #fff; COLOR: #000; BORDER-TOP: #000 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 2px solid; PADDING-TOP: 2px } UL.evaluation { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.evaluation LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 4px } UL.evaluation LI P { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 0px; WIDTH: 79%; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } UL.evaluation H4 { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 4px; WIDTH: 20%; PADDING-RIGHT: 0px; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } UL.evaluation LI P SPAN { COLOR: #555 } DIV.stepPanel DIV.user_html { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.stepPanels H4.defaultCursor { CURSOR: default } H4.defaultCursor { CURSOR: default } .qShow { DISPLAY: block } .qHide { DISPLAY: none } .completionContainer { PADDING-BOTTOM: 6px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainerLarge { PADDING-BOTTOM: 6px; HEIGHT: 75px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainer A IMG { VERTICAL-ALIGN: baseline } .pagedRumble { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 14px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px } .pagedPointsOutsideBar { POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; TOP: 0px; RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 0px; LEFT: auto } .pagedPoints { PADDING-BOTTOM: 6px; LINE-HEIGHT: 100%; MARGIN: -5px 24px -5px -10px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 5px } .designAreaHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaFooter { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaFooter H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaHeader .headertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .designAreaFooter .footertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV#emptyText { MARGIN: 0.6em 16px } .infoListWrapper { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #assessmentGradeForm .infoListWrapper { MARGIN: 0px -12px 18px } .infoListWrapper H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .infoListWrapper H3 A { PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -443px; PADDING-TOP: 3px } .infoListWrapper H3 A.open { BACKGROUND: url(images/indicators.png) no-repeat 0px -1040px } .infoList { MARGIN: 6px 12px } .infoList > LI { PADDING-BOTTOM: 0px !important; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 3px !important } .infoListWrapper .infoList > LI { BORDER-TOP: #cdcdcd 1px dotted } .infoList LI:first-child { BORDER-TOP: medium none } .infoList LI DIV H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .details .infoList { MARGIN-TOP: 0px !important } .infoListFloat { MARGIN: 0px } .infoListFloat LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 3px !important; PADDING-LEFT: 10px !important; PADDING-RIGHT: 10px !important; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 3px !important } .copyQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .linkQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .copyQuestion { BACKGROUND: url(/images/ci/icons/file_copy_ti.png) no-repeat 1px center } .linkQuestion { BACKGROUND: url(/images/ci/icons/file_link_ti.png) no-repeat 1px center } DIV.contentListRight { Z-INDEX: 1000; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 9px; RIGHT: 9px; FONT-WEIGHT: normal; PADDING-TOP: 4px } DIV.contentListRight A { MARGIN-LEFT: 4px; FONT-WEIGHT: bold } DIV.contentListRight SPAN:first-child + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN[style*='none']:first-child + SPAN { DISPLAY: none } DIV.contentListRight SPAN[style*='none']:first-child + SPAN + SPAN { DISPLAY: none } DIV.contentListRight SPAN SPAN { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 9px } DIV.contentListRight STRONG { PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.assessmentHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } DIV.assessmentHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 3px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.assessmentHeader DIV { MARGIN: 3px; COLOR: #555 } .questionShell { WIDTH: 100% } .questionShell > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TBODY > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell > TBODY > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH.labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell .labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell TD.valueCell { WIDTH: 83% } .questionShell .correctAnswer { WIDTH: 2% } .questionShell .field { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 15px; WIDTH: 95%; PADDING-RIGHT: 15px; PADDING-TOP: 0px } .questionShell .field IMG { POSITION: absolute; TOP: 52%; LEFT: -2px } .questionShell .field .vtbegenerated IMG { POSITION: relative; TOP: auto; LEFT: auto } .questionShell .vtbegenerated { WIDTH: 95%; DISPLAY: inline !important } .questionShell TD.valueCell TABLE .vtbegenerated { DISPLAY: inline !important } .takeQuestionDiv .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } #assessmentGradeForm .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } DIV.multiAssign { MARGIN: 3px 0px 9px } DIV.multiAssign UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; LIST-STYLE-IMAGE: none; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI.read { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI P { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } DIV.multiAssign UL LI.label { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.1em; PADDING-LEFT: 0px; WIDTH: 12em; PADDING-RIGHT: 0px; WHITE-SPACE: normal; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #888; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI P SPAN { COLOR: #888 } DIV.multiAssign A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } H3 A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.multiAssign A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.simpleLink { DISPLAY: block; COLOR: #666; FONT-WEIGHT: normal } H3 SPAN.status A.buttonMicro { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } H3 SPAN.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 DIV.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 SPAN.status SPAN { COLOR: #888 } H3 DIV.status SPAN { COLOR: #888 } H3 DIV.status { DISPLAY: inline } .gbtable_header DIV.gbText { text-shadow: 0 -1px 0 #777 } .gbtable THEAD DIV.gbText { text-shadow: 0 -1px 0 #777 } .subActionBar:hover { Z-INDEX: 1000 } .subActionBar DIV.block { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar DIV.button { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar SPAN.block { FLOAT: none } .subActionBar SPAN.button { FLOAT: none } .subActionBar LI.sub { POSITION: relative } .subActionBar FIELDSET LEGEND + DIV.block { BORDER-LEFT: 0px } .subActionBar SELECT { MAX-WIDTH: 180px; VERTICAL-ALIGN: middle } .subActionBar DIV.button { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .subActionBar DIV.last { BORDER-RIGHT: medium none } .subActionBar FIELDSET { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .subActionBar OPTGROUP { FONT-STYLE: normal; MARGIN-TOP: 6px; COLOR: #777; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal } .subActionBar OPTGROUP OPTION { COLOR: #000 } .subActionBar UL LI.sortableSelector A { PADDING-LEFT: 18px } .navPageHeader { TEXT-ALIGN: center; MARGIN: 1em 0px } .navPageHeader H3 { DISPLAY: inline; MARGIN-LEFT: 12px } .navPageHeader SPAN { MARGIN: 0px 6px 0px 0px; COLOR: #888; FONT-WEIGHT: normal } FIELDSET.secondaryActions { FLOAT: right } DIV.secondaryBlock { FLOAT: right } .cellInfoPanel { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #eee 1px solid; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid } .cellStatus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #f6f6f6; FONT-SIZE: 85%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .cellStatus DIV { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 2px } .statusTitle { BACKGROUND: #eee; COLOR: #666 } .statdata { COLOR: #000; OVERFLOW: hidden } .cellStatus DIV.gbTableTimeStamp { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; FLOAT: right; COLOR: #666; PADDING-TOP: 2px } .sortImage { POSITION: absolute; TOP: 9px; LEFT: 6px } .bubble { Z-INDEX: 1000; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } .bubble UL { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #e2eefe; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; OVERFLOW: hidden; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid; PADDING-TOP: 6px } .bubble UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 4px; PADDING-LEFT: 0px; WIDTH: 174px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #666; CLEAR: left; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .bubble UL LI SPAN { WIDTH: 80px; DISPLAY: block; FLOAT: left; COLOR: #666; FONT-WEIGHT: normal; MARGIN-RIGHT: 3px } .bubble UL LI SPAN.icon { WIDTH: 20px; FLOAT: left; OVERFLOW: hidden } .bubble UL LI SPAN.label { WIDTH: 147px; FONT-SIZE: 100%; FONT-WEIGHT: normal } .bubbleStem { POSITION: relative; WIDTH: 190px; HEIGHT: 14px } .bottom .bubbleStem { BOTTOM: 4px } .top .bubbleStem { TOP: -2px } .left .bubbleStem { PADDING-LEFT: 24px } .right .bubbleStem { TEXT-ALIGN: right; RIGHT: 24px } .selectList { Z-INDEX: 100; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #viewList { Z-INDEX: 1000 !important } .selectList LI { Z-INDEX: 101; MARGIN: 0px 4px 0px 0px; FLOAT: left } .selectList .sub A { DISPLAY: block; TEXT-DECORATION: none } .selectList .sub:hover UL { TOP: 20px !important; LEFT: 0px } .selectList .sub UL LI { POSITION: static !important; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .selectList .sub UL LI H4 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #888; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .selectList .sub UL LI H4 { WIDTH: 152px } .selectList .sub UL LI A { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:hover { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:focus { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub A #currentView { BACKGROUND-IMAGE: none } .selectList .sub A #currentSortBy { BACKGROUND-IMAGE: none } .selectList .sub A #currentColSortDir { BACKGROUND-IMAGE: none } UL.selectList LI.sub UL LI.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } UL.selectList LI.sub UL LI.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } DIV.gradeDetails { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 6px } DIV.gradeDetails DIV.label { WIDTH: 15% } SPAN.unstyled { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 0px } @media Print { DIV.hideOnPrint { DISPLAY: none } } DIV.gradeDetailsStep { BORDER-BOTTOM: #ccc 2px solid; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px 0px 6px } .gradeInfoHeader { PADDING-BOTTOM: 3px; MARGIN: 0px -12px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3 { PADDING-BOTTOM: 3px; MARGIN: 0px 4px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 3px } .gradeInfoHeader H3 SPAN { COLOR: #000; FONT-WEIGHT: bold } .gradeInfoHeader H3.root { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #888; COLOR: #fff; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3.root SPAN { COLOR: #fff } UL.gb_currView LI.sub UL LI.favorite A { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } UL.gb_currView LI.sub UL LI.favorite A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } .navStatusButtons .taskbuttondiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.staticFooter DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader { MARGIN: 10px 0px 0px } DIV.staticFooter DIV.details { BORDER-BOTTOM: #ddd 1px solid } .gbColumns_rumble { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ddd 1px solid } .staticHeader { POSITION: relative; ZOOM: 1; CLEAR: both } .staticFooter { POSITION: relative; ZOOM: 1; CLEAR: both } .staticHeader DIV.itemHeaderControl { RIGHT: 0px } .staticFooter DIV.itemHeaderControl { RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { RIGHT: 0px } .staticHeader DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticFooter DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticHeader DIV.itemHeaderControl A { DISPLAY: inline-block } .staticFooter DIV.itemHeaderControl A { DISPLAY: inline-block } UL.gbCategories LI DIV.itemHeaderControl A { DISPLAY: inline-block } UL.dragableHighlight { BORDER-BOTTOM: #999 1px dashed; PADDING-BOTTOM: 3px; MARGIN: 12px -30px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; BORDER-TOP: #999 1px dashed; PADDING-TOP: 12px } UL.gbCategories LI H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticHeader H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticFooter H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } UL.gbCategories LI H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticHeader H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticFooter H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.areaHighlight DIV.container { BACKGROUND: #f9f9f9 } DIV.areaHighlight DIV.bottomRound B { BACKGROUND: #f9f9f9 } UL.dragableHighlight LI H3.item { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .dragableHighlight DIV.details { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } .dbThreadInfo DL { MARGIN: 1em } .dbThreadInfo DT { PADDING-BOTTOM: 0.1em; MARGIN: 0px; PADDING-LEFT: 0.1em; WIDTH: 8em; PADDING-RIGHT: 0.1em; FLOAT: left; COLOR: #999; CLEAR: left; FONT-WEIGHT: bold; PADDING-TOP: 0.1em } .dbThreadInfo DD { PADDING-BOTTOM: 0.1em; MARGIN: 0px 0px 0px 9em; PADDING-LEFT: 0.1em; PADDING-RIGHT: 0.1em; PADDING-TOP: 0.1em } .rating { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 80px; PADDING-RIGHT: 0px; BACKGROUND: url(images/controls.png) no-repeat 0px -20px; HEIGHT: 16px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .star0 { BACKGROUND-POSITION: 0px -20px } .star1 { BACKGROUND-POSITION: 0px -36px } .star2 { BACKGROUND-POSITION: 0px -52px } .star3 { BACKGROUND-POSITION: 0px -68px } .star4 { BACKGROUND-POSITION: 0px -84px } .star5 { BACKGROUND-POSITION: 0px -100px } UL.rating LI { TEXT-INDENT: -999em; CURSOR: pointer } UL.rating LI A { Z-INDEX: 200; POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 0px; TEXT-DECORATION: none; LEFT: 0px } UL.rating LI.one A { LEFT: 0px } UL.rating LI.two A { LEFT: 16px } UL.rating LI.three A { LEFT: 32px } UL.rating LI.four A { LEFT: 48px } UL.rating LI.five A { LEFT: 64px } UL.rating LI A:hover { Z-INDEX: 2; WIDTH: 80px; BACKGROUND: url(images/controls.png) no-repeat -90px -36px; HEIGHT: 16px; OVERFLOW: hidden; LEFT: 0px } UL.rating LI.one A:hover { BACKGROUND-POSITION: -90px -36px } UL.rating LI.two A:hover { BACKGROUND-POSITION: -90px -52px } UL.rating LI.three A:hover { BACKGROUND-POSITION: -90px -68px } UL.rating LI.four A:hover { BACKGROUND-POSITION: -90px -84px } UL.rating LI.five A:hover { BACKGROUND-POSITION: -90px -100px } DIV.collectionViewReadMessageBorder { BORDER-LEFT: #ccc 1px solid; MARGIN-LEFT: 30px } DIV.collectionViewUnreadMessageBorder { BORDER-BOTTOM: #999 3px solid; BORDER-LEFT: #999 3px solid; MARGIN-LEFT: 30px; BORDER-TOP: #999 3px solid; BORDER-RIGHT: #999 3px solid } TABLE.treeframe TR TD { VERTICAL-ALIGN: middle } TABLE.tree_view TR TD IMG { VERTICAL-ALIGN: middle } TABLE.treeframe { MARGIN: 0px } TABLE.treeframe TBODY TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe THEAD TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe TR.high { BACKGROUND-COLOR: transparent } TR.thread TD { VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid } TR.thread TD IMG { VERTICAL-ALIGN: middle } TABLE.unreadmessageborder { BORDER-BOTTOM: #666 3px solid; BORDER-LEFT: #666 3px solid; BORDER-TOP: #666 3px solid; BORDER-RIGHT: #666 3px solid } TABLE.readmessageborder { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TR.show { DISPLAY: table-row } TR.hide { DISPLAY: none } .loadingelipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #ffc; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .gradefield { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 9px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #000; FONT-SIZE: 120%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 4px } .gradefield INPUT { BORDER-BOTTOM: #666 2px solid; BORDER-LEFT: #666 2px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-FAMILY: arial, sans-serif; BACKGROUND: #fff; FONT-SIZE: 110%; VERTICAL-ALIGN: middle; BORDER-TOP: #666 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #666 2px solid; PADDING-TOP: 1px } .gradefield INPUT.inputtypebutton { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; DISPLAY: inline; BACKGROUND: #ededed; HEIGHT: auto; FONT-SIZE: 80%; OVERFLOW: visible; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .gradefield A { FONT-SIZE: 120%; FONT-WEIGHT: bold } .gradefield SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; COLOR: #555; FONT-SIZE: 80%; PADDING-TOP: 0px } .overridegrade { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 3px 0px 3px 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline; FONT-SIZE: 80%; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .overridegrade INPUT.inputtypebutton { MARGIN-TOP: -3px; FONT-SIZE: 70%; VERTICAL-ALIGN: middle; FONT-WEIGHT: normal } DIV.parentmessage { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #ededed; CLEAR: both; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .availability { PADDING-BOTTOM: 1px; FONT-STYLE: italic; MARGIN: 6px 0px; PADDING-LEFT: 3px; WIDTH: auto; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TD.tag_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.msg_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.checkbox_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } TD.prevnextpostarea { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } H3.dbheading { MARGIN-TOP: 0px; DISPLAY: inline; MARGIN-BOTTOM: 0px; FONT-WEIGHT: normal } .dbThread { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa 1px solid; MARGIN: 24px 30px; BACKGROUND: #eee; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 3px 6px #ccc; -webkit-box-shadow: 0 3px 6px #ccc; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbThreadCheckbox { POSITION: absolute } .dbThreadCheckbox INPUT { MARGIN: 10px } .dbThread .dbThreadInfo { PADDING-BOTTOM: 1em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; COLOR: #555; PADDING-TOP: 1em } .dbThreadInfo DL { MARGIN: 0px; WIDTH: 50%; FLOAT: left; FONT-SIZE: 95% } .dbThreadBody { PADDING-BOTTOM: 2em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; BACKGROUND: #fff; PADDING-TOP: 2em } P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbParentPost P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbThreadHeader { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter { PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadHeader .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadFooter .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } .dbThreadHeader .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } DIV.spacerDiv { CLEAR: both } .threadButtons .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .dbThreadInfo .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo P { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.6em } .dbThreadInfo P.detailButtons { FLOAT: right } .dbThreadTree { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MIN-HEIGHT: 80px; MAX-HEIGHT: 200px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #threadArea { PADDING-BOTTOM: 18px; MARGIN: 0px -30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } #message { MARGIN: 0px -30px -20px; BORDER-TOP: #ccc 1px solid } #message_upper { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: -20px -30px 0px } .dbParentPost { BORDER-BOTTOM: #bbb 1px dashed; BORDER-LEFT: #bbb 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -0.6em 0px 1.2em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #bbb 1px dashed; BORDER-RIGHT: #bbb 1px dashed; PADDING-TOP: 0.6em; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbParentPost H4 { MARGIN: 0px 0px 0.6em } .dbParentPost H4 A { WIDTH: 100%; DISPLAY: block } .dbParentPost P { PADDING-BOTTOM: 1.2em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .dbParentPostBody { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; MARGIN-BOTTOM: 0.6em; BACKGROUND: #fcfcfc; CLEAR: both; PADDING-TOP: 0.6em } .loadingElipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: 12px auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #fff7de; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .unreadmessage { FONT-WEIGHT: bold } H3.unreadmessage { FONT-WEIGHT: bold } .unreadmessage.dbheading { FONT-SIZE: 100% } .unread-count { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #128fa8; COLOR: #fff; PADDING-TOP: 2px; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px } #threadArea DIV.checked { BACKGROUND-COLOR: #eee } #threadArea DIV.checked_top { BACKGROUND-COLOR: #eee } #threadArea DIV.checked { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } #threadArea DIV.checked_top { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } DIV.blogContainer { WIDTH: 74%; FLOAT: left } DIV.blogContainer H3.blogHead { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer DIV.blogEntry { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogContainer DIV.blogEntry H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; WORD-WRAP: break-word; BACKGROUND: url(images/small_discussions.gif) no-repeat 8px 9px; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 9px } DIV.blogContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 3px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } DIV.blogContainer DIV.entryDate { COLOR: #444; FONT-SIZE: 95% } DIV.blogContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.blogContainer DIV.entryFooter { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #eaeaea; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.5% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px -12px; DISPLAY: none; BORDER-TOP: #999 1px solid; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.blogContainer DIV.entryFooter DIV.addBlogComment H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .addBlogComment .stepcontent OL { WIDTH: 100% } .addBlogComment .stepcontent OL LI { WIDTH: 100% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment DIV.controls { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.blogContainer UL.entryComments { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eaeaea; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.blogContainer UL.entryComments LI P { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } DIV.blogContainer UL.entryComments LI P.commentDate { Z-INDEX: 10; BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: right; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; MARGIN: 2px 0px -1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bubble_top_thin.gif) no-repeat 15px 100%; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #444; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.blogContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.blogContainer DIV.blogInstructions H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.journalNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.contentAreaNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } .messageCollectionContainer { FLOAT: left } DIV.blogNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { WORD-WRAP: break-word; OVERFLOW: hidden } DIV.blogNav UL.blogArchiveList LI A { WIDTH: 100%; WORD-WRAP: break-word } .indentedWikiList { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 22px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .indentedWikiList IMG { MARGIN: 0px 3px 0px -22px } .blogNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .journalNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .blogNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } .journalNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogNav LI.currentBlog { FONT-WEIGHT: bold } DIV.blogNav LI.currentBlog SPAN { FONT-WEIGHT: normal } DIV.blogContainer .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.blogNav .newItems { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav .gradeStatus { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.blogNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.blogNav UL UL { MARGIN-LEFT: 9px } DIV.blogNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } DIV.journalContainer { WIDTH: 74%; FLOAT: left; MARGIN-RIGHT: 1% } DIV.journalContainer H3.blogHead { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.journalContainer DIV.blogEntry { BORDER-BOTTOM: #eee 3px solid; POSITION: relative; BORDER-LEFT: #eee 0px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 36px; PADDING-RIGHT: 0px; BACKGROUND: url(images/blog_notebook_paper.gif) #fff repeat-y 0px 0px; BORDER-TOP: #eee 3px solid; BORDER-RIGHT: #eee 3px solid; PADDING-TOP: 0px } DIV.journalContainer DIV.blogEntry H4 { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 12px } DIV.journalContainer DIV.entryDate { Z-INDEX: 100; BORDER-BOTTOM: #c0dace 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; PADDING-TOP: 3px } DIV.journalContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; PADDING-TOP: 12px } DIV.journalContainer DIV.entryFooter { PADDING-BOTTOM: 12px; MARGIN: 0px 0px 0px -31px; PADDING-LEFT: 43px; PADDING-RIGHT: 12px; ZOOM: 1; BACKGROUND: url(images/blog_notebook_paper_bot.gif) repeat-x center bottom; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.35% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment { DISPLAY: none; MARGIN-BOTTOM: 6px } DIV.journalContainer UL.entryComments { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #c0dace 1px solid; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.journalContainer UL.entryComments LI P { PADDING-BOTTOM: 0px; MARGIN: 4px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI P.commentDate { COLOR: #444; MARGIN-LEFT: 19px; FONT-SIZE: 90% } DIV.journalContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: url(images/small_blog_comment.gif) no-repeat 0px 3px; COLOR: #000; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 3px } DIV.journalContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.journalContainer DIV.blogInstructions H4 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.blogInstructions P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { OVERFLOW: hidden } DIV.journalNav LI.currentBlog { FONT-WEIGHT: bold } DIV.journalNav LI.currentBlog SPAN { FONT-WEIGHT: normal } .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.journalNav .newItems { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.journalContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.journalNav UL UL { MARGIN-LEFT: 9px } DIV.journalNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } #blogNavLinks { POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 6px; RIGHT: 6px; PADDING-TOP: 0px } .contentAreaPalette UL#aboutBlog LI.currentBlogView { BORDER-BOTTOM: #0078cb 2px solid; BORDER-LEFT: #0078cb 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; MARGIN-BOTTOM: 3px; BACKGROUND: #eff6ff; BORDER-TOP: #0078cb 2px solid; BORDER-RIGHT: #0078cb 2px solid; PADDING-TOP: 2px } .currentBlogView A { COLOR: black; TEXT-DECORATION: none } UL.blogArchiveList { MARGIN-LEFT: 16px } UL.blogArchiveList LI { PADDING-BOTTOM: 4px } #gradeWidget SPAN#blogGradeValue { POSITION: relative; PADDING-LEFT: 6px } #blogGradeValue IMG { POSITION: absolute; TOP: 0px; LEFT: 0px } .contentAreaNav A.itemHead { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 6px } .contentAreaPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } DIV.blogNav .contentAreaPalette:first-child { BORDER-TOP: 0px } DIV.journalNav .contentAreaPalette:first-child { BORDER-TOP: 0px } .rightColumn-narrow .contentAreaPalette:first-child { BORDER-TOP: 0px } .contentAreaPalette UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .contentAreaPalette LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 0px } .contentAreaPalette LI LI { FONT-SIZE: 100% } DIV.iconLegendBlog { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .contentAreaNav A#blogListLink { PADDING-RIGHT: 48px } #loginPageContainer { MARGIN: 0px auto; MIN-HEIGHT: 100%; HEIGHT: auto !important } #loginHeader { POSITION: absolute; TOP: 0px; RIGHT: 0px } #loginHeader UL LI { POSITION: relative; MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; BACKGROUND: #888; VERTICAL-ALIGN: top; BORDER-TOP: 0px } #loginHeader UL LI A { PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 12px; WIDTH: 28px; PADDING-RIGHT: 12px; DISPLAY: inline-block; HEIGHT: 18px; PADDING-TOP: 6px } #loginHeader UL LI:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang H2:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang:hover H2 { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginHeader UL LI:first-child { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI:first-child A { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI IMG { DISPLAY: none } #loginHeader UL LI.font-size:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.contrast:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.font-size A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast:before { CONTENT: "c" } #loginHeader UL LI:hover:before { COLOR: #fff; CURSOR: pointer } #loginHeader UL LI.contrast { BORDER-LEFT: #777 1px solid; MARGIN-LEFT: -4px } #loginLang { POSITION: absolute; TOP: 0px; LEFT: 0px } #loginLang H2 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; BACKGROUND: #888; HEIGHT: 17px; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 4px; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0 } #loginLang H2 SPAN { TEXT-INDENT: -999px; WIDTH: 0px; DISPLAY: inline-block; OVERFLOW: hidden } #loginLang H2:before { FONT: 140%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "W"; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginLang H2:hover:before { COLOR: #fff } #loginLang UL { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 150px; PADDING-RIGHT: 6px; TOP: -1000px; PADDING-TOP: 6px; LEFT: -1000px } #loginLang:hover UL { WIDTH: 175px; TOP: 28px; LEFT: 0px; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0 } #loginLang H2:hover:after { Z-INDEX: 100 } #loginLang:hover H2:after { Z-INDEX: 100 } #loginLang UL LI A { WIDTH: auto } DIV.loginBody { PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BACKGROUND: url(images/Bb_learn_small.png) no-repeat 94px 94px; PADDING-TOP: 260px } DIV.loginBody .receipt { PADDING-BOTTOM: 14px; MARGIN: 0px auto 16px; PADDING-LEFT: 19px; WIDTH: 409px; PADDING-RIGHT: 4px; PADDING-TOP: 12px } #loginBox { TEXT-ALIGN: center } #loginBox UL { MARGIN: 0px auto; WIDTH: 415px } #loginBox LI { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #loginBox LI + LI + LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } #loginBox LI + LI + LI + LI { POSITION: relative; TEXT-ALIGN: right; DISPLAY: block } #loginBox LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #loginBox LI INPUT { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100%; PADDING-RIGHT: 10px; FONT-SIZE: 140%; PADDING-TOP: 10px; -moz-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1) } #loginBox INPUT[type='text'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='password'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='text']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox LI INPUT[type='submit'] { PADDING-BOTTOM: 7px; MARGIN: -31px -9px 0px 12px; PADDING-LEFT: 22px; WIDTH: auto; PADDING-RIGHT: 22px; FONT-SIZE: 130%; PADDING-TOP: 7px } #loginFormTitle { POSITION: absolute; DISPLAY: none } #loginFormText { POSITION: absolute; DISPLAY: none } DIV.portlet #loginFormTitle { POSITION: static; DISPLAY: block } DIV.portlet #loginFormText { POSITION: static; DISPLAY: block } #loginOptions { TEXT-ALIGN: center; MARGIN: 38px auto 26px; WIDTH: 600px } #loginOptions H2 { MARGIN: 10px } #loginOptions P { MARGIN: 10px; COLOR: #444; FONT-SIZE: 0.85em } #loginOptions UL LI { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI.subOption { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } #loginOptions UL LI.subOption A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } .forgot A { BORDER-BOTTOM: #0099b6 1px dotted } #loginOptions UL LI A:hover { BORDER-BOTTOM-STYLE: solid } #loginOptions UL LI.subOption A:hover { BORDER-BOTTOM-STYLE: solid } .forgot A:hover { BORDER-BOTTOM-STYLE: solid } #loginText { TEXT-ALIGN: center; PADDING-BOTTOM: 18px; PADDING-LEFT: 80px; PADDING-RIGHT: 80px; DISPLAY: none; BACKGROUND: #5f6062; BORDER-TOP: #777 1px solid; PADDING-TOP: 12px } #loginText P SPAN { COLOR: #fff; FONT-SIZE: 105%; FONT-WEIGHT: bold } #loginText P { MARGIN: 0px; COLOR: #ededed; FONT-SIZE: 95% } #loginImage { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } #loginImage IMG { MARGIN: 0px auto } #loginAnnouncements { PADDING-BOTTOM: 7px; MARGIN: 0px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 24px } #loginAnnouncements H3 { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 9px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: none; COLOR: #555; FONT-SIZE: 110%; PADDING-TOP: 6px } #loginAnnouncements UL { TEXT-ALIGN: center; MARGIN: 0px auto; WIDTH: 800px } #loginAnnouncements UL LI:before { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:after { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:before { LEFT: 8px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } #loginAnnouncements UL LI:after { RIGHT: 8px; -moz-transform: rotate(2deg); -webkit-transform: rotate(2deg) } #loginAnnouncements LI { POSITION: relative; TEXT-ALIGN: justify; PADDING-BOTTOM: 24px; MARGIN: 0px 0px 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; ZOOM: 1; BACKGROUND: #fff; COLOR: #666; FONT-SIZE: 95%; VERTICAL-ALIGN: top; PADDING-TOP: 18px; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15) } #loginAnnouncements UL LI STRONG:first-child { MARGIN: 0px 0px 12px; FONT-FAMILY: Georgia, serif; FLOAT: left; COLOR: #000; FONT-SIZE: 115% } #loginAnnouncements UL LI STRONG + EM { TEXT-ALIGN: right; MARGIN: 0px; DISPLAY: block; FONT-FAMILY: Georgia; FLOAT: right } #loginAnnouncements UL LI STRONG + EM + BR { DISPLAY: none } #loginAnnouncements UL LI .vtbegenerated { LINE-HEIGHT: 1.38; CLEAR: both } #loginAnnouncements UL LI:first-child { BORDER-TOP: 0px } #loginAnnouncements A { BORDER-BOTTOM: #128fa8 1px dotted } #loginAnnouncements A:hover { BORDER-BOTTOM-STYLE: solid } #loginAnnouncements A:focus { BORDER-BOTTOM-STYLE: solid } #loginHeader H1 { DISPLAY: none } #loginHeader H2 { DISPLAY: none } #loginHeader .productLogo { DISPLAY: none } #loginOptions #gatewayButtonsTitle { DISPLAY: none } #loginOptions #gatewayButtonsInstructions { DISPLAY: none } .login-page #copyright { POSITION: absolute; TEXT-ALIGN: center; MARGIN-TOP: 24px; WIDTH: 900px; BOTTOM: 24px; MARGIN-LEFT: -450px; LEFT: 50% } #loginAnnouncements + #copyright { POSITION: relative } .loginCopyright { WIDTH: 580px !important } .login-page #copyright .logo { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; PADDING-TOP: 0px } .login-page #copyright .newCopyright { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .loginCopyright .legal { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .additionalInfo { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .legal { BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; WIDTH: 24.5em; PADDING-RIGHT: 12px; PADDING-TOP: 3px } #loginPane + #copyright .legal P { MARGIN: 0px; DISPLAY: inline } #loginPane + #copyright .additionalInfo P { MARGIN: 0px; DISPLAY: inline } .login-page .copyrightDetailContents { MIN-HEIGHT: 6.5em; MARGIN-LEFT: -394px; LEFT: 50% } H1.pageTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .caliperTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .discoverTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .unitHomePageTitle { MARGIN: -60px -30px 5px } .caliperTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .unitHomePageTitle H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .discoverTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } .unitHomePageTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .caliperTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .unitHomePageTitle A.browseNoImg { PADDING-BOTTOM: 3px; PADDING-TOP: 2px } .reports { MIN-WIDTH: 810px; BACKGROUND: #f0f0f0 } .reports .navigationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .container { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports #dataCollectionContainer { MARGIN: 0px } .reports DIV[id*='step'] { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .reports UL { MARGIN: 12px } .reports .stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports UL LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; PADDING-TOP: 0px } .reports .label { COLOR: #777 } .reports .field { COLOR: #000 } .reports UL LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .reports H1 { PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 9px } .reports H2 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; PADDING-TOP: 3px } .reports H3 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .reports H3 A IMG { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .reports H3.steptitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; LETTER-SPACING: 0px; COLOR: #fff; FONT-SIZE: 110%; PADDING-TOP: 4px } .reports H4 { PADDING-BOTTOM: 3px; MARGIN: 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; COLOR: #fff; FONT-SIZE: 115%; PADDING-TOP: 3px } .reports H5 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 6px; MARGIN: 12px -12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .reports .attachments { MARGIN: 0px } .reports t.wide { MARGIN: 0px; WIDTH: 100% } #toc { LIST-STYLE-POSITION: outside; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: decimal; MARGIN: 12px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #toc UL { MARGIN: 0px 24px 24px } .toc_div { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; PADDING-BOTTOM: 4px; MARGIN: 6px 18px 18px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid; PADDING-TOP: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .toc_div OL LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports .toc_div H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .toc_div H2 A IMG { MARGIN-RIGHT: 6px } .toc_div A.toggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #f6f6f6; FLOAT: right; FONT-SIZE: 95%; TOP: -4px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .toc_div A.toggle:hover { BACKGROUND: #fff } .backtotop { FLOAT: right } .dateofreport { FLOAT: right } .dateofreport { MARGIN: 6px 18px 12px 0px } .reports .block { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 18px 24px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px 4px 0 4px; -webkit-border-radius: 4px 4px 0 4px } .backtotop { POSITION: relative; MARGIN-BOTTOM: -40px; FLOAT: right; MARGIN-RIGHT: -1px } .backtotop A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f6f6f6; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .backtotop A:hover { BACKGROUND: #fff } .backtotop A IMG { MARGIN-RIGHT: 5px } DIV.fontPreview { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 4px; MARGIN: 3px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 4px } .textareaDiv { PADDING-BOTTOM: 6px } .textareaDiv TABLE { WIDTH: 98% } .textareaDiv TABLE TABLE { WIDTH: 100% } .textareaDiv TABLE TABLE TABLE { WIDTH: 100% } .textareaDiv TEXTAREA { WIDTH: 100%; BORDER-TOP: #666 2px solid } DIV.textToolbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 97.7%; PADDING-RIGHT: 0px; BACKGROUND: #f6f6f6; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } DIV.textToolbar A { WHITE-SPACE: nowrap; FONT-SIZE: 90% } DIV.textToolbar LABEL { PADDING-LEFT: 4px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.textToolbar SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } .previewTextArea { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #999 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 459px; PADDING-RIGHT: 0px; DISPLAY: none; BACKGROUND: #fff; HEIGHT: 112px; OVERFLOW: auto; BORDER-TOP: #999 2px solid; BORDER-RIGHT: #999 2px solid; PADDING-TOP: 0px } .previewTextArea DIV.previewTitle { BORDER-BOTTOM: #eee 2px solid; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; PADDING-TOP: 2px } .previewTextArea DIV.previewTitle A { FLOAT: right } .previewTextArea DIV.previewTitle H6 { MARGIN: 0px; FLOAT: left; FONT-SIZE: 90% } .previewTextArea DIV.previewContent { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .messageContainer H6 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .messageContainer P { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .messageVariable { BORDER-BOTTOM: #ed9 1px solid; BORDER-LEFT: #ed9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; BORDER-TOP: #ed9 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ed9 1px solid; PADDING-TOP: 0px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .myPlaces .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .explore .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .myPlaces A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .myPlaces A:hover { TEXT-DECORATION: underline } .myPlaces A:focus { TEXT-DECORATION: underline } .myPlaces A.home { PADDING-RIGHT: 20px } .myPlaces SPAN.homeIconWrap { POSITION: absolute; BACKGROUND: url(/images/ci/icons/clphomepage/home_ti.gif) no-repeat 0px 0px; TOP: 3px; RIGHT: 3px } .myPlaces SPAN.homeIconWrap IMG { WIDTH: 16px; HEIGHT: 16px } .myPlaces A.unit { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.course { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.ee { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.program { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.workspace { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.unit { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.unit:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.course { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.course:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.ee { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.ee:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.program { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.program:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.workspace { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .myPlaces A.workspace:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .explore A { PADDING-LEFT: 30px; BACKGROUND: url(images/indicators.png) no-repeat 9px -1489px } .explore H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .wizardBody .locationPane { MARGIN: 0px; DISPLAY: block } .wizardBody .breadcrumbs .courseName { DISPLAY: none } .wizardBody .breadcrumbs .courseId { DISPLAY: none } .wizardBody .breadcrumbs { HEIGHT: 24px } .wizardBody .path .root A:before { POSITION: relative; FONT-FAMILY: "Pictos"; COLOR: #aaa; FONT-SIZE: 20px; CONTENT: "H"; TOP: -2px; FONT-WEIGHT: normal } .wizardBody .modeSwitchWrap { POSITION: absolute; TOP: 15px; RIGHT: 12px } .wizardBody { BACKGROUND: #fff } .wizardBody .container { POSITION: static } .wizardBody #contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 210px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 10px; PADDING-TOP: 12px } .wizardBody FORM#contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .topRound { DISPLAY: none } .wizardBody > .locationPane > .contentPaneWide > .topRound { POSITION: absolute; DISPLAY: block; TOP: 60px } .wizardBody #pageTitleDiv IMG { DISPLAY: none } .wizardBody .reqfield { MARGIN: 0px 0px 6px -6px; FLOAT: none } .wizardBody #containerdiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardHead H2 { MARGIN: 0px; FONT-SIZE: 110% } .wizardHead .helphelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .contentPaneWide > .contentBox > .pageTitle H1 { FONT-SIZE: 150% } .wizardBody .containerWizard { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .wizardBody .contentPaneWide > .contentBox > .pageTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 18px; MARGIN: -13px -12px 24px -224px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .wizardBody .contentPaneWide > .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .wizardHead { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; MARGIN-BOTTOM: 24px; BACKGROUND: #efede3; PADDING-TOP: 12px } .wizardBody #dataCollectionContainer { MARGIN: 0px } .wizardHead + .container { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px 4px 4px 4px } .wizardBody .containerWizard .container { HEIGHT: auto } .wizardBody .containerWizard .locationPane { MARGIN-TOP: 12px } .wizardBody UL.contentList LI DIV.details { OVERFLOW-X: visible } .wizardFinishText { MARGIN: 6px 0px 150px } .wizardSubmit { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px -79px -210px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #ccc 1px solid; TOP: 18px; PADDING-TOP: 18px } .wizardSubmit INPUT[name='cancel'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='Previous'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='finish'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='cancel']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='cancel']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[type=image] { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .wizardSubmit SPAN { MARGIN: 0px 18px; COLOR: #999 } .wizardSubmit SPAN STRONG { COLOR: #000 } .wizardBottomRound B.inner { BACKGROUND: #fff1c5 } .wizardBottomRound B.outer { BACKGROUND: #fff1c5 } .wizardBottomRound B.middle { BACKGROUND: #fff1c5 } .navigationPaneWizard { PADDING-BOTTOM: 0px; MARGIN-TOP: 63px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .navigationPaneWizard DIV B.inner { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.middle { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.outer { MARGIN-RIGHT: 0px !important } .navigationPaneWizard .navPalette { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .wizardBody #courseMenuPalette { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .wizardBody #courseMenuPalette DIV.navPaletteContent { -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navigationPaneWizard H2 { PADDING-BOTTOM: 6px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; LETTER-SPACING: 0.2em; COLOR: #00add0; FONT-SIZE: 90%; FONT-WEIGHT: 100; PADDING-TOP: 6px } .navigationPaneWizard .navPalette SPAN { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #ededed; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .navigationPaneWizard .navPalette LI { PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #777; FONT-SIZE: 95%; PADDING-TOP: 6px } .navigationPaneWizard .navPalette UL LI:first-child { POSITION: relative; BORDER-TOP: medium none } .navigationPaneWizard .navPalette UL LI.currentStep { COLOR: #000; FONT-WEIGHT: bold } .navigationPaneWizard .navPalette UL LI.currentStep:after { POSITION: absolute; LINE-HEIGHT: 0.5; COLOR: #999; FONT-SIZE: 18px; CONTENT: "?"; TOP: 9px; RIGHT: 0px } .containerWizard .controlPanel .navPaletteContent A { PADDING-BOTTOM: 4px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(../../../images/ci/ng/portlet_expand.gif) no-repeat 2px 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 4px } .containerWizard .navPaletteContent H2 { MARGIN: 0px; FONT-SIZE: 105% } .containerWizard .navPaletteContent H2 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px } .containerWizard .controlpanel LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #logDetail { OVERFLOW-Y: auto; HEIGHT: 300px } .totalMsgs { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 14px !important; PADDING-RIGHT: 6px !important; COLOR: #555; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 11px !important } .latestEntry { FLOAT: right !important; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal } .log-summary { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } .log-summary A { MARGIN: 0px 3px; DISPLAY: inline-block } .log-summary LI { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .sis-seperator { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .log-summary LI:first-child { BORDER-LEFT: medium none } .log-type { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; COLOR: #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .log-summary .log-type { FONT-SIZE: 120% } .log-error { BACKGROUND: #ef3e36 } .log-warning { BACKGROUND: #fcb040 } .log-message { BACKGROUND: #0b9444 } .log-debug { BACKGROUND: #00aeef } .log-header { MARGIN: 0px 0px 9px } .attachments .log-type { MIN-WIDTH: 6em; TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; LETTER-SPACING: 0.1em; FONT-SIZE: 90%; FONT-WEIGHT: normal } .table-scroll-wrapper TABLE { MARGIN: 0px } .table-scroll-wrapper TBODY { OVERFLOW-Y: auto; HEIGHT: 200px; OVERFLOW: hidden } .row-selected { BACKGROUND-COLOR: #e2eefe !important } .log-search > DIV > DIV { PADDING-BOTTOM: 0px !important; MARGIN: 6px 6px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 9px !important; DISPLAY: inline-block; BORDER-RIGHT: #bbb 1px dotted; PADDING-TOP: 0px !important } .answerSavedButton { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavingButton { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .timeUpWarning { COLOR: #cf0c0c } .thirtySecondWarning { COLOR: #cf0c0c } .oneMinuteWarning { COLOR: #cf0c0c } .fiveMinuteWarning { COLOR: #000 } .halfTimeWarning { COLOR: #000 } .headerForProgressBar { Z-INDEX: 100; POSITION: relative } DIV.assessmentPortletBlock H3.headerForProgressBar A { BACKGROUND: none transparent scroll repeat 0% 0% } .progressBar { Z-INDEX: 90; POSITION: absolute; BOTTOM: 0px; TOP: 0px; LEFT: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .progressBarStyle { BACKGROUND: #b6f796 } .progressBarStyleOneMin { BACKGROUND: #ffe79f } .progressBarStyleThirtySec { BACKGROUND: #ffafaf } .progressBarStyleOvertime { BACKGROUND: #ffafaf } .timerBar { BORDER-BOTTOM: #fff 2px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: #fff 2px solid; PADDING-BOTTOM: 3px; MARGIN: 4px 14px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; FONT-SIZE: 105%; BORDER-TOP: #fff 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 2px solid; PADDING-TOP: 3px; -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 9px; -webkit-border-radius: 9px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timer STRONG { Z-INDEX: 100; POSITION: relative } .timerText { PADDING-BOTTOM: 6px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; PADDING-TOP: 6px } .liveArea.timer { PADDING-BOTTOM: 9px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 6px } .questionStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 3px } .timedQuestionStatus { PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 2px groove; PADDING-TOP: 3px } .completionContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .questionStatus .questionStatusLabel { MARGIN: 0px; LETTER-SPACING: 0px; FONT-WEIGHT: normal } .questionStatus .questionStatusLabel A { COLOR: #666; TEXT-DECORATION: none } .questionStatus .questionStatusLabel A:hover { COLOR: #000; TEXT-DECORATION: underline } .timerMessage { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 2px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timeLabel { COLOR: #666; FONT-WEIGHT: normal } .timeValue { FONT-SIZE: 120% } .timer-collapsed.timer-toggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 0px 2px; PADDING-TOP: 0px } .timer-expanded.timer-toggle { POSITION: absolute; WIDTH: 20px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 3px 4px; HEIGHT: 20px; TOP: 5px; LEFT: 4px } .timerBar .timerLabel:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .timerMessage:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .progressBarStyleOvertime + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "t" } .progressBarStyleOneMin + .timerLabel:before { COLOR: #7f6b2f; CONTENT: "!" } .progressBarStyleThirtySec + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "!" } .timerMessage:before { CONTENT: "t" } .halfTimeWarning:before { COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } #collabRubricList .collabRubricListTypeContainer { MARGIN: 4px } .rubricGradingTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricGradingTable TH { COLOR: #45586f } .rubricTable TH { COLOR: #45586f } .rubricTable THEAD TH { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .rubricTable THEAD TH:first-child { BORDER-LEFT: medium none } .rubricGradingTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .rubricGradingTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH LABEL { FONT-WEIGHT: normal } .rubricTable TBODY TH INPUT { FONT-WEIGHT: normal } .rubricTable TBODY TH > SPAN { FONT-WEIGHT: normal } .rubricGradingTable .rubricCellHeader { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rubricGradingTable .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricSelectedValue { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricCellDescription { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingList .radioLabel { PADDING-BOTTOM: 3px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT-WEIGHT: bold; PADDING-TOP: 3px } .rubricGradingTable .rubricCellContainer { POSITION: relative; MIN-HEIGHT: 30px; OVERFLOW: hidden } .rubricCellRadio { POSITION: absolute; TOP: 6px } .rubricGradingList .rubricCellRadio { POSITION: absolute; TOP: 2px } .selectedCell .rubricCellRadio { TOP: -60px } .pointContainer { FONT-WEIGHT: bold } .rubricGradingTable .feedback { DISPLAY: none } .rubricGradingTable .selectedCell .feedback { DISPLAY: block } .rubricGradingTable .feedback TEXTAREA { WIDTH: 99% } .rubricGradingTable .selectedCell { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px; COLOR: #000; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .3); box-shadow: 0 0 6px rgba(0, 0, 0, .3) } .rubricGradingList .selectedCell { BACKGROUND: url(images/button_ok_ti.png) no-repeat 4px 3px } .rubricGradingTable TBODY TD:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #d1eaef; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .rubricTable TBODY TD:hover { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricGradingTable TBODY .selectedCell:hover { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px } .rubricCriteriaHead { WIDTH: 15% !important } .rubricInlineEdit { POSITION: relative } .rubricInlineEdit > DIV { Z-INDEX: 100; POSITION: absolute; WHITE-SPACE: nowrap } .gridActionBar { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gridActionBar .data TH { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .stepcontent .gridActionBar LI { PADDING-BOTTOM: 0px; MARGIN-BOTTOM: 0px } .rubricGradingTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricSelectedValue { DISPLAY: block; FONT-SIZE: 130%; FONT-WEIGHT: bold } .rangePercent { COLOR: #666; FONT-SIZE: 90%; FONT-WEIGHT: normal } .selectedCell .rangeValue { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #aaa 1px dashed; PADDING-TOP: 6px } .rubricControlContainer .containerTabs { MARGIN: 0px } .rubricControlContainer .contentAreaBlock { MARGIN: 0px } .rubricGradingList .rubricGradingCell { POSITION: relative; MARGIN: 1px 0px; OVERFLOW: hidden } .rubricGradingList .feedback { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .rubricGradingList .feedback TEXTAREA { WIDTH: 99% !important } .rubricGradingList H4 { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .rubricGradingList H4 SPAN { POSITION: absolute; PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 0px; RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 1px } .rubricGradingTotalPoints { MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingOverride { PADDING-BOTTOM: 6px; MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingComments .editor { MARGIN-TOP: 20px } .rubricGradingComments .rubricVtbeLabel { DISPLAY: block; MARGIN-BOTTOM: 10px } .alignmentPanel TR { COLOR: #555 } .alignmentPanel .gradingRubric { BACKGROUND-COLOR: #ffd; COLOR: #000 } .alignmentPanel .gradingRubric .title { FONT-WEIGHT: bold } .alignmentPanel UL.nav SPAN { PADDING-LEFT: 3px } .rubricPanel THEAD TR TH { WHITE-SPACE: normal !important } .rubricPopupContainer .rubricControlContainer { MARGIN: 0px 0px 10px } .rubricPopupContainer .onlyOne.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .onlyOne.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .last.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricGradingCell .pointRangeEdit { DISPLAY: none } .selectedCell.rubricGradingCell .pointRangeView { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .last.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricGradingTable .pointRangeView { DISPLAY: block; FONT-WEIGHT: bold } .selectedCell.rubricGradingCell .pointRangeEdit { DISPLAY: block; FONT-WEIGHT: bold } TD[align='right'] { TEXT-ALIGN: right !important } TD[align='left'] { TEXT-ALIGN: left !important } TR[align='right'] { TEXT-ALIGN: right !important } TR[align='left'] { TEXT-ALIGN: left !important } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: small; PADDING-TOP: 0px !important } .vtbegenerated P { MARGIN-BOTTOM: 4px } .vtbegenerated ADDRESS { FONT-STYLE: italic; DISPLAY: block } .vtbegenerated IMG { FILTER: alpha(opacity = auto) !important; opacity: auto } .vtbegenerated UL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated OL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated LI { LIST-STYLE-POSITION: inside } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated H5 { FONT-SIZE: 90% } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 35px } .vtbegenerated UL[type='circle'] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type='square'] LI { LIST-STYLE-TYPE: square } .vtbegenerated UL[type='disc'] LI { LIST-STYLE-TYPE: disc } .inlineVtbegenerated { DISPLAY: inline } .tree .treeNodeIcon { WIDTH: 16px; HEIGHT: 16px } .navPaletteContent .submenu LI.favorite { PADDING-LEFT: 10px } .navPaletteContent UL[id*='files_groupContents'] .favorite { PADDING-LEFT: 0px } .columnPalette H5 { MARGIN: 6px 0px 3px; COLOR: #555 } .blogNav .stepcontent { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .button-split-left { DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #f6f6f6 2px solid; -webkit-border-bottom-right-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -moz-border-radius-bottomright: 0 } .button-split-left:hover { BORDER-RIGHT: #555 2px solid } .button-split-right { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FLOAT: left; MARGIN-LEFT: -1px; PADDING-TOP: 4px; -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0 } .full_evaluation_view_component H3 { MARGIN: 18px 0px 3px } .full_evaluation_view_component H3:first-child { MARGIN: 9px 0px 3px } .gradeSide_panel .container { POSITION: relative; PADDING-RIGHT: 45% } .gradeSide_panel .contentListPlain { MARGIN: -20px 0px 0px -30px } .collabContainer { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .gradeSide { WIDTH: 36%; TOP: 20px; RIGHT: 20px } .gradeSide { BORDER-BOTTOM: #555 3px solid; POSITION: absolute; BORDER-LEFT: #555 3px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; BOTTOM: auto; PADDING-RIGHT: 4px; BACKGROUND: #888 0px 0px; BORDER-TOP: #555 3px solid; TOP: 20px; RIGHT: 20px; BORDER-RIGHT: #555 3px solid; PADDING-TOP: 4px; LEFT: auto; border-radius: 4px } .collapseTabsData A.close { TOP: 4px; RIGHT: 4px } .evalColumn .taskbuttondiv { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .gradeItemsWrapper { OVERFLOW: visible } .gradeSide .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .evalColumn { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 18px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2) } .evalColumn .liveArea { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .column-wrapper { POSITION: relative; OVERFLOW: visible !important } .column-nav { WIDTH: 190px; FLOAT: left } .colspan2 { POSITION: relative; MARGIN-LEFT: 190px } .colspan2#standards-column { BORDER-LEFT: #ccc 3px double; PADDING-BOTTOM: 12px; MARGIN-BOTTOM: -41px; TOP: -20px; LEFT: -3px } .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; COLOR: #555; PADDING-TOP: 18px } .column-nav .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; PADDING-TOP: 18px } .pageHead-2 H2 { MARGIN: 0px; FONT-SIZE: 120%; FONT-WEIGHT: normal } .pageHead-2 SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .pageHead-2 SPAN:first-child { BORDER-RIGHT: #aaa 1px dotted } .column-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .column-nav-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .category-column .column-nav-inner { BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee',endColorstr = '#cccccc',GradientType = 1); BORDER-LEFT: medium none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #column_lrn_std_category { BORDER-RIGHT: #ccc 3px double } .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 18px !important; BACKGROUND: #fff; PADDING-TOP: 6px !important } #standards-column .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 6px !important } .column-nav .column-inner { DISPLAY: none } .navmenu-list-item { BORDER-BOTTOM: #777 1px solid; POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 21px; DISPLAY: block; WORD-WRAP: break-word; PADDING-TOP: 12px } .navmenu-list > LI:hover { BACKGROUND: #777 } .navmenu-list > LI > A { COLOR: #f6f6f6; FONT-SIZE: 110%; FONT-WEIGHT: 200; TEXT-DECORATION: none } .navmenu-list A SPAN { DISPLAY: none } .navmenu-list .active { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active:hover { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active A { COLOR: #000 } .column2-nav .category-column .navmenu-list LI > A { PADDING-LEFT: 24px } .column-wrapper .actionBar > UL > LI > A { PADDING-BOTTOM: 8px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; COLOR: #333; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 8px } .column-wrapper .actionBar > UL > LI > A:hover { BACKGROUND: #ccc } .standards .button-2 { COLOR: #444 } .standards .button-2:hover { BORDER-BOTTOM-COLOR: #aaa; BORDER-TOP-COLOR: #aaa; BORDER-RIGHT-COLOR: #aaa; BORDER-LEFT-COLOR: #aaa } .category-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .category-column .navmenu-list-item { BORDER-BOTTOM-COLOR: #d6d6d6; BORDER-TOP-COLOR: #d6d6d6; BORDER-RIGHT-COLOR: #d6d6d6; BORDER-LEFT-COLOR: #d6d6d6 } .category-column .navmenu-list-item A { COLOR: #333 } .category-column .navmenu-list-item:hover { FILTER: alpha(opacity = 100) !important; BACKGROUND-COLOR: #e0e0e0; opacity: 1 } .category-column .navmenu-list .active { Z-INDEX: 1001; BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; RIGHT: -4px; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; -moz-box-shadow: -4px 3px 5px #DDD; -webkit-box-shadow: -4px 3px 5px #DDD; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #DDD; border-radius: 4px 0 0 4px } .navmenu-list .inactive { FILTER: alpha(opacity = 75); opacity: .75 } .standards .actionBar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 32px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .actionBar#actionbarlrn_std_doc { BORDER-BOTTOM-COLOR: #777 } .actionBar#actionbarlrn_std_doc > UL > LI > A { COLOR: #f0f0f0; -moz-border-radius: 4px 0 0 0; -webkit-border-radius: 4px 0 0 0; border-radius: 4px 0 0 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .actionBar#actionbarlrn_std_doc > UL > LI > A:hover { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_doc > UL > LI:hover > A { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_category > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std_category > UL > LI > A:hover { BACKGROUND: #ccc; COLOR: #000 } .actionBar#actionbarlrn_std { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 9px 0px 20px; BACKGROUND: #f0f0f0; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .actionBar#actionbarlrn_std > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std > UL > LI > A:hover { BACKGROUND: #ddd; COLOR: #000 } .standards .actionBar > UL { MARGIN: 0px; HEIGHT: 32px } .standards .actionBar UL LI { FLOAT: left } .standards .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .standards .searchbar .selectedItem LABEL SPAN { FONT-SIZE: 90% } .navmenu-actions-1 { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #f0f0f0; BORDER-TOP: #ccc 1px solid; TOP: 4px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px; LEFT: -4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .active .navmenu-actions-1 { LEFT: -4px } .navmenu-actions-2 { POSITION: absolute; PADDING-BOTTOM: 1px !important; PADDING-LEFT: 1px !important; PADDING-RIGHT: 1px !important; TOP: 22px; PADDING-TOP: 1px !important; LEFT: -4px } .navmenu-list-item .contextMenuContainer { POSITION: absolute; MARGIN-TOP: -8px; TOP: 50%; RIGHT: 9px; opacity: 0 } .navmenu-list .active .contextMenuContainer { opacity: 1 } .navmenu-list .active:hover .contextMenuContainer { opacity: 1 } .navmenu-list-item:hover .contextMenuContainer { opacity: .5 } .navmenu-list-item:hover .contextMenuContainer:hover { opacity: 1 } .standards .column-1 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-3 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 1%; WIDTH: 46%; PADDING-RIGHT: 1%; PADDING-TOP: 0px } .standards .column-3 { MARGIN: 0px; WIDTH: 31% } .standardForm > H3 + DIV.column-2 { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standards .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .standards .stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standardForm { POSITION: absolute !important; TOP: 38px; LEFT: 6px } .inline-form-title { MARGIN: 6px 0px } .docs-column .column-nav-inner { BORDER-BOTTOM: #777 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#999999',endColorstr = '#777777',GradientType = 1); BORDER-LEFT: #777 1px solid; MIN-HEIGHT: 400px; BACKGROUND: #999; COLOR: #fff; BORDER-TOP: #777 1px solid; BORDER-RIGHT: medium none; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px } .docs-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .iconToggleWrapper { ZOOM: 1; DISPLAY: inline-block } .iconToggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px -5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .quickAddPal .iconToggle { MARGIN: 0px 0px 0px -1px } .iconToggle:first-child { MARGIN: 0px; -moz-border-radius: 2px 0 0 2px; -webkit-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px } .iconToggle:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #e8f0fe; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .stepcontent .iconToggle .fieldHelp { Z-INDEX: 100; BORDER-BOTTOM: #555 1px solid; POSITION: absolute; MIN-WIDTH: 200px; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #fff; FONT-SIZE: 90%; BORDER-TOP: #555 1px solid; TOP: 100%; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 3px; LEFT: 0px; -moz-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .iconToggle:hover .fieldHelp { Z-INDEX: 10; DISPLAY: block } .iconToggleWrapper .selectedItem { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #cdcdcd; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset } .iconToggle LABEL SPAN { DISPLAY: none; COLOR: #555 } .selectedItem LABEL SPAN { DISPLAY: inline } .selectedItem .fieldHelp STRONG { DISPLAY: none } #lrn_std .panelHead { PADDING-BOTTOM: 9px; PADDING-LEFT: 25px; PADDING-RIGHT: 16px; PADDING-TOP: 9px } #lrn_std .sHeader { MARGIN-LEFT: -21px } #lrn_std .contextMenuContainer { } .lb-content .itemTray { POSITION: absolute } .lb-drawer { PADDING-BOTTOM: 54px } .lb-noTitleBar #pageTitleBar { DISPLAY: none } .lb-locationPane { MARGIN: 0px } .lb-locationPane #contentPanel { MARGIN: 0px } .lb-contentBox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none; border-radius: 0 } .overSoftLimit { COLOR: red } .autocomplete_pos { TOP: 15px !important; LEFT: 0px !important } .autocomplete { Z-INDEX: 5; BORDER-BOTTOM: #888 1px solid; POSITION: absolute; BORDER-LEFT: #888 1px solid; BACKGROUND-COLOR: #fff; WIDTH: 250px; BORDER-TOP: #888 1px solid; BORDER-RIGHT: #888 1px solid; box-shadow: 0 0 3px rgba(0, 0, 0, .3) } .autocomplete .selected { BACKGROUND-COLOR: #ccc } .autocomplete UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; CURSOR: pointer; PADDING-TOP: 2px } .quickAddPal .field { POSITION: relative } .quickAddPal .noLabelField { POSITION: relative } .renameCategory { Z-INDEX: 1200; POSITION: absolute; BOTTOM: 0px; DISPLAY: block; TOP: 0px; RIGHT: 0px; LEFT: 0px } .renameCategory A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } LI SPAN.labelMenuItem { COLOR: #000; FONT-WEIGHT: bold } #toolSettingsWrapper_table TBODY TR { BORDER-TOP: #ddd 1px dashed } #toolSettingsWrapper_table TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #toolSettingsWrapper_table TBODY TR.rowTitle TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle { BACKGROUND-COLOR: #ebebeb; BORDER-TOP: #ddd 1px solid } #toolSettingsWrapper_table TBODY TR.rowTitle H3 { MARGIN: 0.5em 0px } .tooltipContainer { POSITION: relative; TEXT-DECORATION: none } .tooltip { DISPLAY: none; WORD-WRAP: break-word } .tooltip-top { DISPLAY: none; WORD-WRAP: break-word } .tooltipContainer:hover .tooltip { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltipContainer:hover .tooltip-top { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltip:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip-top:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 1px; COLOR: #3b3b3b; LEFT: 1px; -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); -khtml-transform: rotate(90deg) } .tooltip-top:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: auto; COLOR: #4f4f4f; TOP: 0px; LEFT: -2px; -moz-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -o-transform: rotate(-90deg); -khtml-transform: rotate(-90deg) } .paddedMetadata { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 6px !important; PADDING-TOP: 6px !important } .quickAddPal .colorlist LI A.transparent { BACKGROUND-IMAGE: url(/images/swatches/transparent.gif); BACKGROUND-POSITION: -1px -1px; COLOR: transparent } .quickAddPal .colorlist LI A.transparent:hover { BACKGROUND-POSITION: -2px -2px } DIV.checkListActions { PADDING-BOTTOM: 10px } .quickAddPal .colorlist LI A.transparent:active { BACKGROUND-POSITION: -3px -3px } .quickAddPal .colorlist LI A.transparent:focus { BACKGROUND-POSITION: -3px -3px } .theme_scrollbar_content H2 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; FONT-STYLE: italic; MARGIN: -35px 0px 15px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; LETTER-SPACING: 0.06em; COLOR: #333; FONT-SIZE: 130%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #wizard .theme_scrollbar_content H2 { COLOR: #ccc } .theme-switch-wrapper { DISPLAY: inline-block } .theme-switch { POSITION: relative; MARGIN: -14px 9px -14px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-RIGHT: #ccc 1px solid } .theme-switch .sub > A { PADDING-BOTTOM: 14px; LINE-HEIGHT: 1; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; OVERFLOW: hidden; PADDING-TOP: 14px } .theme-switch .sub > A:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .theme-switch .sub:hover > A { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .dummy-switch.theme-switch:hover { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .theme-switch A SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch SPAN SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:after { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM-COLOR: #999; TOP: -8px } .theme-switch .nav .sub UL { WIDTH: 180px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .theme-switch .nav .sub UL LI H4 { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#999999,endColorstr=#333333); PADDING-BOTTOM: 4px; MARGIN-TOP: 5px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #fff; PADDING-TOP: 4px } .theme-switch .nav .sub UL A { PADDING-BOTTOM: 4px; PADDING-LEFT: 18px; WIDTH: 142px; PADDING-RIGHT: 4px; FONT-SIZE: 95%; PADDING-TOP: 4px } BODY DIV.lb-overlay { BACKGROUND: url(images/reorder_bg.png) #bbb -10px 0px } #wizard { Z-INDEX: 1100; BORDER-BOTTOM: #666 1px solid; POSITION: fixed; BORDER-LEFT: #666 1px solid; WIDTH: 900px; BACKGROUND: #555; MARGIN-LEFT: -450px; BORDER-TOP: #666 1px solid; TOP: 5px; BORDER-RIGHT: #666 1px solid; LEFT: 50%; box-shadow: 0 11px 20px rgba(0, 0, 0, .7); border-radius: 9px; background-clip: content-box } #wizard H1 { BORDER-BOTTOM: #666 1px solid; PADDING-BOTTOM: 10px; MARGIN: 1px 0px 0px 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #494949; COLOR: #bbb; FONT-SIZE: 110%; PADDING-TOP: 10px; box-shadow: 0 -1px 0 #363636 inset; border-radius: 9px 9px 0 0; text-shadow: 0 -1px 0 #111 } #wizard .accordion-wrapper { MARGIN: 0px 30px; BACKGROUND: none transparent scroll repeat 0% 0%; border-radius: 0 0 6px 6px } #wizard .accordion_toggle { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_content { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_toggle { POSITION: relative; TEXT-ALIGN: right; PADDING-RIGHT: 60px; COLOR: #aaa; FONT-SIZE: 90%; BORDER-TOP: #444 1px solid; CURSOR: pointer; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .accordion_toggle .accordionTabLabel { FLOAT: left; COLOR: #eee; FONT-SIZE: 125%; TEXT-DECORATION: none } #wizard .accordion_toggle SPAN#selectedStructureName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle SPAN#selectedThemeName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle_help { TEXT-ALIGN: left } #wizard .accordion_toggle A#unselectStructure { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectTheme { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectStructure:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectTheme:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectStructure:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle A#unselectTheme:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle:first-child { BORDER-TOP: 0px; box-shadow: none } #wizard .accordion_content { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #3d3b3b; HEIGHT: 245px; OVERFLOW: hidden; PADDING-TOP: 0px } #wizard .accordion_content A { COLOR: #1ec8ea } #wizard .accordion_toggle_addstructure .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-1.png) no-repeat } #wizard .accordion_toggle_choosetheme .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-2.png) no-repeat } #wizard .accordion_toggle_help .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-4.png) no-repeat } #wizard .right-image { POSITION: absolute; WIDTH: 30px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center center; HEIGHT: 30px; TOP: 6px; RIGHT: 8px; opacity: .5 } #wizard .previewArea { PADDING-BOTTOM: 5px; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #474747; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 235px; MAX-HEIGHT: 235px; FONT-SIZE: 85%; OVERFLOW: hidden; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 5px } .course_welcome_help_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } .selected.course_welcome_help_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.course_welcome_help_scrollbar_handle { } .course_welcome_help_container { POSITION: relative } #wizard .previewArea .introduction { WIDTH: 80% } #wizard .previewArea .helplink { WIDTH: 80% } #wizard .previewArea .customHelp { WIDTH: 80% } #wizard .previewArea .conclusion { POSITION: absolute; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #3d3b3c; PADDING-LEFT: 10px; WIDTH: 20%; BACKGROUND-ATTACHMENT: fixed; PADDING-RIGHT: 10px; COLOR: #bbb; FONT-SIZE: 90%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } #wizard .previewArea .customHelp { PADDING-BOTTOM: 1em; MARGIN-TOP: 0.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; COLOR: #bbb; FONT-SIZE: 90%; BORDER-TOP: #555 1px dotted; PADDING-TOP: 1em } #wizard .previewArea H3 { MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 3px; FONT-SIZE: 140%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN { TEXT-TRANSFORM: uppercase; DISPLAY: block; COLOR: #888; FONT-SIZE: 65%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN SPAN { TEXT-TRANSFORM: lowercase; FONT-STYLE: italic; DISPLAY: inline; FONT-SIZE: 95% } #wizard .helplink .easylist { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN-TOP: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 0px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } #wizard .helplink .easylist LI { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; WIDTH: 46%; PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #555 2px dotted; PADDING-TOP: 3px } #wizard .helplink .easylist LI H3 { FONT-FAMILY: Georgia, serif } #wizard .helplink .easylist LI P { PADDING-LEFT: 0px } #wizard .helplink .easylist LI P { COLOR: #ddd } #wizard .log-summary { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; box-shadow: 0; border-radius: 0 } #wizard .conclusion H3 { TEXT-TRANSFORM: uppercase; MARGIN-TOP: 10px; COLOR: #888; FONT-SIZE: 100%; FONT-WEIGHT: normal } #wizard .conclusion UL { MARGIN-BOTTOM: 15px } #wizard .conclusion UL LI { MARGIN-BOTTOM: 5px } #wizard .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #wizard .content-inner { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #3d3b3b; BORDER-TOP: 0px; BORDER-RIGHT: 0px } #wizard .introtext { PADDING-BOTTOM: 1em; LINE-HEIGHT: 1.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 2em; FLOAT: left; COLOR: #ccc; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 1em } #wizard .introtext LABEL { FONT-STYLE: italic; DISPLAY: none; MARGIN-LEFT: 15px; FONT-SIZE: 85% } #wizard .introtext INPUT { FONT-STYLE: italic; FONT-FAMILY: Georgia, serif; MARGIN-BOTTOM: 10px; FONT-SIZE: 200% } #wizard .introtext .courseNameAndDescription TABLE TABLE { WIDTH: 99%; MARGIN-LEFT: 7px } #wizard .introtext TEXTAREA { FONT-SIZE: 110% } #wizard .introtext INPUT { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext TEXTAREA { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext .courseNameAndDescription { WIDTH: 60%; PADDING-RIGHT: 0.8em; FLOAT: left; MARGIN-RIGHT: 1em; BORDER-RIGHT: #666 3px dotted } #wizard .introtext P { LINE-HEIGHT: 1.4em; FONT-STYLE: italic; MARGIN: 55px 20px 0px 0px; FONT-FAMILY: Georgia, serif; FONT-SIZE: 90% } .themes .horizontal-block { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 8px; MARGIN: 35px 10px 0px; PADDING-LEFT: 0px; WIDTH: 230px; PADDING-RIGHT: 0px; HEIGHT: 184px; BORDER-TOP: #ddd 1px solid; CURSOR: pointer; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 8px } #wizard .themes .horizontal-block { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555 } .help .horizontal-block { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 250px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .themes .horizontal-block IMG { MARGIN: 0px auto; WIDTH: 203px; HEIGHT: 152px } .theme-selector { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 26px; PADDING-RIGHT: 26px; PADDING-TOP: 10px } .structure .theme-selector { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .theme-selector SPAN { FONT-SIZE: 110%; FONT-WEIGHT: bold } #wizard .selected .theme-selector SPAN { COLOR: #333 } .selected .theme-selector SPAN { COLOR: #fff } .structure .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } .themes .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } #wizard .structure .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard .themes .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected A { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard LI.selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .themes .selected.horizontal-block:hover { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } DIV.scroller { HEIGHT: 200px; OVERFLOW: hidden } .themes DIV.scroller { HEIGHT: 245px } DIV.scroller DIV.section { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: 780px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 225px; OVERFLOW: hidden; PADDING-TOP: 0px } .horizontal-block { TEXT-ALIGN: left; PADDING-BOTTOM: 6px; MARGIN: 8px 0px 0px 7px; PADDING-LEFT: 18px; WIDTH: 167px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: none; HEIGHT: 214px; FONT-SIZE: 80%; VERTICAL-ALIGN: top; PADDING-TOP: 3px; border-radius: 5px } .horizontal-block UL { MARGIN-LEFT: 4px } .structure .horizontal-block { HEIGHT: 178px; CURSOR: pointer } #wizard .gotocourse { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; PADDING-RIGHT: 2px; COLOR: #ccc; BORDER-TOP: #444 1px solid; PADDING-TOP: 10px; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .gotocourse LABEL { WIDTH: auto; DISPLAY: inline-table } #wizard .gotocourse LABEL SPAN { DISPLAY: block; COLOR: #999; FONT-SIZE: 10px } #wizard .gotocourse .button-2 { BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 8px; BORDER-TOP-COLOR: #333; MARGIN-BOTTOM: 7px; BORDER-RIGHT-COLOR: #333; FONT-SIZE: 115%; BORDER-LEFT-COLOR: #333; MARGIN-RIGHT: 25px; PADDING-TOP: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 1px 1px 0 #fefefe inset, -1px -1px 0 #888 inset; text-shadow: 0 1px 0 #BBB } #wizard .gotocourse .button-2:hover { BORDER-BOTTOM-COLOR: #222; BORDER-TOP-COLOR: #222; BORDER-RIGHT-COLOR: #222; BORDER-LEFT-COLOR: #222 } #wizard .number { POSITION: relative; LINE-HEIGHT: 1; FLOAT: left; COLOR: #999; FONT-SIZE: 150%; VERTICAL-ALIGN: middle; TOP: -1px; FONT-WEIGHT: bold; MARGIN-RIGHT: 18px } #wizard .accordion_toggle_help .number { TEXT-INDENT: -9999px; WIDTH: 20px; BACKGROUND: url(/images/ci/icons/step_star_light.png) no-repeat; HEIGHT: 20px; MARGIN-RIGHT: 14px; opacity: .4; background-size: 100% 100% } #wizard .gotocourse .secondary.button-2 { COLOR: #555; FONT-WEIGHT: normal; text-shadow: none } #wizard .gotocourse #welcomePageCancelButton { MARGIN-RIGHT: 10px } #wizard A.wizard-close:before { FONT: 150% "Utilicons"; CONTENT: "X" } #wizard A.wizard-close { POSITION: absolute; COLOR: #888; TOP: 8px; RIGHT: 13px } .theme_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 2px } #wizard .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { } .theme_scrollbar_content { TEXT-ALIGN: center; HEIGHT: 245px; OVERFLOW: hidden } .structure_scrollbar_container { POSITION: relative } .structure_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } DIV.courseStructureDescriptions .structure_scrollbar_track { MARGIN: 1px 3% 1px 0px; TOP: 10px } #wizard .structure_scrollbar_track { MARGIN: 1px 0px; TOP: 0px } #wizard .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } #wizard .selected.structure_scrollbar_handle:hover { BACKGROUND-COLOR: #777 } .selected.structure_scrollbar_handle { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle { } .selected.structure_scrollbar_handle:hover { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle:hover { } .structure_scrollbar_content { MARGIN-TOP: 30px; HEIGHT: 370px; OVERFLOW: hidden } #wizard .structure_scrollbar_content { MARGIN-TOP: 22px; HEIGHT: 200px } .courseStructureOuterDiv { MIN-WIDTH: 800px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 10px; PADDING-TOP: 0px } #wizard .courseStructureOuterDiv { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #3d3b3b; MIN-HEIGHT: 250px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .courseStructureNameScroller { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #fff; MARGIN: 10px 0px 0px; WIDTH: 170px; FLOAT: left; HEIGHT: 400px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; box-shadow: -1px 0 4px #CCC; border-top-left-radius: 4px; border-bottom-left-radius: 4px } #wizard .courseStructureNameScroller { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0px; HEIGHT: 220px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none; border-radius: 0 } .courseStructureNameScroller OL LI { MARGIN-BOTTOM: 3px; CURSOR: pointer } .courseStructureNameScroller OL LI:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .courseStructureNameScroller OL LI.courseStructureChoiceLink:focus { OUTLINE-COLOR: #fff; -moz-box-shadow: inset 0 0 6px #128FA8; -webkit-box-shadow: inset 0 0 6px #128FA8; box-shadow: inset 0 0 6px #128FA8 } #wizard .courseStructureNameScroller OL LI { MARGIN-LEFT: 13px } .courseStructureHeader { PADDING-BOTTOM: 5px; FONT-STYLE: italic; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #999; FONT-SIZE: 85%; CURSOR: default !important; PADDING-TOP: 15px } #structureDescription H3 { TEXT-ALIGN: center; MARGIN-TOP: 110px; FONT: italic 100% Georgia, serif } #wizard .courseStructureHeader { PADDING-LEFT: 0px; COLOR: #aaa; PADDING-TOP: 0px; text-shadow: 0 0 1px #222 } .courseStructureChoiceLink { PADDING-BOTTOM: 5px; PADDING-LEFT: 33px; PADDING-RIGHT: 5px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 5px } #wizard .courseStructureChoiceLink { PADDING-LEFT: 20px } .courseStructureChoiceSelected { BACKGROUND-COLOR: #f5f4ef; COLOR: #3d3b3b; border-top-left-radius: 4px; border-bottom-left-radius: 4px } .courseStructureChoiceSelected A { COLOR: #333 } #wizard .courseStructureChoiceSelected A { COLOR: #333 } .courseStructureDescriptions { POSITION: relative; HEIGHT: 400px; MARGIN-LEFT: 170px } #wizard .courseStructureDescriptions { POSITION: relative; MARGIN: 10px 0px 10px 170px; HEIGHT: 225px } .courseStructureDescriptionAndMenu { BORDER-BOTTOM: #ccc 1px solid; POSITION: static; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; BACKGROUND-COLOR: #f5f4ef; MARGIN: 10px 0px 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 20px; WIDTH: 95%; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 400px; COLOR: #333; FONT-SIZE: 12px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px } #wizard .courseStructureDescriptionAndMenu { BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; MARGIN-TOP: 0px; MIN-HEIGHT: 225px; WIDTH: 635px; HEIGHT: 225px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .courseStructureDescriptions P { MARGIN-BOTTOM: 15px } .courseStructureDescriptions H3 { TEXT-ALIGN: center; MARGIN-TOP: 30px; MARGIN-BOTTOM: 0px; COLOR: #666; FONT-SIZE: 120% } .courseStructureDescriptions BR { DISPLAY: none } .structureIncludeSampleContentCheck { BACKGROUND-COLOR: #f4f1e3; PADDING-LEFT: 15px; WIDTH: 100%; DISPLAY: block; HEIGHT: 40px; MARGIN-LEFT: -20px; PADDING-TOP: 10px; box-shadow: -10px 0 6px #CCC inset } #wizard .structureIncludeSampleContentCheck { Z-INDEX: 1; POSITION: absolute; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 7px; WIDTH: 630px; PADDING-RIGHT: 0px; HEIGHT: 25px; MARGIN-LEFT: -12px; BORDER-TOP: #ccc 1px solid; TOP: 185px; PADDING-TOP: 7px; box-shadow: 0 0 2px #999; border-radius: 5px 5px 0 0 } #wizard .accordion_content .useSelectedStructure { MARGIN-RIGHT: 15px } #wizard .accordion_content .useSelectedStructure { COLOR: #333 } #wizard .accordion_content .useExistingMenu { COLOR: #333 } #wizard .courseStructureDescriptions .structure_scrollbar_track { RIGHT: 15px } .courseStructureMenu { POSITION: relative; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; MARGIN: 0px 0px 0px 20px; MIN-HEIGHT: 400px; PADDING-LEFT: 10px; WIDTH: 200px; PADDING-RIGHT: 10px; FLOAT: right; OVERFLOW: hidden; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-top-right-radius: 5px; border-bottom-right-radius: 5px } #wizard .courseStructureMenu { PADDING-BOTTOM: 35px; MIN-HEIGHT: 265px } .courseStructureMenu .listCm .courseMenu A { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .courseStructureMenu .listCm .courseMenu .divider { PADDING-BOTTOM: 6px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 6px } .courseStructureMenu .topRound { DISPLAY: none } .courseStructureMenu .actionBarMicro { DISPLAY: none } .courseStructureMenu .bottomRound { DISPLAY: none } .courseStructureMenu #courseMenuPalette DIV.navPaletteContent { PADDING-TOP: 0px } .arrow_guide { POSITION: absolute; WIDTH: 156px; BACKGROUND: url(/images/ci/icons/left-arrow-point.png) no-repeat; HEIGHT: 34px; LEFT: 3% } #wizard .arrow_guide { TOP: 81% } .courseStructureDescription IMG { TEXT-ALIGN: center; MARGIN: 10px 0px 5px } .courseStructureDescription P.existing_text { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription P.existing_icon { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription A.button-3 { COLOR: #333; MARGIN-RIGHT: 15px } .courseStructureDescription A.existingstructure.unselectStructureButton { MARGIN-TOP: 5px; MARGIN-RIGHT: 37% } .courseStructureNameScroller .current-value { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png); BORDER-BOTTOM: #555 1px solid; POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 17px; WIDTH: 130px; BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-POSITION: 0px 20%; FONT-SIZE: 85%; TOP: 5px; FONT-WEIGHT: normal; LEFT: 15px; box-shadow: 0 -1px 0 #333 inset } #wizard .courseStructureNameScroller .current-value { TOP: 0px } .noSectionDivider { BORDER-TOP: medium none } .dividerRow { PADDING-BOTTOM: 0px !important; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 5px !important } .keyboardAccess .selectArrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .selectArrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess LABEL { DISPLAY: inline-block; FONT: italic 100% Georgia, serif; MARGIN-BOTTOM: 3px; COLOR: #777 } .keyboardAccess .selectArrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .keyboardAccess .y-arrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .access-reorder-block { MIN-WIDTH: 200px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 0px } .access-reorder-block SELECT { MIN-WIDTH: 200px } .y-arrows { TEXT-ALIGN: center; CLEAR: both } .brandingImgWrap IMG[src*='header_institution'] { POSITION: absolute; MAX-HEIGHT: 60px; TOP: 0px; LEFT: 12px } .sample-content { FONT: 113% Georgia, serif; BACKGROUND: url(images/bg_chalk_dark_s.png) 0px 0px } .sample-content .item H3 SPAN { FONT: bold 120% Georgia, serif; COLOR: #25bfcb !important } .sample-content TABLE { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated UL { MARGIN: 4px 0px } .sample-content .vtbegenerated P { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sample-content .vtbegenerated BR { HEIGHT: 1px } .sample-content.liItem:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } .buildList > LI.sample-content:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } DIV.loading-overwrite { Z-INDEX: 10000; POSITION: absolute; TEXT-ALIGN: center; WIDTH: 100%; BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) white no-repeat center 100px; HEIGHT: 100%; TOP: 0px; LEFT: 0px; opacity: 100 } DIV.loading-overwrite SPAN { POSITION: relative; FONT-SIZE: 200%; TOP: 10px } .sample-content DL { MARGIN: 0px } .sample-content DT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 9em; PADDING-RIGHT: 0px; FLOAT: left; FONT-WEIGHT: bold; PADDING-TOP: 0px } .sample-content DD { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 10em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .dueDate { COLOR: #063 } .dueDatePassed { COLOR: #900 } .inventory_paging A.inactive { opacity: .4 } .inactive { opacity: .4 } .linkLeftSpacesp { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .codeFragment { FONT-FAMILY: "Courier New" } .filteredTextHeader { BORDER-BOTTOM: 1px dotted; TEXT-ALIGN: center; BORDER-LEFT: 1px dotted; PADDING-BOTTOM: 5px; LINE-HEIGHT: 150%; BACKGROUND-COLOR: lightyellow; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline-block; BORDER-TOP: 1px dotted; BORDER-RIGHT: 1px dotted; PADDING-TOP: 5px } .filteredText { BACKGROUND-COLOR: lightyellow; COLOR: red } .floatedReceipt { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 10px !important; LINE-HEIGHT: 1.3em; BACKGROUND-COLOR: #fcfbd1 !important; MARGIN: 0px 0px 6px; PADDING-LEFT: 10px !important; WIDTH: 300px; PADDING-RIGHT: 22px !important; FONT-FAMILY: Helvetica, serif; COLOR: #333 !important; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal !important; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 10px !important; box-shadow: 1px 1px 5px #666; border-radius: 4px } .floatedReceipt A.close:before { } .floatedReceipt A.close:hover:before { } .floatedReceipt EM { FONT-WEIGHT: bold } .floatedReceipt A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: url(none); COLOR: #333 !important; BORDER-TOP: 0px; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important } .floatedReceipt A:hover { TEXT-DECORATION: none !important } .floatedReceipt#receipt_floated_theme { Z-INDEX: 1001; POSITION: absolute; TOP: 50px; RIGHT: 45px } .floatedReceipt#receipt_floated_courseMenu { Z-INDEX: 1201; POSITION: absolute; LEFT: 180px } .floatedReceipt .arrow { BORDER-BOTTOM: transparent 15px dashed; POSITION: absolute; BORDER-LEFT: transparent 15px dashed; HEIGHT: 0px; FONT-SIZE: 0px; BORDER-TOP: transparent 15px dashed; BORDER-RIGHT: transparent 15px dashed } .pointTop.floatedReceipt .arrow { BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #fcfbd1; TOP: -30px; LEFT: 58% } .pointLeft.floatedReceipt .arrow { BORDER-RIGHT-STYLE: solid; BORDER-RIGHT-COLOR: #fcfbd1; TOP: 10px; LEFT: -30px } .nav .sub .flyout .slideoutLink { FONT-WEIGHT: bold } .nav .sub .slideoutLink IMG { WIDTH: 16px; BACKGROUND: url(images/utilicons_arrows_dark.png) 16px 16px; FLOAT: right; HEIGHT: 16px } .nav .sub .slideoutLink-active { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; box-shadow: -3px 0 3px rgba(0, 0, 0, .3); border-radius: 0 } .nav .sub .slideoutLink-active IMG { BACKGROUND: url(images/utilicons_arrows_dark.png) 0px 16px } .slideoutOpen { MARGIN-LEFT: -1px !important; BORDER-RIGHT: #ccc 1px solid } .statusFilter { POSITION: relative; PADDING-LEFT: 8px; FONT-SIZE: 13px } LABEL.statusFilter { TOP: 0px } SPAN.statusFilter { TOP: 1px } .collapsible TABLE.reportcard TR TD:first-child { DISPLAY: block !important } #loginRedirectProviders H3 { MARGIN: 10px } #loginRedirectProviderList LI { MARGIN: 0px 10px 5px 0px; DISPLAY: inline-block } #loginRedirectProviderList LI IMG { WIDTH: 16px; HEIGHT: 16px } .paletteItems LABEL { MAX-WIDTH: 90%; WORD-WRAP: break-word } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems .inactive { MARGIN: 0px; opacity: .4 } DIV.comments DIV DIV.collabComments { BACKGROUND-COLOR: white; MAX-HEIGHT: 100px; OVERFLOW: auto !important } DIV.studentGradesCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetEditTabCommentPreview { WIDTH: 110px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetHistTabCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } .tooltip_show:focus { POSITION: static; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible } .radio-list { PADDING-LEFT: 20px } .radio-list LI { PADDING-BOTTOM: 4px !important; TEXT-INDENT: -26px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .radio-list LI INPUT[type=radio] { VERTICAL-ALIGN: bottom; MARGIN-RIGHT: 6px } .radio-list LI .button-4 { MARGIN-LEFT: 4px } .cartMode.csPicker #copyright { DISPLAY: none } .details .key-valueTable + .vtbegenerated { MARGIN-TOP: 12px !important } .ondemand-module { POSITION: relative; MARGIN: 14px 3px } .ondemand-module DIV { MARGIN-BOTTOM: 12px } .ondemand-module DIV A { PADDING-BOTTOM: 10px; PADDING-LEFT: 4%; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 10px; border-radius: 5px } .ondemand-module DIV A:hover { BACKGROUND: #00b3be; TEXT-DECORATION: none; box-shadow: 0 0 12px #2cb673; text-shadow: 0 -1px 0 rgba(0, 0, 0, .4) } .ondemand-module DIV A > SPAN { DISPLAY: block; MARGIN-BOTTOM: 3px; FONT-SIZE: 80%; FONT-WEIGHT: normal } .ondemand-module SPAN.release { BORDER-BOTTOM: #00add0 1px solid; POSITION: absolute; BORDER-LEFT: #00add0 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 13px; PADDING-RIGHT: 10px; BACKGROUND: #9dddea; COLOR: #000; FONT-SIZE: 85%; BORDER-TOP: #00add0 1px solid; TOP: -7px; RIGHT: -4px; BORDER-RIGHT: #00add0 1px solid; PADDING-TOP: 3px; border-radius: 12px 12px 12px 12px; text-shadow: 0 1px 0 rgba(255, 255, 255, .3) } .ondemand-module P { MARGIN: 0px 13px; FONT: italic 93%/1.45 Georgia, serif; COLOR: #666 }

@import url( theme1.css?v=9.1.90132.0 ); @import url( theme2.css?v=9.1.90132.0 );

BODY { HEIGHT: auto } HTML { HEIGHT: auto } BODY { MIN-WIDTH: 0px } DIV.topGlobalLinks { MIN-WIDTH: 0px } .navigationPane { DISPLAY: none } .contentPane { MARGIN: 0px 14px } .questionDiv .submission_text { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainerLarge { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry H4 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry .entryText { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogContainer .entryComments LI P { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .journalNav UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE THEAD TH { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TBODY TD { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TD DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .modeSwitch { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } A.cmimg-small { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .fileInputWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .field { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .noLabelField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .liveArea .stepcontent TEXTAREA { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonLibrary { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .previewTextArea { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .rating LI A:hover { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .dbThreadTree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .nav .sub UL LI A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmdiv A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .menumini A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .timediv UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentTags { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .auto_complete UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-header H2 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-content { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myPlacesContent { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myavatar { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble .detailComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeDetailsStep { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tableOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .inventory { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .brandingImgWrap { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList-read .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentListPlain .contentListRight + .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .landingPageColumn UL LI UL.datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .panelNested { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .module { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .moduleHeading { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .collapsible { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .imgWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .scroll_div { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .eudModule .eudModule-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .styledModule-dark .module-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet .itemGroups LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet UL.hierarchyList LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .customBanner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .loggedInAs { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #loggedInUserName { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .topTabs .hotItems UL.hotLinks { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmImg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemTray .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemIconHolder A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .title { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .high { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .navPaletteContent A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu H3 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .expTreeContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeContainer .tree LI H4 + UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #pickerPalette .tree > LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeScrollable { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #logDetail { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .table-scroll-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gridOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeItemsWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeSide .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV UL LI DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.comments DIV DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.studentGradesCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetEditTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetHistTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .u_scrollPanel-vertical { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentScore { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable_header DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gc_info UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI SPAN { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cumulativeSelectItems .selected_items .itemList { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .flynav UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .overrow DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .weightField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .criteriaItem { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important }

/* ================================================================== * General i18n functions * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ // internal methods function _escape(string) { // ?= does not seem to work return (''+string).replace(/^'|([^\\])'/g, "$1\\'").replace(/\n/g, "&crlf;"); } function _unescape(string) { return string.replace(/&crlf;/g, "\n"); } function _substitute(string, parameters) { for ( var key in parameters) { if ( parameters.hasOwnProperty( key ) ) { string = eval( "string.replace(/\\{" + key + "\\}/g, '" + _escape(parameters[key]) + "')" ); } } return _unescape(string); } // Public methods: these methods are instance methods of dynamically generated // Javascript bundle objects. See Java class blackboard.platform.intl.JsResource // and Perl module CI::L10n::JsResource. // Get a string from a resource bundle function i18n_get_string(key) { return this[key]; } // Get string and perform substitution using positions (arrays) or names (object) function i18n_get_formatted_string(key, parameters) { var string = this.getString(key); if (string && parameters) { // Convert to object keyed by string representation of array index if ( parameters.constructor.toString() == [].constructor.toString() ) { var array = parameters; parameters = {}; for (var i = 0; i < array.length; ++i) { parameters[''+i] = array[i]; } } string = _substitute(string, parameters); } return string; }

/* Prototype JavaScript framework, version 1.7 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key], type = typeof value; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError(); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (object.hasOwnProperty(property)) { results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toJSONEx: toJSON, // Leaving this in here to assist in debugging odd stringify issues in IE if we see them again in other contexts. toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); } function unescapeHTML() { return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#<Enumerable:' + this.toArray().inspect() + '>'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); }, hasResponder: function( callback ) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { return true; } }); return false; } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState]; // quite a high number of Interactive events can be generated on some browsers // triggering a memory issue in FF3 when building the response object. So if there is no // registered listener, quick return // see https://bugzilla.mozilla.org/show_bug.cgi?id=453709 if ( state == 'Interactive' ) { if ( this.notListeningToInteractive ) { if ( this.notListeningToInteractive.value ) return; } else { this.notListeningToInteractive = new Object(); this.notListeningToInteractive.value = ( !this.options['onInteractive'] && !Ajax.Responders.hasResponder( state ) ); if ( this.notListeningToInteractive.value ) return; } } var response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $s(element) { if (Object.isString(element)) { return document.getElementById(element); } return element; } function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { function shouldUseCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement('<input name="x">'); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCache(tagName, attributes) ? cache[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.idCounter = 1; Element.cache = { }; Element._purgeElement = function(element) { var uid = element._prototypeUID; if (uid) { Element.stopObserving(element); element._prototypeUID = void 0; delete Element.Storage[uid]; } } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, // only extend the element if it is a string - otherwise we don't need to extend the element remove: function(element) { if (Object.isString(element)) { element = $(element); } if (element.parentNode) { element.parentNode.removeChild(element); } return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = "<option value=\"test\">test</option>"; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = "<link>"; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var purgeElement = Element._purgeElement; var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) { while (element.firstChild) { element.removeChild(element.firstChild); } var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); nodes.each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(), value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType == 1) elements.push(Element.extend(element)); if (elements.length == maximumLength) break; } return elements; }, // Collect items without extending them all: rawRecursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) { elements.push(element); } return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === 1) { results.push(Element.extend(child)); } child = child.nextSibling; } return results; }, // Find the immediate descendents of the given element without extending them all rawImmediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).rawNextSiblings()); return []; }, previousSiblings: function(element, maximumLength) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, // Find the next siblings without actually extending them all rawNextSiblings: function(element) { return $(element).rawRecursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Prototype.Selector.find(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.previousSiblings(), expression, index); } else { return element.recursivelyCollect("previousSibling", index + 1)[index]; } }, next: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.nextSiblings(), expression, index); } else { var maximumLength = Object.isNumber(index) ? index + 1 : 1; return element.recursivelyCollect("nextSibling", index + 1)[index]; } }, select: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); }, adjacent: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element.parentNode).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $s(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, makePositioned: function(element) { element = $s(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source), delta = [0, 0], parent = null; element = $(element); if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className', forProp = 'for', el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'), f; el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if (element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(), fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html, force) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; var workaround = false; if (t) workaround = true; else if (force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = '&nbsp;' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) { div = div.firstChild; } } else { div.innerHTML = html; } return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')); Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); if (document.documentElement.hasAttribute) { Element.hasAttribute = function(element, attribute) { return element.hasAttribute(attribute); }; } else { Element.hasAttribute = Element.Methods.Simulated.hasAttribute; } Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = Element.Storage.UID++; uid = element._prototypeUID; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); }, purge: function(element) { if (!(element = $(element))) return; var purgeElement = Element._purgeElement; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } }); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = element.getStyle(property); } if (value === null) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value); var whole = null; var position = element.getStyle('position'); var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) { return number; } return number + 'px'; } function isDisplayed(element) { var originalElement = element; while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._prepared) return; var element = this.element; if (isDisplayed(element)) { this._prepared = true; return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = element.getStyle('position'), width = element.getStyle('width'); if (width === "0px" || width === null) { element.style.display = 'block'; width = element.getStyle('width'); } var context = (position === 'fixed') ? document.viewport : element.parentNode; element.setStyle({ position: 'absolute', visibility: 'hidden', display: 'block' }); var positionedWidth = element.getStyle('width'); var newWidth; if (width && (positionedWidth === width)) { newWidth = getPixelValue(element, 'width', context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getPixelValue(element, 'width', context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._prepared = true; }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._prepared = false; }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#<Element.Layout>"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } // Implementing a new method to avoid retesting the entire application with clientHeight function getDimensionsEx(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display != 'none') { // Safari bug return {width: element.clientWidth, height: element.clientHeight}; } return getDimensions(element); } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { element = $(element); var valueT = 0, valueL = 0, docBody = document.body; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getDimensions: getDimensions, getDimensionsEx: getDimensionsEx, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); Prototype._original_property = window.Sizzle; /*! * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; var origContext = context = context || document; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), soFar = selector; while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) selector += parts.shift(); set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { var ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { var ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { var cur = parts.pop(), pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { throw "Syntax error, unrecognized expression: " + (cur || selector); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set, match; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.match[ type ].exec( expr )) != null ) { var filter = Expr.filter[ type ], found, item; anyFound = false; if ( curLoop == result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr == old ) { if ( anyFound == null ) { throw "Syntax error, unrecognized expression: " + expr; } else { break; } } old = expr; } return curLoop; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part, isXML){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag && !isXML ) { part = part.toUpperCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part, isXML){ var isPartStr = typeof part === "string"; if ( isPartStr && !/\W/.test(part) ) { part = isXML ? part : part.toUpperCase(); for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName === part ? parent : false; } } } else { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context, isXML){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { if ( !inplace ) result.push( elem ); } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ for ( var i = 0; curLoop[i] === false; i++ ){} return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); }, CHILD: function(match){ if ( match[1] == "nth" ) { var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return /h\d/i.test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 == i; }, eq: function(elem, i, match){ return match[3] - 0 == i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } } return true; } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; case 'nth': var first = match[2], last = match[3]; if ( first == 1 && last == 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first == 0 ) { return diff == 0; } else { return ( diff % first == 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value != check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 ); } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return 0; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } (function(){ var form = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = "<a name='" + id + "'/>"; var root = document.documentElement; root.insertBefore( form, root.firstChild ); if ( !!document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = "<a href='#'></a>"; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "<p class='TEST'></p>"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; if ( !seed && context.nodeType === 9 && !isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ var div = document.createElement("div"); div.innerHTML = "<div class='test e'></div><div class='test'></div>"; if ( div.getElementsByClassName("e").length === 0 ) return; div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) return; Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ){ elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ) { elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } var contains = document.compareDocumentPosition ? function(a, b){ return a.compareDocumentPosition(b) & 16; } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; var isXML = function(elem){ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; while (element) { if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { return Element.extend(element); } element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { if (eventName === "beforeunload") { responder = function(event) { Event.extend(event, element); return handler.call(element, event); }; } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K, translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { return (translations[eventName] || eventName); }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (!registry) return element; if (!eventName) { registry.each( function(pair) { var eventName = pair.key; stopObserving(element, eventName); }); return element; } var responders = registry.get(eventName); if (!responders) return element; if (!handler) { responders.each(function(r) { stopObserving(element, eventName, r.handler); }); return element; } var i = responders.length, responder; while (i--) { if (responders[i].handler === handler) { responder = responders[i]; break; } } if (!responder) return element; if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } var _getElementsByClassName = instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return _getElementsByClassName( parentElement || document.body, className ); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#<Selector: " + this.expression + ">"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); /* * * Copyright (c) 2007 Andrew Tetlaw * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * * * * FastInit * http://tetlaw.id.au/view/javascript/fastinit * Andrew Tetlaw * Version 1.4.1 (2007-03-15) * Based on: * http://dean.edwards.name/weblog/2006/03/faster * http://dean.edwards.name/weblog/2006/06/again/ * Help from: * http://www.cherny.com/webdev/26/domloaded-object-literal-updated * */ var FastInit = { onload : function() { if (FastInit.done) { return; } FastInit.done = true; for(var x = 0, al = FastInit.f.length; x < al; x++) { FastInit.f[x](); } }, addOnLoad : function() { var a = arguments; for(var x = 0, al = a.length; x < al; x++) { if(typeof a[x] === 'function') { if (FastInit.done ) { a[x](); } else { FastInit.f.push(a[x]); } } } }, listen : function() { if (/WebKit|khtml/i.test(navigator.userAgent)) { FastInit.timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(FastInit.timer); delete FastInit.timer; FastInit.onload(); }}, 10); } else if (document.addEventListener) { document.addEventListener('DOMContentLoaded', FastInit.onload, false); } else if(!FastInit.iew32) { if(window.addEventListener) { window.addEventListener('load', FastInit.onload, false); } else if (window.attachEvent) { return window.attachEvent('onload', FastInit.onload); } } }, f:[],done:false,timer:null,iew32:false }; /*@cc_on @*/ /*@if (@_win32) FastInit.iew32 = true; document.write('<script id="__ie_onload" defer src="' + ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); document.getElementById('__ie_onload').onreadystatechange = function(){if (this.readyState == 'complete') { FastInit.onload(); }}; /*@end @*/ FastInit.listen(); /** * Only include the contents of this file once - for example, if this is included in a lightbox we don't want to re-run * all of this - just use the loaded version. (i.e. rerunning would clear page.bundle which would remove all the * language strings for the current page) */ if (!window.page) { var page = {}; page.isLoaded = false; /** * Utility for adding and using localized messages on the page. */ page.bundle = {}; page.bundle.messages = {}; page.bundle.addKey = function( key, value ) { page.bundle.messages[key] = value; }; page.bundle.getString = function( key /*, arg1, arg2, ..., argN */ ) { var result = page.bundle.messages[key]; if ( !result ) { return "!!!!" + key + "!!!!!"; } else { if ( arguments.length > 1 ) { for ( var i = 1; i < arguments.length; i++ ) { result = result.replace( new RegExp("\\{"+(i-1)+"\\}","g"), arguments[i] ); } } return result; } }; /** * Provides support for lazy initialization of javascript behavior when a certain * event happens to a certain item. */ page.LazyInit = function( event, eventTypes, initCode ) { var e = event || window.event; var target = Event.element( event ); // This is because events bubble and we want a reference // to the element we registered the handlers on. target = page.util.upToClass(target, "jsInit"); for (var i = 0; i < eventTypes.length; i++ ) { target['on'+eventTypes[i]] = null; } eval( initCode ); //initCode can reference "target" }; /** * Evaluates any <script> tags in the provided string in the global scope. * Useful for evaluating scripts that come back in text from an Ajax call. * If signalObject is passed then signalObject.evaluatingScripts will be set to false when done. */ page.globalEvalScripts = function(str, evalExternalScripts, signalObject) { //Get any external scripts var waitForVars = []; var scriptVars = [ { script: 'bb_htmlarea', variable: ['HTMLArea'] }, { script: 'w_editor', variable: ['WebeqEditors'] }, { script: 'wysiwyg.js', variable: ['vtbe_attchfiles'] }, { script: 'gradebook_utils.js', variable: ['gradebook_utils'] }, { script: 'rubric.js', variable: ['rubricModule'] }, { script: 'gridmgmt.js', variable: ['gridMgmt'] }, { script: 'calendar-time.js', variable: ['calendar'] }, { script: 'widget.js', variable: ['widget'] }, { script: 'vtbeTinymce.js', variable: ['tinyMceWrapper'] }, { script: 'WhatsNewView.js', variable: ['WhatsNewView'] }, { script: 'tiny_mce.js', variable: ['tinymce','tinyMCE'] } ]; if (evalExternalScripts) { var externalScriptRE = '<script[^>]*src=["\']([^>"\']*)["\'][^>]*>([\\S\\s]*?)<\/script>'; var scriptMatches = str.match(new RegExp(externalScriptRE, 'img')); if (scriptMatches && scriptMatches.length > 0) { $A(scriptMatches).each(function(scriptTag) { var matches = scriptTag.match(new RegExp(externalScriptRE, 'im')); if (matches && matches.length > 0 && matches[1] != '') { var scriptSrc = matches[1]; if (scriptSrc.indexOf('/dwr_open/') != -1) { // dwr_open calls will ONLY work if the current page's webapp == the caller's webapp, // otherwise we'll get a session error. THis will happen if a lightbox is loaded with // dynamic content from a different webapp (say /webapps/blackboard) while the main page // is loaded from /webapps/discussionboard. To avoid this, rewrite the url to use the // webapp associated with the current page. var newparts = scriptSrc.split('/'); var oldparts = window.location.pathname.split('/'); newparts[1] = oldparts[1]; newparts[2] = oldparts[2]; scriptSrc = newparts.join('/'); } var scriptElem = new Element('script', { type: 'text/javascript', src: scriptSrc }); var head = $$('head')[0]; head.appendChild(scriptElem); for ( var i = 0; i < scriptVars.length; i++ ) { if ( scriptSrc.indexOf( scriptVars[i].script ) != -1 ) { scriptVars[ i ].variable.each( function( s ) { waitForVars.push( s ); } ); break; } } } }); } } page.delayAddExtractedScripts(str.extractScripts(), waitForVars, signalObject); }; // Evaluate any inline script - delay a bit to give the scripts above time to load // NOTE that this is not guaranteed to work - if there are delays loading and initializing // the scripts required then code in these scripts might fail to find the required variables // If it is for our code then updating waitForVars appropriately per script will work page.delayAddExtractedScripts = function (scripts, waitForVars, signalObject) { var count = 0; if (waitForVars.length === 0) { page.actuallyAddExtractedScripts(scripts, signalObject); } else { new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( page.allVariablesDefined(waitForVars) ) { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } } else // give up if it takes longer than 5s to load { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } }.bind(this), 0.05 ); } }; page.allVariablesDefined = function(vars) { var result = true; for ( var i = 0; i < vars.length; i++ ) { if ( !window[vars[i]] ) { result = false; break; } } return result; }; page.actuallyAddExtractedScripts = function (scripts, signalObject) { var scriptExecutionDelay = 0; if( signalObject ) { scriptExecutionDelay = signalObject.delayScriptExecution; } scripts.each(function(script) { if ( script != '' ) { if ( Prototype.Browser.IE && window.execScript ) { ( function() { window.execScript( script ); }.delay( scriptExecutionDelay ) ); } else { ( function() { var scriptElem = new Element( 'script', { type : 'text/javascript' } ); var head = $$( 'head' )[ 0 ]; script = document.createTextNode( script ); scriptElem.appendChild( script ); head.appendChild( scriptElem ); head.removeChild( scriptElem ); }.delay( scriptExecutionDelay ) ); } } } ); if (signalObject) { signalObject.evaluatingScripts = false; } }; page.setIframeHeight = function () { try { var iframeElements = $$('iframe.cleanSlate'); iframeElements.each( function( iframeElement ) { if ( iframeElement.contentWindow && iframeElement.contentWindow.document && iframeElement.contentWindow.document.body ) { iframeElement.style.height = iframeElement.contentWindow.document.body.scrollHeight + 50 + 'px'; } }); } catch( e ){} }; page.onResizeChannelIframe = function( channelExtRef ) { var frameId = 'iframe' + channelExtRef; var listId = 'list_channel' + channelExtRef; var f = $( frameId ); f.style.height = f.contentWindow.document.getElementById( listId ).scrollHeight + 15 + "px"; }; /** * Contains page-wide utility methods */ page.util = {}; /** * Returns whether the specific element has the specified class name. * Same as prototype's Element.hasClassName, except it doesn't extend the element (which is faster in IE). */ page.util.hasClassName = function ( element, className ) { var elementClassName = element.className; if (elementClassName.length === 0) { return false; } if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) { return true; } return false; }; page.util.fireClick = function ( elem ) { if (Prototype.Browser.IE) { elem.fireEvent("onclick"); } else { var evt = document.createEvent("HTMLEvents"); evt.initEvent("click", true, true); elem.dispatchEvent(evt); } }; page.util.useARIA = function () { if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); var ffversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ffversion >= 1.9) { return true; } } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; var ieversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ieversion>=8) { return true; } } return false; }; // Find an element with the given className, starting with the element passed in page.util.upToClass = function ( element, className ) { while (element && !page.util.hasClassName(element, className)) { element = element.parentNode; } return $(element); }; page.util.isRTL = function () { var els = document.getElementsByTagName("html"); var is_rtl = (typeof(els) != 'undefined' && els && els.length == 1 && els[0].dir == 'rtl' ); return is_rtl ; }; page.util.allImagesLoaded = function (imgList) { var allDone = true; if (imgList) { for ( var i = 0, c = imgList.length; i < c; i++ ) { var animg = imgList[i]; // TODO - this doesn't appear to work on IE. if ( !animg.complete ) { allDone = false; break; } } } return allDone; }; // Exposes (display but keep invisible) an invisible element for measurement // recursively traverses up the DOM looking for // a parent node of element whose display == 'none' // If found, sets its style to: display:block, position:absolute, and visibility:hidden // and saves it as element.hiddenNode so it can be easily unexposed page.util.exposeElementForMeasurement = function ( element ) { element = $(element); var e = element; var hiddenNode; // find parent node that is hidden while ( !hiddenNode && e && e.parentNode) { if ( $(e).getStyle('display') === 'none') { hiddenNode = $(e); } e = $(e.parentNode); } if ( hiddenNode ) { // save original style attributes: visibility, position, & display element.hiddenNode = hiddenNode; var style = hiddenNode.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') { newStyles.position = 'absolute'; } hiddenNode.originalStyles = originalStyles; // set new style for: visibility, position, & display hiddenNode.setStyle( newStyles ); } }; // undo previous call to exposeElementForMeasurement page.util.unExposeElementForMeasurement = function ( element ) { element = $(element); if ( element && element.hiddenNode && element.hiddenNode.originalStyles ) { Element.setStyle( element.hiddenNode, element.hiddenNode.originalStyles ); element.hiddenNode.originalStyles = null; element.hiddenNode = null; } }; /** * Returns whether any part of the two elements overlap each other. */ page.util.elementsOverlap = function ( e1, e2 ) { var pos1 = $(e1).cumulativeOffset(); var a = { x1: pos1.left, y1: pos1.top, x2: pos1.left + e1.getWidth(), y2: pos1.top + e1.getHeight() }; var pos2 = $(e2).cumulativeOffset(); var b = { x1: pos2.left, y1: pos2.top, x2: pos2.left + e2.getWidth(), y2: pos2.top + e2.getHeight() }; return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; }; /** * To handle the case where the focus is visible but too close to the bottom of the page, scroll the page up a bit. */ page.util.focusAndScroll= function(elem) { elem.focus(); return page.util.ensureVisible(elem); }; page.util.ensureVisible= function(elem) { var scrolltop = document.viewport.getScrollOffsets().top; var mytop = elem.cumulativeOffset()[1]; var height = document.viewport.getDimensions().height; var realtop = mytop - scrolltop; var thirty = height * 0.3; if (realtop > (height-thirty)) { window.scrollBy(0,thirty); } return false; }; page.util.processJSProtoString = function (string, checkToken) { // This value must match the value passed as the 2nd parameter to this string. // The goal is to pass a known value, as a constant, through the javascript: pseudo-protocol // handler. We can then examine the result to determine the decoding method used by the current // browser. var sniffToken = '%C3%A9'; // There are three known decoding cases, non-translated, UTF8, and unescape if (checkToken === unescape(sniffToken)) { // Unescape decoded return decodeURIComponent(escape(string)); } else if (checkToken === sniffToken) { // Non-translated return decodeURIComponent(string); } else { // UTF8 Decoded/Unknown return string; } }; /** * Find the first action bar that precedes sourceElement * Returns the action bar div element if found, null otherwise * * @param sourceElement */ page.util.findPrecedingActionBar = function( sourceElement ) { var actionBar = null; // Loop through each ancestor of sourceElement, // starting with parent, until an action bar is found sourceElement.ancestors().each( function( item ) { actionBar = item.previous('div.tabActionBar') || item.previous('div.actionBarMicro') || item.previous('div.actionBar'); if (actionBar) { throw $break; } }); return actionBar; }; page.util.getLargestDimensions = function (element) { var width = 0; var height = 0; var dim; while (element != document) { dim = $(element).getDimensions(); if (dim.width > width) { width = dim.width; } if (dim.height > height) { height = dim.height; } element = element.up(); } return { width: width, height: height }; }; /* * Resize the current window so that it will fit the largest dimensions found for the given element. * Will also reposition on the screen if required to fit. Will not size larger than the screen. * NOTE that this will only work for popup windows - main windows are typically in a tabset in * the browser and they don't allow resizing like this. That's OK because the main use case * for this method is to make sure popup windows are resized appropriately for their content. */ page.util.resizeToContent = function (startElement) { var dim = page.util.getLargestDimensions(startElement); var newWidth = dim.width; newWidth += 25; // TODO: Haven't figured out why I need this extra space yet... if (window.innerWidth > newWidth) { newWidth = window.innerWidth; } if (newWidth > screen.width) { newWidth = screen.width; } var newHeight = dim.height; newHeight += 100; // TODO: Haven't figured out why I need this extra space yet if (window.innerHeight > newHeight) { newHeight = window.innerHeight; } if (newHeight > screen.height) { newHeight = screen.height; } var left = 0; var top = 0; if ( window.screenLeft ) { left = window.screenLeft; top = window.screenTop; } else if ( window.screenX ) { left = window.screenX; top = window.screenY; } if (left + newWidth > screen.width) { left = screen.width - newWidth; if (left < 0) { left = 0; } } if (top + newHeight > screen.height) { top = screen.height - newHeight; if (top < 0) { top = 0; } } window.moveTo(left,top); window.resizeTo(newWidth,newHeight); }; /** * Sets the css position of all li elements that are contained in action bars on the page. * Since z-index only works on positioned elements, this function can be used to ensure that * divs with a higher z-index will always appear on top of any action bars on the page. * * @param cssPosition */ page.util.setActionBarPosition = function( cssPosition ) { $$( 'div.actionBar', 'div.tabActionBar', 'div.actionBarMicro' ).each( function( actionbar ) { actionbar.select( 'li' ).each( function( li ) { li.setStyle( {position: cssPosition} ); }); }); }; /** * Class for controlling the course menu-collapser. Also ensures the menu is * the right height */ page.PageMenuToggler = Class.create(); page.PageMenuToggler.prototype = { /** * initialize */ initialize: function( isMenuOpen,key,temporaryScope ) { page.PageMenuToggler.toggler = this; this.key = key; if (temporaryScope) { this.temporaryScope = temporaryScope; } else { this.temporaryScope = false; } this.isMenuOpen = isMenuOpen; this.puller = $('puller'); this.menuPullerLink = $(this.puller.getElementsByTagName('a')[0]); this.menuContainerDiv = $('menuWrap'); this.navigationPane = $('navigationPane'); this.contentPane = $('contentPanel') || $('contentPane'); this.navigationPane = $('navigationPane'); this.locationPane = $(this.navigationPane.parentNode); this.breadcrumbBar = $('breadcrumbs'); this.menu_pTop = parseInt(this.menuContainerDiv.getStyle('paddingTop'), 10); this.menu_pBottom = parseInt(this.menuContainerDiv.getStyle('paddingBottom'), 10); this.loc_pTop = parseInt(this.locationPane.getStyle('paddingTop'), 10); if ( this.breadcrumbBar ) { this.bc_pTop = parseInt(this.breadcrumbBar.getStyle('paddingTop'), 10); this.bc_pBottom = parseInt(this.breadcrumbBar.getStyle('paddingBottom'), 10); } else { this.bc_pTop = 0; this.bc_pBottom = 0; } this.toggleListeners = []; this.onResize( null ); // fix the menu size // Doesn't work in IE or Safari.. //Event.observe( window, 'resize', this.onResize.bindAsEventListener( this ) ); Event.observe( this.menuPullerLink, 'click', this.onToggleClick.bindAsEventListener( this ) ); }, /** * Adds a listener for course menu toggle events */ addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, /** * Notifies all registered toggle event listeners that a toggle has occurred. */ _notifyToggleListeners: function( isOpen ) { this.toggleListeners.each( function( listener ) { listener( isOpen ); }); }, notifyToggleListeners: function( isOpen ) { // we call once the toggle is complete and the DOM in its new state. 2012 themes add transition, which seems // to collide with the logic to get dimensions of dom element, so the delay is a 1 sec to let time for those // transitions to be done. this._notifyToggleListeners.bind( this, isOpen ).delay( 1 ); }, /** * getAvailableResponse */ getAvailableResponse : function ( req ) { var originalMenuOpen = this.isMenuOpen ; if ( req.responseText.length > 0 ) { if ( req.responseText == 'true' ) { this.isMenuOpen = true; } else { this.isMenuOpen = false; } } if ( originalMenuOpen != this.isMenuOpen ) { this.notifyToggleListeners( this.isMenuOpen ); this.menuContainerDiv.toggle(); this.puller.toggleClassName("pullcollapsed"); this.contentPane.toggleClassName("contcollapsed"); this.navigationPane.toggleClassName("navcollapsed"); } }, /** * Expands the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ expand : function () { this.menuContainerDiv.show(); this.puller.removeClassName("pullcollapsed"); this.contentPane.removeClassName("contcollapsed"); this.navigationPane.removeClassName("navcollapsed"); this.isMenuOpen = true; var msg = page.bundle.messages[ "coursemenu.hide" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( true ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, true ); } else { UserDataDWRFacade.setStringPermScope( this.key, true ); } }, /** * Collapses the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ collapse : function () { this.menuContainerDiv.hide(); this.puller.addClassName("pullcollapsed"); this.contentPane.addClassName("contcollapsed"); this.navigationPane.addClassName("navcollapsed"); this.isMenuOpen = false; var msg = page.bundle.messages[ "coursemenu.show" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( false ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, false ); } else { UserDataDWRFacade.setStringPermScope( this.key, false ); } }, /** * Event triggered when the puller toggle control is clicked. Changes the * menu from open to closed or closed to open depending on existing state. */ onToggleClick: function( event ) { if ( this.isMenuOpen ) { this.collapse(); } else { this.expand(); } Event.stop( event ); }, /** * onResize */ onResize: function( event ) { var menuHeight = this.menuContainerDiv.getHeight(); var contentHeight = this.contentPane.getHeight(); var maxHeight = ( menuHeight > contentHeight ) ? menuHeight : contentHeight; this.contentPane.setStyle({height: maxHeight + 'px'}); this.navigationPane.setStyle({height: maxHeight + 'px'}); } }; page.PageMenuToggler.toggler = null; /** * Class for controlling the page help toggler in the view toggle area */ page.PageHelpToggler = Class.create(); page.PageHelpToggler.prototype = { initialize: function( isHelpEnabled, showHelpText, hideHelpText, assumeThereIsHelp ) { page.PageHelpToggler.toggler = this; this.toggleListeners = []; this.isHelpEnabled = isHelpEnabled; this.showText = showHelpText; this.hideText = hideHelpText; this.contentPanel = $('contentPanel') || $('contentPane'); var helperList = []; if ( this.contentPanel && !assumeThereIsHelp) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { helperList.push( $(el) ); } } } var helpTextToggleLink = $('helpTextToggleLink'); if ( ( !helperList || helperList.length === 0) && !assumeThereIsHelp ) { if ( helpTextToggleLink ) { helpTextToggleLink.remove(); } } else { if ( !isHelpEnabled ) { helperList.invoke( "toggle" ); } if ( !this.showText ) { this.showText = page.bundle.getString("viewtoggle.editmode.showHelp"); } if ( !this.hideText ) { this.hideText = page.bundle.getString("viewtoggle.editmode.hideHelp"); } this.toggleLink = helpTextToggleLink; this.toggleImage = $(this.toggleLink.getElementsByTagName('img')[0]); Event.observe( this.toggleLink, "click", this.onToggleClick.bindAsEventListener( this ) ); $(this.toggleLink.parentNode).removeClassName('hidden'); this.updateUI(); } }, addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, _notifyToggleListeners: function() { this.toggleListeners.each( function( listener ) { listener( this.isHelpEnabled ); }); }, notifyToggleListeners: function() { // we notify once the whole menu collapse/expand is done, so the DOM is in final state this._notifyToggleListeners.bind( this ).delay( ); }, updateUI: function( ) { if ( this.isHelpEnabled ) { $("showHelperSetting").value = 'true'; this.toggleImage.src = "/images/ci/ng/small_help_on2.gif"; this.toggleLink.setAttribute( "title", this.showText ); this.toggleImage.setAttribute( "alt", this.showText ); } else { $("showHelperSetting").value = 'false'; this.toggleImage.src = "/images/ci/ng/small_help_off2.gif"; this.toggleLink.setAttribute( "title", this.hideText ); this.toggleImage.setAttribute( "alt", this.hideText ); } }, onToggleClick: function( event ) { // Toggle all elements that have the css class "helphelp" var helperList = []; if ( this.contentPanel ) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { $(el).toggle(); } } } if ( this.isHelpEnabled ) { this.isHelpEnabled = false; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "false" ); } else { this.isHelpEnabled = true; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "true" ); } this.updateUI(); this.notifyToggleListeners(); Event.stop( event ); } }; /** * Class for controlling the display of a context menu. */ page.ContextMenu = Class.create(); page.ContextMenu.prototype = { initialize: function( contextMenuContainer, divId, forceMenuRefresh ) { this.displayContextMenuLink = contextMenuContainer.down("a"); this.contextMenuContainer = contextMenuContainer; this.forceMenuRefresh = forceMenuRefresh; this.uniqueId = this.displayContextMenuLink.id.split('_')[1]; this.contextMenuDiv = this.displayContextMenuLink.savedDiv; if ( !this.contextMenuDiv ) { this.contextMenuDiv = contextMenuContainer.down("div");//$('cmdiv_' + this.uniqueId); this.displayContextMenuLink.savedDiv = this.contextMenuDiv; page.ContextMenu.hiddenDivs.set(divId,this.contextMenuDiv); } this.originalContextMenuDiv = this.contextMenuDiv.cloneNode(true); $(this.contextMenuDiv).setStyle({zIndex: 200}); this.displayContextMenuLink.appendChild( this.contextMenuDiv ); // Temporarily add the menu back where it started this.closeContextMenuLink = contextMenuContainer.down(".contextmenubar_top").down(0); this.contextParameters = contextMenuContainer.readAttribute("bb:contextParameters"); this.menuGeneratorURL = contextMenuContainer.readAttribute("bb:menuGeneratorURL"); this.nav = contextMenuContainer.readAttribute("bb:navItem"); this.enclosingTableCell = contextMenuContainer.up("td"); this.menuOrder = contextMenuContainer.readAttribute("bb:menuOrder"); this.overwriteNavItems = contextMenuContainer.readAttribute("bb:overwriteNavItems"); this.beforeShowFunc = contextMenuContainer.readAttribute("bb:beforeShowFunc"); if (this.beforeShowFunc) { this.beforeShowFunc = eval(this.beforeShowFunc); } if ( this.menuOrder ) { this.menuOrder = this.menuOrder.split(','); } if ( !this.contextParameters ) { this.contextParameters = ""; } if ( !this.menuGeneratorURL ) { this.menuGeneratorURL = ""; } if ( !this.nav ) { this.nav = ""; } this.dynamicMenu = false; if ( this.menuGeneratorURL ) { this.dynamicMenu = true; } if (this.dynamicMenu) { Event.observe( this.displayContextMenuLink, "click", this.generateDynamicMenu.bindAsEventListener( this ) ); } else { Event.observe( this.displayContextMenuLink, "click", this.onDisplayLinkClick.bindAsEventListener( this ) ); } Event.observe( this.closeContextMenuLink, "click", this.onCloseLinkClick.bindAsEventListener( this ) ); Event.observe( this.contextMenuDiv, "keydown", this.onKeyPress.bindAsEventListener( this ) ); // adding nowrap to table cell containing context menu // If no enclosing td is found, try th if ( !this.enclosingTableCell ) { this.enclosingTableCell = contextMenuContainer.up("th"); } if ( this.enclosingTableCell ) { if ( !this.enclosingTableCell.hasClassName("nowrapCell") ) { this.enclosingTableCell.addClassName("nowrapCell"); } // if label tag is an immediate parent of context menu span tag, it needs nowrap as well if ( this.enclosingTableCell.down("label") && !this.enclosingTableCell.down("label").hasClassName("nowrapLabel")) { this.enclosingTableCell.down("label").addClassName("nowrapLabel"); } } if ( !this.dynamicMenu ) { var contexMenuItems = contextMenuContainer.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; // remove the context menu div from the page for performance reasons - add it back when we need to show it Element.remove( this.contextMenuDiv ); }, onKeyPress: function( event ) { var elem, children, index; var key = event.keyCode || event.which; if ( key == Event.KEY_UP ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_ESC ) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_TAB ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( (!event.shiftKey && index == children.length - 1) || (event.shiftKey && index === 0)) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } } else if ( key == Event.KEY_RETURN ) { if ( this.useARIA ) { elem = Event.element ( event ); (function() { page.util.fireClick( elem ); }.bind(this).defer()); Event.stop( event ); } } }, onAnchorFocus: function ( event ) { Event.element( event ).setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { Event.element( event ).setStyle({ backgroundColor: '' }); }, afterMenuGeneration: function( req ) { if ( this.dynamicMenu ) { var result; this.dynamicMenu = this.forceMenuRefresh; try { result = req.responseText.evalJSON( true ); if ( result.success == "true" ) { // append uniqueId to each li var menuHTML = result.contentMenuHTMLList.replace(/(<li.*?id=")(.*?)(".*?>)/g,"$1$2_"+this.uniqueId+"$3"); if ( this.forceMenuRefresh ) { this.contextMenuDiv.innerHTML = this.originalContextMenuDiv.innerHTML; } this.contextMenuDiv.insert({bottom:menuHTML}); $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); var contexMenuItems = this.contextMenuDiv.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } else { new page.InlineConfirmation("error", result.errorMessage, false ); } } catch ( e ) { new page.InlineConfirmation("error", result.errorMessage, false ); } } this.showMenu(); //focus on the first menu item (function() { this.contextMenuDiv.down("a").focus(); }.bind(this).defer()); }, appendItems: function( items, menuItemContainer ) { if (!menuItemContainer) { var uls = this.contextMenuDiv.getElementsBySelector("ul"); menuItemContainer = uls[uls.length-1]; } items.each( function ( item ) { if ( item.type == "seperator" ) { if (menuItemContainer.getElementsBySelector("li").length === 0) { return; } var ul = new Element('ul'); menuItemContainer.parentNode.appendChild( ul ); menuItemContainer = ul; return; } if ( !this.menuItemTempate ) { var menuItems = this.contextMenuDiv.getElementsBySelector("li"); this.menuItemTempate = menuItems[menuItems.length-1]; } var mi = this.menuItemTempate.cloneNode( true ); var a = mi.down('a'); var name = item.key ? page.bundle.getString( item.key ) : item.name ? item.name : "?"; a.update( name ); a.title = item.title ? item.title : name; a.href = "#"; menuItemContainer.appendChild( mi ); Event.observe( a, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( a, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( a, 'click', this.onItemClick.bindAsEventListener( this, item.onclick ) ); }.bind( this ) ); }, onItemClick: function( evt, func ) { this.onCloseLinkClick(); func(); Event.stop( evt ); }, setItems: function( items ) { // rather than try to match up new items with existing items, it's easier to delete the existing items // (except for the close item) and then add the new items // remove existing menu items, except close menu var menuItems = this.contextMenuDiv.getElementsBySelector("li").each( function (li ) { if ( !li.hasClassName("contextmenubar_top") ) { if (!this.menuItemTempate) { this.menuItemTempate = li; } li.stopObserving(); li.remove(); } }.bind( this ) ); // should only be one menuItemContainer var menuItemContainers = this.contextMenuDiv.getElementsBySelector("ul").each( function (ul) { if ( !ul.down("li") ) { ul.remove(); } }.bind( this ) ); this.appendItems(items, menuItems[0].parentNode); }, showMenu : function() { if (this.beforeShowFunc) { this.beforeShowFunc(this); } page.ContextMenu.registerContextMenu( this ); this.reorderMenuItems(); if ( this.useARIA ) { this.initARIA(); } var offset = this.displayContextMenuLink.cumulativeOffset(); var scrollOffset = this.displayContextMenuLink.cumulativeScrollOffset(); var viewportScrollOffset = document.viewport.getScrollOffsets(); if ( this.displayContextMenuLink.up( 'div.lb-content' ) ) { // Fix offset for context menu link inside a lightbox offset[0] = offset[0] + viewportScrollOffset[0]; offset[1] = offset[1] + viewportScrollOffset[1]; } else { // Fix the offset if the item is in a scrolled container offset[0] = offset[0] - scrollOffset[0] + viewportScrollOffset[0]; offset[1] = offset[1] - scrollOffset[1] + viewportScrollOffset[1]; } document.body.appendChild( this.contextMenuDiv ); this.contextMenuDiv.setStyle({display: "block"}); var width = this.contextMenuDiv.getWidth(); var bodyWidth = $(document.body).getWidth(); if ( page.util.isRTL() ) { offset[0] = offset[0] + this.displayContextMenuLink.getWidth() - width; } if ( offset[0] + width > bodyWidth ) { offset[0] = offset[0] - width + 30; } if ( this.keepMenuToRight ) { // In case the link is very wide (i.e. gradecenter accessible mode cell link for really wide cell) // make sure the menu renders to the right side of the link var linkWidth = this.displayContextMenuLink.getDimensions().width; if (linkWidth > width) { // Only worry if the link is actually wider than the menu offset[0] += (linkWidth-width); } } // Don't start the menu off the left side of the window if ( offset[0] < 0 ) { offset[0] = 0; } var height = this.contextMenuDiv.getHeight(); var bodyHeight = $(document.body).getHeight(); var ypos = offset[1] + this.displayContextMenuLink.getHeight() + 17; if ( ( height + ypos ) > bodyHeight ) { ypos -= height; ypos -= 34; } // Don't start the menu off the top of the screen if (ypos < 0 ) { ypos = 0; } if (height > bodyHeight) { // If the menu is too big to fit on the screen, set it to the height of the screen and allow scrollbars inside the menu this.contextMenuDiv.setStyle({ height: bodyHeight + "px", overflowY: "auto", overflowX: "hidden", left: offset[0] + "px", top: ypos + "px" }); } else { this.contextMenuDiv.setStyle({ left: offset[0] + "px", top: ypos + "px"}); } if ( !this.shim ) { this.shim = new page.popupShim( this.contextMenuDiv ); } this.shim.open(); }, initARIA: function() { if ( !this.initializedARIA ) { this.displayContextMenuLink.setAttribute( "aria-haspopup", "true" ); this.displayContextMenuLink.setAttribute( "role", "menubutton" ); this.contextMenuDiv.setAttribute( "role", "menu" ); this.contextMenuDiv.down( "ul" ).setAttribute( "role", "presentation" ); $A( this.contextMenuDiv.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval( decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "0"; link.setStyle( {cursor: 'pointer'} ); // make it look like a link. } }); this.initializedARIA = true; // Only initialize once. } }, reorderMenuItems : function() { if ( !this.menuOrder || this.menuOrder.length < 2 ) { return; } var orderMap = {}; var closeItem = null; var extraItems = []; // items not in order // Gather up all of the <li> tags in the menu and stick them in a map/object of id to the li object $A(this.contextMenuDiv.getElementsByTagName("li")).each( function( listItem ) { if (listItem.hasClassName("contextmenubar_top")) { closeItem = listItem; } else { if (this.menuOrder.indexOf(listItem.id) > -1) { orderMap[listItem.id] = listItem; // add item to map } else { extraItems.push(listItem); // listItem id not specified in menuOrder, so add listItem to extraItems } } }.bind(this) ); // Remove all the content from the context menu div $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list ) { Element.remove(list); }.bind(this) ); // Re-add the special "close" item as the first item. var ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); ulElement.insert({bottom:closeItem}); // Loop through the order, adding a <ul> at the start, and starting a new <ul> whenever a "*separator*" // is encountered, and adding the corresponding <li> for each of the ids in the order using the map/object this.menuOrder.each( function( id ) { if (id == "*separator*") { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); } else { ulElement.insert({bottom:orderMap[id]}); } }.bind(this) ); // Add any extraItems to thier own ul if (extraItems.length > 0) { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); extraItems.each( function( lineItem ) { ulElement.insert({bottom:lineItem}); }.bind(this) ); } // Remove any empty ULs and ensure that the added <ul>s have id of form "cmul${num}_${uniqueId}" $A(this.contextMenuDiv.getElementsByTagName("ul")).findAll( function( list ) { if ( list.childElements().length === 0 ) { list.remove(); return false; } else { return true; } }).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); this.menuOrder = null; // only re-order once }, generateDynamicMenu : function(event) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { var context_parameters = this.contextParameters; var menu_generator_url = this.menuGeneratorURL; var nav = this.nav; var overwriteNavItems = this.overwriteNavItems; if ( context_parameters ) { context_parameters = context_parameters.toQueryParams(); } else { context_parameters = {}; } var params = Object.extend({nav_item: nav }, context_parameters ); params = Object.extend( params, { overwriteNavItems : overwriteNavItems } ); new Ajax.Request(menu_generator_url, { method: 'post', parameters: params, onSuccess: this.afterMenuGeneration.bind( this ) }); } else { this.afterMenuGeneration(this); } $(event).preventDefault(); }, onDisplayLinkClick: function( event ) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { this.generateDynamicMenu(event); this.dynamicMenu = false; } else { this.showMenu(); //focus on the first menu item (function() { if (this.contextMenuDiv.style.display != 'none') { this.contextMenuDiv.down("a").focus(); } }.bind(this).defer()); $(event).preventDefault(); } }, onCloseLinkClick: function( event ) { this.close(); // grade center hides displayContextMenuLink onMouseOut, so we need to check if it is visible // before setting focus or IE will complain. Need to do funky visibility check because IE8 // sets display to empty string when removing parent container class (bug?) var disp = this.displayContextMenuLink.style.display; if ( disp != 'none' && disp != '' ) { this.displayContextMenuLink.focus(); } if (event) { Event.stop( event ); } }, close: function() { this.contextMenuDiv.style.display = "none"; // Delay the removal of the element from the page so firefox will continue to process // the click on the menu item chosen (otherwise it stops processing as soon as we remove the // element resulting in the menu not actually working) (function() { Element.remove( this.contextMenuDiv ); }.bind(this).delay(0.1)); if ( this.shim ) { this.shim.close(); } }, closeNow: function() { if (this.contextMenuDiv.style.display != "none") { this.contextMenuDiv.style.display = "none"; Element.remove( this.contextMenuDiv ); if ( this.shim ) { this.shim.close(); } } } }; /** * Function called to change the 'arrow' of a breadcrumb to face downward when they are clicked for the * contextual menu. * @param uniqId - unique number which identifies the crumb which was clicked * @param size - the size of the breadcrumb * @return */ page.ContextMenu.changeArrowInBreadcrumb = function (uniqId, event) { page.ContextMenu.alignArrowsInBreadcrumb(event); $('arrowContext_'+uniqId).addClassName('contextArrowDown').removeClassName('contextArrow'); //Stop the click event to propagate anymore -else all arrows will be aligned again Event.stop( event ); return false; }; //To align all breadcrumb arrows in one direction page.ContextMenu.alignArrowsInBreadcrumb = function (event) { if ($('breadcrumbs') !== null){ var bList = $($('breadcrumbs').getElementsByTagName('ol')[0]); var bs = bList.immediateDescendants(); if (bs.length !== null && bs.length >1){ for (var i = 2; i <= bs.length; i++) { var arrowSpan = $('arrowContext_'+i); if (arrowSpan !== null ){ $('arrowContext_'+i).addClassName('contextArrow').removeClassName('contextArrowDown'); } } } } return false; }; // "static" methods page.ContextMenu.LI = function(event, divId, forceMenuRefresh) { page.LazyInit(event,['focus','mouseover'],'new page.ContextMenu(page.util.upToClass(target,\'contextMenuContainer\'), \'' + divId + '\',' + forceMenuRefresh + ');'); }; page.ContextMenu.contextMenus = []; // _Open_ context menus page.ContextMenu.registerContextMenu = function( menu ) { page.ContextMenu.contextMenus.push( menu ); }; page.ContextMenu.hiddenDivs = $H(); // All the menu divs on the page - only needed for cases such as view_spreadsheet2.js where we try to modify the menus outside this framework page.ContextMenu.hideMenuDiv = function( uniqueId) { var linkId = 'cmlink_' + uniqueId; var link = document.getElementById(linkId); if (link && !link.savedDiv ) { var elementId = 'cmdiv_' + uniqueId; var element = link.nextSibling; // Should be the text between the link and div but check anyways if ( !element || element.id != elementId) { element = element.nextSibling; if ( !element || element.id != elementId) { element = document.getElementById(elementId); } } if (element) { link.savedDiv = element; page.ContextMenu.hiddenDivs.set(uniqueId,element); Element.remove( element ); } } }; page.ContextMenu.addDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { document.body.appendChild(ele); }); }; page.ContextMenu.removeDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { Element.remove(ele); }); }; page.ContextMenu.closeAllContextMenus = function( event ) { var deferClose = false; if ( event ) { var e = Event.findElement( event, 'a' ); if ( e && e.href.indexOf("#contextMenu") >= 0 ) { Event.stop( event ); return; } deferClose = true; } page.ContextMenu.contextMenus.each( function( menu ) { if ( menu != this ) { if (deferClose) { menu.close(); } else { menu.closeNow(); } } }); page.ContextMenu.contextMenus = []; }; /** * Enables flyout menus to be opened using a keyboard or mouse. Enables * them to be viewed properly in IE as well. */ page.FlyoutMenu = Class.create(); page.FlyoutMenu.prototype = { initialize: function( subMenuListItem ) { this.subMenuListItem = $(subMenuListItem); this.menuLink = $(subMenuListItem.getElementsByTagName('a')[0]); //special case to render iframe shim under new course content build menu if (this.subMenuListItem.hasClassName('bcContent')) { var buildContentDiv = this.subMenuListItem.down("div.flyout"); if ( !buildContentDiv ) { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } else { this.subMenu = buildContentDiv; } } else { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } this.menuLink.flyoutMenu = this; // calculate the next/previous tab stops this.previousSibling = this.subMenuListItem.previous(); while ( this.previousSibling && (!this.previousSibling.down('a') || !this.previousSibling.visible()) ) { this.previousSibling = this.previousSibling.previous(); } this.nextSibling = this.subMenuListItem.next(); while ( this.nextSibling && (!this.nextSibling.down('a') || !this.nextSibling.visible()) ) { this.nextSibling = this.nextSibling.next(); } var rumble = $(this.subMenuListItem.parentNode.parentNode); this.inListActionBar = rumble && ( rumble.hasClassName("rumble_top") || rumble.hasClassName("rumble") ); Event.observe( this.menuLink, 'mouseover', this.onOpen.bindAsEventListener( this ) ); Event.observe( subMenuListItem, 'mouseout', this.onClose.bindAsEventListener( this ) ); Event.observe( this.menuLink, 'click', this.onLinkOpen.bindAsEventListener( this ) ); Event.observe( this.subMenuListItem, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); $A( this.subMenu.getElementsByTagName('li') ).each ( function( li ) { $A(li.getElementsByTagName('a')).each( function( link ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( link, 'click', this.onLinkClick.bindAsEventListener( this, link ) ); }.bind( this ) ); }.bind( this ) ); // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; if ( this.useARIA ) { this.initARIA(); } this.enabled = true; }, initARIA: function() { var inListActionBar = this.inListActionBar; if ( inListActionBar ) { this.subMenuListItem.up('ul').setAttribute( "role", "menubar" ); } this.subMenuListItem.setAttribute( "role", "menuitem" ); this.subMenu.setAttribute( "role", "menu" ); if ( !this.menuLink.hasClassName("notMenuLabel") ) { this.subMenu.setAttribute( "aria-labelledby", this.menuLink.id ); } $A( this.subMenu.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); // List action bars have onclick handlers that prevent submission of the page // if no items are selected, so we can't register new onclicks here because // otherwise we can't stop them from executing. if ( !inListActionBar ) { if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval(decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "-1"; link.style.cursor = 'pointer'; // make it look like a link. } } }); }, setEnabled: function( enabled ) { this.enabled = enabled; if ( !enabled ) { this.subMenu.setStyle({ display: '' }); } }, onKeyPress: function( event ) { if (!this.enabled) { return; } var key = event.keyCode || event.which; var elem = Event.element ( event ); var children, index, link; if ( key == Event.KEY_UP ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } else if ( index === 0 ) { children[children.length - 1].focus(); // wrap to bottom } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index == -1 ) { this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); } else if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } else if ( index == ( children.length - 1 ) ) { children[0].focus(); // wrap to top } Event.stop( event ); } else if ( key == Event.KEY_LEFT ) { if ( !this.previousSibling || ( this.previousSibling.hasClassName("mainButton") || this.previousSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, true ); } else if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( !link || !this.previousSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_RIGHT ) { if ( !this.nextSibling || ( this.nextSibling.hasClassName("mainButton") || this.nextSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, false ); } else if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( !link || !this.nextSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_ESC ) { this.close(); this.menuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_RETURN && this.useARIA && !this.inListActionBar ) { page.util.fireClick( elem ); Event.stop( event ); } else if ( key == Event.KEY_TAB && this.useARIA ) { this.executeTab( event, false, event.shiftKey ); } }, executeTab: function( event, forceMenuLinkTab, shift ) { var elem = Event.element ( event ); var link; if ( ( elem != this.menuLink ) || forceMenuLinkTab ) { if ( shift ) { // Go to previous menu if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } else { // Go to next menu if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } this.close(); Event.stop( event ); } }, onOpen: function( event ) { if (!this.enabled) { return; } this.open(); }, onClose: function( event ) { var to = $(event.relatedTarget || event.toElement); if ( !to || to.up('li.sub') != this.subMenuListItem ) { this.close(); } }, onLinkOpen: function( event ) { if (!this.enabled) { return; } this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); Event.stop( event ); }, resizeAfterShowHide: function() { // TODO - ideally this would just resize the outer div, but closing and opening 'works' this.close(); this.open(); }, open: function() { var alreadyShown = this.subMenu.getStyle('display') === 'block'; // If the menu is already showing (i.e. as_ce4 theme, we don't need to position it) if ( !alreadyShown ) { // Set position of action bar elements to static to enable z-index stack order page.util.setActionBarPosition( 'static' ); var menuTop = this.subMenuListItem.getHeight(); if ( this.subMenu.hasClassName( 'narrow' ) ) { menuTop = 0; } this.subMenuListItem.setStyle( {position: 'relative'} ); this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: menuTop+'px', left: '0px', width: '', height: '', overflowY: '' }); var offset = Position.cumulativeOffset( this.subMenuListItem ); var menuDims = this.subMenu.getDimensionsEx(); var menuHeight = menuDims.height; var popupWidth = this.subMenu.getWidth(); var subListItemDims = this.subMenuListItem.getDimensions(); var menuWidth = subListItemDims.width; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); var offsetTop = offset[1] - scrollOffsets.top; this.subMenu.flyoutMenu = this; if ( (offsetTop + menuHeight + subListItemDims.height) > viewportDimensions.height) { if ( (offsetTop - menuHeight) > 0 ) { // if menu goes below viewport but still fits on-page, show it above button this.subMenu.setStyle({ top: '-'+menuHeight+'px' }); } else { // we need to create scrollbars var newWidth = this.subMenu.getWidth() + 15; popupWidth = newWidth + 5; var newMenuHeight = viewportDimensions.height - (offsetTop + subListItemDims.height) - 20; var newMenuTop = menuTop; if (newMenuHeight < offsetTop) { // More space above than below newMenuHeight = offsetTop; newMenuTop = -offsetTop; } this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: newMenuTop+'px', left: '0px', width: newWidth + 'px', height: newMenuHeight + 'px', overflowY: 'auto' }); } } var offsetLeft = offset[0] - scrollOffsets.left; if ( (offsetLeft + popupWidth) > viewportDimensions.width ) { var subMenuWidth = this.subMenuListItem.getWidth(); var newLeft = popupWidth - (viewportDimensions.width-offsetLeft); if ((newLeft > 0) && (newLeft < offsetLeft)) { newLeft = -newLeft; } else { newLeft = -offsetLeft; } this.subMenu.setStyle({ left: newLeft+'px' }); } if ( page.util.isRTL() ) { var newRight = 0; if ( (offsetLeft + menuWidth) - popupWidth < 0 ) { newRight = (offsetLeft + menuWidth) - popupWidth; } this.subMenu.setStyle({ left: '', right: newRight+'px'}); } if (!this.shim) { this.shim = new page.popupShim( this.subMenu); } this.shim.open(); } }, close: function() { // Reset position of action bar elements to relative page.util.setActionBarPosition( 'relative' ); this.subMenuListItem.setStyle({position: ''}); this.subMenu.setStyle({ display: '', top: '', left: '', width: '', height: '', overflowY: '' }); if ( this.shim ) { this.shim.close(); } }, onLinkClick: function( event, link ) { if (!this.enabled) { return; } setTimeout( this.blurLink.bind( this, link), 100); }, blurLink: function( link ) { link.blur(); if (page.util.hasClassName( link, "donotclose" )) { link.focus(); } else { this.close(); } }, onAnchorFocus: function ( event ) { if (!this.enabled) { return; } var link = Event.element( event ); link.setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { var link = Event.element( event ); link.setStyle({ backgroundColor: '' }); } }; /** * Class for providing functionality to menu palettes */ page.PaletteController = Class.create(); page.PaletteController.prototype = { /** * Constructor * * @param paletteIdStr Unique string identifier for a palette * @param expandCollapseIdStr Id value of anchor tag to be assigned * the palette expand/collapse functionality * @param closeOtherPalettesWhenOpen Whether to close all other palettes when this one is open */ initialize: function( paletteIdStr, expandCollapseIdStr, closeOtherPalettesWhenOpen, collapsed ) { // palette id string this.paletteItemStr = paletteIdStr; // palette element this.paletteItem = $(this.paletteItemStr); // default id string to palette contents container element this.defaultContentsContainerId = page.PaletteController.getDefaultContentsContainerId(this.paletteItemStr); // the currently active palette contents container element this.activeContentsContainer = $(this.defaultContentsContainerId); // expand/collapse palette toggle element this.paletteToggle = $(expandCollapseIdStr); if (this.paletteToggle) { Event.observe(this.paletteToggle, 'click', this.toggleExpandCollapsePalette.bindAsEventListener(this)); } this.closeOtherPalettesWhenOpen = closeOtherPalettesWhenOpen; page.PaletteController.registerPaletteBox(this); if (collapsed) { this.collapsePalette(true); } }, /** * Set the currently active palette contents container element * * @param container palette contents container element */ setActiveContentsContainer: function ( container ) { this.activeContentsContainer = container; }, /** * Get the currently active palette contents container element * * @return palette contents container element */ getActiveContentsContainer: function () { return this.activeContentsContainer; }, /** * Expands the palette if it's not already expanded. * * @return palette contents container element */ expandPalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display == "none" ) { itemList.style.display = "block"; itemPalClass.length = itemPalClass.length - 1; this.paletteItem.className = itemPalClass.join(" "); lastDiv.className = "bottomRound"; firstDiv.className = "topRound"; h2.className = ""; var itemTitle = expandCollapseLink.innerHTML.stripTags().trim(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_collapse.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.collapse.section.param', itemTitle); } if ( doNotPersist ) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Collapses the palette if it's not already collapsed. * * @return palette contents container element */ collapsePalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display != "none" ) { itemList.style.display = "none"; itemPalClass[itemPalClass.length] = 'navPaletteCol'; this.paletteItem.className = itemPalClass.join(" "); if (itemPalClass.indexOf('controlpanel') != -1) { lastDiv.className = "bottomRound controlpanelCol"; // colors the bottomRound to match the h2 background } if (itemPalClass.indexOf('listCm')!=-1) { lastDiv.className = "bottomRound listCmCol"; // colors the bottomRound to match the h2 background firstDiv.className = "topRound listCmCol"; // colors the topRound to match the h2 background h2.className = "listCmCol"; // colors h2 background (removes background image) } if (itemPalClass.indexOf('tools') != -1) { lastDiv.className = "bottomRound toolsCol"; firstDiv.className = "topRound listCmCol"; h2.className = "toolsCol"; } var itemTitle = expandCollapseLink.innerHTML.stripTags(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags().trim(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_expand.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.expand.section.param', itemTitle); } if (doNotPersist) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Takes in a key value pair to save to the session as sticky data. * * @param key The key that will have the current course id appended to it to be saved to the session. * @param value The value to the key. */ saveSessionStickyInfo: function( key, value ) { /* Get the course id off of the global variable if exists, so that data is saved per * user session per course. If course doesn't exist, use empty string. */ var current_course_id = window.course_id ? window.course_id : ""; UserDataDWRFacade.setStringTempScope( key + current_course_id, value ); }, /** * Whether the first tag has js onclick event binding on it for palette collapse/expand * * @param h2 */ useFirstTagForExpandCollapse: function ( h2 ) { return h2.getElementsByTagName('a')[0].id.indexOf( "noneExpandCollapseTag" ) > -1 ? false : true; }, /** * Toggles a palette from expand to collapse and vice versa. * * @param event Optional event object if this method was bound to event. */ toggleExpandCollapsePalette: function ( event, doNotPersist ) { // To prevent default event behavior if ( event ) { Event.stop( event ); } if ( this.activeContentsContainer.style.display == "none" ) { // palette is currently closed, so we will be expanding it if ( this.closeOtherPalettesWhenOpen ) { // if closeOtherPalettesWhenOpen is set to true for this palette, close all other palettes page.PaletteController.closeAllOtherPalettes(this.paletteItemStr, doNotPersist); } this.expandPalette( doNotPersist ); } else { // palette is currently expanded, so we will be collapsing it this.collapsePalette( doNotPersist ); } } }; // "static" methods page.PaletteController.paletteBoxes = []; page.PaletteController.registerPaletteBox = function( paletteBox ) { page.PaletteController.paletteBoxes.push( paletteBox ); }; /** * Get the palette controller js object by palette id * * @param paletteId */ page.PaletteController.getPaletteControllerObjById = function( paletteId ) { return page.PaletteController.paletteBoxes.find( function( pb ) { return ( pb.paletteItemStr == paletteId ); } ); }; /** * Closes all palettes except the specified one * * @param paletteToKeepOpen */ page.PaletteController.closeAllOtherPalettes = function( paletteToKeepOpen, doNotPersist ) { for(var i = 0; i < page.PaletteController.paletteBoxes.length; i++) { var paletteItem = page.PaletteController.paletteBoxes[i]; if (paletteToKeepOpen !== paletteItem.paletteItemStr) { paletteItem.collapsePalette( doNotPersist ); } } }; /** * Toggles (expand/collapse) the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.toggleExpandCollapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.toggleExpandCollapsePalette( null, doNotPersist); }; /** * Collapses the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.collapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.collapsePalette( doNotPersist); }; /** * Expand the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.expandPalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.expandPalette( doNotPersist); }; /** * Set the active palette contents container (element containing the body * contents of a palette). The active contents container is used to toggle * visibility when expanding and collapsing menu palettes. * * @param paletteId * @param paletteContentsContainer Optional container to set. * If not given, the palette's active * container will not be changed. * @return The new active palette contents container element. * If no paletteContentsContainer element was passed, * The current active palette contents container element * will be returned. */ page.PaletteController.setActivePaletteContentsContainer = function( paletteId, paletteContentsContainer ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); if ( paletteContentsContainer ) { paletteObj.setActiveContentsContainer( paletteContentsContainer ); } return paletteObj.getActiveContentsContainer(); }; /* * Get the default palette contents container id string * * @param paletteId */ page.PaletteController.getDefaultContentsContainerId = function( paletteId ) { return paletteId + "_contents"; }; /** * Class for providing expand/collapse functionality (with dynamic loading) */ page.ItemExpander = Class.create(); page.ItemExpander.prototype = { /** * Constructor * - expandLink - the link that when clicked will expand/collapse the item * - expandArea - the actual area that will get expanded/collapsed (if the item is dynamically loaded, this area will be populated dynamically) * - expandText - the text to show as a tooltip on the link for expanding * - collapseText - the text to show as a tooltip on the link for collapsing * - expandTitleText - the customized text for link title afer expanding the item; if null/undefined, use expandText * - collapseTitleText - the customized text for link title after collapsing the item;if null/undefined, use collapseText * - dynamic - whether the contents are dynamically loaded * - dynamicUrl - the URL to get the contents of the item from * - contextParameters - additional URL parameters to add when calling the dynamicUrl * - sticky - load/save expand state from UserData; true if null/undefined * - expanded - initially expanded; false if null/undefined */ initialize: function( expandLink, expandArea, expandText, collapseText, dynamic, dynamicUrl, contextParameters, expandTitleText, collapseTitleText, sticky, expanded ) { this.expandLink = $(expandLink); this.expandLinkImage = this.expandLink.down('img'); this.expandArea = $s(expandArea); // Register the expander so it can be found page.ItemExpander.itemExpanderMap[this.expandLink.id] = this; this.expandText = expandText.unescapeHTML(); this.collapseText = collapseText.unescapeHTML(); if ( expandTitleText !== null && expandTitleText !== undefined ) { this.expandTitleText = expandTitleText.unescapeHTML(); } else { this.expandTitleText = this.expandText; } if ( collapseTitleText !== null && collapseTitleText !== undefined ) { this.collapseTitleText = collapseTitleText.unescapeHTML(); } else { this.collapseTitleText = this.collapseText; } this.dynamic = dynamic; this.dynamicUrl = dynamicUrl; if ( contextParameters !== null && contextParameters !== undefined ) { this.contextParameters = contextParameters.toQueryParams(); } else { this.contextParameters = {}; } this.sticky = ( sticky !== null && sticky !== undefined ) ? sticky : true; this.expanded = ( expanded !== null && expanded !== undefined ) ? expanded : false; this.hasContents = !this.dynamic; if ( this.sticky ) { // get the course id off of the global variable if exists, because data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.getStringTempScope( this.expandLink.id + current_course_id, this.getAvailableResponse.bind( this ) ); } this.expandCollapse( !this.expanded ); Event.observe( this.expandLink, "click", this.onToggleClick.bindAsEventListener( this ) ); }, getAvailableResponse : function ( response ) { var originalExpanded = this.expanded ; var cachedExpanded = false; if ( response.length > 0 ) { if ( response == 'true' ) { cachedExpanded = true; } else { cachedExpanded = false; } } if ( originalExpanded != cachedExpanded ) { //because we want the menu to be in the cached state, //we pass in the opposite so that expandCollapse changes the menu state. this.expandCollapse(originalExpanded); } }, onToggleClick: function( event ) { if ( event ) { Event.stop( event ); } this.expandCollapse(this.expanded); if ( this.sticky ) { // get the course id off of the global variable if exists, so that data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.setStringTempScope( this.expandLink.id + current_course_id, this.expanded ); } }, expandCollapse: function(shouldCollapse) { var combo; if ( shouldCollapse ) //Collapse the item { $(this.expandArea).hide(); this.expandLink.title = this.expandTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.expandText; this.expandLinkImage.src = "/images/ci/icons/generic_expand.gif"; } if ( this.expandLink.hasClassName("comboLink_active") ) { combo = this.expandLink.up("li").down(".submenuLink_active"); this.expandLink.removeClassName("comboLink_active"); this.expandLink.addClassName("comboLink"); if ( combo ) { combo.removeClassName("submenuLink_active"); combo.addClassName("submenuLink"); } } else { this.expandLink.removeClassName("open"); } this.expanded = false; } else //Expand the item { if ( this.hasContents ) { $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.collapseText; this.expandLinkImage.src = "/images/ci/icons/generic_collapse.gif"; } if ( this.expandLink.hasClassName("comboLink") ) { combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } } else if ( this.dynamic ) { this.loadData(); } this.expanded = true; } }, loadData: function() { new Ajax.Request( this.dynamicUrl, { method: "post", parameters: this.contextParameters, requestHeaders: { cookie: document.cookie }, onSuccess: this.afterLoadData.bind( this ) }); }, afterLoadData: function( req ) { try { var result = req.responseText.evalJSON( true ); if ( result.success != "true" ) { new page.InlineConfirmation("error", result.errorMessage, false ); } else { this.hasContents = true; this.expandArea.innerHTML = result.itemContents; $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; this.expandLinkImage.alt = this.collapseText; if ( this.expandLink.hasClassName("comboLink") ) { var combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } this.expanded = true; } } catch ( e ) { //Invalid response } } }; page.ItemExpander.itemExpanderMap = {}; /** * Class for controlling the "breadcrumb expansion" (i.e. the "..." hiding the inner * breadcrumbs) */ page.BreadcrumbExpander = Class.create(); page.BreadcrumbExpander.prototype = { initialize: function( breadcrumbBar ) { var breadcrumbListElement = $(breadcrumbBar.getElementsByTagName('ol')[0]); var breadcrumbs = breadcrumbListElement.immediateDescendants(); if ( breadcrumbs.length > 4 ) { this.ellipsis = document.createElement("li"); var ellipsisLink = document.createElement("a"); ellipsisLink.setAttribute("href", "#"); ellipsisLink.setAttribute("title", page.bundle.getString('breadcrumbs.expand') ); ellipsisLink.innerHTML = "..."; this.ellipsis.appendChild( ellipsisLink ); this.ellipsis = Element.extend( this.ellipsis ); Event.observe( ellipsisLink, "click", this.onEllipsisClick.bindAsEventListener( this ) ); this.hiddenItems = $A(breadcrumbs.slice(2,breadcrumbs.length - 2)); breadcrumbListElement.insertBefore( this.ellipsis, this.hiddenItems[0] ); this.hiddenItems.invoke( "hide" ); } // Make sure the breadcrumbs don't run into the mode switcher var breadcrumbContainer = $(breadcrumbListElement.parentNode); var modeSwitcher = breadcrumbBar.down('.modeSwitchWrap'); if ( modeSwitcher ) { var containerWidth = breadcrumbContainer.getWidth(); var containerOffset = breadcrumbContainer.cumulativeOffset(); var modeSwitcherOffset = modeSwitcher.cumulativeOffset(); var modeSwitcherWidth = modeSwitcher.getWidth(); if ( page.util.isRTL() ) { if ( modeSwitcherOffset[0] + modeSwitcherWidth > containerOffset[0] ) { breadcrumbContainer.setStyle({ paddingLeft: ( modeSwitcherOffset[0] + modeSwitcherWidth ) + 'px'} ); } } // else //{ // breadcrumbContainer.setStyle({ paddingRight: ( containerWidth - ( modeSwitcherOffset[0] - containerOffset[0] ) ) + 'px'} ); //} } }, onEllipsisClick: function( event ) { this.hiddenItems.invoke( "show" ); this.ellipsis.hide(); Event.stop( event ); } }; /** * Dynamically creates an inline confirmation. */ page.InlineConfirmation = Class.create(); page.InlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, oneReceiptPerPage ) { var receiptId = $s('receipt_id'); // do not insert a duplicate receipt, if one already exists if(receiptId && oneReceiptPerPage) { return; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if ( type == "warning" ) { cssClass = "warningReceipt"; } var contentPane = $('contentPanel') || $('portalPane'); var receiptHtml = '<div id="receipt_id" class="receipt '+ cssClass +'">'+ '<a name="inlineReceipt" tabindex="-1" style="color:#FFFFFF">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } receiptHtml += '<a class="close" href="#close" title="'+ page.bundle.getString("inlineconfirmation.close") +'" onClick="Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="'+ page.bundle.getString("inlineconfirmation.close") +'" src="/images/ci/ng/close_mini.gif"></a></div>'; contentPane.insert({top:receiptHtml}); // use aria live region to announce this confirmation message rather than setting focus to it. (Too many things are fighting over setting focus) // Note: if this confirmation is invoked from a menu handler, it may not announce if focus is lost when the menu closes. See how courseTheme.js sets focus before invoking. var insertedA = contentPane.down('a[name="inlineReceipt"]'); insertedA.setAttribute("aria-live","assertive"); insertedA.parentNode.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced } }; page.NestedInlineConfirmationIdCounter = 0; page.NestedInlineConfirmation = Class.create(); page.NestedInlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, previousElement,showCloseLink, extracss, insertBefore, oneReceiptPerPage, fadeAway, focusDiv, fadingTime, insertTop, receiptDivId, focusOnRender ) { if ( Object.isUndefined( focusOnRender ) ) { focusOnRender = true; } var receiptId = $s('receipt_nested_id'); // do not insert a duplicate receipt, if one already exists var newDivId = 'receipt_nested_id'; if(receiptId) { if (oneReceiptPerPage) { return; } newDivId = newDivId + (page.NestedInlineConfirmationIdCounter++); } if (receiptDivId) { // Remove the old message with the same receiptDivId if there is one before adding a new one if ( $( receiptDivId ) != null ) $( receiptDivId ).remove(); newDivId = receiptDivId; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if (type == "warning") { cssClass = "warningReceipt"; } if (!extracss) { extracss = ""; } var arrowSpan = ''; if (extracss.indexOf( "point", 0 ) != -1) { arrowSpan = '<span class="arrow"></span>'; } var contentPane = $(previousElement); if (!contentPane) { // TODO - if we can't find the element we wanted to insert before, is it OK to just drop the notification? return; } var receiptHtml = '<div id="'+newDivId+'" style="display:none" class="receipt '+ cssClass +' '+extracss +'">'+arrowSpan+ '<a name="inlineReceipt" class="areceipt" tabindex="-1">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } if (showCloseLink) { // either this is a JS Snippet to execute on close or a simple true in which case we do nothing extra var onCloseFunction = ""; if ( typeof showCloseLink === "string" || showCloseLink instanceof String ) { if ( !page.closeReceiptLinkCounter ) { page.closeReceiptLinkCounter = 0; } else { ++page.closeReceiptLinkCounter; } onCloseFunction = "onReceiptClosed" + page.closeReceiptLinkCounter; receiptHtml += "<script type='text/javascript'>window." + onCloseFunction + " = function( ) { " + showCloseLink + " ; }; </script>"; onCloseFunction += "( );" } receiptHtml += '<a class="close" href="#close" style="z-index:1000" title="' + page.bundle.getString("inlineconfirmation.close") + '" onClick="' + onCloseFunction + 'Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="' + page.bundle.getString("inlineconfirmation.close") + '" src="/images/ci/ng/close_mini.gif"></a></div>'; } if ( insertBefore ) { contentPane.insert({before:receiptHtml}); } else if (insertTop) { contentPane.insert({top:receiptHtml}); } else { contentPane.insert({after:receiptHtml}); } this.insertedDiv = insertBefore?contentPane.previousSibling:(insertTop?contentPane.firstChild:contentPane.nextSibling); $(this.insertedDiv).show(); var insertedA = $(this.insertedDiv).down('a[name="inlineReceipt"]'); var fadingDuration = fadingTime ? fadingTime : 5000; if ( focusOnRender ) { try { ( function() { try { if ( focusDiv ) { page.util.focusAndScroll( $( focusDiv ) ); } else { page.util.focusAndScroll( insertedA ); } } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } }.defer() ); } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } } else { // not setting focus to this confirmation, so we make it an aria live region so it will be announced to the screen reader if ( focusDiv ) { page.util.ensureVisible( $( focusDiv ) ); } else { page.util.ensureVisible( insertedA ); } insertedA.setAttribute("aria-live","assertive"); this.insertedDiv.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced (needed for jaws 12) } if ( fadeAway ) { setTimeout( function() { Element.fade( contentPane.nextSibling, { duration : 0.3 } ); }, fadingDuration ); } }, close: function() { if ( this.insertedDiv ) { this.insertedDiv.remove(); } } }; page.NestedInlineFadeAwayConfirmation = Class.create(); page.NestedInlineFadeAwayConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; page.NestedInlineFadeAwaySingleConfirmation = Class.create(); page.NestedInlineFadeAwaySingleConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time, newDivId ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore, false /*only one instance*/, null, null, null, null, newDivId ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; /** * Make sure the container as position: relative so that the offset can work */ page.MiniReceipt = Class.create(); page.MiniReceipt.prototype = { initialize: function( message, containerElement, top, left, time ) { var visibleDuration = time ? time : 2000; var top = top?top:-22; // usually show receipt above var left = left?left:0; var alreadyExistingReceipt = $( containerElement ).down( "div.miniReceipt" ); if ( alreadyExistingReceipt ) { alreadyExistingReceipt.hide( ); } var receiptHtml = '<div class="miniReceipt adding" style="display: none; top:' + top + 'px; left:'+ left + 'px" role="alert" aria-live="assertive">' + message + '</div>'; var receiptElement = $( containerElement ).insert( { top:receiptHtml } ).firstDescendant( ); receiptElement.show( ); setTimeout( function() { Element.fade( receiptElement, {duration:0.3, afterFinish: function() { receiptElement.remove() } } ); }, visibleDuration ); } }; page.extendedHelp = function( helpattributes, windowName ) { window.helpwin = window.open('/webapps/blackboard/execute/viewExtendedHelp?' + helpattributes,windowName,'menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); window.helpwin.focus(); }; page.decoratePageBanner = function() { var bannerDiv = $('pageBanner'); var containerDiv = $('contentPanel') || $('contentPane'); if ( bannerDiv && containerDiv ) { // append hasTopBanner class to container div to hide topRound containerDiv.addClassName('hasTopBanner'); // hide empty title bar if ( !$('pageTitleText') && $('pageTitleDiv') ) { $('pageTitleDiv').hide(); } } }; page.initializeSinglePopupPage = function( pageId ) { // Initialize the single popup page, make sure the window will be closed by clicking submit or cancel, and the parent // window will be refreshed after submit. var items = document.forms; for ( var i = 0; i < items.length; i++ ) { var formItem = items[ i ]; formItem.observe( 'submit', function() { (function() { window.close(); if( window.opener.refreshConfirm ) { window.opener.refreshConfirm(pageId); } }.defer()); } ); if ( formItem.top_Cancel ) { Event.observe( formItem.top_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } if ( formItem.bottom_Cancel ) { Event.observe( formItem.bottom_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } } }; page.openLightbox = function( link, title, url, width, height ) { var lightboxParam = { defaultDimensions : { w : width ? width : 1000, h : height ? height : 800 }, contents : '<iframe src="' + url + '" width="100%" height="100%"/>', title : title, closeOnBodyClick : false, showCloseLink : true, useDefaultDimensionsAsMinimumSize : true }; var lightboxInstance = new lightbox.Lightbox( lightboxParam ); lightboxInstance.open(); }; page.printAndClose = function() { (function() { window.print(); window.close(); }.defer()); }; /** * Utility for data collection step manipulation */ page.steps = {}; page.steps.HIDE = "hide"; page.steps.SHOW = "show"; /** * Hide or show an array of steps given the step ids and * renumber all visible steps on the page. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepIdArr - string array of step ids */ page.steps.hideShowAndRenumber = function ( action, stepIdArr ) { // hide or show each of the step ids given ($A(stepIdArr)).each( function( stepId ) { page.steps.hideShow( action, stepId ); }); // get all H3 elements that contain css class of "steptitle" var stepTitleTags = []; $A(document.getElementsByTagName('h3')).each( function( tag ) { if ( page.util.hasClassName( tag, 'steptitle' ) ) { stepTitleTags.push( $(tag) ); } }); // starting at number 1, renumber all of the visible steps var number = 1; stepTitleTags.each(function( stepTitleTag ) { if ( stepTitleTag.up('div').visible() ) { stepTitleTag.down('span').update(number); number++; } }); }; /** * Hide or show a single step given the step id. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepId - string identifier to a single step */ page.steps.hideShow = function ( action, stepId ) { if ( action == page.steps.SHOW ) { $(stepId).show(); } else if ( action == page.steps.HIDE ) { $(stepId).hide(); } }; page.showChangeTextSizeHelp = function( ) { page.extendedHelp('internalhandle=change_text_size&helpkey=change_text_size','change_text_size' ); return false; }; page.showAccessibilityOptions = function() { var win = window.open('/webapps/portal/execute/changePersonalStyle?cmd=showAccessibilityOptions', 'accessibilityOptions','menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); win.focus(); }; page.toggleContrast = function( ) { new Ajax.Request('/webapps/portal/execute/changePersonalStyle?cmd=toggleContrast', { onSuccess: function(transport, json) { var fsWin; if (window.top.nav) { fsWin = window.top; } else if (window.opener && window.opener.top.nav) { fsWin = window.opener.top; window.close(); } if (fsWin) { fsWin.nav.location.reload(); fsWin.content.location.reload(); } else { window.top.location.reload(); } } }); return false; }; /** * IFrame-based shim used with popups so they render on top of all other page elements (including applets) */ page.popupShim = Class.create(); page.popupShim.prototype = { initialize: function( popup ) { this.popup = popup; }, close: function( ) { this.toggleOverlappingEmbeds( false ); }, open: function( ) { this.toggleOverlappingEmbeds( true ); }, toggleOverlappingEmbeds: function( turnOff ) { ['embed','object','applet','select'].each( function( tag ) { var elems = document.getElementsByTagName( tag ); for ( var i = 0, l = elems.length; i < l; i++ ) { var e = $(elems[i]); if ( !turnOff || ( page.util.elementsOverlap( this.popup, e ) && !e.descendantOf( this.popup ) ) ) { elems[i].style.visibility = ( turnOff ? 'hidden' : '' ); } } }.bind( this ) ); } }; /** * Class for controlling the vtbe enable toggle. */ page.VTBEToggle = Class.create(); page.VTBEToggle.prototype = { initialize: function( vtbeDiv, vtbeOnOffToolKey ) { var toggleFunc = this.toggleVTBE.bindAsEventListener( this ); this.vtbeOnOffToolKey = ( vtbeOnOffToolKey ) ? vtbeOnOffToolKey : "textbox.wysiwyg"; var vtbeDivs = null; if ( vtbeDiv ) { // autowire the specified vtbe vtbeDivs = [ vtbeDiv ]; } else { // autowire all vtbe divs on the page vtbeDivs = document.getElementsByTagName('div'); } $A(vtbeDivs).each( function( div ) { // add toggle listener for each vtbe switch if ( page.util.hasClassName(div, 'vtbeSwitch') ) { div = $(div); if ( div.up('form') ) { var anchor = div.down('a'); page.VTBEToggle.form = div.up('form'); Event.observe( anchor, 'click', toggleFunc ); // save original form data so we can detect unsaved data when toggling VTBE if ( page.VTBEToggle.form && !page.VTBEToggle.origFormData ) { page.VTBEToggle.origFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); } } } }); }, toggleVTBE: function( event ) { // Stop the event to handle firefox behavior when posting into a page. Event.stop(event); // check & warn user of modified form data if ( page.VTBEToggle.form && page.VTBEToggle.origFormData ) { var origFormData = page.VTBEToggle.origFormData; if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var currentFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); for(var i in origFormData) { if ( origFormData.hasOwnProperty( i ) ) { var origVal = origFormData[i]; var currVal = currentFormData[i]; if ( currVal && typeof currVal != 'object' && ( ( typeof currVal != 'string' && origVal != currVal ) || ( typeof currVal == 'string' && origVal.trim() != currVal.trim().replace("&nbsp;","") ) ) ) { if (!confirm( page.bundle.getString("wysiwyg.visual.editor.confirm.unsaved.changes") )) { return; } break; } } } } // get current state of vtbe, toggle it, then reload page UserDataDWRFacade.getStringPermScope( this.vtbeOnOffToolKey, function( wysiwyg ) { UserDataDWRFacade.setStringPermScope( this.vtbeOnOffToolKey, (wysiwyg == 'Y') ? 'N' : 'Y', function() { // If there's a lightbox open, give it a chance to update itself instead of reloading the window if (!window.lightbox || !lightbox.deferUpdateLightboxContent()) { window.location.reload(); } }); }.bind( this )); } }; /** * Looks through the children of the specified element for links with the specified * class name, and if it finds any, autowires lightboxes to them. If lightbox.js/effects.js * hasn't already been loaded, load it. */ page.LightboxInitializer = Class.create( { initialize: function( className, parentElement ) { this.className = className; var links = parentElement.getElementsByTagName('a'); for ( var i = 0, l = links.length; i < l; i++ ) { if ( page.util.hasClassName( links[i], className ) ) { if ( window.lightbox && window.Effect) { this._autowire(); } else { this._load(); } break; } } }, _autowire: function() { lightbox.autowireLightboxes( this.className ); }, _load: function() { var h = $$('head')[0]; var scs = ( !window.lightbox ? ['/javascript/ngui/lightbox.js'] : []).concat( !window.Effect ? ['/javascript/scriptaculous/effects.js'] : [] ); scs.each( function( sc ) { var s = new Element('script', { type: 'text/javascript', src: sc } ); h.appendChild( s ); }); this._wait(); }, _wait: function() { var count = 0; new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( window.lightbox && window.Effect ) { pe.stop(); this._autowire(); } } else // give up if it takes longer than 5s to load lightbox.js/effects.js { pe.stop(); } }.bind(this), 0.05 ); } }); page.YouTubeControls = { toggleAXControls : function( playerid, openYtControlsId, event ) { if( $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display != 'block' ) { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'block'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'block'; $( openYtControlsId ).addClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } else { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'none'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'none'; $( openYtControlsId ).removeClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } Event.stop( event ); }, formatTime : function ( sec ) { var duration = parseInt( sec, 10 ); var totalMinutes = Math.floor( duration / 60 ); var hours = Math.floor( totalMinutes / 60 ); var seconds = duration % 60; var minutes = totalMinutes % 60; if ( hours > 0 ) { return hours + ':' + this.padZero( minutes ) + ':' + this.padZero( seconds ); } else { return this.padZero( minutes ) + ':' + this.padZero( seconds ); } }, padZero : function ( number ) { if (number < 10) { return "0" + number; } else { return number; } }, updateButtonLabels : function ( ytplayer, muteBtnId, playBtnId, status ) { if( ytplayer.isMuted() ) { $( muteBtnId ).update( page.bundle.getString( 'yt.unmute' ) ); } else { $( muteBtnId ).update( page.bundle.getString( 'yt.mute' ) ); } if( status == 1 ) { $( playBtnId ).update( page.bundle.getString( 'yt.pause' ) ); } else { $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); } } }; function onYouTubePlayerReady( playerid ) { var ytplayer = $( playerid ); if( !ytplayer ) { //ie fix: grab object tag instead of embed tag var objTagId = playerid.sub( 'ytEmbed', 'ytObject' ); ytplayer = $( objTagId ); } var playBtnId = playerid.sub( 'ytEmbed', 'playVideo' ); Event.observe( $( playBtnId ), 'click', function( event ) { if( ytplayer.getPlayerState() == 1 ) { ytplayer.pauseVideo(); } else { ytplayer.playVideo(); } Event.stop( event ); } ); var stopBtnId = playerid.sub( 'ytEmbed', 'stopVideo' ); Event.observe( $( stopBtnId ), 'click', function( event ) { ytplayer.pauseVideo(); ytplayer.seekTo( "0" ); $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); Event.stop( event ); } ); var volUpBtnId = playerid.sub( 'ytEmbed', 'volUp' ); Event.observe( $( volUpBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol > 89 ) { ytplayer.setVolume( 100 ); } else { ytplayer.setVolume( currVol + 10 ); } Event.stop( event ); } ); var volDownBtnId = playerid.sub( 'ytEmbed', 'volDown' ); Event.observe( $( volDownBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol < 11 ) { ytplayer.setVolume( 0 ); } else { ytplayer.setVolume( currVol - 10 ); } Event.stop( event ); } ); var muteBtnId = playerid.sub( 'ytEmbed', 'mute' ); Event.observe( $( muteBtnId ), 'click', function( event ) { if( ytplayer.isMuted() ) { ytplayer.unMute(); } else { ytplayer.mute(); } Event.stop( event ); } ); var timeDivId = playerid.sub( 'ytEmbed', 'currentTime' ); var statusDivId = playerid.sub( 'ytEmbed', 'currentStatus'); var dtTime = new Date(); new PeriodicalExecuter( function( pe ) { //lightbox closed, so stop this PeriodicalExecuter if( !$( timeDivId ) ) { pe.stop(); return; } //update the current time $( timeDivId ).update( page.YouTubeControls.formatTime( ytplayer.getCurrentTime() ) ); //update the current status var status = ytplayer.getPlayerState(); var statusStr = page.bundle.getString( 'yt.stopped' ); switch( status ) { case -1 : statusStr = page.bundle.getString( 'yt.stopped' ); break; case 0 : statusStr = page.bundle.getString( 'yt.ended' ); break; case 1 : statusStr = page.bundle.getString( 'yt.playing' ); break; case 2 : statusStr = page.bundle.getString( 'yt.paused' ); break; case 3 : statusStr = page.bundle.getString( 'yt.buffering' ); break; case 5 : statusStr = page.bundle.getString( 'yt.cued' ); break; } page.YouTubeControls.updateButtonLabels( ytplayer, muteBtnId, playBtnId, status ); $( statusDivId ).update( statusStr ); }.bind(this), 0.5 ); //wire the open/close controls wrapper var openYtControlsId = playerid.sub( 'ytEmbed', 'openYtControls' ); Event.observe( $( openYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); var closeYtControlsId = playerid.sub( 'ytEmbed', 'closeYtControls' ); Event.observe( $( closeYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); } page.util.flyoutMenuMainButtonKeyboardHandler = function( event ) { var key = event.keyCode || event.which; if (key == Event.KEY_LEFT || key == Event.KEY_RIGHT) { var elem = Event.element( event ); var target = elem.up( 'li' ); while ( true ) { if ( key == Event.KEY_LEFT ) { target = target.previous(); } else if ( key == Event.KEY_RIGHT ) { target = target.next(); } if ( !target || page.util.hasClassName( target, 'sub' ) || page.util.hasClassName( target, 'mainButton' ) || page.util.hasClassName( target, 'mainButtonType' ) ) { break; } } if ( target ) { var menuLinks = $A( target.getElementsByTagName( 'a' ) ); if ( menuLinks && menuLinks.length > 0 ) { menuLinks[ 0 ].focus(); Event.stop( event ); } } } }; page.util.initFlyoutMenuBehaviourForListActionMenuItems = function( container ) { //Initialize accessible flyout menu behavior if ( !container ) { container = document; } var uls = document.getElementsByTagName('ul'); if (uls) { var numUls = uls.length; for (var i = 0; i < numUls; i++) { var ul = uls[i]; if (page.util.hasClassName(ul, 'nav')) { var lis = ul.getElementsByTagName('li'); if (lis) { var numLis = lis.length; for (var j = 0; j < numLis; j++) { var li = lis[j]; if (page.util.hasClassName(li, 'sub')) { new page.FlyoutMenu($(li)); } else if (page.util.hasClassName(li, 'mainButton') || page.util.hasClassName(li, 'mainButtonType')) { var menuLinks = $A($(li).getElementsByTagName('a')); if (menuLinks && menuLinks.length > 0) { Event.observe(menuLinks[0], 'keydown', page.util.flyoutMenuMainButtonKeyboardHandler.bindAsEventListener(menuLinks[0])); } } } } } } } }; page.subheaderCleaner = { init : function( entityKind ) { var allHidden = true; var firstUl = null; var className = 'portletList-img courseListing ' + entityKind; $A( document.getElementsByClassName( className ) ).each( function( ul ) { if ( !ul.down() ) { ul.previous( 'h3' ).hide(); ul.hide(); if ( !firstUl ) { firstUl = ul; } } else { allHidden = false; } }); if ( allHidden && firstUl ) { firstUl.previous( 'div' ).show(); } } }; /** * Set up any JavaScript that will always be run on load (that doesn't depend on * any application logic / localization) here. * * Please leave this at the bottom of the file so it's easy to find. * */ FastInit.addOnLoad( function() { Event.observe( document.body, "click", page.ContextMenu.closeAllContextMenus.bindAsEventListener( window ) ); Event.observe( document.body, "click", page.ContextMenu.alignArrowsInBreadcrumb.bindAsEventListener( window ) ); Event.observe( document.body, 'keydown', function(event) { var key = event.keyCode || event.which; if ( key == 116 ) // reload current page on F5 key press { Event.stop( event ); // prevent browser from reloading complete frameset if ( Prototype.Browser.IE ) { event.keyCode = 0; } (function() { window.location.reload( true ); }.defer()); return false; } }); page.util.initFlyoutMenuBehaviourForListActionMenuItems(); if ( $('breadcrumbs') ) { new page.BreadcrumbExpander($('breadcrumbs')); // If we're in the content wrapper, hide the content wrapper breadcrumb frame // so that we don't get stacked breadcrumbs. if ( window.name === 'contentFrame' ) { var parent = window.parent; if ( parent ) { var frameset = parent.document.getElementById( 'contentFrameset' ); if ( frameset ) { frameset.rows = "*,100%"; } } } } var contentPane = $('contentPanel') || $('portalPane'); if ( contentPane ) { new page.LightboxInitializer( 'lb', contentPane ); } // add a label for inventory table checkboxes, if needed $A(document.getElementsByTagName("table")).each( function( table ) { if ( !page.util.hasClassName( table, 'inventory' ) ) { return; } var rows = table.rows; if ( rows.length < 2 ) { return; } for (var r = 0, rlen = rows.length - 1; r < rlen; r++) { var cells = rows[r+1].cells; // skip header row for (var c = 0, clen = cells.length; c < clen; c++) { var cell = $(cells[c]); var inp = cell.down('input'); if ( !inp || ( inp.type != 'checkbox' && inp.type != 'radio' ) ) { // We're only looking for checkbox/radio cells to label, so move on continue; } var lbl = cell.down('label'); if (lbl && !lbl.innerHTML.blank()) { break; // skip cells that already have a non-blank label } if ( !lbl ) { // add new label to checkbox lbl = new Element('label', {htmlFor: inp.id} ); lbl.addClassName('hideoff'); cell.insert({bottom:lbl}); } var headerCell = $(cell.parentNode).down('th'); if ( !headerCell ) { break; // skip rows without header cell } // create a temporary clone of the header cell and remove any hidden divs I.e. context menus var tempCell = $(headerCell.cloneNode(true)); var tempCellDivs = tempCell.getElementsByTagName("div"); for ( var i = 0; i < tempCellDivs.length; i++ ) { var d = tempCellDivs[i]; if ( d && !$(d).visible() ) { d.remove(); } } var lblBody = tempCell.innerHTML.replace( /<\/?[^>]*>/g, '' ); // strip html tags from header lblBody = page.bundle.getString('inventoryList.select.item', lblBody); lbl.update( lblBody ); // set label to header contents (minus tags) break; } } }); //set default font sizes to display text. hack to fix IE7 default font size issue. var sizes = {1:'xx-small', 2:'x-small', 3:'small', 4:'medium', 5:'large', 6:'x-large', 7:'xx-large'}; var fonts = document.getElementsByTagName('font'); for ( var i = 0; i < fonts.length; i++ ) { var font = fonts[i]; if ( font.size ) { // Since some font elements may be manually created by end users we have to handle random // values in here. if (!font.size.startsWith("+") && !font.size.startsWith("-")) { var fsize = parseInt(font.size, 10); if (fsize > 0 && fsize < 8) { font.style.fontSize = sizes[fsize]; } } } } try { if ( top && top.document.getElementById( 'bbFrameset' ) && window.name != 'nav' ) { top.document.getElementsByName('content')[0].title = page.bundle.getString( "frameset.contentframe.title" ) + " : " + document.title; } } catch ( err ) { // When Content System is loaded within a Vista popup window, cross-site security will prevent // accesses to top.document. Ignore this error and continue } page.scrollToEnsureVisibleElement(); page.isLoaded = true; }); /** * Class for adding an insertion marker within a list */ page.ListInsertionMarker = Class.create(); page.ListInsertionMarker.prototype = { initialize: function( listId, position, key, text ) { var list = $(listId); var listElements = list.childElements(); // create a marker list item var marker = new Element('li',{'id':listId+':'+key, 'class':'clearfix separator' }); marker.update('<h3 class="item" id=""><span class="reorder editmode"><span><img alt="" src="/images/ci/icons/generic_updown.gif"></span></span><span class="line"></span><span class="text">'+text+'</span></h3>'); //marker.setStyle({ position: 'relative', minHeight: '10px', padding: '0px', background: '#CCCCCC' }); position = ( position > listElements.length ) ? listElements.length : position; // add marker to list if (listElements.length == 0) { list.insert({top:marker}); // add marker to top of empty list } else if (listElements.length == position) { list.insert({bottom:marker}); // add marker after last element } else { listElements[position].insert({before:marker}); // add marker before element at position } var select = $('reorderControls'+listId).down('select'); // add a option for the marker to the keyboard repostioning select, if any if (select) { var option = new Element('option',{'value':key}).update( '-- '+text+' --' ); if (listElements.length == 0) { select.insert({top:option}); } else if (listElements.length == position) { select.insert({bottom:option}); } else { $(select.options[position]).insert({before:option}); } } } }; page.scrollToEnsureVisibleElement = function( ) { var params = window.location.search.parseQuery(); var ensureVisibleId = params.ensureVisibleId; if ( !ensureVisibleId ) { return; } var ensureVisibleElement = $(ensureVisibleId); if ( !ensureVisibleElement ) { return; } var pos = ensureVisibleElement.cumulativeOffset(); var scrollY = pos.top; var bodyHeight = $( document.body ).getHeight(); if (scrollY + ensureVisibleElement.getHeight() < bodyHeight) { return; // element is already visible } var receipt = $('inlineReceipt_good'); if ( receipt && receipt.visible() ) // pin receipt to top { var offset = receipt.cumulativeOffset(); offset.top = 0; var w = parseInt(receipt.getStyle('width'), 10); if ( Prototype.Browser.IE ) // width in IE includes border & padding, need to remove it { var bw = parseInt(receipt.getStyle('borderLeftWidth'), 10) + parseInt(receipt.getStyle('borderRightWidth'), 10); var pw = parseInt(receipt.getStyle('paddingLeft'), 10) + parseInt(receipt.getStyle('paddingRight'), 10); w = w - bw - pw; } receipt.setStyle({ position:"fixed", zIndex:"1000", left: offset.left + "px", top: offset.top + "px", width: w + "px"}); scrollY = scrollY - 2 * receipt.getHeight(); } // scroll window to show ensureVisibleElement window.scrollTo(0, scrollY ); }; /** * Recursively walks up the frameset stack asking each window to change their * document.domain attribute in anticipation of making a cross-site scripting * call to an LMS integration. * * <p>This should only be called from popup windows, as changing the document.domain * value of a window that is going to be reused later could do surprising things. * * @param domain Domain name shared by the Learn and LMS servers. */ page.setLmsIntegrationDomain = function( domain ) { if ( '' == domain ) { return; } try { if ( parent.page.setLmsIntegrationDomain ) { parent.page.setLmsIntegrationDomain( domain ); } } catch ( err ) { /* Ignore */ } document.domain = domain; }; page.refreshTopFrame = function() { if ( window.top.nav ) { window.top.nav.location.reload(); } }; page.rewriteTaskStatusUntilDone = function( spanId, taskId) { var theSpan = $(spanId); if (theSpan) { new Ajax.Request("/webapps/blackboard/execute/getSystemTaskStatus?taskId=" + taskId, { method: 'post', onSuccess: function(transport, json) { var result = transport.responseText.evalJSON( true ); theSpan = $(spanId); // reload it just in case it was removed between the request and response if (theSpan) { theSpan.update(result.text); if (result.complete == "false") { setTimeout(function() {page.rewriteTaskStatusUntilDone(spanId, taskId);}, 3000); } } }, onFailure: function(transport, json) { theSpan = $(spanId); //reload the span as above if (theSpan) { theSpan.hide(); $(spanId+'error').show(); } } }); } }; /* * Clean up the task id which associated with the specified course, so that the inline warning does not show up again */ page.cleanTaskId = function( courseId ) { //we don't care about the result, at worse it will display again on the next page new Ajax.Request("/webapps/blackboard/execute/courseMain?action=cleanTaskId&course_id=" + courseId, { method: 'post' }); }; } /* ================================================================== *The JavaScript Validation objects to be used in form validation. * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ /** * General purpose DOM utility methods. There's probably a better place for this. * Private methods and properties have names prefixed with "_". */ var bbDomUtil = { _inputTypes: [ 'input', 'textarea', 'select', 'button' ], _maxRecursion: 500, /** * @param elName name of the form input element (the request parameter name). * @return an array of two or more elements, a single element, or null. */ getInputElementByName: function( elName ) { var elArray = this._getInputElementsByNameInSection( 'dataCollectionContainer', elName ); if ( elArray.length === 0 ) { elArray = this._getInputElementsByName( elName ); } return ( elArray.length === 0 ) ? null : ( elArray.length == 1 ? elArray[ 0 ] : elArray ); }, /* * @param sectionId the ID of any element inside a form * @return the enclosing form element or null */ getEnclosingForm: function( sectionId ) { var form = null; if ( sectionId ) { var count; var section = document.getElementById( sectionId ); while ( section ) { ++count; if ( count > this._maxRecursion ) { break; } if ( section.tagName && section.tagName.toLowerCase() == "form" ) { form = section; break; } section = section.parentNode; } } return ( !form ) ? ( document.forms.length === 0 ? null : document.forms[ 0 ] ) : form; }, /** * Adds some additional processing to account for an IE bug * @param id the ID of an element */ getElementById: function( id ) { var el = $( id ); try { if ( el && /msie|internet explorer/i.test( navigator.userAgent ) && el.attributes.id && el.attributes.id.value != id && document.all ) { // IE usually returns item at 0 for ( var i = 0; i < document.all[ id ].length; ++i ) { if ( document.all[ id ][ i ].attributes.id && document.all[ id ][ i ].attributes.id.value == id ) { return $( document.all[ id ][ i ] ); } } } } catch ( e ) { // Ignore all exceptions } return el; }, syncCheckboxToInput: function( checkboxElement, inputElement ) { var checkbox = $( checkboxElement ); var input = $( inputElement ); if ( checkbox && input ) { var checkIfNotEmpty = function( ) { checkbox.checked = ( input.value.strip?input.value.strip( ):input.value )?true:false; } input.observe( 'change', checkIfNotEmpty ); input.observe( 'blur', checkIfNotEmpty ); } }, /** * @param sectionId the ID of an element that restricts the scope of elements. Cannot be null. * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name in the scope of the specified parent element. */ _getInputElementsByNameInSection: function( sectionId, elName ) { var result = []; if ( sectionId ) { var section = document.getElementById( sectionId ); if ( section ) { for ( var i = 0; i < this._inputTypes.length; ++i ) { var elements = section.getElementsByTagName( this._inputTypes[ i ] ); for ( var j = 0; j < elements.length; ++j ) { if ( elements[ j ].name == elName ) { result.push( elements[ j ] ); } } } } } return result; }, /** * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name. */ _getInputElementsByName: function( elName ) { var result = []; var elArray = document.getElementsByName( elName ); var formName = null; for ( var i = 0; i < elArray.length; ++i ) { if ( elArray[ i ].tagName.match( /^(input|select|textarea|button)$/i ) ) { if ( elArray[ i ].form !== null ) { if ( !formName ) { formName = elArray[ i ].form.name; } else if ( formName != elArray[ i ] .form.name ) { // Ignore elements that don't belong to the same form as the first one found. continue; } result.push( elArray[ i ] ); } } } return result; } }; /************************************************************ * Object formCheckList. Use this object to hold form objects * to be validated and perform form validation ************************************************************/ var addElement, removeElement, removeAllElements, getElement, checkForm, CheckGroup; var formCheckList = new formCheckList(); var dblSubmit = false; var skipValidation=false; function formCheckList() { this.checkList = []; this.addElement = addElement; this.removeElement = removeElement; this.removeAllElements = removeAllElements; this.getElement = getElement; this.check = checkForm; } function addElement(element) { if ( typeof element.group != 'undefined' ) { for ( var i=0; i < this.checkList.length;i++ ) { if ( this.checkList[i].name == element.group ) { this.checkList[i].addElement(element); return; } } var grp = new CheckGroup(element); grp.addElement(element); this.checkList[this.checkList.length] = grp; return; } this.checkList[this.checkList.length] = element; } function removeElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { this.checkList.splice(i, 1); } } } function getElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { return this.checkList[i]; } } } function removeAllElements() { var valSize = this.checkList.length; this.checkList.splice(0, valSize); } function checkForm() { if ( typeof(window.invalidAnswersTmp)!='undefined' ) { window.invalidAnswersTmp=[]; } var valid =true; for ( var i=0;i<this.checkList.length;i++ ) { if ( this.checkList[i].canValidate && !this.checkList[i].canValidate() ) { // cannot validate the input so skip it and continue onto the next input continue; } if ( !this.checkList[i].check() ) { if ( this.checkList[i].answerChk ) { valid=false; } else { return false; } } } return valid; } ///////////////////End of object formCheckList//////////////// /************************************************************ * Object: inputText. Use this object to validate text input in * your form (for input type == text|password|textarea|BUT NOT FILE!!! (FILE IS READ-ONLY)) ************************************************************/ function inputText(h) { if (h.id) { this.element = bbDomUtil.getElementById( h.id ); } else { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; } this.shouldFocus = h.shouldFocus; if ( h.shouldFocus === undefined ) { this.shouldFocus = true; } if ( this.shouldFocus ) { this.formatElement = 'bbDomUtil.getInputElementByName("'+h.display_format+'")'; this.focusElement = h.focus_element; // override element for focus in case of error } this.fieldName = h.name; this.disable_script = h.disable_script; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.minlength = h.minlength; this.maxlength = h.maxlength; this.trim = h.trim; this.regex = h.regex; this.regex_msg = h.regex_msg; this.regex_match = h.regex_match; this.verify = h.verify; this.check = inputTextCheck; this.valid_number = h.valid_number; this.min_value = h.min_value; this.max_value = h.max_value; this.nonnegative = h.nonnegative; this.valid_float = h.valid_float; this.allow_negative_float = h.allow_negative_float; this.valid_percent = h.valid_percent; this.allow_negative_percent = h.allow_negative_percent; this.valid_efloat = h.valid_efloat; // float with optional exponent this.valid_email = h.valid_email; this.valid_url = h.valid_url; this.required_url = h.required_url; this.invalid_chars = h.invalid_chars; // eg: /[%&#<>=+,]/g this.cmp_element = 'bbDomUtil.getInputElementByName("'+h.cmp_field+'")'; this.cmp_ref_label = h.cmp_ref_label; this.xor = h.xor; this.cmp_required = h.cmp_required; this.activeX = h.activeX; // synch activeX to hidden field before submission this.isHtmlDoc = h.isHtmlDoc; // is portfolio with body and html this.img_check = h.img_check; this.empty_value_warn = h.empty_value_warn; this.valid_system_role_id = h.valid_system_role_id; this.required = h.required; this.canValidate = h.canValidate; // callback function to determine whether the inputtext should be validated if (h.ref_and_regex === undefined) { this.ref_and_regex = true; } else { this.ref_and_regex = h.ref_and_regex; } if ( document.all && document.getElementById(h.name+'_ax') ) { this.axobj = document.getElementById(h.name+'_ax'); } // Add here anything you need to validate } function isAnEmptyVtbe(val) { // Different browsers populate an 'empty' VTBE with a different blank line - look for any of the known combinations and ignore them. // NOTE: Changes to this method need to be reflected in AssessmentDisplayControl.isAnEmptyVtbe return ( !val || !val.replace(/<p><\/p>/gi,'').trim() || !val.replace(/<br \/>/gi,'').trim() || !val.replace(/&nbsp;/gi,'').trim()); } // Do actual check here function inputTextCheck() { if ( this.shouldFocus === undefined ) { this.shouldFocus = true; } var element = eval(this.element); var cmp_element = eval(this.cmp_element); if ( element ) { // don't validate disabled elements if (element.disabled) { return true; } var focusElement = element; if ( this.axobj ) { focusElement = this.axobj; } this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.custom_alert_cmp = (typeof this.custom_alert_cmp != 'undefined') ? this.custom_alert_cmp : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( isAnEmptyVtbe(val) ) { val=''; } var trimmedVal, numVal, isValidNum, re; if ( this.activeX && isEmptyWysiwyg(element) ) { element.value = ''; val = ''; } if ( typeof eval(this.formatElement) != "undefined" && eval(this.formatElement) !== null ) { //Check if it is a mathml where; if ( /<APPLET ID="(\d+)" NAME="(\w+)"/.test(element.value) ) { if ( getRadioValue(eval(this.formatElement)) == 'P' ) { if ( !confirm(JS_RESOURCES.getString('validation.plain_text.confirm')) ) { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } } if ( this.trim ) { val = val.trim(); element.value = val; } //Remove leading & trailing spaces if needed if ( typeof cmp_element != 'undefined' ) { if ( this.xor ) { if ( val.trim()=='' ^ cmp_element.value.trim()=='' ) { if ( val.trim()=='' ) { alert( this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } } else { alert(this.custom_alert_cmp ? this.custom_alert_cmp : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.cmp_ref_label, this.ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } } return false; } } } if ( this.disable_script ) { if ( typeof eval(this.formatElement) == "undefined" || getRadioValue(eval(this.formatElement)) != 'P' ) { re = /<\s*script/ig; var re1 = /<\s*\/\s*script\s*>/ig; val = val.replace(re,'<disabled-script'); val = val.replace(re1,'</disabled-script>'); var re2 = /href\s*=\s*(['"]*)\s*javascript\s*:/ig; val = val.replace(re2,"href=$1disabled-javascript:"); element.value = val; } } if ( this.valid_number ) { trimmedVal = val.trim(); //added this check bcoz for numeric fields which are not required, this function was not working if ( trimmedVal!="" ) { var numLocalizer = new NumberLocalizer(); if ( numLocalizer === undefined ) { numVal = parseInt(trimmedVal, 10); } else { numVal = numLocalizer.parseNumber( trimmedVal ); } isValidNum = !isNaN(numVal); if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if (this.nonnegative && numVal<0) { alert(JS_RESOURCES.getFormattedString('validation.negative', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if ( ( (this.min_value || this.min_value === 0) && numVal < this.min_value ) || ( this.max_value && ( numVal > this.max_value ) ) ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_value', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_float ) { trimmedVal = val.trim(); var numFormat; if ( this.allow_negative_float ) { numFormat = LOCALE_SETTINGS.getString('float.allow.negative.format'); } else { numFormat = LOCALE_SETTINGS.getString('float.format'); } if ( numFormat ) { //hand parse for l10n re = new RegExp( numFormat ); isValidNum = trimmedVal.search( re ) === 0; } else { //try to use platform native (non-localized) numVal = parseFloat(trimmedVal); isValidNum = !isNaN(numVal); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test(trimmedVal.substring(numVal.toString().length)); } } if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_percent ) { if ( this.allow_negative_percent ) { if ( !isValidNegativePercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.allow_negtive.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { if ( !isPercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_efloat ) { if ( !isNumeric(val) ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { focusElement = (this.focusElement ? this.focusElement : this.element); if ( focusElement.focus ) { safeFocus( focusElement ); } } return false; } } if ( this.valid_email ) { if ( val.trim() == '' ) { if ( confirm(JS_RESOURCES.getString('warning.email')) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { re = /^(['`a-zA-Z0-9_+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; if ( !re.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.email', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } // confirms via javascript pop-up if input field is empty; // user can click Ok to proceed or cancel to go back with the element focused // the message that pops up is the message passed in with ref_label if ( this.empty_value_warn ) { if ( val.trim() == '' ) { if ( confirm(this.ref_label) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } var extra = 0; if (navigator.appName=="Netscape" && parseInt(navigator.appVersion, 10 )>=5) { var index = val.indexOf('\n'); while(index != -1) { extra += 1; index = val.indexOf('\n',index+1); } } if ( this.maxlength < val.length + extra ) { var newlength = val.length + extra; if ( (newlength - this.maxlength) > 1 ) { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.plural', [this.ref_label,this.maxlength,(newlength-this.maxlength)])); } else { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.singular', [this.ref_label,this.maxlength])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } // required_url, unlike valid_url, flags empty strings as invalid URLs. if ( this.required_url ) { if ( val.trim() == '' ) { alert(JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } if ( !isValidUrl(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_url ) { if ( val.trim()=='' ) { return true; } var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; if ( !oRegExp.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( typeof(this.regex) == 'string' ) { this.regex=eval(this.regex); } if ( (typeof(this.regex) == 'object' || typeof(this.regex) == 'function') && val.trim() != '' ) { re =this.regex; if ( this.regex_match && val.search(re) == -1 ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } if ( !this.regex_match && re.test(val) ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.invalid_chars ) { // if string was passed, convert to regular expression object if( Object.isString( this.invalid_chars ) ) { var stringToParse = this.invalid_chars; var firstSlashPos = stringToParse.indexOf("/"); var lastSlashPos = stringToParse.lastIndexOf("/"); var pattern = stringToParse.substring( ++firstSlashPos, lastSlashPos ); var modifier = stringToParse.substring( ++lastSlashPos, stringToParse.length ); this.invalid_chars = new RegExp( pattern, modifier ); } var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.verify ) { var chk_field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'_chk')); var field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'')); if ( chk_field.value != val ) { alert(JS_RESOURCES.getFormattedString('validation.mismatch', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( chk_field ); } return false; } // Encode password if ( element.type == 'password' ) { element.value = element.value.trim(); if ( element.value != '' ) { element.value = field.value = chk_field.value = calcMD5(element.value); } else { alert(JS_RESOURCES.getString('validation.password')); element.value = field.value =''; if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.cmp_required && element.value.trim()!='' ) { if ( !cmp_element.value.trim().length ) { alert(JS_RESOURCES.getFormattedString('validation.cmp_field.rejected', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } return false; } } if ( this.img_check ) { return image_check(element); } //AS-102122, if a image tag without ALT properties <img src="1.jpg">, add a null ALT for it. <img src="1.jpg" alt=""> imgTag_check(element,0); // System role ids cannot begin with "BB" as of 7.2; such ids are reserved for solely for Blackboard use // Checks field to see if string begins with "BB" case-insensitive and if so, alert the user if ( this.valid_system_role_id ) { if ( element.value.indexOf('BB') === 0 || element.value.indexOf('bb') === 0 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.system_role.reserve', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } else { return true; } } } return true; } ///////////////////End of object inputText/////////////////// //check ALT propertity for <img tag, if there isn't ALT propertiry, add ALT="" for this tag function imgTag_check(element , start){ var imgStart = element.value.indexOf("<img",start); // img: <img src=... > if (imgStart > -1 ){ var end = element.value.indexOf(">",imgStart); if (end == -1 ){ return; } var imgData = element.value.substring(imgStart, end+1); // <img src=... > if(imgData.indexOf("alt") == -1){ imgData = "<img alt=\"\" " + imgData.substring(4); element.value = element.value.substring(0,imgStart) + imgData + element.value.substring(end+1); } imgTag_check(element, end); } } function image_check(element) { var ext = element.value.match(/.*\.(.*)/); ext = ext ? ext[1] :''; var re = /gif|jpeg|png|tif|bmp|jpg/i; if ( ! re.test(ext) && element.value ) { if ( ! confirm(JS_RESOURCES.getFormattedString('validation.image_type', [ext])) ) { element.focus(); return false; } } return true; } /************************************************************ * Object: inputDate. Use this object to validate that the * associated date fields are not empty ************************************************************/ var inputDateCheck; function inputDate(h) { this.element_mm = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mm")'; this.element_dd = 'bbDomUtil.getInputElementByName("'+h.name+'_0_dd")'; this.element_yyyy = 'bbDomUtil.getInputElementByName("'+h.name+'_0_yyyy")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputDateCheck; // Add here anything you need to validate } // Do actual check here function inputDateCheck() { var element_mm = eval(this.element_mm); var element_dd = eval(this.element_dd); var element_yyyy = eval(this.element_yyyy); if ( typeof element_mm != 'undefined' && element_dd !='undefined' && element_yyyy !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = ( this.ref_label ) ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_mm.name]); if ( element_mm.selectedIndex == -1 || element_dd.selectedIndex == -1 || element_yyyy == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.date.required', [this.ref_label])); if ( element_mm.selectedIndex == -1 ) { element_mm.focus(); } else if ( element_dd.selectedIndex == -1 ) { element_dd.focus(); } else { element_yyyy.focus(); } return false; } } return true; } ///////////////////End of object inputDate/////////////////// /************************************************************ * Object: inputTime. Use this object to validate that the * associated time fields are not empty ************************************************************/ var inputTimeCheck; function inputTime(h) { this.element_hh = 'bbDomUtil.getInputElementByName("'+h.name+'_0_hh")'; this.element_mi = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mi")'; this.element_am = 'bbDomUtil.getInputElementByName("'+h.name+'_0_am")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputTimeCheck; // Add here anything you need to validate } // Do actual check here function inputTimeCheck() { var element_hh = eval(this.element_hh); var element_mi = eval(this.element_mi); var element_am = eval(this.element_am); if ( typeof element_hh != 'undefined' && element_mi !='undefined' && element_am !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_hh.name]); if ( element_hh.selectedIndex == -1 || element_mi.selectedIndex == -1 || element_am == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.time.required', [this.ref_label])); if ( element_hh.selectedIndex == -1 ) { element_hh.focus(); } else if ( element_mi.selectedIndex == -1 ) { element_mi.focus(); } else { element_am.focus(); } return false; } } return true; } ///////////////////End of object inputTime/////////////////// /************************************************************ * Object: inputSelect. Use this object to validate that the * associated select field is not empty ************************************************************/ var inputSelectCheck; function inputSelect(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.minSelected = h.minSelected; this.maxSelected = h.maxSelected; this.title = h.title; this.isMultiSelect = h.isMultiSelect; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputSelectCheck; // Add here anything you need to validate } // Do actual check here function inputSelectCheck() { var element = eval(this.element); var checked = 0; if ( typeof element != 'undefined' ) { if ( this.isMultiSelect) { if( this.minSelected ) { //check that at least minSelected number of options is selected //bsomala checked = element.options.length; if(checked < this.minSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.minItems', [this.minSelected])); element.focus(); return false; } } checked = 0; if ( this.maxSelected ) { checked = element.options.length; if(checked > this.maxSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.maxItems', [this.maxSelected])); element.focus(); return false; } } } else { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); if ( (element.selectedIndex == -1) || (element.options[element.selectedIndex].value == "") ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); element.focus(); return false; } } } return true; } ///////////////////End of object inputSelect/////////////////// /************************************************************ * Object: inputFile. Use this object to validate that the file upload is not empty. IMPORTANT: file type is READ ONLY ************************************************************/ var inputFileCheck; function inputFile(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.invalid_chars = h.invalid_chars; this.minlength = h.minlength; this.img_check = h.img_check; this.check = inputFileCheck; // Add here anything you need to validate } // Do actual check here function inputFileCheck() { var element = eval(this.element); if ( typeof element != 'undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( this.invalid_chars ) { var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); shiftFocus( element, false); return false; } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } return false; } if ( this.img_check ) { return image_check(element); } } return true; } ///////////////////End of object inputFile/////////////////// /************************************************************ * Object: Check_EventTime. Use this object to make sure * that the end time is not before the start time, confirm pastdue time, * check duration of the event. *************************************************************/ var Check_EventTime_check; function Check_EventTime(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check; } function Check_EventTime_check() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( (document.forms[0].restrict_start && document.forms[0].restrict_end)|| (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end) ) { if ( (document.forms[0].restrict_start && document.forms[0].restrict_end && document.forms[0].restrict_start.checked && document.forms[0].restrict_end.checked) || (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end && document.forms[1].restrict_start.checked && document.forms[1].restrict_end.checked) ) { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } } else { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end && end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /* * SCR 17696 * This validation check should be used in the date widgets instead of the earlier one * as that has the chackboxes names hardcoded in them. The existing date wodgets * use it, but going ahead this should be the used. It helps specially when there are * multiple date widgets on the same page. */ var Check_EventTime_check_multiple; function Check_EventTime_multiple(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check_multiple; } function Check_EventTime_check_multiple() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( restr && cmp_restr ) { //This block has been aded due to SCR 17696. //Reason : if this method is directly called from a JSP page which is not a part of // the existing date widgets, and the parameters of stsrt date, end date, start checkbox and // end checkbox are passed, and additionally the page has another if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /*We always need time in our favorite format */ function sql_datetime(dat) { var year = dat.getFullYear(); var mon = dat.getMonth(); mon++; mon = (mon<10)?'0'+mon:mon; var day = dat.getDate(); day = (day<10)?'0'+day:day; var hh = dat.getHours(); hh = (hh<10)?'0'+hh:hh; var mi = dat.getMinutes(); mi = (mi<10)?'0'+mi:mi; var ss = dat.getSeconds(); ss = (ss<10)?'0'+ss:ss; return year+'-'+mon+'-'+day+' '+hh+':'+mi+':'+ss; } ///////////////////End of object Check_EventTime///////////// /******************************************************************************** * Object DoubleSubmit(): * Use this object to prevent multiple times form submission * Second argument is wait image source; first argument is image name (string) or * instance of ImageSwapper object created for submit button (if it has rollovers) *********************************************************************************/ var checkDoubleSubmit; // Prevent multiple form submission function DoubleSubmit() { this.submitted = 0; this.check = checkDoubleSubmit; } function checkDoubleSubmit() { if ( this.submitted > 0 ) { alert (JS_RESOURCES.getString('notification.submit')); return false; } else { this.submitted++; } return true; } ///////////////////End of Object DoubleSubmit()////////////////// /******************************************************************************** * Object RadioCheckBox(): * Use this object to make sure that at least one item is selected from the group of * radio/checkbox groups. Just attach this code to checkbox/radio group (refered below as 'element'): * formCheckList.addElement(new RadioCheckBox({name:'element or subgroup name',group:'group name',ref_label:"group label in alerts"})); *********************************************************************************/ var groupAddElement, checkGroupChecked, groupIsChecked; // Constructor function function RadioCheckBox(h) { return h; } function CheckGroup(h) { this.name = h.group; this.ref_label = h.ref_label; this.elements = []; this.addElement = groupAddElement; this.check = checkGroupChecked; } function groupAddElement(h) { this.elements[this.elements.length] = h.name; } function checkGroupChecked() { var list = this.elements; var chk = false; for ( var i = 0; i < list.length; i++ ) { if ( groupIsChecked(list[i]) ) { return true; } } var msg = null; var group = bbDomUtil.getInputElementByName(list[0]); group = (typeof group[0] != 'undefined') ? group[0]:group; if ( group.type == "radio" ) { msg = JS_RESOURCES.getFormattedString('validation.radio.required', [this.ref_label]); } else { msg = JS_RESOURCES.getFormattedString('validation.option.required', [this.ref_label]); } alert(msg); group.focus(); return false; } function groupIsChecked(groupName) { var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var checked = false; if ( typeof group != 'undefined' ) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( group[i].checked ) { checked = true; return checked; } } } else { if ( group.checked ) { checked = true; return checked; } } } return checked; } ///////////////////End of Object CheckGroup()//////////////////// /******************************************************************************** * Object selector(): * Use this object to make sure that at least one item is available in the Selector element (see PickerElement.java) * For use when Selector is marked Required: * formCheckList.addElement(new CheckSelector({name:'element or subgroup name',ref_label:"group label in alerts"})); *********************************************************************************/ var selectorCheck, selectorElementAvailable; // Constructor function function selector(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.required = h.required; this.check = selectorCheck; // Add here anything you need to validate } // Do actual check here function selectorCheck() { if(this.required) { var isAvailable = selectorElementAvailable(this.fieldName); this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element.name]); if ( !isAvailable ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } } return true; } function selectorElementAvailable(groupName) { // we need at least one "Remove" checkbox to be present and unchecked (one element is added but not removed) var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var available = false; if ( typeof group != 'undefined' && group !== null) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( !group[i].checked ) { available = true; return available; } } } else { if ( !group.checked ) { available = true; return available; } } } return available; } ///////////////////End of Object CheckSelector()//////////////////// //////////////// Start some useful generic functions //////////// /* Function ltrim(): Remove leading spaces in strings: Usage:trimmedString = originalString.ltrim(); */ function ltrim() { return this.replace( /^\s+/g,''); } String.prototype.ltrim = ltrim; /* Function rtrim(): Remove trailing spaces in strings: Usage:trimmedString = originalString.rtrim(); */ function rtrim() { return this.replace( /\s+$/g,''); } String.prototype.rtrim = rtrim; /* Function trim(): Remove leading and trailing spaces in strings: Usage:trimmedString = originalString.trim(); */ function trim() { return this.rtrim().ltrim(); } String.prototype.trim = trim; /* Function invalidChars(): Returns an array of illegal chars Usage: var listOfChars = myStringToSearch.invalidChars(regularExpression); regularExpression = /[illegal chars]/g; Sample re = /[! &^$#]/g */ function invalidChars (re) { var chrs = this.match(re); if ( chrs ) { for ( var j=0;j<chrs.length;j++ ) { if ( chrs[j]===' ' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.space'); } else if ( chrs[j]==',' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.comma'); } else if ( chrs[j]=='\\' ) { chrs[j]='\\\\'; } } } return chrs; } String.prototype.invalidChars = invalidChars; /** Function getRadioValue(): Returns selected value for group of radio buttons * Usage: var selectedValue = getRadioValue(radio); radio - reference to radio group */ function getRadioValue(radio) { for ( var i=0;i< radio.length;i++ ) { if ( radio[i].checked ) { return radio[i].value; } } } /** Function isEmptyWysiwyg(): Checks WYSIWYG control for value */ function isEmptyWysiwyg(field) { // first remove any HTML tags from the value, then check if it's empty (all spaces or &nbsp;s) // explicitly adding the unicode non-breaking space and line feed/break since IE and safari // don't seem to include them in \s var EMPTY_REGEXP = /^(\s|\u00A0|\u2028|\u2029|&nbsp;)*$/i; // Input is not empty if it contains one of the following tags: img/object/embed var SPECIALTAGS = /(<\s*(img)|(object)|(embed)|(hr)|(input)|(applet))/i; if ( field && typeof(field.value) == 'string' && field.value ) { var notags = field.value.replace(/<.*?>/g,''); var result = EMPTY_REGEXP.test(notags); return ( result && !SPECIALTAGS.test(field.value) ); } return true; } /** Function isValidUrl(): Checks if given string is in the general URL format */ var VALID_URL_REGEXP = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; function isValidUrl(string) { return( VALID_URL_REGEXP.test(string) ); } /** Numeric */ var EFLOAT_REGEXP = LOCALE_SETTINGS.getString('efloat.format'); var THOUSANDS_SEP = LOCALE_SETTINGS.getString('thousand.sep.format'); /*rejectThousandSep: if true then the presence of the thousands-separator is an error (non-numeric) * e.g. we don't accept it for point, since point/score is rarely in thousands range. */ function isNumeric(string, rejectThousandSep ) { string = string.trim(); if ( rejectThousandSep !== null && rejectThousandSep ) { var hasThousands = ( string.search( new RegExp( THOUSANDS_SEP ) ) !== -1 ) ; if (hasThousands) { return false; } } string = string.replace(new RegExp(THOUSANDS_SEP, 'g'), ''); if ( string.search( new RegExp(EFLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return !isNaN(floatValue); } return false; } /** Float between 0 and 100 */ var FLOAT_REGEXP = LOCALE_SETTINGS.getString('float.format'); function isPercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= 0 && floatValue <= 100 ); } return false; } /** Float between -100 and 100 */ var FLOAT_ALLOW_NEGATIVE_REGEXP = LOCALE_SETTINGS.getString('float.allow.negative.format'); function isValidNegativePercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_ALLOW_NEGATIVE_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= -100 && floatValue <= 100 ); } return false; } /*Function submitForm() Call this function to validate and submit form @param form the name of the form or the DOM object representing the form. If null or undefined, submits first form on page. */ function submitForm(form) { if ( validateForm() ) { if (form) { if ( typeof( form ) == "string" ) { document.forms[ form ].submit(); } else { form.submit(); } } else { document.forms[0].submit(); } } } /* Sort numerical array in ascending order */ function numericalArraySortAscending(a, b) { return (a-b); } /*Function validateForm() * Call this function onSubmit inside <form> tag */ function validateForm() { // Set textarea value to VTBE contents if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if ( skipValidation ) { return true; } /* Validate form */ var valid = formCheckList.check(); var i; /*Check for invalid answers if any present */ var invalidAnswersArray = []; var invAns = window.invalidAnswers; if ( typeof( invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } invAns = window.invalidAnswersTmp; if ( typeof(invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } var stringArg = ''; if ( invalidAnswersArray.length > 0 ) { invalidAnswersArray.sort(numericalArraySortAscending); var lastIndex = invalidAnswersArray.length - 1; for ( var x = 0; x < invalidAnswersArray.length; x++ ) { stringArg += invalidAnswersArray[x]; if ( x < lastIndex ) { if ( ( (x+1) % 10 ) === 0 ) { stringArg += ",\n"; } else { stringArg += ","; } } } } if ( stringArg !== '' && valid ) { var msgKey; if ( !assessment.backtrackProhibited ) { msgKey = 'assessment.incomplete.confirm'; } else { msgKey = 'assessment.incomplete.confirm.backtrackProhibited'; } if (assessment.isSurvey) { msgKey = msgKey + ".survey"; } if ( !confirm( JS_RESOURCES.getFormattedString( msgKey, [stringArg] ) ) ) { valid = false; // User decided not to submit } else { assessment.userReallyWantsToSubmit = true; } window.invalidAnswersTmp = []; // Clearing up } /* Go back to placeholders if validation failed (valid == false) */ if ( ismath && !valid ) { api.setMathmlBoxes(); } /* If everything is OK and ready to go,check that the form was not already submitted */ if ( valid && dblSubmit ) { valid = dblSubmit.check(); } return valid; } /*Function boxSelector() * Use this function to select, unselect or invert selection for specified checkbox groups * Call: boxSelector(['name1','name2',...,'namen'],action), here action is 'select', or 'unselect', or 'invert' */ function boxSelector(list,action) { action = (action == 'select') ? true : (action == 'unselect') ? false : action; for ( var i=0;i<list.length;i++ ) { var group = 'bbDomUtil.getInputElementByName("'+list[i]+'")'; if ( typeof (group = eval(group)) != 'undefined' ) { var j; if ( action == 'invert' ) { for ( j=0;j<group.length;j++ ) { group[j].checked = !group[j].checked; } } else { for ( j=0;j<group.length;j++ ) { group[j].checked = action; } } } } } function setHidden (from,to) { var hide = eval(to); hide.value = from.value; } ////////////////////////////////////////////////////////////////// /** * Check_Answer object was added by request specified in mscr 524 * to provide validation to student answers * Variable invalidAnswers has to be added to the page where assessment is submitted * It should contain the list of unfinished questions excluding question(s) on current page * Check_Answer object will perform final validation and display all unfinished questions in confirm box */ var invalidAnswers = []; // the java code will populate this array on final QbyQ page /** Object constructor for answers walidation * */ var Check_Answer_check; function Check_Answer (vobj) { if ( typeof(window.invalidAnswersTmp)=='undefined' ) { window.invalidAnswersTmp=[]; } this.form = 'document.forms[0]'; this.element = 'bbDomUtil.getInputElementByName("'+vobj.name+'")'; this.name = vobj.name; this.answerChk = true; //Check_Answer is special check, it makes a list of unfinished questions and always return true this.ref_label = vobj.ref_label; this.check = Check_Answer_check; } //Test if at least one member of radio or checkbox group is selected function isChecked(grp) { if (typeof(grp.length) != 'undefined') { for ( var i=0;i< grp.length;i++ ) { if ( grp[i].checked ) { return true; } } return false; } else { return grp.checked; } } function Check_Answer_check() { //create form element object var el = eval(this.element); //Extract question type information from element name var qtype = /^(\w+)-/.exec(this.name); if ( !qtype ) { qtype = /^([^_]+)_/.exec(this.name); } qtype = qtype[1]; if ( qtype == 'ma' ) { qtype = /-\d+$/.test(this.name) ? 'mat' : 'ma'; } // Perform actual check-up if ( qtype == 'tf' || qtype == 'mc' || qtype == 'ma' || qtype == 'eo' ) { if ( !isChecked(el) ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]=this.ref_label; } } else if ( qtype == 'ord' || qtype == 'mat' ) { if ( el.selectedIndex === 0 && this.ref_label != window.invalidAnswersTmp[window.invalidAnswersTmp.length-1] ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'fitb' || qtype == 'essay' || qtype == 'num' || qtype == 'calc' || qtype == 'hs' || qtype == 'jumbled_sentence' || qtype == 'fib_plus' || qtype == 'quiz_bowl' ) { //remove isEmptyWysiwyg for these question types, since they should allow some chars as < > var val = el.value; if ( isAnEmptyVtbe(val) ) { val=''; } if ( val.trim().length < 1 ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'file' ) { var haveFile = false; var hiddenField = eval(this.form + '.elements["' + this.name + '-override"]'); if ( hiddenField && hiddenField.value == "true" ) { haveFile = true; } el = eval(this.form + '.elements["' + this.name + '_attachmentType"]'); if ( !haveFile && el && el.value !== "" ) { haveFile = true; } if ( !haveFile ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } // eliminate duplicates // TODO: think of a better way to do this if ( window.invalidAnswersTmp.length > 0 ) { var tmpArray = []; var tmpObject = {}; for ( var i = 0; i < window.invalidAnswersTmp.length; ++i ) { if ( !tmpObject[window.invalidAnswersTmp[i]] ) { tmpObject[window.invalidAnswersTmp[i]] = true; tmpArray[tmpArray.length] = window.invalidAnswersTmp[i]; } } window.invalidAnswersTmp = tmpArray; } return true; //Always true, we can make decision later through confirm } // wrapper function for focus() calls function shiftFocus(el, isVTBE) { if ( el ) { if ( isVTBE && editors && editors[el.name] && typeof(editors[el.name].focusEditor) == 'function' ) { editors[el.name].focusEditor(); } else if ( !el.disabled && !el.readOnly && el.type != "hidden" ) { safeFocus( el ); } } return; } function safeFocus( e ) { try { if ( e && e.focus ) { e.focus(); } } catch (er) { //Ignore, element is hidden in IE and can't be focused. } } /** * A validator that checks to see that a certain radio button in a group is * selected. This is intended to be used for conditional validation -- * validators that only apply when a certain radio button selection is made. * Note that if there are no selected values, this validator will return false * when checked. * - name - radio button group to check * - value - the radio button value to check for selection */ var RadioButtonValueValidator_check; function RadioButtonValueValidator( name, value ) { this.element = bbDomUtil.getInputElementByName(name); this.value = value; this.check = RadioButtonValueValidator_check; } function RadioButtonValueValidator_check() { for ( var i = 0; i < this.element.length; i++ ) { if ( this.element[i].value == this.value ) { return this.element[i].checked; } } return false; } /** * A validator that performs a logical, short-circuit OR on its two arguments. */ var OrValidator_check; function OrValidator( first, second ) { this.first = first; this.second = second; this.check = OrValidator_check; } function OrValidator_check() { return this.first.check() || this.second.check(); } /* This is a sample code that has to be added to every corresponding form element in take assessment page, where you perform question validation for completness; ref_lablel value is used to refer to element, name is field full name: <script type="text/javascript"> formCheckList.addElement(new Check_Answer({ref_label:"Question 3",name:"tf-ans-_190_1"})); </script> */ var nonceUtil = {}; /** * Finds the form element holding the nonceId * @param formId is the id of the form the nonce element exists within */ nonceUtil.getNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce') }; nonceUtil.getAjaxNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce.ajax') }; nonceUtil.getNonceIdEx = function(formId, elName) { var nonceId = null; if(formId && $s(formId) ) { nonceId= $s(formId).elements[elName]; } if( !nonceId ) { // take a cheap shot at retreiving the first nonceId on the page nonceId = document.getElementsByName( elName )[0]; // Note : nonceId can be null if the form does not have a nonce element declared. This should be a sign of a xsrf loophole } return nonceId; }; /** * Finds the form element holding the nonceId * @param formElementId is the id of a form element on the page. It is expected that the nonceId corresponds * to the same form. */ nonceUtil.getNonceIdByFormElementId = function(formElementId) { var nonceId = null; if( formElementId && $s(formElementId) ) { var elementFormId = bbDomUtil.getEnclosingForm(formElementId); nonceId = $s(elementFormId).elements['blackboard.platform.security.NonceUtil.nonce']; } return nonceId; }; nonceUtil.getNonceIdValue = function(formId) { var nonceId = nonceUtil.getNonceId(formId); return nonceId ? nonceId.value : ""; }; /** * Copies the nonceid from one form on the page to another form. Useful when using flyout forms. */ nonceUtil.copyNonceId = function( sourceFormId, targetFormId ) { var nonceId = nonceUtil.getNonceIdValue( sourceFormId ); var targetElem = new Element( 'input', { type: 'hidden', name: 'blackboard.platform.security.NonceUtil.nonce', value: nonceId } ); $( targetFormId ).appendChild( targetElem ); }; /** * Updates the form's nonceId based on the JSON response from an AjaxSecureForm */ nonceUtil.updateFromAjaxRequest = function( headerJSON ) { if ( headerJSON ) { var nonceId = nonceUtil.getNonceId(); if( nonceId ) { nonceId.value = headerJSON.nonceId; } } }; var NumberLocalizer = Class.create(); NumberLocalizer.prototype = { initialize : function() { var thousandsSeparator = LOCALE_SETTINGS[ 'number_format.thousands_sep' ]; var decimalSeparator = LOCALE_SETTINGS[ 'number_format.decimal_point' ]; this.thousandsSeparator = ( thousandsSeparator === null ) ? ',' : thousandsSeparator; this.needToConvertThousands = ( this.thousandsSeparator !== ',' ) ? true : false; this.decimalSeparator = ( decimalSeparator === null ) ? '.' : decimalSeparator; this.needToConvertDecimal = ( this.decimalSeparator !== '.' ) ? true : false; }, // Takes a number that is unlocalized and converts it to // the current locale format. formatNumber : function( f ) { var result; result = f.toString(); // Replace and thousands delimiter with a token so we can // replace it with the final symbol after we replace the decimal symbol. if ( this.needToConvertThousands ) { result = result.replace( ',', '[comma]' ); } if ( this.needToConvertDecimal ) { result = result.replace( '.', this.decimalSeparator ); } if ( this.needToConvertThousands ) { result = result.replace( '[comma]', this.thousandsSeparator ); } return result; }, // Takes a number that is in the current locale format and // converts it back to an unlocalized number. parseNumber : function( num ) { var result; result = num.toString(); // Parsing string to return as a float, so we don't need the thousands // separator anymore. result = result.replace( this.thousandsSeparator, '' ); if ( this.needToConvertDecimal ) { result = result.replace( this.decimalSeparator, '.' ); } return parseFloat( result ); } };var AccessibleSelect = {}; /** * Wire up the accessible event listeners to any <select>s on the page that have an onchange listener already */ AccessibleSelect.initializePage = function() { var selects = document.getElementsByTagName("select"); for ( var i = 0; i < selects.length; i++ ) { var currentSelect = selects[i]; if ( currentSelect.onchange ) { currentSelect.changed = false; currentSelect.onfocus = AccessibleSelect.onfocus; currentSelect.onkeydown = AccessibleSelect.onkeydown; currentSelect.onclick = AccessibleSelect.onclick; currentSelect.onchange = AccessibleSelect.createOnchange( currentSelect.onchange ); } } }; /** * Functor that creates an onchange function which if the <select> has actually been changed, will call the * specified callback (i.e. the original onchange function ) */ AccessibleSelect.createOnchange = function( callback ) { return function( theElement ) { var theSelect; if ( theElement && theElement.value ) { theSelect = theElement; } else { theSelect = this; } if (theSelect.changed) { // bind "theSelect" as the "this" for the callback. callback.apply(theSelect); return true; } else { return false; } }; }; /** * Event listener called when the <select> is clicked */ AccessibleSelect.onclick = function() { this.changed = true; // If the select size is greater than 0, then the onchange event occurs before the onclick event // and the "changed" attribute is false when the onchange event listener method runs and the select // element's onchange method does not get called. Therefore, we are going to call it here. if( this.size > 0 ) { this.onchange(this); } }; /** * Event listener called when the <select> gains focus */ AccessibleSelect.onfocus = function() { this.initValue = this.value; return true; }; /** * Event listener called when a key is pressed in the <select>. */ AccessibleSelect.onkeydown = function(e) { var theEvent; var keyCodeTab = "9"; var keyCodeEnter = "13"; var keyCodeEsc = "27"; if (e) { theEvent = e; } else { theEvent = event; } var largeSize = (this.size > 0); if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && ( largeSize || this.value != this.initValue) ) { this.initValue = this.value; this.changed = true; this.onchange(this); // returning true logically denotes that the change has been made, but more importantly it will make sure the default // behavior (what would have happened without the onkeydown event) is honored. For example, user pressing 'tab' key will // move the focus to the next element on the page return true; } else if (theEvent.keyCode == keyCodeEsc) { this.value = this.initValue; return false; } else { this.changed = false; } return true; }; // This script does not work for Safari. See AS-110404, AS-110426 if (!/webkit|khtml/i.test(navigator.userAgent)) { //When the page is loaded, initialize the select boxes if ( window.addEventListener) { window.addEventListener('load', AccessibleSelect.initializePage, false); } else if ( window.attachEvent ) { window.attachEvent('onload', AccessibleSelect.initializePage); } }var popup = { /** * Launches a new popup window. This method is used for an random popup that * might be necessary (preview window for example). If you are launching a * "picker" window you should use launchPicker() instead. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). This is required. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param resizable whether the new window should be resizable. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @param showStatus whether the new window should be show the status bar. If * not provided a default value will be used. Do not provide unless * your specific requirements dictate it. * @param scrolling whether the new window should allow scrolling. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @return a reference to the popup window generated */ launch: function( url, name, width, height, resizable, showStatus, scrolling ) { if ( typeof( width ) == 'undefined' ) { // for RTL, the width needs to be wider, to prevent vertical line overlapping in the popup if ( page.util.isRTL() ) { width = 890; } else { width = 825; // wide enough to prevent a horizontal scrollbar in most cases } } if ( typeof( height ) == 'undefined' ) { height = 500; } if ( typeof( resizable ) == 'undefined' ) { resizable = 'yes'; } if ( typeof( showStatus ) == 'undefined' ) { showStatus = 'yes'; } if ( typeof( scrolling ) == 'undefined' ) { scrolling = 'yes'; } // figure out placement of the new window we will open. If the desired size // of the new window is bigger than the screen size then make the window // smaller and put it far left. Otherwise, center the window on screen. var screenX = 0; if ( screen.width <= width ) { width = screen.width; // new window should not be wider than the screen } else { screenX = ( screen.width - width ) / 2; // center on the screen } var popup = window.open( url, name, 'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrolling + ',status=' + showStatus + ',top=20' + ',screenY=20' + ',screenX=' + screenX + ',left=' + screenX ); if ( popup ) { popup.focus(); if ( !popup.opener ) { popup.opener = self; } window.top.name = 'bbWin'; } return popup; }, /** * Launches a new "picker" window. * <p> * At the moment the only difference between this method and launch (besides * the inability to specify some advanced and rarely used options) is that * this method will default the {@code name} value if not provided. However, * you should still use this method if you are launching a "picker" type * window as additional differences may be introduced in the future. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). If not provided a default value will be used. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @return a reference to the picker window generated */ launchPicker: function( url, name, width, height ) { if ( typeof( name ) == 'undefined' ) { name = 'picker'; } return popup.launch( url, name, width, height ); }, /** * Launches a new Content System folder "picker" window. * * @param element a reference to the form element into which the value chosen * in the picker should be set. If not provided, the value will not be * set. * @return a reference to the picker window generated */ launchCsDirectoryPicker: function( element ) { var picker = popup.launchPicker( "/webapps/cmsmain/folderpicker" ); if ( picker !== null ) { if ( ( typeof( element ) != 'undefined' ) && ( element !== null ) ) { picker.opener.inputEntryURLToSet = document.getElementById( element ); } picker.opener.returnFullURL = false; } return picker; } }; var BrowserSpecific = { registerListeners: function() { if( Prototype.Browser.IE ) { var inputs = $A(document.getElementsByTagName('input')); //Enter key submit handling added only for IE browser. if( inputs ) { inputs.each( function( input ) { if(input.type === 'text' && !page.util.hasClassName(input,'noFormSubmitIE')) { Event.observe( input, "keypress", this.checkEnterKeyToSubmit.bindAsEventListener( this, input ) ); } }.bind( this ) ); } } }, checkEnterKeyToSubmit: function(event, input) { //if generated character code is equal to ascii 13 (if enter key) if(event.keyCode == 13 && input.form) { var submitButtons = $(input.form).getInputs('submit'); if(submitButtons && submitButtons.size() > 0) { submitButtons.first().click(); } Event.stop(event); } else { return true; } }, // Fix FireFox bug which converts absolute links pasted into a VTBE into relative ones which // start with a variable number of "../". // https://bugzilla.mozilla.org/show_bug.cgi?id=613517 handleFirefoxPastedLinksBug: function( baseUrl, vtbeText ) { if ( !baseUrl || !vtbeText ) { return vtbeText; } if ( Prototype.Browser.Gecko ) { if( !$( baseUrl.empty() ) && !$( vtbeText.empty() ) ) { //e.g. extract out "http://localhost:80" from "http://localhost:80/webapps/Bb-wiki-BBLEARN/" // port is optional var absoluteUrlPrefix = baseUrl.match(/https?:[\d]*\/\/[^\/]+/); // e.g."../../../bbcswebdav/xid-2202_1" into "http://localhost:80/bbcswebdav/xid-2202_1" vtbeText = vtbeText.replace(/(\.\.\/)+(sessions|bbcswebdav|courses|@@)/g, absoluteUrlPrefix + "/" + "$2"); } } return vtbeText; }, disableEnterKeyInTextBoxes: function (document) { var inputs = $A(document.getElementsByTagName('input')); if( inputs ) { inputs.each ( function( input ) { //must add special className for IE textboxes if( Prototype.Browser.IE ) { input.addClassName( 'noFormSubmitIE' ); } Event.observe( input, 'keypress', this.disableEnterKey ); }.bind( this ) ); } }, disableEnterKey: function( event ) { if( event.keyCode != Event.KEY_RETURN ) { return; } Event.stop( event ); return; } };

/** * Inserts the given HTML content into the extra content cell of the standard * title bar. * * @param content The HTML content to place */ function insertTitlebarContent(content) { var contentCell = document.getElementById("_titlebarExtraContent"); contentCell.innerHTML = content; }

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Declare an object to which we can add real functions. */ if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; /** * Set an alternative error handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setErrorHandler = function(handler) { dwr.engine._errorHandler = handler; }; /** * Set an alternative warning handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setWarningHandler = function(handler) { dwr.engine._warningHandler = handler; }; /** * Setter for the text/html handler - what happens if a DWR request gets an HTML * reply rather than the expected Javascript. Often due to login timeout */ dwr.engine.setTextHtmlHandler = function(handler) { dwr.engine._textHtmlHandler = handler; }; /** * Set a default timeout value for all calls. 0 (the default) turns timeouts off. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setTimeout = function(timeout) { dwr.engine._timeout = timeout; }; /** * The Pre-Hook is called before any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPreHook = function(handler) { dwr.engine._preHook = handler; }; /** * The Post-Hook is called after any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPostHook = function(handler) { dwr.engine._postHook = handler; }; /** * Custom headers for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setHeaders = function(headers) { dwr.engine._headers = headers; }; /** * Custom parameters for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setParameters = function(parameters) { dwr.engine._parameters = parameters; }; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.XMLHttpRequest = 1; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.IFrame = 2; /** XHR remoting type constant. See dwr.engine.setRpcType() */ dwr.engine.ScriptTag = 3; /** * Set the preferred remoting type. * @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setRpcType = function(newType) { if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) { dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" }); return; } dwr.engine._rpcType = newType; }; /** * Which HTTP method do we use to send results? Must be one of "GET" or "POST". * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setHttpMethod = function(httpMethod) { if (httpMethod != "GET" && httpMethod != "POST") { dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" }); return; } dwr.engine._httpMethod = httpMethod; }; /** * Ensure that remote calls happen in the order in which they were sent? (Default: false) * @see getahead.org/dwr/browser/engine/ordering */ dwr.engine.setOrdered = function(ordered) { dwr.engine._ordered = ordered; }; /** * Do we ask the XHR object to be asynchronous? (Default: true) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setAsync = function(async) { dwr.engine._async = async; }; /** * Does DWR poll the server for updates? (Default: false) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setActiveReverseAjax = function(activeReverseAjax) { if (activeReverseAjax) { // Bail if we are already started if (dwr.engine._activeReverseAjax) return; dwr.engine._activeReverseAjax = true; dwr.engine._poll(); } else { // Can we cancel an existing request? if (dwr.engine._activeReverseAjax && dwr.engine._pollReq) dwr.engine._pollReq.abort(); dwr.engine._activeReverseAjax = false; } // TODO: in iframe mode, if we start, stop, start then the second start may // well kick off a second iframe while the first is still about to return // we should cope with this but we don't }; /** * The default message handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultErrorHandler = function(message, ex) { dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true); if (message == null || message == "") alert("A server error has occured."); // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message); else alert(message); }; /** * The default warning handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultWarningHandler = function(message, ex) { dwr.engine._debug(message); }; /** * For reduced latency you can group several remote calls together using a batch. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.beginBatch = function() { if (dwr.engine._batch) { dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" }); return; } dwr.engine._batch = dwr.engine._createBatch(); }; /** * Finished grouping a set of remote calls together. Go and execute them all. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.endBatch = function(options) { var batch = dwr.engine._batch; if (batch == null) { dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" }); return; } dwr.engine._batch = null; if (batch.map.callCount == 0) return; // The hooks need to be merged carefully to preserve ordering if (options) dwr.engine._mergeBatch(batch, options); // In ordered mode, we don't send unless the list of sent items is empty if (dwr.engine._ordered && dwr.engine._batchesLength != 0) { dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch; } else { dwr.engine._sendData(batch); } }; /** @deprecated */ dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); }; dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); }; dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); }; dwr.engine.setPollType = function() { dwr.engine._debug("Manually setting the Poll Type is not supported"); }; //============================================================================== // Only private stuff below here //============================================================================== /** The original page id sent from the server */ dwr.engine._origScriptSessionId = "4ABEE663B901D1E345890B1E956DBDF5"; /** The session cookie name */ dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID /** Is GET enabled for the benefit of Safari? */ dwr.engine._allowGetForSafariButMakeForgeryEasier = "false"; /** The script prefix to strip in the case of scriptTagProtection. */ dwr.engine._scriptTagProtection = "throw 'allowScriptTagRemoting is false.';"; /** The default path to the DWR servlet */ dwr.engine._defaultPath = "/webapps/assessment/dwr_open"; /** Do we use XHR for reverse ajax because we are not streaming? */ dwr.engine._pollWithXhr = "false"; /** The read page id that we calculate */ dwr.engine._scriptSessionId = null; /** The function that we use to fetch/calculate a session id */ dwr.engine._getScriptSessionId = function() { if (dwr.engine._scriptSessionId == null) { dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000); } return dwr.engine._scriptSessionId; }; /** A function to call if something fails. */ dwr.engine._errorHandler = dwr.engine.defaultErrorHandler; /** For debugging when something unexplained happens. */ dwr.engine._warningHandler = dwr.engine.defaultWarningHandler; /** A function to be called before requests are marshalled. Can be null. */ dwr.engine._preHook = null; /** A function to be called after replies are received. Can be null. */ dwr.engine._postHook = null; /** An map of the batches that we have sent and are awaiting a reply on. */ dwr.engine._batches = {}; /** A count of the number of outstanding batches. Should be == to _batches.length unless prototype has messed things up */ dwr.engine._batchesLength = 0; /** In ordered mode, the array of batches waiting to be sent */ dwr.engine._batchQueue = []; /** What is the default rpc type */ dwr.engine._rpcType = dwr.engine.XMLHttpRequest; /** What is the default remoting method (ie GET or POST) */ dwr.engine._httpMethod = "POST"; /** Do we attempt to ensure that calls happen in the order in which they were sent? */ dwr.engine._ordered = false; /** Do we make the calls async? */ dwr.engine._async = true; /** The current batch (if we are in batch mode) */ dwr.engine._batch = null; /** The global timeout */ dwr.engine._timeout = 0; /** ActiveX objects to use when we want to convert an xml string into a DOM object. */ dwr.engine._DOMDocument = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; /** The ActiveX objects to use when we want to do an XMLHttpRequest call. */ dwr.engine._XMLHTTP = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; /** Are we doing comet or polling? */ dwr.engine._activeReverseAjax = false; /** The iframe that we are using to poll */ dwr.engine._outstandingIFrames = []; /** The xhr object that we are using to poll */ dwr.engine._pollReq = null; /** How many milliseconds between internal comet polls */ dwr.engine._pollCometInterval = 200; /** How many times have we re-tried to poll? */ dwr.engine._pollRetries = 0; dwr.engine._maxPollRetries = 0; /** Do we do a document.reload if we get a text/html reply? */ dwr.engine._textHtmlHandler = null; /** If you wish to send custom headers with every request */ dwr.engine._headers = null; /** If you wish to send extra custom request parameters with each request */ dwr.engine._parameters = null; /** Undocumented interceptors - do not use */ dwr.engine._postSeperator = "\n"; dwr.engine._defaultInterceptor = function(data) { return data; }; dwr.engine._urlRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._contentRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._replyRewriteHandler = dwr.engine._defaultInterceptor; /** Batch ids allow us to know which batch the server is answering */ dwr.engine._nextBatchId = 0; /** A list of the properties that need merging from calls to a batch */ dwr.engine._propnames = [ "rpcType", "httpMethod", "async", "timeout", "errorHandler", "warningHandler", "textHtmlHandler" ]; /** Do we stream, or can be hacked to do so? */ dwr.engine._partialResponseNo = 0; dwr.engine._partialResponseYes = 1; dwr.engine._partialResponseFlush = 2; /** Is this page in the process of unloading? */ dwr.engine._unloading = false; /** * @private Send a request. Called by the Javascript interface stub * @param path part of URL after the host and before the exec bit without leading or trailing /s * @param scriptName The class to execute * @param methodName The method on said class to execute * @param func The callback function to which any returned data should be passed * if this is null, any returned data will be ignored * @param vararg_params The parameters to pass to the above class */ dwr.engine._execute = function(path, scriptName, methodName, vararg_params) { var singleShot = false; if (dwr.engine._batch == null) { dwr.engine.beginBatch(); singleShot = true; } var batch = dwr.engine._batch; // To make them easy to manipulate we copy the arguments into an args array var args = []; for (var i = 0; i < arguments.length - 3; i++) { args[i] = arguments[i + 3]; } // All the paths MUST be to the same servlet if (batch.path == null) { batch.path = path; } else { if (batch.path != path) { dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." }); return; } } // From the other params, work out which is the function (or object with // call meta-data) and which is the call parameters var callData; var lastArg = args[args.length - 1]; if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() }; else callData = args.pop(); // Merge from the callData into the batch dwr.engine._mergeBatch(batch, callData); batch.handlers[batch.map.callCount] = { exceptionHandler:callData.exceptionHandler, callback:callData.callback }; // Copy to the map the things that need serializing var prefix = "c" + batch.map.callCount + "-"; batch.map[prefix + "scriptName"] = scriptName; batch.map[prefix + "methodName"] = methodName; batch.map[prefix + "id"] = batch.map.callCount; for (i = 0; i < args.length; i++) { dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i); } // Now we have finished remembering the call, we incr the call count batch.map.callCount++; if (singleShot) dwr.engine.endBatch(); }; /** @private Poll the server to see if there is any data waiting */ dwr.engine._poll = function() { if (!dwr.engine._activeReverseAjax) return; var batch = dwr.engine._createBatch(); batch.map.id = 0; // TODO: Do we need this?? batch.map.callCount = 1; batch.isPoll = true; if (dwr.engine._pollWithXhr == "true") { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } else { if (navigator.userAgent.indexOf("Gecko/") != -1) { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseYes; } else { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } } batch.httpMethod = "POST"; batch.async = true; batch.timeout = 0; batch.path = dwr.engine._defaultPath; batch.preHooks = []; batch.postHooks = []; batch.errorHandler = dwr.engine._pollErrorHandler; batch.warningHandler = dwr.engine._pollErrorHandler; batch.handlers[0] = { callback:function(pause) { dwr.engine._pollRetries = 0; setTimeout(dwr.engine._poll, pause); } }; // Send the data dwr.engine._sendData(batch); if (batch.rpcType == dwr.engine.XMLHttpRequest && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._checkCometPoll(); } }; /** Try to recover from polling errors */ dwr.engine._pollErrorHandler = function(msg, ex) { // if anything goes wrong then just silently try again (up to 3x) after 10s dwr.engine._pollRetries++; dwr.engine._debug("Reverse Ajax poll failed (pollRetries=" + dwr.engine._pollRetries + "): " + ex.name + " : " + ex.message); if (dwr.engine._pollRetries < dwr.engine._maxPollRetries) { setTimeout(dwr.engine._poll, 10000); } else { dwr.engine._activeReverseAjax = false; dwr.engine._debug("Giving up."); } }; /** @private Generate a new standard batch */ dwr.engine._createBatch = function() { var batch = { map:{ callCount:0, page:window.location.pathname + window.location.search, httpSessionId:dwr.engine._getJSessionId(), scriptSessionId:dwr.engine._getScriptSessionId() }, charsProcessed:0, paramCount:0, parameters:{}, headers:{}, isPoll:false, handlers:{}, preHooks:[], postHooks:[], rpcType:dwr.engine._rpcType, httpMethod:dwr.engine._httpMethod, async:dwr.engine._async, timeout:dwr.engine._timeout, errorHandler:dwr.engine._errorHandler, warningHandler:dwr.engine._warningHandler, textHtmlHandler:dwr.engine._textHtmlHandler }; if (dwr.engine._preHook) batch.preHooks.push(dwr.engine._preHook); if (dwr.engine._postHook) batch.postHooks.push(dwr.engine._postHook); var propname, data; if (dwr.engine._headers) { for (propname in dwr.engine._headers) { data = dwr.engine._headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (dwr.engine._parameters) { for (propname in dwr.engine._parameters) { data = dwr.engine._parameters[propname]; if (typeof data != "function") batch.parameters[propname] = data; } } return batch; }; /** @private Take further options and merge them into */ dwr.engine._mergeBatch = function(batch, overrides) { var propname, data; for (var i = 0; i < dwr.engine._propnames.length; i++) { propname = dwr.engine._propnames[i]; if (overrides[propname] != null) batch[propname] = overrides[propname]; } if (overrides.preHook != null) batch.preHooks.unshift(overrides.preHook); if (overrides.postHook != null) batch.postHooks.push(overrides.postHook); if (overrides.headers) { for (propname in overrides.headers) { data = overrides.headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (overrides.parameters) { for (propname in overrides.parameters) { data = overrides.parameters[propname]; if (typeof data != "function") batch.map["p-" + propname] = "" + data; } } }; /** @private What is our session id? */ dwr.engine._getJSessionId = function() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length); if (cookie.indexOf(dwr.engine._sessionCookieName + "=") == 0) { return cookie.substring(dwr.engine._sessionCookieName.length + 1, cookie.length); } } return ""; }; /** @private Check for reverse Ajax activity */ dwr.engine._checkCometPoll = function() { for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { var text = ""; var iframe = dwr.engine._outstandingIFrames[i]; try { text = dwr.engine._getTextFromCometIFrame(iframe); } catch (ex) { dwr.engine._handleWarning(iframe.batch, ex); } if (text != "") dwr.engine._processCometResponse(text, iframe.batch); } if (dwr.engine._pollReq) { var req = dwr.engine._pollReq; var text = req.responseText; if (text != null) dwr.engine._processCometResponse(text, req.batch); } // If the poll resources are still there, come back again if (dwr.engine._outstandingIFrames.length > 0 || dwr.engine._pollReq) { setTimeout(dwr.engine._checkCometPoll, dwr.engine._pollCometInterval); } }; /** @private Extract the whole (executed an all) text from the current iframe */ dwr.engine._getTextFromCometIFrame = function(frameEle) { var body = frameEle.contentWindow.document.body; if (body == null) return ""; var text = body.innerHTML; // We need to prevent IE from stripping line feeds if (text.indexOf("<PRE>") == 0 || text.indexOf("<pre>") == 0) { text = text.substring(5, text.length - 7); } return text; }; /** @private Some more text might have come in, test and execute the new stuff */ dwr.engine._processCometResponse = function(response, batch) { if (batch.charsProcessed == response.length) return; if (response.length == 0) { batch.charsProcessed = 0; return; } var firstStartTag = response.indexOf("//#DWR-START#", batch.charsProcessed); if (firstStartTag == -1) { // dwr.engine._debug("No start tag (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed) + "'"); batch.charsProcessed = response.length; return; } // if (firstStartTag > 0) { // dwr.engine._debug("Start tag not at start (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed, firstStartTag) + "'"); // } var lastEndTag = response.lastIndexOf("//#DWR-END#"); if (lastEndTag == -1) { // dwr.engine._debug("No end tag. unchanged charsProcessed=" + batch.charsProcessed); return; } // Skip the end tag too for next time, remembering CR and LF if (response.charCodeAt(lastEndTag + 11) == 13 && response.charCodeAt(lastEndTag + 12) == 10) { batch.charsProcessed = lastEndTag + 13; } else { batch.charsProcessed = lastEndTag + 11; } var exec = response.substring(firstStartTag + 13, lastEndTag); dwr.engine._receivedBatch = batch; dwr.engine._eval(exec); dwr.engine._receivedBatch = null; }; /** @private Actually send the block of data in the batch object. */ dwr.engine._sendData = function(batch) { batch.map.batchId = dwr.engine._nextBatchId; dwr.engine._nextBatchId++; dwr.engine._batches[batch.map.batchId] = batch; dwr.engine._batchesLength++; batch.completed = false; for (var i = 0; i < batch.preHooks.length; i++) { batch.preHooks[i](); } batch.preHooks = null; // Set a timeout if (batch.timeout && batch.timeout != 0) { batch.timeoutId = setTimeout(function() { dwr.engine._abortRequest(batch); }, batch.timeout); } // Get setup for XMLHttpRequest if possible if (batch.rpcType == dwr.engine.XMLHttpRequest) { if (window.XMLHttpRequest) { batch.req = new XMLHttpRequest(); } // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) { batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP); } } var prop, request; if (batch.req) { // Proceed using XMLHttpRequest if (batch.async) { batch.req.onreadystatechange = function() { if (typeof dwr != 'undefined') dwr.engine._stateChange(batch); }; } // If we're polling, record this for monitoring if (batch.isPoll) { dwr.engine._pollReq = batch.req; // In IE XHR is an ActiveX control so you can't augment it like this if (!(document.all && !window.opera)) batch.req.batch = batch; } // Workaround for Safari 1.x POST bug var indexSafari = navigator.userAgent.indexOf("Safari/"); if (indexSafari >= 0) { var version = navigator.userAgent.substring(indexSafari + 7); if (parseInt(version, 10) < 400) { if (dwr.engine._allowGetForSafariButMakeForgeryEasier == "true") batch.httpMethod = "GET"; else dwr.engine._handleWarning(batch, { name:"dwr.engine.oldSafari", message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier." }); } } batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); try { batch.req.open(batch.httpMethod, request.url, batch.async); try { for (prop in batch.headers) { var value = batch.headers[prop]; if (typeof value == "string") batch.req.setRequestHeader(prop, value); } if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain"); } catch (ex) { dwr.engine._handleWarning(batch, ex); } batch.req.send(request.body); if (!batch.async) dwr.engine._stateChange(batch); } catch (ex) { dwr.engine._handleError(batch, ex); } } else if (batch.rpcType != dwr.engine.ScriptTag) { var idname = batch.isPoll ? "dwr-if-poll-" + batch.map.batchId : "dwr-if-" + batch.map.batchId; // Removed htmlfile implementation. Don't expect it to return before v3 batch.div = document.createElement("div"); // Add the div to the document first, otherwise IE 6 will ignore onload handler. document.body.appendChild(batch.div); batch.div.innerHTML = "<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='" + idname + "' name='" + idname + "' onload='dwr.engine._iframeLoadingComplete (" + batch.map.batchId + ");'></iframe>"; batch.document = document; batch.iframe = batch.document.getElementById(idname); batch.iframe.batch = batch; batch.mode = batch.isPoll ? dwr.engine._ModeHtmlPoll : dwr.engine._ModeHtmlCall; if (batch.isPoll) dwr.engine._outstandingIFrames.push(batch.iframe); request = dwr.engine._constructRequest(batch); if (batch.httpMethod == "GET") { batch.iframe.setAttribute("src", request.url); } else { batch.form = batch.document.createElement("form"); batch.form.setAttribute("id", "dwr-form"); batch.form.setAttribute("action", request.url); batch.form.setAttribute("style", "display:none;"); batch.form.setAttribute("target", idname); batch.form.target = idname; batch.form.setAttribute("method", batch.httpMethod); for (prop in batch.map) { var value = batch.map[prop]; if (typeof value != "function") { var formInput = batch.document.createElement("input"); formInput.setAttribute("type", "hidden"); formInput.setAttribute("name", prop); formInput.setAttribute("value", value); batch.form.appendChild(formInput); } } batch.document.body.appendChild(batch.form); batch.form.submit(); } } else { batch.httpMethod = "GET"; // There's no such thing as ScriptTag using POST batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); batch.script = document.createElement("script"); batch.script.id = "dwr-st-" + batch.map["c0-id"]; batch.script.src = request.url; document.body.appendChild(batch.script); } }; dwr.engine._ModePlainCall = "/call/plaincall/"; dwr.engine._ModeHtmlCall = "/call/htmlcall/"; dwr.engine._ModePlainPoll = "/call/plainpoll/"; dwr.engine._ModeHtmlPoll = "/call/htmlpoll/"; /** @private Work out what the URL should look like */ dwr.engine._constructRequest = function(batch) { // A quick string to help people that use web log analysers var request = { url:batch.path + batch.mode, body:null }; if (batch.isPoll == true) { request.url += "ReverseAjax.dwr"; } else if (batch.map.callCount == 1) { request.url += batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr"; } else { request.url += "Multiple." + batch.map.callCount + ".dwr"; } // Play nice with url re-writing var sessionMatch = location.href.match(/jsessionid=([^?]+)/); if (sessionMatch != null) { request.url += ";jsessionid=" + sessionMatch[1]; } var prop; if (batch.httpMethod == "GET") { // Some browsers (Opera/Safari2) seem to fail to convert the callCount value // to a string in the loop below so we do it manually here. batch.map.callCount = "" + batch.map.callCount; request.url += "?"; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.url += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&"; } } request.url = request.url.substring(0, request.url.length - 1); } else { // PERFORMANCE: for iframe mode this is thrown away. request.body = ""; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = []; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { buf.push(prop + "=" + batch.map[prop] + dwr.engine._postSeperator); } } request.body = buf.join(""); } else { // Use string concat on other browsers (fastest) for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.body += prop + "=" + batch.map[prop] + dwr.engine._postSeperator; } } } request.body = dwr.engine._contentRewriteHandler(request.body); } request.url = dwr.engine._urlRewriteHandler(request.url); return request; }; /** @private Called by XMLHttpRequest to indicate that something has happened */ dwr.engine._stateChange = function(batch) { var toEval; if (batch.completed) { dwr.engine._debug("Error: _stateChange() with batch.completed"); return; } var req = batch.req; try { if (req.readyState != 4) return; } catch (ex) { dwr.engine._handleWarning(batch, ex); // It's broken - clear up and forget this call dwr.engine._clearUp(batch); return; } if (dwr.engine._unloading) { dwr.engine._debug("Ignoring reply from server as page is unloading."); return; } try { var reply = req.responseText; reply = dwr.engine._replyRewriteHandler(reply); var status = req.status; // causes Mozilla to except on page moves if (reply == null || reply == "") { dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data received from server" }); } else if (status != 200) { dwr.engine._handleError(batch, { name:"dwr.engine.http." + status, message:req.statusText }); } else { var contentType = req.getResponseHeader("Content-Type"); if (!contentType.match(/^text\/plain/) && !contentType.match(/^text\/javascript/)) { if (contentType.match(/^text\/html/) && typeof batch.textHtmlHandler == "function") { batch.textHtmlHandler({ status:status, responseText:reply, contentType:contentType }); } else { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidMimeType", message:"Invalid content type: '" + contentType + "'" }); } } else { // Comet replies might have already partially executed if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._processCometResponse(reply, batch); } else { if (reply.search("//#DWR") == -1) { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" }); } else { toEval = reply; } } } } } catch (ex) { dwr.engine._handleWarning(batch, ex); } dwr.engine._callPostHooks(batch); // Outside of the try/catch so errors propogate normally: dwr.engine._receivedBatch = batch; if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, ""); dwr.engine._eval(toEval); dwr.engine._receivedBatch = null; dwr.engine._validateBatch(batch); if (!batch.completed) dwr.engine._clearUp(batch); }; /** * @private This function is invoked when a batch reply is received. * It checks that there is a response for every call in the batch. Otherwise, * an error will be signaled (a call without a response indicates that the * server failed to send complete batch response). */ dwr.engine._validateBatch = function(batch) { // If some call left unreplied, report an error. if (!batch.completed) { for (var i = 0; i < batch.map.callCount; i++) { if (batch.handlers[i] != null) { dwr.engine._handleWarning(batch, { name:"dwr.engine.incompleteReply", message:"Incomplete reply from server" }); break; } } } } /** @private Called from iframe onload, check batch using batch-id */ dwr.engine._iframeLoadingComplete = function(batchId) { // dwr.engine._checkCometPoll(); var batch = dwr.engine._batches[batchId]; if (batch) dwr.engine._validateBatch(batch); } /** @private Called by the server: Execute a callback */ dwr.engine._remoteHandleCallback = function(batchId, callId, reply) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true); return; } // Error handlers inside here indicate an error that is nothing to do // with DWR so we handle them differently. try { var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (!handlers) { dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true); } else if (typeof handlers.callback == "function") handlers.callback(reply); } catch (ex) { dwr.engine._handleError(batch, ex); } }; /** @private Called by the server: Handle an exception for a call */ dwr.engine._remoteHandleException = function(batchId, callId, ex) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; } var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; } if (ex.message == undefined) ex.message = ""; if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex); else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); }; /** @private Called by the server: The whole batch is broken */ dwr.engine._remoteHandleBatchException = function(ex, batchId) { var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: Reverse ajax should not be used */ dwr.engine._remotePollCometDisabled = function(ex, batchId) { dwr.engine.setActiveReverseAjax(false); var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: An IFrame reply is about to start */ dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) { if (iframe != null) dwr.engine._receivedBatch = iframe.batch; dwr.engine._callPostHooks(dwr.engine._receivedBatch); }; /** @private Called by the server: An IFrame reply is just completing */ dwr.engine._remoteEndIFrameResponse = function(batchId) { dwr.engine._clearUp(dwr.engine._receivedBatch); dwr.engine._receivedBatch = null; }; /** @private This is a hack to make the context be this window */ dwr.engine._eval = function(script) { if (script == null) return null; if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; } // dwr.engine._debug("Exec: [" + script + "]", true); return eval(script); }; /** @private Called as a result of a request timeout */ dwr.engine._abortRequest = function(batch) { if (batch && !batch.completed) { dwr.engine._clearUp(batch); if (batch.req) batch.req.abort(); dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" }); } }; /** @private call all the post hooks for a batch */ dwr.engine._callPostHooks = function(batch) { if (batch.postHooks) { for (var i = 0; i < batch.postHooks.length; i++) { batch.postHooks[i](); } batch.postHooks = null; } }; /** @private A call has finished by whatever means and we need to shut it all down. */ dwr.engine._clearUp = function(batch) { if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; } if (batch.completed) { dwr.engine._debug("Warning: Double complete", true); return; } // IFrame tidyup if (batch.div) batch.div.parentNode.removeChild(batch.div); if (batch.iframe) { // If this is a poll frame then stop comet polling for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { if (dwr.engine._outstandingIFrames[i] == batch.iframe) { dwr.engine._outstandingIFrames.splice(i, 1); } } batch.iframe.parentNode.removeChild(batch.iframe); } if (batch.form) batch.form.parentNode.removeChild(batch.form); // XHR tidyup: avoid IE handles increase if (batch.req) { // If this is a poll frame then stop comet polling if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null; delete batch.req; } // Timeout tidyup if (batch.timeoutId) { clearTimeout(batch.timeoutId); delete batch.timeoutId; } if (batch.map && (batch.map.batchId || batch.map.batchId == 0)) { delete dwr.engine._batches[batch.map.batchId]; dwr.engine._batchesLength--; } batch.completed = true; // If there is anything on the queue waiting to go out, then send it. // We don't need to check for ordered mode, here because when ordered mode // gets turned off, we still process *waiting* batches in an ordered way. if (dwr.engine._batchQueue.length != 0) { var sendbatch = dwr.engine._batchQueue.shift(); dwr.engine._sendData(sendbatch); } }; /** @private Abort any XHRs in progress at page unload (solves zombie socket problems in IE). */ dwr.engine._unloader = function() { dwr.engine._unloading = true; // Empty queue of waiting ordered requests dwr.engine._batchQueue.length = 0; // Abort any ongoing XHRs and clear their batches for (var batchId in dwr.engine._batches) { var batch = dwr.engine._batches[batchId]; // Only process objects that look like batches (avoid prototype additions!) if (batch && batch.map) { if (batch.req) { batch.req.abort(); } dwr.engine._clearUp(batch); } } }; // Now register the unload handler if (window.addEventListener) window.addEventListener('unload', dwr.engine._unloader, false); else if (window.attachEvent) window.attachEvent('onunload', dwr.engine._unloader); /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleError = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleWarning = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex); else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** * @private Marshall a data item * @param batch A map of variables to how they have been marshalled * @param referto An array of already marshalled variables to prevent recurrsion * @param data The data to be marshalled * @param name The name of the data being marshalled */ dwr.engine._serializeAll = function(batch, referto, data, name) { if (data == null) { batch.map[name] = "null:null"; return; } switch (typeof data) { case "boolean": batch.map[name] = "boolean:" + data; break; case "number": batch.map[name] = "number:" + data; break; case "string": batch.map[name] = "string:" + encodeURIComponent(data); break; case "object": if (data instanceof String) batch.map[name] = "String:" + encodeURIComponent(data); else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data; else if (data instanceof Number) batch.map[name] = "Number:" + data; else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime(); else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name); else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name); break; case "function": // We just ignore functions. break; default: dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." }); batch.map[name] = "default:" + data; break; } }; /** @private Have we already converted this object? */ dwr.engine._lookup = function(referto, data, name) { var lookup; // Can't use a map: getahead.org/ajax/javascript-gotchas for (var i = 0; i < referto.length; i++) { if (referto[i].data == data) { lookup = referto[i]; break; } } if (lookup) return "reference:" + lookup.name; referto.push({ data:data, name:name }); return null; }; /** @private Marshall an object */ dwr.engine._serializeObject = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; // This check for an HTML is not complete, but is there a better way? // Maybe we should add: data.hasChildNodes typeof "function" == true if (data.nodeName && data.nodeType) { return dwr.engine._serializeXml(batch, referto, data, name); } // treat objects as an associative arrays var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{"; var element; for (element in data) { if (typeof data[element] != "function") { batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[element], childName); reply += encodeURIComponent(element) + ":reference:" + childName + ", "; } } if (reply.substring(reply.length - 2) == ", ") { reply = reply.substring(0, reply.length - 2); } reply += "}"; return reply; }; /** @private Returns the classname of supplied argument obj */ dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError }; dwr.engine._getObjectClassName = function(obj) { // Try to find the classname by stringifying the object's constructor // and extract <class> from "function <class>". if (obj && obj.constructor && obj.constructor.toString) { var str = obj.constructor.toString(); var regexpmatch = str.match(/function\s+(\w+)/); if (regexpmatch && regexpmatch.length == 2) { return regexpmatch[1]; } } // Now manually test against the core Error classes, as these in some // browsers successfully match to the wrong class in the // Object.toString() test we will do later if (obj && obj.constructor) { for (var errorname in dwr.engine._errorClasses) { if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname; } } // Try to find the classname by calling Object.toString() on the object // and extracting <class> from "[object <class>]" if (obj) { var str = Object.prototype.toString.call(obj); var regexpmatch = str.match(/\[object\s+(\w+)/); if (regexpmatch && regexpmatch.length==2) { return regexpmatch[1]; } } // Supplied argument was probably not an object, but what is better? return "Object"; }; /** @private Marshall an object */ dwr.engine._serializeXml = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; var output; if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data); else if (data.toXml) output = data.toXml; else output = data.innerHTML; return "XML:" + encodeURIComponent(output); }; /** @private Marshall an array */ dwr.engine._serializeArray = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = ["Array:["]; for (var i = 0; i < data.length; i++) { if (i != 0) buf.push(","); batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); buf.push("reference:"); buf.push(childName); } buf.push("]"); reply = buf.join(""); } else { // Use string concat on other browsers (fastest) var reply = "Array:["; for (var i = 0; i < data.length; i++) { if (i != 0) reply += ","; batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); reply += "reference:"; reply += childName; } reply += "]"; } return reply; }; /** @private Convert an XML string into a DOM object. */ dwr.engine._unserializeDocument = function(xml) { var dom; if (window.DOMParser) { var parser = new DOMParser(); dom = parser.parseFromString(xml, "text/xml"); if (!dom.documentElement || dom.documentElement.tagName == "parsererror") { var message = dom.documentElement.firstChild.data; message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data; throw message; } return dom; } else if (window.ActiveXObject) { dom = dwr.engine._newActiveXObject(dwr.engine._DOMDocument); dom.loadXML(xml); // What happens on parse fail with IE? return dom; } else { var div = document.createElement("div"); div.innerHTML = xml; return div; } }; /** @param axarray An array of strings to attempt to create ActiveX objects from */ dwr.engine._newActiveXObject = function(axarray) { var returnValue; for (var i = 0; i < axarray.length; i++) { try { returnValue = new ActiveXObject(axarray[i]); break; } catch (ex) { /* ignore */ } } return returnValue; }; /** @private Used internally when some message needs to get to the programmer */ dwr.engine._debug = function(message, stacktrace) { var written = false; try { if (window.console) { if (stacktrace && window.console.trace) window.console.trace(); window.console.log(message); written = true; } else if (window.opera && window.opera.postError) { window.opera.postError(message); written = true; } } catch (ex) { /* ignore */ } if (!written) { var debug = document.getElementById("dwr-debug"); if (debug) { var contents = message + "<br/>" + debug.innerHTML; if (contents.length > 2048) contents = contents.substring(0, 2048); debug.innerHTML = contents; } } };

// Provide a default path to dwr.engine if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; if (UserDataDWRFacade == null) var UserDataDWRFacade = {}; UserDataDWRFacade._path = '/webapps/assessment/dwr_open'; UserDataDWRFacade.getStringTempScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringTempScope', p0, callback); } UserDataDWRFacade.setStringTempScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringTempScope', p0, p1, callback); } UserDataDWRFacade.getStringPermScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringPermScope', p0, callback); } UserDataDWRFacade.setStringPermScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringPermScope', p0, p1, callback); }

var assessment = {}; assessment.submitDrawerUrl=""; assessment.questionVisibility = true; assessment.blockToLeaveVisible = 'null'; assessment.savingRightNow = false; // aka - might rename to (if not remove eventually): assessment.nonceHasBeenUsed assessment.submittingRightNow = false; // set to true when we're submitting the assessment as a whole - used to block other submits assessment.gotNewNonceIdFlag = false; assessment.userReallyWantsToSubmit = false; assessment.isInUse = false; assessment.safetyNetDelay = 60; // Number of seconds to wait before telling the user that it is taking too long. assessment.alreadySavedSafetyNetId = null; assessment.saveSequence = 0; // TODO: Set from the server based on time when page is loaded assessment.isOneByOne = false; /************************** methods related to pool and test canvas per question add/edit/ copy/ remove********************/ function findAssessmentForm() { var assessmentForm = null; var documentForms = document.getElementsByTagName('form'); assessmentForm = $A( documentForms ).find( function( documentForm ) { var theAction = $( documentForm ).readAttribute( "action" ); return theAction.indexOf( "webapps/assessment/" ) != -1; }); return assessmentForm; } function submit(method, theForm) { if (!validateForm()) { return false; } if ( !theForm ) { // no form specified so try to find it theForm = findAssessmentForm(); } if(method == "createNew") { theForm.elements.assessmentId.value = null; } theForm.elements.method.value = method; theForm.submit(); return false; } function getFormByInputElement( elementName ) { var element = document.getElementsByName( elementName )[0]; return element.form; } // TODO: Rewrite this file to put all these methods into a namespace like assessment.XXX function modifyAssessment() { submit('modifyAssessment'); } function setQuestionId(questionId) { getFormByInputElement("questionId").questionId.value = questionId; } function modifyContentSettings( val ) { // properties|feedback|presentation|metadata submit( val ); } function addQuestionBefore(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated var theForm = getFormByInputElement("relativeId"); assessment.checkTheCheckBox (qId); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionBefore', theForm); } function addQuestionAfter(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (qId); var theForm = getFormByInputElement("relativeId"); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionAfter', theForm); } function addNGQuestion(sectionId, qtype, position) { var theForm = getFormByInputElement("questionType"); theForm.questionType.value = qtype; theForm.sectionId.value = sectionId; theForm.position.value = position; submit('addQuestion', theForm); } function modifyAssessmentInfo() { submit('modifyAssessmentInfo'); } function modifyHelper(questionId, method) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); setQuestionId(questionId); submit(method, theForm); } function modifyQuestion(questionId) { modifyHelper(questionId, 'modifyQuestion'); } function modifyRandomBlock(questionId) { modifyHelper(questionId, 'modifyRandomBlock'); } function modifyLinkQuestion(questionId) { getFormByInputElement("isLinkedQuestion").isLinkedQuestion.value = 'true'; modifyQuestion(questionId); } function copyQuestion(sectionId, questionId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("sectionId"); theForm.sectionId.value = sectionId; setQuestionId(questionId); submit('copyQuestion', theForm); } function copyLinkQuestion(sectionId, questionId, qbId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); theForm.sectionId.value = sectionId; theForm.questionBlockId.value = qbId; setQuestionId(questionId); submit('copyLinkQuestion', theForm); } function remove(id, type ) { if ( assessment.isInUse ) { var suffix = ( assessment.type == 'Survey'?'.survey':''); if ( !type ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_question.regrade" + suffix ) ); } else if ( type == 'question_link' ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.remove_question_link.regrade" + suffix ) ); } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_item.regrade" + suffix ) ); } } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString("confirm.delete_item")); } } assessment.removeEntity= function(id, message) { if (window.confirm(message)) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (id); var theForm = getFormByInputElement("questionId"); setQuestionId(id); submit('remove', theForm); } }; function reposition(id, position) { setQuestionId(id); var theForm = getFormByInputElement("questionId"); theForm.position.value = position; submit('reposition', theForm); } assessment.submitModifyQuestion = function() { submit('modifyQuestion'); }; assessment.cancelWarning = function() { var theForm = getFormByInputElement("methodEx"); theForm.elements.methodEx.value = 'modifyAssessment'; theForm.submit(); return false; }; function isCheckbox(element) { return (element && element.type && element.type == "checkbox"); } /******************* methods related to bulk update logic on the test/pool canvas*********************/ assessment.removeAll= function(container,showCount) { var count = 0; var inputs = list.checkboxes.get(container); for(var i=0; i<inputs.length; i++){ if(isCheckbox(inputs[i]) && inputs[i].checked ) { count ++; } } if (showCount?window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count",[count])):window.confirm(ASSESSMENT_RESOURCES.getString("confirm.delete_items")) ) { submit('removeBulk'); } }; assessment.removeAllPublished= function(message) { if (window.confirm(message)) { submit('removeBulk'); } }; assessment.updatePointsForAll = function(){ var element = document.getElementsByName("points_bulk"); if ( assessment.validatePoints(element) && ( !assessment.isInUse || confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) ) { submit('updatePointsBulk'); } return false; }; assessment.updatePointsInput = function(event) { var elements = document.getElementsByName("points_bulk"); var element = Event.findElement(event); var pointsValue = element.value; if (pointsValue ) { if (elements) { elements[0].value = pointsValue; elements[1].value = pointsValue; } } }; /*************************** common js methods for assessments**********************************************/ /** validate Input Field value **/ assessment.validateMiniFlyoutInputValue = function(element){ var value = null; if($(element) ) { value = $(element).value; } if ( !value ) { return ASSESSMENT_RESOURCES.getString("update.input.value"); } if ( !isNumeric( value, true ) ) { return ASSESSMENT_RESOURCES.getString("update.input.valid.value"); } return ""; }; assessment.validatePoints = function(element){ if (element) { var pointsTextBox = element[0] || element[1]; var pointsValue = pointsTextBox.value; return assessment.validateNumericInput(pointsTextBox, pointsValue, ASSESSMENT_RESOURCES.getString("update.points.value"), ASSESSMENT_RESOURCES.getString("update.points.valid.value"),true); } return true; }; assessment.validateCount = function(element) { if (element) { var countValue = element.value; return assessment.validateNumericInput(element, countValue, ASSESSMENT_RESOURCES.getString("update.count.value"), ASSESSMENT_RESOURCES.getString("update.count.valid.value")); } return true; }; assessment.validateNumericInput = function(textBox, value, blankMsg, badMsg,isFloat) { var checkForFloats = false; var numFormat = LOCALE_SETTINGS.getString('float.format'); var isValidNum = false; var re, trimmedVal; trimmedVal = value.trim(); if(isFloat != 'null') { checkForFloats = true; } if ( !value ) { alert(blankMsg); textBox.focus(); return false; } var numVal = null; if (!checkForFloats) { numVal = parseInt( value, 10); isValidNum = (!isNaN(numVal) && numVal >= 0); } else if ( typeof ( numFormat ) != 'undefined' ) { // hand parse for l10n re = new RegExp( numFormat ); isValidNum = ( trimmedVal.search( re ) === 0 ); } else { // try to use platform native (non-localized) numVal = parseFloat( trimmedVal ); isValidNum = !isNaN( numVal ); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test( trimmedVal.substring( numVal.toString().length ) ); } } if (!isValidNum) { alert(badMsg); textBox.value=""; textBox.focus(); return false; } return true; }; function back() { submit('back'); } function persistDisplayPreference(element, value){ UserDataDWRFacade.setStringTempScope( element, value ); } assessment.refreshParent = function( url ) { if ( window.opener ) { window.opener.location.href = url; if ( window.opener.progressWindow ) { window.opener.progressWindow.close(); } window.close(); } else { // We expected to be in a new window, but aren't. Perhaps this was a link from an announcement? window.location = url; } }; assessment.checkTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = true; } }; assessment.unCheckTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = false; } }; var startX; //set x offset of bar in pixels var startY; var padding = 53; var verticalpos="fromtop"; //enter "fromtop" or "frombottom" function setPadding(pad) { padding = pad; } function iecompattest(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body; } function resetInstructionHeight() { startY = document.getElementById("instructionBlock").offsetTop +document.getElementById("instructionBlock").clientHeight + padding; startX = document.getElementById("instructionBlock").offsetLeft; document.getElementById("dataCollectionContainer").style.position = "relative"; var tbh = document.getElementById("topbar").clientHeight; document.getElementById("containerdiv").style.paddingBottom = (32 + tbh) + "px"; if (document.getElementById("topbar").offsetTop !== 0) { document.getElementById("dataCollectionContainer").style.top=tbh+"px"; } } function staticbar(){ var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera; var d = document; function ml(id){ var el=d.getElementById(id); el.style.visibility="visible"; if(d.layers) { el.style=el; } el.sP=function(x,y,r) { this.style.left=x+"px"; this.style.top=y+6+"px"; if(r>-1) {this.style.right=r+"px";}; }; el.x = startX; el.y = startY; return el; } window.stayTopLeft = function() { var right = -1; var pY = ns ? window.pageYOffset : iecompattest().scrollTop; if (pY < startY) { window.ftlObj.y = startY - pY; document.getElementById("dataCollectionContainer").style.top=document.getElementById("topbar").clientHeight+4+"px"; } else { window.ftlObj.y = 0; } window.ftlObj.x = document.getElementById("instructionBlock").offsetLeft; if(page.util.isRTL()) { right = document.documentElement.clientWidth - (ftlObj.x + document.getElementById("instructionBlock").offsetWidth); } window.ftlObj.sP( window.ftlObj.x, window.ftlObj.y, right); setTimeout("stayTopLeft()", 20); }; resetInstructionHeight(); window.ftlObj = ml("topbar"); window.stayTopLeft(); } var AIM = { frame : function(c) { var n = 'f' + Math.floor(Math.random() * 99999); var d = document.createElement('DIV'); d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>'; document.body.appendChild(d); var i = document.getElementById(n); if (c && typeof(c.onComplete) == 'function') { i.onComplete = c.onComplete; } return n; }, form : function(f, name) { f.setAttribute('target', name); }, submit : function(f, c) { AIM.form(f, AIM.frame(c)); if (c && typeof(c.onStart) == 'function') { return c.onStart(); } else { return true; } }, loaded : function(id) { var i = document.getElementById(id); var d; if (i.contentDocument) { d = i.contentDocument; } else if (i.contentWindow) { d = i.contentWindow.document; } else { d = window.frames[id].document; } if (d.location.href == "about:blank") { return; } if (typeof(i.onComplete) == 'function') { i.onComplete(d.body.innerHTML); } } }; function resetContaindivHeight() { // adjust containdiv height // TODO: I don't see a reason for any of this code anymore... //if (document.getElementById('statusBlock').style.display=="" || document.getElementById('statusBlock').style.display=="inline") { // var statusHeight = document.getElementById('topbar').offsetHeight-22; // 22 is padding - be better to dynamically determine this value. //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight+statusHeight; //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} } function hideElement(element) { var msgspan=element; var msgimg=element+"img"; // TODO: I don't see a reason for any of this code anymore... //if (msgspan=="statusBlock") { // var statusHeight = document.getElementById('topbar').offsetHeight; //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight-statusHeight-22; // 22 is padding - be better to dynamically determine this value. //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} document.getElementById(msgspan).style.display="none"; document.images[msgimg].src="/images/ci/ng/more_options_dark.gif"; var alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; } function showElement(element) { var msgspan=element; var msgimg=element+"img"; document.getElementById(msgspan).style.display="inline"; document.images[msgimg].src="/images/ci/ng/less_options.gif"; var alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; if (msgspan=="statusBlock") { resetContaindivHeight(); } } function toggleElement(element){ var curStyle = document.getElementById(element).style.display; if(curStyle=="" || curStyle=="inline") { hideElement(element); persistDisplayPreference(element,'none'); } else { showElement(element); persistDisplayPreference(element,'inline'); } resetInstructionHeight(); } /********************************************* methods related to lightbox preview in pool/test canvas********************/ assessment.previewLightbox = null; assessment.copyLinkLightbox = null; assessment.showLightBox = function (event,baseContainer,numparents,previewUrl) { var e = event || window.event; // IE does not capture the event if( e && e.type == 'click') { Event.stop(e); } if ( !assessment.previewLightbox ) { assessment.previewLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 500 ,h : 375}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 125, horizontalBorder: 125 }); } assessment.previewLightbox.cfg.ajax={url:previewUrl, loadExternalScripts:true}; assessment.previewLightbox.cfg.content=null; assessment.previewLightbox.open(); }; assessment.showCopyLinkLightBox = function ( url) { var params = url.toQueryParams(); if ( !assessment.copyLinkLightbox ) { assessment.copyLinkLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 150 ,h : 200}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 50, horizontalBorder: 50 }); } assessment.copyLinkLightbox.cfg.ajax={url:'/webapps/assessment/do/authoring/questionSearch?method=copyLink&discoverUrl=' + encodeURIComponent(url) + '&course_id=' + params.course_id }; assessment.copyLinkLightbox.cfg.content=null; assessment.copyLinkLightbox.cfg.closeOnBodyClick=false; assessment.copyLinkLightbox.open(); }; assessment.showDiscover = function(url,title,width,height) { assessment.submitDrawerUrl = url; var screenX=Math.floor((screen.width)/2)-Math.floor(width/2); var screenY=Math.floor((screen.height)/2)-Math.floor(height/2)-20; var top=screenY; var left=screenX; var features="'"+'toolbar=no,scrollbars=yes,status=yes,resizable=yes,top='+ top+',left='+ left+',screenX='+ screenX+',screenY='+ screenY+',width='+ width+',height='+ height+"'"; var discover = window.open(url,title,features); if (window.focus) { if (discover) { discover.focus(); } else { alert(ASSESSMENT_RESOURCES.getString("pop.up.blocker.enabled")); } } }; assessment.discoverOptions = function(url,title,width,height,hideCopyLink){ if(!hideCopyLink) { //check if the UserPreference is set in session UserDataDWRFacade.getStringPermScope( "AssessmentUtils.DISCOVER_MODE_IS_LINKING", function( copyLinkSet ) { if (copyLinkSet == '') { assessment.showCopyLinkLightBox(url); } else{ assessment.showDiscover(url,title,width,height); } }); } else{ assessment.showDiscover(url,title,width,height); } }; assessment.onCloseCopyLinkLightbox = function ( url ) { var copyLinkId = $('copylink_link'); var copyCopyId = $('copylink_copy'); var copyLinkValueSet = false; if(copyLinkId && copyCopyId ) { copyLinkValueSet = copyLinkId.checked || copyCopyId.checked; } if ( !copyLinkValueSet ) { if (window.confirm(ASSESSMENT_RESOURCES.getString("confirm.set_copy_link"))) { assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } } else{ assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } }; /**************************** methods related to question block on the test canvas*************************************/ assessment.createQuestionBlock = function() { }; function addQuestionToBlock(questionId, assessmentType, assessmentId, courseId ) { var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=addQuestionsToQuestionBlock" + "&questionId=" +questionId + "&assessmentType=" +assessmentType + "&assessmentId=" +assessmentId + "&course_id=" +courseId; assessment.discoverOptions(url,'discover','900','675',true); } /********************** methods related to inline pool points flyout***************************/ assessment.poolFlyout = null; assessment.initPoolFlyout = function(title) { if ( !assessment.poolFlyout ) { assessment.poolFlyout = new miniFlyout.MiniFlyout({ title: title, miniFlyoutTemplate: "<label class='hideoff' for='#{inputFieldName}_id'>#{title}</label> <input id='#{inputFieldName}_id'type='text' style='width: 2em;' size='3' value='0' name='#{inputFieldName}'/> <a href='#' title='#{closeButtonName}' bb_flyout_title='Cancel' class='genericButtonImg button-3-img'><img alt='#{closeButtonName}' src='/images/ci/ng/remove_li.png'/></a> <a href='#' title='#{submitButtonName}' bb_flyout_title='Submit' class='genericButtonImg button-3-img'><img alt='#{submitButtonName}' src='/images/ci/ng/checkmark_li.png'/></a>", inputFieldName: "inline_points", errorMessage: page.bundle.getString("points.failure"), miniFlyoutDivClass: "liveArea liveArea-slim", onSubmitValidate : "return assessment.validateMiniFlyoutInputValue('inline_points_id')" }); } miniFlyout.closeCurrentMiniFlyout(); }; assessment.showPoolFlyout = function (event,title,assessmentId,id, courseId) { var e = event || window.event; // IE does not capture the event var aLink = Event.element(e); if( e && e.type == 'click') { Event.stop(e); } assessment.initPoolFlyout(title); assessment.poolFlyout.cfg.openLink = aLink ; assessment.poolFlyout.cfg.containerId = aLink.parentNode.parentNode; assessment.poolFlyout.cfg.inputFieldDefaultSource = "ipoints_" + id; assessment.poolFlyout.cfg.inputFieldName= "inline_points"; assessment.poolFlyout.cfg.onSubmit = "return assessment.saveQuestionPoints('" + assessmentId + "','" + id + "','" + courseId + "',false, false, assessment.poolFlyout.cfg.containerId);"; assessment.poolFlyout.open(); }; /*************************************************** methods related to test canvas selection by type*******************/ assessment.selectByType = function(container) { var selected = document.getElementsByName('selectbyQuestionType')[0];// either use 0 or 1, since both are updated to the same var checkboxes = list.checkboxes.get(container); for ( var i=0; i < checkboxes.length; ++i ) { checkboxes[ i ].checked = false; } var className = selected.options[selected.selectedIndex].value; checkboxes.each( function(e){ if(e.className.trim() ==className.trim()) { e.checked=true; } } ); $('selectbyQuestionType_idTop').options[selected.selectedIndex].selected=true; $('selectbyQuestionType_idBot').options[selected.selectedIndex].selected=true; }; assessment.toggleQuestionBlockDiv = function(rawId){ var ul = $('questionBlockDiv'+rawId); var a = $('questionBlockDivLink'+rawId).getElementsByTagName('a')[0]; Effect.toggle(ul, 'blind', { duration: 0.3 }); if(ul.style.display=="none"){ a.className="itemHead itemHeadOpen"; } else if(ul.style.display=="block" || ul.style.display==""){ a.className="itemHead"; } return false; }; /************************** methods related to discover drawer functionality********************************************/ assessment.inBasicDiscoverMode = function () { if (document.copyQuestionsForm.method.value == 'save') { return true; } return false; }; assessment.cancelDrawer = function() { var myDrawer = drawer.model.getCurrentInstance(); myDrawer.discard(); document.copyQuestionsForm.elements.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener ) { //close question discovery popup window.close(); } return false; }; assessment.cancelRandomBlock = function () { document.copyQuestionsForm.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener !== null) { //close question discovery popup window.close(); } return false; }; function findAndDisableInputElements(el) { if (el === null) { return; } var elems = el.getElementsByTagName('input'); for ( var i = 0; i < elems.length; i++ ) { el.addClassName('disabled'); el.disabled = true; } } /****************** Ajax method related to Test/pool canvas***************************************************/ function postAndUpdateCanvas(form) { var method = form.method.value; var assessmentId = form.assessmentId.value; var courseId = form.course_id.value; var nonceId = nonceUtil.getNonceId('bb-question-discover'); var questionId = ""; if (form.questionId ) { questionId = form.questionId.value; } var url = "/webapps/assessment/do/authoring/copyQuestions?method=" +method + "&assessmentId="+assessmentId + "&course_id=" + courseId + "&sectionId=" + form.sectionId.value + "&assessmentType=" +form.assessmentType.value + "&itemIds=" +form.itemIds.value + "&overridePoints=" +form.overridePoints.value + "&questionId=" +questionId + "&ajaxMode=true" + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (form.searchCriterion !== null) { url = url + "&searchCriterion=" + encodeURIComponent(form.searchCriterion.value); } findAndDisableInputElements( $('cartSubmit') ); var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { window.opener.location="/webapps/assessment/do/authoring/modifyAssessment?method=modifyAssessment&assessmentId="+assessmentId+"&course_id="+courseId; if (json !== null) { // capture any error message and display if (json.errorMessage ) { // exception message looks ugly for the end-user, hence use a more user-friendly message to indicate the ajax refresh failed new page.InlineConfirmation("error", json.errorMessage, false ); } else if (json.successMessage ) { // WIP // var startingEl = window.parent.document.getElementById('blockstart_' + questionId); // new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false ); } } setTimeout('window.close()', 1500); }, onFailure: function(transport, json) { new page.InlineConfirmation("error", "Failure post discover pop-up", false ); } }); } assessment.submitRandomBlock = function () { if ($('listContainer_datatable')) { var searchCriterion = activeFilter.getSearchCriteriaInstance(false).getSearchCriteriaAsXml(); document.copyQuestionsForm.searchCriterion.value = searchCriterion; if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } } else { alert(ASSESSMENT_RESOURCES.getString("cannot.submit.with.no.matching.questions")); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.submitDrawer = function () { var myDrawer = drawer.model.getCurrentInstance(); var selectedItems = myDrawer.getItems(true); var i; var allIds = ""; for (i=0;i<selectedItems.length;i++) { var qId = selectedItems[i].itemId; var mode = selectedItems[i].mode; allIds += qId + ":" + mode + ","; } document.copyQuestionsForm.itemIds.value = allIds; myDrawer.discard(); if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.OnCompleteUpdateCanvas = function(questionId, req, showNestedReceipt) { var json = req.responseText.evalJSON( true ); var pointsEl = $s('ipoints_' + questionId); var totalQuestionsCountEl = $s('totalNoQuestions' + questionId); var currentQuestionCountEl = $s('questionCount' + questionId); var totalBlockPointsEl = $s('totalPoints_' + questionId); var totalTestPointsEl =$s('totalTestPoints'); var totalQuestionsEl = $s('totalQuestions'); var startingEl = $s('blockstart_' + questionId); if( !json.errorMessage && pointsEl && json.points ) { // update per question points pointsEl.childNodes[0].nodeValue = json.points; } if( !json.errorMessage && totalQuestionsCountEl && json.totalQuestionsCount ) { // update per question points totalQuestionsCountEl.childNodes[0].nodeValue = json.totalQuestionsCount; } if( !json.errorMessage && currentQuestionCountEl && json.currentQuestionsCount ) { // update per question points currentQuestionCountEl.childNodes[0].nodeValue = json.currentQuestionsCount; } if( !json.errorMessage && totalBlockPointsEl && json.totalBlockPoints ) { // update the total points totalBlockPointsEl.childNodes[0].nodeValue = json.totalBlockPoints; } if( !json.errorMessage && totalQuestionsEl && json.totalQuestions ) { // update the total questions totalQuestionsEl.innerHTML = json.totalQuestions; } if( !json.errorMessage && totalTestPointsEl && json.totalTestPoints ) { // update total Test points, not for survey or pool totalTestPointsEl.innerHTML = json.totalTestPoints; } if (showNestedReceipt) { if (json.securityErrorMsg ) { new page.NestedInlineConfirmation("error", json.securityErrorMsg, true, startingEl, true); } else if (json.successMessage ) { if (json.successMessage.indexOf('regrading_queued_status')> 0) { // If we are displaying a confirmation including regrading status then DO NOT fade it away - let it stay and get updated. new page.NestedInlineConfirmation("success", json.successMessage, false, startingEl, true); } else { new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false); } } } assessment.result = json.errorMessage; assessment.setQuestionNumbers(); }; assessment.removeQuestionsFromBlock= function(listId, questionBlockId, courseId,assessmentId) { var allcheckBoxes = list.checkboxes.get(listId); var checkedCount = 0; var ids = ""; for (var i = 0; i < allcheckBoxes.length; i++) { var separator = (i == (allcheckBoxes.length - 1)) ? " " : ','; if (allcheckBoxes[i].checked ) { checkedCount ++; ids = ids + allcheckBoxes[i].value + separator; } } if (window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count", [checkedCount]))) { // ajax request var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + questionBlockId); var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=removeQuestionsFromQuestionBlock" + "&block_id=" + questionBlockId + "&course_id=" + courseId + "&assessment_id=" + assessmentId + "&questionIds=" + ids + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; nonceId.value = json.nonceId; inventoryList.ajaxPostOnClick(null, listId); if(json.errorMessage ) { new page.NestedInlineConfirmation("error", json.errorMessage, false, startingEl, false); } }, onSuccess: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); }, onFailure: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); } }); } }; assessment.result = ""; assessment.saveQuestionCount = function(assessmentId, blockId, courseId, forRandomBlock ) { var countEl = document.getElementsByName('question_count')[0]; var originalCountEl = document.getElementById('questionCount' + blockId); var originalCount = originalCountEl.childNodes[0].nodeValue; var newCount = countEl.value; if (newCount == originalCount) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + blockId); var url = "/webapps/assessment/do/authoring/modify"+(forRandomBlock?"Random":"Question")+"Block?method=saveQuestionCount" + "&block_id="+blockId + "&course_id=" + courseId + "&new_count=" + newCount + "&assessment_id=" + assessmentId + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(req) { var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); }, onFailure: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); } }); return assessment.result; }; assessment.updateExtraCredit = function (newExtraCreditValue, questionId) { var extraCreditDiv = $('extra_credit_' + questionId); if (extraCreditDiv) { if (newExtraCreditValue) { extraCreditDiv.removeClassName('hidden'); extraCreditDiv.addClassName('extraCredit'); } else { extraCreditDiv.addClassName('hidden'); extraCreditDiv.removeClassName('extraCredit'); } } }; assessment.updateFullCredit = function (newFullCredit, questionId) { document.getElementById('original_fullCredit_value_' + questionId).value = newFullCredit.toString(); if (newFullCredit) { document.getElementById('full_credit_' + questionId).show(); } else { document.getElementById('full_credit_' + questionId).hide(); } }; // copied or linked question assessment.saveQuestionPoints = function(assessmentId, questionId, courseId, isBlock, isInUse, containerId ) { var pointsToSave = document.getElementsByName('inline_points'); var extraCredit =$s('inline_points_extra_credit_id'); var newExtraCreditValue = false; if(extraCredit) { newExtraCreditValue = extraCredit.checked; } var newPoints = pointsToSave[0].value; var originalPointsEl = document.getElementById('ipoints_' + questionId); var originalExtraCreditValue = false; var originalExtraCreditEl = $('extra_credit_' + questionId); if(originalExtraCreditEl) { originalExtraCreditValue = !originalExtraCreditEl.hasClassName('hidden'); } var originalPoints; if( originalPointsEl.childNodes ) { originalPoints = originalPointsEl.childNodes[0].nodeValue; } var originalFullCredit; var newFullCredit; var fullCreditCheckbox = document.getElementById('inline_points_full_credit_' + questionId); if (fullCreditCheckbox !== null) { newFullCredit = fullCreditCheckbox.checked; originalFullCredit = document.getElementById('original_fullCredit_value_' + questionId).value; } if ( (newPoints == originalPoints ) && ( originalExtraCreditValue == newExtraCreditValue ) && (!fullCreditCheckbox || (originalFullCredit == newFullCredit.toString())) ) { return ""; } if ( isInUse && !confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); if( !extraCredit ) { newExtraCreditValue = ""; } if( !isBlock) { isBlock = false; } else { isBlock = true; } var url = "/webapps/assessment/do/authoring/modifyAssessment?method=updateQuestionPoints" + "&question_id=" + questionId + "&course_id=" + courseId + "&points_value=" + newPoints + "&extra_credit=" + newExtraCreditValue + "&assessment_id=" + assessmentId + "&is_Block=" + isBlock + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (fullCreditCheckbox) { url = url + "&full_credit=" + newFullCredit; } new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req){ var json = req.responseText.evalJSON( true ); var showNestedReceipt = false; if( !containerId ) { showNestedReceipt = true; } assessment.OnCompleteUpdateCanvas(questionId,req,showNestedReceipt); if(extraCredit) { assessment.updateExtraCredit(newExtraCreditValue,questionId); } if (fullCreditCheckbox) { assessment.updateFullCredit(newFullCredit,questionId); } if (!showNestedReceipt) { // show receipt in pool , table cell var status_msg = null; if (json.successMessage != "") { status_msg = $('status_msg_succ'); } var link = containerId.down(1); link.hide(); containerId.appendChild(status_msg); (status_msg).show(); setTimeout( function(){ (status_msg).fade({ duration: 0.5 }); },500); setTimeout( function(){ link.appear({duration:0.5}); },1000); link.focus(); } }, onFailure: function(req){ new page.InlineConfirmation("error", page.bundle.getString("updatePointsFailed"), false); } }); return assessment.result; }; assessment.setDefaultLinkingMode = function(isLinkingMode, courseIdStr) { var courseId = courseIdStr || document.copyQuestionsForm.course_id.value; var url = "/webapps/assessment/do/authoring/questionSearch?method=saveLinkingMode" + "&linkingMode="+isLinkingMode+ "&course_id=" +courseId ; new Ajax.Request(url, { method: 'post', onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { document.body.style.cursor = 'default'; }, onSuccess: function(transport, json) { }, onFailure: function(transport, json) { } }); }; assessment.setDisplayFullText = function(displayFull, listId) { var extras = []; // Note - Constants.DISPLAY_FULL_TEXT = "displayFullText" extras.displayFullText=displayFull; inventoryList.ajaxPostOnClick(null, listId, extras, true); }; assessment.rewriteSectionForScreenReader = function(elementName) { var element = document.getElementById(elementName); element.setAttribute("aria-live", "assertive"); element.setAttribute("aria-relevant", "all"); element.setAttribute("aria-atomic", "true"); element.setAttribute("aria-busy", "true"); var myContents = element.innerHTML; element.innerHTML = myContents; element.setAttribute("aria-busy", "false"); return false; }; assessment.clearQuestionModifiedStatuses = function() { // Called on page load to make sure we don't have any stranded questions-to-monitor kicking around. assessment.questions_to_monitor = []; assessment.questions_to_monitor_index = 0; }; assessment.QMonitor = Class.create(); assessment.QMonitor.prototype = { initialize: function( entity, index) { this.index = index; Event.observe(entity, 'change', this.onChange.bindAsEventListener(this)); }, onChange: function( event) { assessment.questions_to_monitor[this.index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[this.index].qnum); } }; assessment.getSaveButton = function(questionNum) { var myButton = document.getElementById("saveButton_" + questionNum); if (!myButton) { if (assessment.isOneByOne) { if (questionNum == document.forms.saveAttemptForm.current_question.value) { myButton = document.getElementById("saveAnswerSubmitId"); // for one-at-a-time tests } } } return myButton; }; assessment.setModifiedIcon = function(questionNum) { var saveAnswerLabel = page.bundle.getString('takeSaveAnswer'); var myButton = assessment.getSaveButton(questionNum); if (myButton) { myButton.value = saveAnswerLabel; Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); } // TODO - Either rip this out or put in appropriate image, style, and text // NOTE - can't actually enable this until on-the-fly onchange support in the VTBE is done // (as opposed to the current on-unload check for change) // Also - would need to deal with leaving this image on-page in this scenario: // Save Q1 // Modify Q1 // Save Q2 // -- at this point, we update the status icons and lose the modified icon for Q1 /* var mySpan =document.getElementById("span_"+questionNum); var myImg = document.getElementById("img_"+questionNum); mySpan.className = "qIncomplete"; myImg.src = "/images/ci/icons/needs_grading.gif"; // better icon myImg.alt = "TODO: Incomplete"; myImg.height= "10"; myImg.width= "10"; */ }; assessment.addQuestionToMonitor = function(qid,qnum, isFileUploadQuestion) { var questionBlock = $(qid); assessment.questions_to_monitor[assessment.questions_to_monitor_index] = {}; // TODO - is there a more efficient way to do this? $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, assessment.questions_to_monitor_index); }); assessment.questions_to_monitor[assessment.questions_to_monitor_index].qid = qid; assessment.questions_to_monitor[assessment.questions_to_monitor_index].qnum = qnum; // Status: 0 == not changed, 1 = changed, 2 = attempted to be auto-saved since last change assessment.questions_to_monitor[assessment.questions_to_monitor_index].status = 0; assessment.questions_to_monitor[assessment.questions_to_monitor_index].isFileUploadQuestion = isFileUploadQuestion; assessment.questions_to_monitor_index++; }; assessment.remonitorFileUpload = function(qid, qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { if (assessment.questions_to_monitor[i].isFileUploadQuestion) { var questionBlock = $(qid); $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, i); }); } else { return; } } } } }; assessment.questionBeingSaved = -1; assessment.markQuestionAsSaved = function (qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { assessment.questions_to_monitor[i].status = 0; } } } }; assessment.hasUnsavedAnswers = function() { if (assessment.questions_to_monitor_index > 0) { var i = 0; if (typeof(finalizeEditorsAnyChange) == "function") { finalizeEditorsAnyChange(assessment.vtbeChanged); } for(i=0;i<assessment.questions_to_monitor_index;i++) { //alert("Question " + assessment.questions_to_monitor[i].qid + " number " + assessment.questions_to_monitor[i].qnum + " status " + assessment.questions_to_monitor[i].status); if (assessment.questions_to_monitor[i].status >= 1) { return true; } else if (assessment.questions_to_monitor[i].isFileUploadQuestion) { // In IE, the assessment.QMonitor onchange handle disappears after the first file selection and I can't seem to add it back. // This at least gets the saving to work so it doesn't appear totally broken. The button doesn't change to 'save answer' immediately // after you attach a file a second time though, but we have to live with that for now. var actionDivName = 'file_upload_ans_' + assessment.questions_to_monitor[i].qid + '_selectedFileActions'; var actionDiv = $(actionDivName); if (actionDiv && actionDiv.visible()) { assessment.questions_to_monitor[i].status = 1; return true; } } } } return false; }; assessment.registerVTBEChange = function() { if (typeof(registerOnChangeCallback) == "function") { registerOnChangeCallback(assessment.vtbeChangedCallback, assessment.getVtbeQuestionIndex); } }; assessment.autoSaveExecutor = ''; assessment.autoSaveInterval = 10; // seconds assessment.startAutoSave = function(interval) { assessment.autoSaveInterval = interval; assessment.autoSaveExecutor = new PeriodicalExecuter(assessment.doAutoSave, assessment.autoSaveInterval); }; assessment.stopAutoSave = function() { if (assessment.autoSaveExecutor != '') { assessment.autoSaveExecutor.stop(); } }; assessment.toggleAutoSave = function(interval) { assessment.stopAutoSave(); if ($s('autoSaveCheckbox').checked) { assessment.startAutoSave(interval); } }; assessment.doAutoSave = function(pe) { if (assessment.submittingRightNow) { // Ignore if submitting right now return; } if (assessment.savingRightNow) { // If we are already saving, do nothing right now. return; } var doneOne = false; if (assessment.hasUnsavedAnswers()) { for(var i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].status == 1) // explicitly only check for status 1, skipping status==2 { if (doneOne) { // We can only submit one question per pass because otherwise the nonce fails. Switch // to a higher frequency to save all the outstanding questions faster. pe.stop(); pe.frequency = 1; pe.registerCallback(); return; } assessment.questions_to_monitor[i].status = 2; // flag to indicate we've already tied to auto-save this // Will be reset to 0 after a successful save or 1 if the user modifies their answer again. saveOneItem( assessment.questions_to_monitor[i].qid, assessment.questions_to_monitor[i].qnum, true, false ); doneOne = true; } } } if (!doneOne) { if (pe.frequency != assessment.autoSaveInterval) { pe.stop(); pe.frequency = assessment.autoSaveInterval; pe.registerCallback(); } } }; assessment.vtbeChanged = function(ifr) { var index = assessment.getVtbeQuestionIndex( ifr ); assessment.vtbeChangedCallback(ifr,index); }; assessment.vtbeChangedCallback = function(ifr,index) { if (index != -1) { assessment.questions_to_monitor[index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[index].qnum); } }; assessment.getVtbeQuestionIndex = function(ifr) { var parents = ifr.ancestors(); var num = parents.length; for ( var i = 0; i < num; i++ ) { var parent = parents[i]; if ( page.util.hasClassName(parent, 'takeQuestionDiv') ) { var divid = parent.id; for ( var j = 0; j < assessment.questions_to_monitor_index; j++ ) { if ( assessment.questions_to_monitor[j].qid == divid ) { return j; } } return -1; } } return -1; }; assessment.warnBeforeLeavingIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var prefix = "test"; if (isSurvey) { prefix = "survey"; } var timermsg = ''; if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } if (isForced) { return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.forced.beforeunload.warning"); } return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.beforeunload.warning") + timermsg; }; assessment.queueUpWarning = function(msg, oneByOneAndForceUnload) { var url = assessment.getNextActionUrl() + '&method=queueUpWarning'; var params = Object.extend({ 'msg' : msg, 'oneByOneAndForceUnload' : oneByOneAndForceUnload, 'course_assessment_id' : document.forms.saveAttemptForm.course_assessment_id.value } ); var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, asynchronous: false }); }; assessment.warnOnLeaveIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var timermsg = ''; var prefix = "test"; if (isSurvey) { prefix = "survey"; } if (assessment.hasUnsavedAnswers()) { // Since we are always auto-saving anyways, we might as well just always save unsaved answers here. saveAllQuestions(false); } if (isForced) { assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.forced.warning", assessment.currentTestName), true ); } else { if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.warning", assessment.currentTestName )+timermsg, false); } }; assessment.setDefaultQuestionDisplay = function(blockToLeaveVisible) { assessment.blockToLeaveVisible = blockToLeaveVisible; UserDataDWRFacade.getStringPermScope( "assessment.questionsExpanded", function( questionsExpanded ) { if (questionsExpanded == 'false') { assessment.toggleQuestionDisplay(); } assessment.blockToLeaveVisible = 'null'; }); }; assessment.toggleQuestionDisplay = function() { var newVis = !assessment.questionVisibility; if (newVis) { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", true ); } else { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", false ); } // Note -most of the time this will be "contentListItem:null" - that's OK var idToIgnore = "contentListItem:" + assessment.blockToLeaveVisible; $A(document.getElementsByTagName('li'))._each(function(entity) { // hide|show the given entity if it is one we care about var id = entity.id; if (id.startsWith("contentListItem:") && id != idToIgnore) { $A(entity.getElementsByTagName('div'))._each(function(adiv) { if (page.util.hasClassName(adiv,'details')) { if (newVis) { $(adiv).show(); } else { $(adiv).hide(); } } }); if (newVis) { entity.removeClassName('hideQuestionDetails'); } else { entity.addClassName('hideQuestionDetails'); } } }); var buttonText = page.bundle.getString( newVis ? "hide.question.details" : "show.question.details" ); $('content_listContainer_hideshowQuestions_top').down('a').update( buttonText ); $('content_listContainer_hideshowQuestions_bottom').down('a').update( buttonText ); assessment.questionVisibility = newVis; }; assessment.setDisableFlag = function(questionId, flag) { modifyHelper(questionId, 'setDisableFlag' + flag); }; assessment.questionLabelMap = {}; assessment.dndHooksAdded = false; assessment.setQuestionNumbers = function() { var index = 1; // loop through line items in list of questions var questions = $('content_listContainer'); if (questions) { $A(questions.childElements()).each( function( li ) { var h3 = li.down('h3'); var span = h3.down('span.questionNumber'); if ( !span ) // create & add span for questionNumber if none exists { span = new Element('span',{'class':'questionNumber autoQuestionNumber'}); h3.insert({top:span}); } var id = h3.up('div').id; var qSetSize = $('questionCount'+id); var qNumStr = ''+index; if ( qSetSize ) // show number range for question sets { var s = parseInt(qSetSize.innerHTML, 10); index += s - 1; if ( s > 1 ) { qNumStr += ' - '+index; } else if ( s === 0 ) { qNumStr = ''; } } qNumStr = qNumStr + '.'; index++; span.update(qNumStr); assessment.questionLabelMap[id] = h3.innerHTML.stripTags(); // save numbered label in map for loading accessible reorder select }); } if ( !assessment.dndHooksAdded ) { var dndCtrl = dragdrop.getControllerObjById( 'pageListReorderControls' ); if (dndCtrl) { // Set question numbers in the accessible reorder select before opening it's popup. // Setting the question numbers needs to be defered until the popup is added to the DOM, which // happens just before the popup is opened dndCtrl.extPreOpenCallback = assessment.setAccessibleReorderQuestionNumbers; // call this function to set question numbers after a dnd or accessible reorder happens dndCtrl.extPostOrderCallback = assessment.setQuestionNumbers; assessment.dndHooksAdded = true; } } }; assessment.setAccessibleReorderQuestionNumbers = function() { $A($('pageListReorderControlSelect').options).each( function( option ) { option.text = assessment.questionLabelMap[option.value]; }); }; assessment.viewReferencingCanvases = function(courseId, assessmentId) { var url = "/webapps/assessment/do/authoring/modifyAssessment?course_id=" + courseId + "&method=getReferringCanvases&assessmentId=" + assessmentId; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ document.body.style.cursor = 'default'; }, onSuccess: function(req){ $('referencingCanvasesPlaceholder').update(req.responseText); }, onFailure: function(req){ $('referencingCanvasesPlaceholder').update(ASSESSMENT_RESOURCES.getString("error.loading.referrers")); } }); }; assessment.normalizedWidth = 0; assessment.setNormalizedButtonWidth = function(myButton) { if (assessment.normalizedWidth === 0) { myButton.value = page.bundle.getString('takeSaveAnswer'); Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); assessment.normalizedWidth = myButton.clientWidth; myButton.value = page.bundle.getString('takeSaveAnswerAgain'); Element.addClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } myButton.value = page.bundle.getString('savingAnswer'); Element.addClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } } //myButton.style.width = assessment.normalizedWidth + 'px'; return; }; assessment.resetFields = function() { window.document.assessmentSubmitted = false; window.document.assessmentActuallySubmitted = true; }; assessment.getNextActionUrl = function() { var url = document.forms.saveAttemptForm.action; url = url + '?saveSequence=' + (assessment.saveSequence++); return url; }; assessment.submitAttemptForm = function() { var myForm = document.forms.saveAttemptForm; var origUrl = myForm.action; myForm.action = assessment.getNextActionUrl(); try { myForm.submit(); } catch (err) { // Make sure we get to the next line and reset the url just in case. } myForm.action = origUrl; }; // This is the final save-and-submit request for the test/survey assessment.doConfirmSubmit = function(msg) { document.forms.saveAttemptForm.save_and_submit.value='true'; try { if (confirmSubmit(msg)) { assessment.resetFields(); assessment.submitAttemptForm(); } } catch (err) { // If we had an error, continue to clear the saveandsubmit value } document.forms.saveAttemptForm.save_and_submit.value=''; return false; }; assessment.alertSaveStatus = function (status) { if (status == 'COMPLETED' ) { alert(page.bundle.getString("confirm_saveall_success")); } else if (status == 'PARTIAL' ) { alert(page.bundle.getString("confirm_save_partial")); } else if (status == 'UNANSWERED' ) { alert(page.bundle.getString("confirm_save_empty")); } else { alert(page.bundle.getString("confirm_save_error")); } }; assessment.removeFileUploadAnswer = function (fieldName, divName, questionId, questionNumber, remAnsSuffix, takeDupeSaveMsg) { document.getElementById(divName).style.display = "none"; document.forms.saveAttemptForm.elements.method.value = "fileremove"; document.forms.saveAttemptForm.elements[fieldName + '-override'].value = "false"; document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = "true"; try { if (checkAlreadySaved(takeDupeSaveMsg)) { saveOneItem( questionId, questionNumber, true, false); } } catch (err) { // Ignore - just want to make sure we do the next statement } document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = ""; return false; }; assessment.updateQuestionStatusResponse = function(originalRequest ) { var qnums = originalRequest.responseText; var lines = qnums.split("\n"); var qnum=lines[0].split(","); for (var i=0; i<qnum.length; i++) { var num = qnum[i]; if (num > 0) { setSavedIcon(num); } else { setNotSavedIcon(-num); } } for (var j=1;j<lines.length;j++) { var fileUpload = lines[j].split(":"); if (fileUpload.length == 2) { var divName = "file_upload_div_" + fileUpload[0]; var divElement = document.getElementById(divName); if (fileUpload[1] == "HIDE") { if(divElement !== null) { divElement.style.display = "none"; } } else { var spanName = "file_upload_span_" + fileUpload[0]; var cancelFileButton = "file_upload_ans_" + fileUpload[0] + "_cancelFileButton"; var cancelElement = document.getElementById(cancelFileButton); var overrideName = "file_upload_ans_" + fileUpload[0] + "-override"; var overrideElement = document.forms.saveAttemptForm.elements[overrideName]; var spanElement = document.getElementById(spanName); if(divElement !== null) //we must check if item exists for one question at a time format { divElement.style.display = "block"; } if(spanElement !== null) { spanElement.innerHTML = fileUpload[1]; } if(cancelElement !== null) { cancelElement.click(); } if (typeof overrideElement !== 'undefined' && overrideElement !== null) { overrideElement.value = "true"; } } } } }; assessment.prepareForSubmit = function(doValidation) { // MUST VALIDATE FORM TO PERSIST WYSIWYG // Set textarea value to VTBE contents: if (typeof(finalizeEditors) == "function") { finalizeEditors(); } /* Transform equations place holders into html before validation*/ var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if (doValidation) { /* Validate form TODO: Why not call validateForm()*/ var valid = formCheckList.check(); return valid; } return true; };

var widget = {}; widget.colorPickers = {}; widget.ColorPicker = Class.create(); widget.ColorPicker.prototype = { /** * Constructor * * @param name - id of the color picker * @param initialColor - initial color hex string ("#000000") * @param alertMsg - localized error msg string ("Error: A valid color value must be specified") * @param previewIdStr - optional id string of the color preview DIV container user can specify * @param allowTransparent - optional boolean whether to render an option to select transparent. Default is false. */ initialize : function( name, initialColor, alertMsg, previewIdStr, previewBackgroundIdStr, allowTransparent ) { this.theColorPickerName = name; this.allowTransparent = ( !allowTransparent ) ? false : true; this.theMenu = $( name ); this.alertMsg = alertMsg; this.userPreviewContainer = $( previewIdStr ); // may be undefined this.userPreviewBackgroundContainer = $( previewBackgroundIdStr ); // may be undefined if ( typeof this.userPreviewContainer == "undefined" ) { this.userPreviewContainer = null; } if ( typeof this.userPreviewBackgroundContainer == "undefined" ) { this.userPreviewBackgroundContainer = null; } this.colorListParent = $( name + '_colorlist_parent' ); widget.ColorPicker.registerColorPicker( this ); this.ie = document.all && navigator.userAgent.indexOf( "Opera" ) == -1; this.color_hidden_input = $( name + "_title_color_input" ); this.color_hidden_input.value = initialColor; this.color_hidden_input._defaultValue = initialColor; this.anch_link = $( name + "_link" ); this.color_link = $( name + "_img" ); this.color_name_label = $( name + "_color_name_label" ); this.title_color_input = $( name + "_title_color" ); this.setDisplay( initialColor, this.getDisplayColorInfo( initialColor, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( initialColor, true ); var backgroundStyle = initialColor; if( initialColor === "transparent" ) { backgroundStyle = 'url(/images/swatches/transparent.gif)'; } this.color_link.setStyle( { background : backgroundStyle } ); this.updateUserPreviewContainerColor( initialColor ); if ( this.anch_link ) { Event.observe( this.anch_link, "click", this.onOpen.bindAsEventListener( this ) ); } Event.observe( document.body, "click", this.closeColorPickers.bindAsEventListener( this ) ); Event.observe( this.theMenu, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_previewColorLink', 'click', this.previewListener .bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_cancelButton', 'click', this.onClose.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_submitButton', 'click', this.onApply.bindAsEventListener( this ) ); this.skip_link = $( name + "_skip_link" ); if ( this.skip_link ) { Event.observe( this.skip_link, "click", this.onSkipLinkClick.bindAsEventListener( this ) ); } // relocate color picker popup div to the bottom of the doc b/c of css display issues Element.remove( this.theMenu ); document.body.appendChild( this.theMenu ); widget.colorPickers[ this.theColorPickerName ] = this; }, onSkipLinkClick : function( event ) { $( this.theColorPickerName + '_submitButton' ).focus(); }, onKeyPress : function( event ) { var key = event.keyCode || event.which; if ( key == Event.KEY_ESC ) { this.onClose( event ); } }, closeColorPickers : function( event ) { var element = Event.element( event ); widget.ColorPicker.colorPickers.each( function( cp ) { if ( cp != this && !element.descendantOf( cp.theMenu ) ) { cp.close(); } }.bind( this ) ); }, setOnChangeHandler : function( handler ) { this.onChangeHandler = handler; }, setDefaultColor : function( colorValue ) { this.color_hidden_input.value = colorValue; this.color_hidden_input._defaultValue = colorValue; if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); }, setColor : function( colorValue ) { widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, colorValue ); if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); this.updateUserPreviewContainerColor( colorValue ); if ( this.onChangeHandler ) { this.onChangeHandler(); } }, getPaletteInstance : function() { if ( !this.paletteInstance ) { this.paletteInstance = Element.clone( widget.ColorPicker.colorPalette, true ); } return this.paletteInstance; }, deletePaletteInstance : function() { if ( this.paletteInstance ) { Event.stopObserving( this.paletteInstance, 'click' ); this.paletteInstance.remove(); delete this.paletteInstance; } }, onOpen : function( event ) { this.closeColorPickers( event ); this.colorListParent.appendChild( this.getPaletteInstance() ); this.initializeTransparent(); Event.observe( this.getPaletteInstance(), 'click', this.setColorFromSwatch.bindAsEventListener( this ) ); var offset = Position.cumulativeOffset( this.anch_link ); this.theMenu.setStyle( { display : "block", position : "absolute" } ); var width = this.theMenu.getWidth(); var bodyWidth = $( document.body ).getWidth(); var menuDims = this.theMenu.getDimensionsEx(); var anchorDims = this.anch_link.getDimensionsEx(); var menuHeight = menuDims.height; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); // Use viewport relative offsets to figure out placement within the view var offsetTop = offset[ 1 ] - scrollOffsets.top; var offsetLeft = offset[ 0 ] - scrollOffsets.left; var xpos = offsetLeft; if ( page.util.isRTL() ) { xpos = xpos + this.anch_link.getWidth() - width; } if ( xpos + width > viewportDimensions.width ) { // First try to position it on the left of the link instead of the right xpos = offsetLeft - width + anchorDims.width; if ( xpos < 0 ) { // If we go off the page though, just try our best xpos = viewportDimensions.width - width; } } if ( xpos < 0 ) { xpos = 0; } var ypos = offsetTop + anchorDims.height; if ( ( ypos + menuHeight ) > viewportDimensions.height ) { // Try to position above the color picker first ypos = offsetTop - menuHeight; if ( ypos < 0 ) { // but if it goes off the top of the page just do a best-effort. ypos = ypos - ( ypos + menuHeight - viewportDimensions.height ); if ( ypos < 0 ) { ypos = 0; } } } // The color swatch is positioned absolutely, so adjust offsets to include the scrollofset ypos = ypos + scrollOffsets.top; xpos = xpos + scrollOffsets.left; this.theMenu.setStyle( { left : xpos + "px", top : ypos + "px" } ); this.title_color_input.focus(); ( function() { if ( !this.shim ) { this.shim = new page.popupShim( this.theMenu ); } this.shim.open(); }.bind( this ).defer() ); Event.stop( event ); }, /** * Removes the transparent choice from the palette if the picker is not supposed to support transparency. */ initializeTransparent : function() { if ( !this.allowTransparent ) { var transparentLi = this.colorListParent.down( 'li#colorlist_transparent' ); if ( transparentLi ) { Element.remove( transparentLi ); } } }, /** * Hides the color picker. */ onClose : function() { this.close(); this.anch_link.focus(); }, close : function() { this.deletePaletteInstance(); this.theMenu.setStyle( { display : "none" } ); if ( this.shim ) { this.shim.close(); } }, /** * Sets the preview color and text to the color selected by the user in the palette */ setColorFromSwatch : function( event ) { var element = Event.element( event ); if ( element.hasClassName( 'transparent' ) ) { this.setDisplay( "transparent", page.bundle.getString( "colorpicker.color.transparent" ) ); } else { var text = element.childNodes[ 0 ].nodeValue; if ( text ) { this.setDisplay( text.substring( 0, 7 ), this.getDisplayColorInfo( text.substring( 0, 7 ), false ) ); } } Event.stop( event ); }, getDisplayColorInfo : function( hexValue, onlyColorName ) { var transparent = false; var localizedName; var safeColorCode; if ( hexValue === "transparent" ) { transparent = true; localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ hexValue ]; } else { safeColorCode = this.getSafeColorCode( hexValue ).toUpperCase(); //The keys in ColorPickerMap are all 6 digit safe color codes, that's we need to make sure that we're using the correct key to lookup the color. localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ safeColorCode ]; } if ( !localizedName ) { localizedName = ''; } var colorName; colorName = localizedName + ' (' + hexValue + ')'; if ( onlyColorName || transparent ) { colorName = localizedName; } return colorName; }, /** * Returns a Six digit Hexadecimal Color Code. */ getSafeColorCode : function( hexValue ) { return hexValue.replace( /#([\d0-9A-Fa-f])([\d0-9A-Fa-f])([\d0-9A-Fa-f])$/,'#$1$1$2$2$3$3'); }, /** * Handles the Preview functionality on the swatch. If an inappropriate color is choosen, a msg is displayed to the * user. Else updates the color preview with the manually entered color. */ previewListener : function( event ) { if ( !this.isValidColor( this.title_color_input.value ) ) { alert( this.alertMsg ); return; } if ( this.title_color_input.value.length != 6 ) { return; } var prevCol; if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { prevCol = "transparent"; this.setDisplay( prevCol, page.bundle.getString( 'colorpicker.color.transparent' ) ); } else { prevCol = '#' + this.title_color_input.value; this.setDisplay( prevCol, this.getDisplayColorInfo( prevCol, false ) ); } Event.stop( event ); }, /** * Updates the color preview panel in the picker pop up */ setDisplay : function( col, text ) { if ( col === "transparent" ) { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : 'url(/images/swatches/transparent_lrg.gif)' } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : '#ffffff' } ); this.title_color_input.value = 'XXXXXX'; } else { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : col } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : col } ); this.title_color_input.value = ( col.startsWith( '#' ) ) ? col.substr( 1 ) : col; } $( this.theColorPickerName + '_title_color_name' ).innerHTML = text; }, /** * Checks for a valid color value. */ isValidColor : function( color_value ) { var isValid = false; isValid = ( /^[0-9A-Fa-f]{6}/ ).test( color_value ); if ( !isValid && this.allowTransparent ) { isValid = color_value.toLowerCase() === "xxxxxx"; } return isValid; }, /** * Manages the functionality for the Apply button the swatch. */ onApply : function( event ) { var color = this.title_color_input.value; if ( !this.isValidColor( color ) ) { return; } if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); color = "transparent"; this.color_name_label.innerHTML = page.bundle.getString( "colorpicker.color.transparent" ); } else { color = '#' + color; this.color_link.setStyle( { background : color } ); this.color_name_label.innerHTML = this.getDisplayColorInfo( color, true ); } widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, color ); this.updateUserPreviewContainerColor( color ); this.onClose(); if ( this.onChangeHandler ) { this.onChangeHandler(); } Event.stop( event ); }, /** * If the user specified preview container element exists, update its color style to the color given. * * @param color - color hex string */ updateUserPreviewContainerColor : function( color ) { if ( this.userPreviewContainer ) { this.userPreviewContainer.style.color = color; } else if ( this.userPreviewBackgroundContainer ) { this.userPreviewBackgroundContainer.style.background = color; } } }; // end widget.ColorPicker.prototype widget.ColorPicker.colorPickers = []; widget.ColorPicker.colorPickerMap = {}; widget.ColorPicker.colorPickerPaletteMap = {}; widget.ColorPicker.registerColorPicker = function( cp ) { widget.ColorPicker.colorPickers.push( cp ); widget.ColorPicker.colorPickerMap[ cp.theColorPickerName ] = cp; // grab the color definition and remove it from the DOM for the time being if ( !widget.ColorPicker.colorPalette ) { var colorPalette = $( 'picker_colorlist' ); // Store the colors and their localized names so we can look them up later. widget.ColorPicker.colorPickerPaletteMap[ "default" ] = {}; var arrColors = Element.getElementsBySelector( colorPalette, "a" ); for ( var i = 0; i < arrColors.length; i++ ) { if ( !arrColors[ i ].hasClassName( "transparent" ) ) { widget.ColorPicker.colorPickerPaletteMap[ "default" ][ arrColors[ i ].innerHTML.substring( 0, 7 ).toUpperCase() ] = arrColors[ i ].innerHTML .substring( 8 ); } } widget.ColorPicker.colorPickerPaletteMap[ "default" ].transparent = page.bundle .getString( "colorpicker.color.transparent" ); widget.ColorPicker.colorPalette = colorPalette; // deferring so that the name lookup for colors can succeed during init ( function() { Element.remove( colorPalette ); }.defer() ); } }; widget.ColorPicker.closeAllColorPickers = function() { widget.ColorPicker.colorPickers.each( function( cp ) { cp.close(); } ); }; widget.MultiSelect = Class.create(); widget.MultiSelect.multiselectBoxes = []; // ---------------- "static" methods widget.MultiSelect.registerMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.push( ms ); }; widget.MultiSelect.unRegisterMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.remove( ms ); }; widget.MultiSelect.prototype = { initialize : function( multiSelectDiv, formName ) { this.multiSelectDiv = $( multiSelectDiv ); this.formName = formName; if ( this.multiSelectDiv ) { this.leftClickListeners = []; this.rightClickListeners = []; var divs = this.multiSelectDiv.getElementsByTagName( 'div' ); var leftDiv = $( divs[ 0 ] ); var buttonDiv = $( divs[ 1 ] ); var rightDiv = $( divs[ 2 ] ); var inputs = this.multiSelectDiv.getElementsByTagName( 'input' ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); var leftSelects = leftDiv.getElementsByTagName( 'select' ); var rightSelects = rightDiv.getElementsByTagName( 'select' ); this.leftSelectBox = $( leftSelects[ 0 ] ); this.rightSelectBox = $( rightSelects[ 0 ] ); var buttons = buttonDiv.getElementsByTagName( 'button' ); var moveRightButton = $( buttons[ 0 ] ); var moveLeftButton = $( buttons[ 1 ] ); var leftInputs = leftDiv.getElementsByTagName( 'input' ); var leftInvertSelectionButton = $( leftInputs[ 0 ] ); var leftSelectAllButton = $( leftInputs[ 1 ] ); var rightInputs = rightDiv.getElementsByTagName( 'input' ); var rightInvertSelectionButton = $( rightInputs[ 0 ] ); var rightSelectAllButton = $( rightInputs[ 1 ] ); widget.MultiSelect.registerMultiSelect( this ); Event.observe( moveLeftButton, "click", this.onMoveLeftClick.bindAsEventListener( this ) ); Event.observe( moveRightButton, "click", this.onMoveRightClick.bindAsEventListener( this ) ); Event.observe( leftInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, true ) ); Event.observe( rightInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, false ) ); Event.observe( leftSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, true ) ); Event.observe( rightSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, false ) ); // This for the MultiSelectAction Bean. // If actionBean list is less than 1, button is displayed and not the dropdown if ( leftSelects.length > 1 ) { this.actionBeanLeftSelect = $( leftSelects[ 1 ] ); this.actionBeanRightSelect = $( rightSelects[ 1 ] ); var actionBeanLeftGoBox = $( leftInputs[ 2 ] ); var actionBeanRightGoBox = $( leftInputs[ 2 ] ); Event.observe( actionBeanLeftGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, true ) ); Event.observe( actionBeanRightGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, false ) ); } } }, actionBeanFunc : function( event, leftSelect ) { var destination = this.actionBeanLeftSelect; var selectedBox = this.leftSelectBox; if ( !leftSelect ) { destination = this.actionBeanRightSelect; selectedBox = this.rightSelectBox; } var myindex = destination.selectedIndex; if ( myindex == -1 || myindex > destination.length - 1 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return false; } var sFunctionName = destination.options[ myindex ].value; var oFunc = window[ sFunctionName ]; oFunc( selectedBox.name, this.formName ); this.setHiddenValues(); }, /* * listener registration for leftmove and rightmove clicks */ addToLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.push( listenerFunc ); } }, addToRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.push( listenerFunc ); } }, removeFromLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.remove( listenerFunc ); } }, removeFromRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.remove( listenerFunc ); } }, removeAllLeftClickListeners : function() { this.leftClickListeners = []; }, removeAllRightClickListeners : function() { this.rightClickListeners = []; }, removeFromLeft : function( id ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var toRemoveElement = leftItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToLeft : function( id, value, sortString ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var returnItem = leftItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { this.rawAddToLeft( id, value, sortString ); this.setHiddenValues(); } } }, rawAddToLeft : function( id, value, sortString ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.leftSelectBox.appendChild( item ); }, removeFromRight : function( id ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var toRemoveElement = rightItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToRight : function( id, value, sortString ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var returnItem = rightItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.rightSelectBox.appendChild( item ); this.setHiddenValues(); } } }, resetRightBox : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); rightItems.invoke( "remove" ); this.setHiddenValues(); } }, resetLeftBox : function() { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); leftItems.invoke( "remove" ); this.setHiddenValues(); } }, getAllLeftAvailableElements : function() { if ( this.leftSelectBox ) { return this.leftSelectBox.immediateDescendants(); } else { return []; } }, getAllRightElements : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); return rightItems; } else { return []; } }, onMoveLeftClick : function( event ) { var rightItems = this.rightSelectBox.immediateDescendants(); var selectedItems = rightItems.findAll( function( item ) { return item.selected; } ); var leftItems = this.leftSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { leftItems.push( item ); } ); leftItems = leftItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); leftItems.each( function( item ) { this.leftSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.leftClickListeners ) { this.leftClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, onMoveRightClick : function( event ) { var leftItems = this.leftSelectBox.immediateDescendants(); var selectedItems = leftItems.findAll( function( item ) { return item.selected; } ); var rightItems = this.rightSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { rightItems.push( item ); } ); rightItems = rightItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); rightItems.each( function( item ) { this.rightSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.rightClickListeners ) { this.rightClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, setHiddenValues : function() { var leftString; var rightString; var temp = ""; // Populate select box values comma separated into leftString,rightString. if ( this.leftSelectBox ) { this.leftSelectBox.immediateDescendants().each( function( option ) { leftString = option.value; temp += leftString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.leftValues.value = temp; temp = ""; } if ( this.rightSelectBox ) { this.rightSelectBox.immediateDescendants().each( function( option ) { rightString = option.value; temp += rightString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.rightValues.value = temp; temp = ""; } }, onSelectAllClick : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } Event.stop( event ); }, onInvertSelection : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } } }; /** * A dynamic picker list */ widget.PickerList = Class.create(); widget.PickerList.prototype = { /** * Creates a new picker list * * @param id id of the picker list table * @param cellGenerators an array of functions to be called to generate the HTML for the cells for a new row in the * table. * @param columnAlignments an array of the alignments of the columns * @param columnStyles optional styles to applied to columns * @param reorderable whether the table is to be reorderable * @param reorderingUrl url that reordering changes will be persisted to (can be null) * @param contextParameters parameters that are passed along with the reordering action. */ initialize : function( id, cellGenerators, columnAlignments, columnStyles, reorderable, reorderingUrl, contextParameters ) { this.table = $( id ); this.reorderable = reorderable; if ( this.table ) { this.tableBody = $( this.table.getElementsByTagName( 'tbody' )[ 0 ] ); if ( reorderable ) { this.dragDrop = new dragdrop.ListReordering( this.tableBody, this.table.id + '_reorderControls', false, 'tr', 'dndHandle', 'span', reorderingUrl, contextParameters, new Date().getTime(), null ); } } this.cellGenerators = cellGenerators; this.columnAlignments = columnAlignments; this.columnStyles = columnStyles; }, /** * This function takes any number of arguments. They will be passed directly to the generator functions. If this * list is reorderable, the first two arguments must be: - id of the item added. - name of the item added. */ addRow : function() { var generatorArgs = arguments; var row = $( document.createElement( "tr" ) ); if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var id = arguments[ 0 ]; var name = arguments[ 1 ]; // Set the row id so that the drag and drop code can identify the row row.id = this.table.id + '_row:' + id; // Add the reordering handle. var cell = document.createElement( "td" ); cell.className = 'smallCell dndHandle'; cell.valign = 'top'; cell.innerHTML = '<span class="reorder"><span><img src="/images/ci/icons/generic_updown.gif" alt="" /></span></span>'; row.appendChild( cell ); // Add the item to the accessible controls. var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); accessibleSelect.options[ accessibleSelect.length ] = new Option( name, id ); dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } this.cellGenerators.each( function( generator, index ) { var alignment = this.columnAlignments[ index ]; var cell = $( document.createElement( "td" ) ); cell.setAttribute( "align", alignment ); var columnStyle = this.columnStyles[ index ]; if ( '' != columnStyle ) { cell.addClassName( columnStyle ); } cell.innerHTML = generator.apply( window, generatorArgs ); row.appendChild( cell ); }.bind( this ) ); if ( generatorArgs[ 0 ] && generatorArgs[ 0 ].incompatibleFile ) { return; } else { this.tableBody.appendChild( row ); } if ( this.reorderable ) { // Toggle drag and drop so that it picks up the new item. this.dragDrop.disableDragAndDrop(); this.dragDrop.enableDragAndDrop(); this.dragDrop.calculateItemOrder(); } return row; }, /** * Removes the row with the specified id or index * * @param idOrIndex - if the argument is a string - it is taken as the id of one of the rows in the table - if the * argument is a number - the row at the specified index will be removed. */ removeRow : function( idOrIndex ) { var rowToRemove = null; if ( Object.isString( idOrIndex ) ) { rowToRemove = $( this.table.id + "_row:" + idOrIndex ); } else { rowToRemove = this.tableBody.childElements()[ idOrIndex ]; } if ( rowToRemove ) { // Remove the row from the accessible repositioning controls if applicable if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var idToCheck = rowToRemove.id.split( ':' )[ 1 ]; var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); var options = accessibleSelect.childElements(); for ( var i = 0; i < options.length; i++ ) { if ( options[ i ].value == idToCheck ) { Element.remove( options[ i ] ); break; } } dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } Element.remove( rowToRemove ); if ( this.reorderable ) { this.dragDrop.calculateItemOrder(); } } } }; widget.PickerList.noopGenerator = function() { return '&nbsp;'; }; /** * File picker */ widget.FilePicker = Class.create(); widget.FilePicker.prototype = { /** * Creates a new file picker * * @param pickerList the javascript object representing the picker list (of currently attached files) * @param baseElementName the base name for the file picker elements * @param required whether a file is required to be chosen * @param overrideLocalBehavior whether the CS options to override local behavior should be shown * @param csPickerUrl url to the CS file picker * @param showAddMetadata whether the "submit and add metadata" content system functionality should be enabled. * @param onAttachFile Optional callback function triggered when a new file is attached */ initialize : function( pickerList, baseElementName, required, overrideLocalBehavior, csPickerUrl, showAddMetadata, showSpecialAction, allowMultipleFiles, onAttachFile ) { this.pickerList = pickerList; this.baseElementName = baseElementName; this.required = required; this.overrideLocalBehavior = overrideLocalBehavior; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.allowMultipleFiles = allowMultipleFiles; this.onAttachFile = onAttachFile; this.pickCSButton = $( this.baseElementName + '_csBrowse' ); this.pickLocalButton = $( this.baseElementName + '_localBrowse' ); this.localFilePicker = $( this.baseElementName + '_chooseLocalFile' ); this.pickURLButton = $( this.baseElementName + '_urlBrowse' ); this.selectedCSFile = $( this.baseElementName + '_selectedCSFile' ); this.selectedCSFileName = $( this.baseElementName + '_selectedCSFileName' ); this.selectedCSFilePath = $( this.baseElementName + '_selectedCSFilePath' ); this.selectedCSFileSize = $( this.baseElementName + '_selectedCSFileSize' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_selectedCSFileMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_selectedCSFileMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_selectedCSFileMetadataFormat' ); } // single file selected area this.selectedFileActionsArea = $( this.baseElementName + '_selectedFileActions' ); this.selectedFileName = $( this.baseElementName + '_selectedFileName' ); this.selectedFileSource = $( this.baseElementName + '_selectedFileSource' ); this.selectedFileLinkTitle = $( this.baseElementName + '_selectedFileLinkTitle' ); this.selectedFileSpecialAction = $( this.baseElementName + '_selectedFileSpecialAction' ); this.attachFileButton = $( this.baseElementName + '_attachFileButton' ); this.cancelFileButton = $( this.baseElementName + '_cancelFileButton' ); this.allowCS = this.pickCSButton ? true : false; this.allowLocal = this.pickLocalButton ? true : false; this.allowURL = this.pickURLButton ? true : false; // Wire up events if ( this.overrideLocalBehavior ) { this.pickTargetButton = $( this.baseElementName + '_CSTargetButton' ); this.targetCSLocation = $( this.baseElementName + '_CSTarget' ); Event.observe( this.pickTargetButton, "click", this.onPickTargetClick.bindAsEventListener( this ) ); } this.pickMDButton = $( this.baseElementName + '_CSTargetMetaButton' ); if ( this.pickMDButton ) { window.CSMetadataPickerCallBack = this.afterPickMD.bind( this ); Event.observe( this.pickMDButton, "click", this.onPickMDClick.bindAsEventListener( this ) ); } if ( $( this.baseElementName + '_permissionPickerButton0' ) ) { Event.observe( $( this.baseElementName + '_permissionPickerButton0' ), "click", widget.FilePicker.openPermPicker .bindAsEventListener( this, this.csPickerUrl, this.baseElementName + "_permissions0_manual", "", this.selectedCSFilePath, widget.FilePicker.permPickerCallback .curry( this.baseElementName, this.baseElementName + '_csPermFileList0', 0 ) ) ); } if ( this.allowCS ) { Event.observe( this.pickCSButton, "click", this.onCSBrowse.bindAsEventListener( this ) ); Event.observe( this.selectedCSFile, "change", this.onCSPick.bindAsEventListener( this ) ); } if ( this.allowLocal ) { this.localFileContainer = this.localFilePicker.up(); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } if ( this.allowURL ) { this.linkId = $( this.baseElementName + "_urlBrowse" ); this.formDivId = $( this.baseElementName + "_addUrlForm" ); this.formContainerId = $( this.baseElementName + "_urlContainerDiv" ); var flyout = new flyoutform.FlyoutForm( { linkId : this.linkId, formDivId : this.formDivId, inlineFormContainerId : this.formContainerId, customCallbackObject : this, customOnSubmitHandler : this.onURLPick } ); this.flyout = flyout; } if ( this.cancelFileButton ) { Event.observe( this.cancelFileButton, "click", this.onCancelClick.bindAsEventListener( this ) ); } Event.observe( this.allowLocal ? this.pickLocalButton.form : this.pickCSButton.form, "submit", this.onSubmit .bindAsEventListener( this ) ); this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv && this.pickerList && this.pickerList.tableBody && ( this.pickerList.tableBody .getElementsBySelector( 'input[type="hidden"]' ).length > 0 || this.pickerList.tableBody .getElementsBySelector( 'input[type="file"]' ).length > 0 ) ) { this.listHtmlDiv.show(); } if ( !this.allowMultipleFiles && this.selectedFileSource.value != '' ) { // A file is already attached, so show the selected files area and // turn off the file choosing button (and metadata button if any). this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } } widget.FilePicker.registerFilePicker( this ); }, /** * For the override local behavior: show the picker to pick the location */ onPickTargetClick : function( event ) { var remote = popop.launchPicker( '/webapps/cmsmain/folderpicker/', 'picker_browse' ); if ( remote ) { remote.opener.inputEntryURLToSet = this.targetCSLocation; remote.opener.returnFullURL = false; remote.methodCall = this.onPickMDClick.bind( this ); } }, /** * For the override local behavior: show the picker to pick the metadata */ onPickMDClick : function( event ) { var location = this.targetCSLocation; var file = this.localFilePicker; if ( file.value == '' ) { return; } var url = '/webapps/cmsmain/execute/metadatapicker/manage?action=pick&file=' + file.value; if ( location && location.value != '' ) { url += 'location=' + location.value; } popup.launchPicker( url, 'picker_browse' ); }, /** * For the override local behavior: callback from the metadata picker */ afterPickMD : function( metadata, selection, synchronised, format ) { $( this.baseElementName + '_CSTargetmetadata' ).value = metadata; $( this.baseElementName + '_CSTargetselection' ).value = selection; $( this.baseElementName + '_CSTargetSynchronised' ).value = synchronised; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = format; }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.inputEntryURLToSet = this.selectedCSFile; this.csBrowseWindow.opener.inputFileSizeToSet = this.selectedCSFileSize; this.csBrowseWindow.opener.linkName = this.selectedCSFileName; if ( this.selectedCSFilePath ) { this.csBrowseWindow.opener.filePath = this.selectedCSFilePath; } this.csBrowseWindow.opener.customHandler = this.onCSPick.bind( this ); if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, /** * Called after file has been chosen from CS file picker with metadata added. */ afterMD : function( metadata, synced, format, fileId ) { var metadataString = metadata.join( "#" ); if ( fileId ) { if ( $( this.baseElementName + '_CSMetadata_' + fileId ) ) { $( this.baseElementName + '_CSMetadata_' + fileId ).value = metadataString; } if ( $( this.baseElementName + '_CSMetadataSync_' + fileId ) ) { $( this.baseElementName + '_CSMetadataSync_' + fileId ).value = synced; } if ( $( this.baseElementName + '_CSMetadataFormat_' + fileId ) ) { $( this.baseElementName + '_CSMetadataFormat_' + fileId ).value = format; } } else { if ( this.selectedCSFileMetadata ) { this.selectedCSFileMetadata.value = metadataString; } if ( this.selectedCSFileMetadataSync ) { this.selectedCSFileMetadataSync.value = synced; } if ( this.selectedCSFileMetadataFormat ) { this.selectedCSFileMetadataFormat.value = format; } } }, /** * Callback called after a file has been chosen from the CS file picker in single file mode - updating selected * files section */ onCSPick : function( fileList ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { // picker was opened in multiple mode but one of the legacy page was hit // see how legacy pages with radio buttons submit its selection - pickmultiple.jspf // create object cell generator is expecting using hidden input if ( typeof ( fileList ) == 'string' ) { var filePath = this.selectedCSFilePath ? this.selectedCSFilePath.value : ""; var csFile = { fileName : this.selectedCSFile.value, fullUrlToFile : this.selectedCSFile.value, linkTitle : this.selectedCSFileName.value, filePath : filePath, size : this.selectedCSFileSize.value }; this.onCSPickAllowMultiple( [ csFile ] ); } else { this.onCSPickAllowMultiple( fileList ); } } else { this.csBrowseWindow = null; this.selectedFileSource.value = 'C'; this.selectedFileName.innerHTML = this.selectedCSFileName.value; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = this.selectedCSFileName.value; } this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } if ( $( this.baseElementName + '_csPermissionsLi' ) ) { var fileName = this.selectedCSFileName.value; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. if ( ( /html|htm/i ).test( ext ) ) { $( this.baseElementName + "_permissionOptionsIndex" ).value = 0; $( this.baseElementName + '_csPermissionsLi' ).show(); } } if ( this.onAttachFile ) { this.onAttachFile( this, false ); } } }, /** * Called after a file is chosen from the local file picker in single file mode - updating selected files section */ onLocalPick : function( event ) { if ( this.localFilePicker.value != '' ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { this.onLocalPickAllowMultiple( event ); } else { var localFileName = this.getFileName( this.localFilePicker.value ); this.selectedFileName.innerHTML = localFileName; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = localFileName; } this.selectedFileSource.value = 'L'; this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.show(); } if ( this.onAttachFile ) { this.onAttachFile( this, true ); } } } }, /** * Callback called after files have been chosen from the CS file picker in multiple files mode - updating table */ onCSPickAllowMultiple : function( fileList ) { this.csBrowseWindow = null; fileList.each( function( selectedFile ) { selectedFile.baseElementName = this.baseElementName; selectedFile.showAddMetadata = this.showAddMetadata; selectedFile.csPickerUrl = this.csPickerUrl; this.pickerList.addRow( selectedFile, false ); // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); if ( this.onAttachFile ) { this.onAttachFile( this, false ); } }.bind( this ) ); }, /** * Called after a file is chosen from the local file picker in multiple files mode - updating table */ onLocalPickAllowMultiple : function( event ) { var row = this.pickerList.addRow( this, true ); if ( row === null ) { return; } // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); var cell = $( row.getElementsByTagName( 'td' )[ 0 ] ); var title = this.localFilePicker.title; Element.remove( this.localFilePicker ); this.localFilePicker.removeClassName( "hiddenInput" ); this.localFilePicker.setStyle( { position : "absolute", top : '-10000px' } ); this.localFilePicker.disabled = false; cell.appendChild( this.localFilePicker ); // Set up the names of the local file fields this.pickerList.tableBody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = this.baseElementName + '_LocalFile' + index; }.bind( this ) ); // Create and insert a new local file picker for more local file attaching this.localFilePicker = new Element( 'input', { title : title, type : 'file' } ); this.localFilePicker.addClassName( 'hiddenInput' ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); if ( this.onAttachFile ) { this.onAttachFile( this, true ); } }, /** * If a) Special Actions are enabled, and b) the embed options are configure to show up: - Wires up an on change * even on the special action select box that shows the embed options when the embed action is chosen. */ registerEmbedOptionsListener : function( index ) { if ( this.showSpecialAction ) { var specialAction = $( this.baseElementName + '_specialAction' + index ); var embedOptions = $( this.baseElementName + '_embedOptions' + index ); if ( embedOptions ) { specialAction.observe( 'change', function( event ) { if ( "EMBED" == specialAction.options[ specialAction.selectedIndex ].value ) { embedOptions.show(); } else { embedOptions.hide(); } } ); } } }, /** * Called after a url is chosen from the local file picker in multiple files mode - updating table */ onURLPick : function( widget ) { var selectedURL = document.getElementById( widget.baseElementName + '_newUrlName' ); if (selectedURL.value.blank()) // TODO: More exhaustive URL validation? { alert(page.bundle.getString('filePicker.validate.invalid.url')); return false; } if ( widget.listHtmlDiv ) { widget.listHtmlDiv.show(); } if ( widget.allowMultipleFiles ) { var urlFile = { fileName : selectedURL.value, fullUrlToFile : selectedURL.value, linkTitle : selectedURL.value }; widget.onCSPickAllowMultiple( [ urlFile ] ); } else { widget.selectedFileSource.value = 'C'; widget.selectedFileName.innerHTML = selectedURL.value; if ( widget.selectedFileLinkTitle ) { widget.selectedFileLinkTitle.value = selectedURL.value; } widget.selectedFileActionsArea.show(); widget.togglePickerButtons( false ); if ( widget.pickMDButton ) { widget.pickMDButton.hide(); } if ( widget.onAttachFile ) { widget.onAttachFile( widget, false ); } } // Purge entry widget.flyout.close(); selectedURL.value = ''; return true; }, /** * Called when the "Do not attach file" button is clicked */ onCancelClick : function( event ) { this.selectedFileActionsArea.hide(); this.clearSelectedFileInfo(); this.togglePickerButtons( true ); if ( event ) { Event.stop( event ); } }, /** * Toggles the enabled state of the Local/CS picker buttons to the specified state */ togglePickerButtons : function( enabled ) { if ( this.allowLocal ) { this.pickLocalButton.disabled = !enabled; if ( enabled ) { this.pickLocalButton.className = 'browse visibleInput'; this.localFilePicker.position = 'relative'; this.localFilePicker.style.top = ''; } else { this.pickLocalButton.className = 'disabled'; this.localFilePicker.position = 'absolute'; this.localFilePicker.style.top = '-10000px'; } if ( this.allowMultiple ) { this.localFilePicker.disabled = !enabled; } } if ( this.allowCS ) { this.pickCSButton.disabled = !enabled; if ( enabled ) { this.pickCSButton.className = 'browse visibleInput'; } else { this.pickCSButton.className = 'disabled'; } } if ( this.allowURL ) { this.pickURLButton.disabled = !enabled; if ( enabled ) { this.pickURLButton.className = 'browse visibleInput'; } else { this.pickURLButton.className = 'disabled'; } } }, /** * Clears the info associated to the current attached file (if the user cancelled, or chose to attach another file ) */ clearSelectedFileInfo : function() { var isLocal = this.selectedFileSource.value == 'L'; this.selectedFileName.innerHTML = ""; this.selectedFileSource.value = ""; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = ""; } if ( this.pickMDButton ) { $( this.baseElementName + '_CSTargetmetadata' ).value = ""; $( this.baseElementName + '_CSTargetselection' ).value = ""; $( this.baseElementName + '_CSTargetSynchronised' ).value = ""; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = ""; } if ( $( this.baseElementName + "_permissionOptionsIndex" ) ) { $( this.baseElementName + '_permissionOptionsIndex' ).value = -1; $( this.baseElementName + '_permissions0_all' ).checked = true; } if ( this.selectedFileSpecialAction ) { this.selectedFileSpecialAction.selectedIndex = 0; } if ( isLocal ) { var title = ""; if ( !this.allowMultipleFiles ) { title = this.localFilePicker.title; Element.remove( this.localFilePicker ); } this.localFilePicker = $( document.createElement( "input" ) ); if ( !this.allowMultipleFiles ) { this.localFilePicker.name = this.baseElementName + '_LocalFile0'; } this.localFilePicker.title = title; this.localFilePicker.type = "file"; this.localFilePicker.addClassName( "hiddenInput" ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } else { this.selectedCSFile.value = ""; this.selectedCSFileName.value = ""; if ( this.selectedFilePath ) { this.selectedFilePath = ""; } this.selectedCSFileSize.value = ""; if ( this.showAddMetadata ) { this.selectedCSFileMetadata.value = ""; this.selectedCSFileMetadataSync.value = ""; this.selectedCSFileMetadataFormat.value = ""; } } }, /** * Gets the file name based on the full file path. */ getFileName : function( fullPath ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return result; }, setRequired : function( required ) { this.required = required; }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.allowMultipleFiles ) { if ( this.pickerList.tableBody.immediateDescendants().length === 0 ) { alert( page.bundle.getString( "filePicker.validate.atLeastOne" ) ); if ( event ) { Event.stop( event ); } return false; } } else { if ( ( this.selectedCSFile && this.selectedCSFile.value == '' ) && ( this.localFilePicker && this.localFilePicker.value == '' ) ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); if ( event ) { Event.stop( event ); } return false; } } } return true; } }; // Creates hidden input items for selected files/folders if giving access to additional files/folder // when attaching an HTML file widget.FilePicker.permPickerCallback = function( baseElementName, permFileList, index, itemList ) { if ( itemList && itemList.length > 0 ) { var i; var permFileListElem = $( permFileList ); var hiddenInputs = ""; if ( !permFileListElem ) { return; } hiddenInputs += '<input type="hidden" name="' + baseElementName + '_permittedFiles' + index + '" value="' + itemList[ 0 ].fileName; for ( i = 1; i < itemList.length; i++ ) { hiddenInputs += ':' + itemList[ i ].fileName; } hiddenInputs += '">'; permFileListElem.innerHTML = hiddenInputs; } }; /** * Toggles the "mark for removal" status of an item in the currently attached files table. Should be called from an * onclick attribute on the toggle link in the table. */ widget.FilePicker.toggleForRemove = function( event, removeLink ) { var e = event || window.event; removeLink = $( removeLink ); var tableRow = removeLink.up( "tr" ); var hiddenField = removeLink.up( "td" ).down( 'input[type="hidden"]' ); tableRow.toggleClassName( "removeCell" ); if ( hiddenField.disabled ) { hiddenField.disabled = false; removeLink.innerHTML = page.bundle.getString( "filePicker.unmarkForRemove" ); } else { hiddenField.disabled = true; removeLink.innerHTML = page.bundle.getString( "filePicker.markForRemove" ); } Event.stop( e ); }; widget.FilePicker.togglePickerButton = function( pickerButton, enabled ) { if ( enabled ) { $( pickerButton ).setAttribute( "href", "#" ); $( pickerButton ).removeClassName( "disabled" ); } else { $( pickerButton ).removeAttribute( "href" ); $( pickerButton ).addClassName( "disabled" ); } }; /** * Removes the specified pending attachment. Should be called from an onclick handler on a link in the currently * attached files table */ widget.FilePicker.removePendingAttachment = function( event, removeLink, baseElementName ) { var e = event || window.event; if ( confirm( page.bundle.getString( "filePicker.doNotAttach.confirm" ) ) ) { removeLink = $( removeLink ); var row = removeLink.up( "tr" ); var tbody = row.up( "tbody" ); // Remove the pending row Element.remove( row ); // Re-index the local file inputs. tbody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = baseElementName + '_LocalFile' + index; } ); // Hide the whole attached files table if there are no more attached files. var rowTotal = tbody.getElementsByTagName( 'tr' ).length; if ( rowTotal === 0 ) { var listHtmlDiv = $( baseElementName + "_listHtmlDiv" ); if ( listHtmlDiv ) { listHtmlDiv.hide(); } } } Event.stop( e ); }; widget.FilePicker.getPermPickerUrl = function( csPickerUrl, path, pathElement ) { // reuse current file picker's url as fall back plan var baseUrl = csPickerUrl.split( "?" )[ 0 ]; var queryParams = csPickerUrl.toQueryParams(); if ( !queryParams.multipicker ) { queryParams.multipicker = 'true'; } if ( !path && pathElement ) { path = pathElement.value; } // if we have path, construct proper full url from scratch using the provided path & extracted principalId if ( path ) { var principalId = baseUrl.match( /\/webapps\/cmsmain\/.*picker\/([^\/]*)\/?/ ); baseUrl = "/webapps/cmsmain/picker"; if ( principalId ) { baseUrl += "/" + principalId[ 1 ]; } if ( baseUrl.charAt( baseUrl.length - 1 ) === '/' ) { baseUrl = baseUrl.slice( 0, baseUrl.length - 1 ); } baseUrl += path; } return baseUrl + "?" + $H( queryParams ).toQueryString(); }; widget.FilePicker.openPermPicker = function( event, csPickerUrl, pid, path, pathElement, callback ) { if ( !( pid && $( pid ) && $( pid ).type == 'radio' && $( pid ).checked ) ) { return false; } var permPickerUrl = widget.FilePicker.getPermPickerUrl( csPickerUrl, path, pathElement ); var remote = popup.launchPicker( permPickerUrl ); if ( remote ) { if ( callback ) { remote.opener.customHandler = callback; } else { remote.opener.customHandler = null; } } var e = event || window.event; if ( e ) { var eventElement = Event.element( e ); Event.stop( e ); } return false; }; /** * A registry of defined file pickers and methods to access this registry */ widget.FilePicker.filePickers = {}; widget.FilePicker.registerFilePicker = function( filePicker ) { widget.FilePicker.filePickers[ filePicker.baseElementName ] = filePicker; }; widget.FilePicker.unRegisterFilePicker = function( filePicker ) { delete widget.FilePicker.filePickers[ filePicker.baseElementName ]; }; widget.FilePicker.getFilePicker = function( baseElementName ) { return widget.FilePicker.filePickers[ baseElementName ]; }; /** * Cell generators for the current attached files table */ widget.FilePicker.cellGenerators = { fileName : function( filePicker, isLocal ) { var result = '<input type="hidden" name="' + filePicker.baseElementName + '_attachmentType" value="' + ( isLocal ? 'L' : 'C' ) + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_fileId" value="new">'; if ( isLocal ) { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.getFileName( filePicker.localFilePicker.value ) + '</span>'; } else { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.linkTitle + '</span>'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFile" value="' + filePicker.fileName + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFileUrl" value="' + filePicker.fullUrlToFile + '">'; if ( filePicker.showAddMetadata ) { result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadata" id="' + filePicker.baseElementName + '_CSMetadata_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataSync" id="' + filePicker.baseElementName + '_CSMetadataSync_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataFormat" id="' + filePicker.baseElementName + '_CSMetadataFormat_' + filePicker.xythosId + '" value="">'; } } return result; }, fileType : function( filePicker, isLocal ) { var result = null; if ( isLocal ) { result = page.bundle.getString( "filePicker.fileType.attachment" ); } else { result = page.bundle.getString( "filePicker.fileType.content" ); } return result; }, linkTitle : function( filePicker, isLocal ) { var linkTitle = ""; if ( isLocal ) { linkTitle = filePicker.getFileName( filePicker.localFilePicker.value ); } else { if ( filePicker.linkTitle ) { linkTitle = filePicker.linkTitle; } } return '<input type="text" name="' + filePicker.baseElementName + '_linkTitle" value="' + linkTitle + '" title="' + page.bundle .getString( "filePicker.nameOfLink" ) + " " + linkTitle + '">'; }, size : function( filePicker, isLocal ) { if ( !isLocal && filePicker.size ) { return '<input type="hidden" name="' + filePicker.baseElementName + '_size" value="' + filePicker.size + '"> ' + filePicker.size; } else { return ""; } }, fileAction : function( filePicker, isLocal ) { return widget.FilePicker.cellGenerators.fileActionEmbedOptions( filePicker, isLocal, true ); }, fileActionEmbedOptions_index : 0, // used to uniquely identify embed options form elements on the page. fileActionEmbedOptions : function( filePicker, isLocal, suppressOptions ) { var index = widget.FilePicker.cellGenerators.fileActionEmbedOptions_index++; var baseName = filePicker.baseElementName; var fileName = isLocal ? filePicker.getFileName( filePicker.localFilePicker.value ) : filePicker.linkTitle; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. var isType = { image : ( /gif|jpeg|png|tif|bmp|jpg/i ).test( ext ), videoQt : ( /qt|mov|moov|movie/i ).test( ext ), videoOther : ( /avi|mpg|mpeg|wmv|asf|wma|mpe/i ).test( ext ), real : ( /ra|ram|rm/i ).test( ext ), flash : ( /swa|swf/i ).test( ext ), audio : ( /aif|aiff|au|mp3|wav/i ).test( ext ), html : ( /html|htm/i ).test( ext ) }; var isMedia = isType.image || isType.videoQt || isType.videoOther || isType.flash || isType.audio; var result = ''; if ( isMedia ) { result += '<select id="' + baseName + '_specialAction' + index + '" name="' + baseName + '_specialAction"'; result += ' title="' + page.bundle.getString( "filePicker.specialAction.for" ) + " " + fileName + '">'; result += '<option value="LINK">' + page.bundle.getString( "filePicker.specialAction.link" ) + '</option>'; result += '<option value="EMBED">' + page.bundle.getString( "filePicker.specialAction.embed" ) + '</option>'; result += '</select>'; // Render the embed options (if not suppressed) if ( !suppressOptions ) { result += '<ul style="display: none;" class="nestedList smallControls liveArea liveArea-slim" id="' + baseName + '_embedOptions' + index + '">'; // Alignment var fid = baseName + 'align' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.alignment' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_l" name="' + fid + '" value="Left" checked> <label for="' + fid + '_l">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.left' ) + '</label>' + '<input type="radio" id="' + fid + '_c" name="' + fid + '" value="Center"> <label for="' + fid + '_c">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.center' ) + '</label>' + '<input type="radio" id="' + fid + '_r" name="' + fid + '" value="Right"> <label for="' + fid + '_r">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.right' ) + '</label></fieldset></div></li>'; // Placement fid = baseName + 'placement' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.placement' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.placement' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_a" name="' + fid + '" value="Above"> <label for="' + fid + '_a">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.above' ) + '</label>' + '<input type="radio" id="' + fid + '_b" name="' + fid + '" value="Below" checked> <label for="' + fid + '_b">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.below' ) + '</label></fieldset></div></li>'; // Dimensions if ( !isType.audio ) { fid = baseName + 'width' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.width' ) + '</label></div><div class="field"><input class="width" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; fid = baseName + 'height' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.height' ) + '</label></div><div class="field"><input class="height" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; } // Autoplay if ( !isType.image ) { fid = baseName + 'autostart' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.autostart' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.autostart' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Loop if ( !isType.image && !isType.real ) { fid = baseName + 'loop' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.loop' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.loop' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + baseName + 'loop' + index + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Control (radio) if ( isType.videoQt || isType.real ) { fid = baseName + 'controls' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.controls' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="Full" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="None"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Controls (drop down) if ( isType.videoOther || isType.audio ) { fid = baseName + 'controls' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="controls">' + '<option value="None">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_none' ) + '</option>' + '<option value="Mini">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_mini' ) + '</option>' + '<option value="Full" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.controls_full' ) + '</option>' + '</select></div></li>'; } // Quality if ( isType.flash ) { fid = baseName + 'quality' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.set_quality' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="quality">' + '<option value="Low">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_low' ) + '</option>' + '<option value="Medium">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_med' ) + '</option>' + '<option value="High">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_high' ) + '</option>' + '<option value="Best" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.quality_best' ) + '</option>' + '</select></div></li>'; } if ( isType.image ) { // URL fid = baseName + 'url' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.url' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25">' + '</div></li>'; // New Window fid = baseName + 'newwin' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.new_window' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.new_window' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label>' + '</fieldset></div></li>'; // Border fid = baseName + 'border' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.border' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="border">' + '<option value="0" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.none' ) + '</option>' + '<option value="1>1</option><option value="2">2</option><option value="3">3</option>' + '<option value="4">4</option></select></div></li>'; } // Alt text fid = baseName + 'alttext' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25" value=""></div><span class="fieldHelp clearfloats">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text.instructions' ) + '</span></li>'; result += '</ul>'; } } else { result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialAction" value="LINK">'; result += page.bundle.getString( "filePicker.specialAction.link" ); } // The index is used to find the correct request parameters on the backend. result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialActionIndex" value="' + ( isMedia && !suppressOptions ? index : -1 ) + '">'; if ( filePicker.shouldManagePermission && !isLocal ) { // permission management options var permissionCsPickerUrl = filePicker.csPickerUrl; if ( permissionCsPickerUrl.indexOf( 'multipicker=true' ) != -1 ) { var xythosId = filePicker.fileName.sub( '/xid-', '' ).strip(); if ( xythosId ) { permissionCsPickerUrl = permissionCsPickerUrl + '&preselectedItemId=' + xythosId; } } result += '<ul id="' + filePicker.baseElementName + '_imgSpecOptions" class="nestedList smallControls liveArea liveArea-slim">'; result += '<li>'; var pid = baseName + "_permissions" + index; var pickerButtonId = baseName + "_permissionPickerButton" + index; var permFileListName = baseName + '_csPermFileList' + index; result += '<input type="radio" name="' + pid + '" value="A" id="' + pid + '_all" checked="checked" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.all" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="O" id="' + pid + '_this" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.this" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="S" id="' + pid + '_manual" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', true)" />' + page.bundle .getString( "fm.permission.grant.manual" ); result += '<a id="' + pickerButtonId + '" class="button-4 disabled" style="margin:0 3px" onclick="widget.FilePicker.openPermPicker( event, \'' + permissionCsPickerUrl + '\', \'' + pid + '_manual\',\'' + filePicker.filePath + '\', null, widget.FilePicker.permPickerCallback.curry( \'' + baseName + '\', \'' + permFileListName + '\', ' + index + ' ) );">' + page.bundle .getString( "filePicker.browse" ) + '</a>'; result += '</li>'; result += '</ul>'; result += '<div id="' + permFileListName + '" style="display: none;"></div>'; } result += '<input type="hidden" name="' + baseName + '_permissionOptionsIndex" value="' + ( isType.html && !isLocal ? index : -1 ) + '">'; return result; }, remove : function( filePicker, isLocal ) { var result = '<a href="#" onclick="widget.FilePicker.removePendingAttachment(event, this, '; result += "'" + filePicker.baseElementName + "'"; result += ');">' + page.bundle.getString( "filePicker.doNotAttach" ) + '</a>'; return result; }, // attach CS file alignment to course item align : function(filePicker, isLocal) { var alignOptionsName = "csAlignedResources"; var html = '<label for="csAlignedResources" style="white-space:nowrap">' + '<input type="checkbox" id="' + alignOptionsName + '"' + ' name="' + alignOptionsName + '"' + ' value="' + filePicker.filePath + '"' + '/>' + ' ' + page.bundle.getString('wysiwyg.insert_picture.csalign') + '</label>'; return html; } }; widget.InlineSingleCSFilePicker = Class.create(); widget.InlineSingleCSFilePicker.prototype = { initialize : function( baseElementName, csPickerUrl, showAddMetadata, showSpecialAction ) { this.baseElementName = baseElementName; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.browseButton = $( baseElementName + '_csBrowse' ); this.fileEntry = $( baseElementName + '_CSFile' ); this.fileId = $( baseElementName + '_fileId' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_CSMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_CSMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_CSFileMetadataFormat' ); } Event.observe( this.browseButton, 'click', this.onCSBrowse.bindAsEventListener( this ) ); }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = "picker" + new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.inputEntryURLToSet = this.fileEntry; this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.linkName = this.fileId; if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, afterMD : function( metadata, synced, format ) { var metadataString = metadata.join( "#" ); this.selectedCSFileMetadata.value = metadataString; this.selectedCSFileMetadataSync.value = synced; this.selectedCSFileMetadataFormat.value = format; } }; /** * Inline single local file picker - $baseElementName_attachmentType - 'AL' or 'L' or '' - $baseElementName_localBrowse - * $baseElementName_fileId */ widget.InlineSingleLocalFilePicker = Class.create(); widget.InlineSingleLocalFilePicker.prototype = { initialize : function( baseElementName, currentAttachedFile, required, showSpecialAction ) { this.baseElementName = baseElementName; this.fileInput = $( baseElementName + '_chooseLocalFile' ); this.fileInputWrapper = $( this.fileInput.parentNode ); this.attachmentType = $( baseElementName + '_attachmentType' ); this.fullFileName = $( baseElementName + '_fileId' ); this.attachmentNameSpan = $( baseElementName + '_attachmentName' ); this.removeLink = $( baseElementName + '_removeLink' ); this.inputArea = $( baseElementName + '_inputArea' ); this.attachedFileArea = $( baseElementName + '_attachedFileArea' ); this.required = required; this.showSpecialAction = showSpecialAction; // Wire up events Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); Event.observe( this.removeLink, "click", this.onRemoveClick.bindAsEventListener( this ) ); Event.observe( this.fileInput.form, "submit", this.onSubmit.bindAsEventListener( this ) ); // Set up initial values if ( currentAttachedFile ) { this.setDefaultCurrentAttachedFile( currentAttachedFile ); } widget.InlineSingleLocalFilePicker.pickerMap[ baseElementName ] = this; }, setCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, file ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, setDefaultCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentType._defaultValue = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } this.fullFileName.value = file; this.fullFileName._defaultValue = file; this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; this.fullFileName.value = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, onAfterChooseFile : function( event ) { this.attachmentNameSpan.innerHTML = this.getFileName( this.fileInput.value, true ); this.attachmentType.value = 'L'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fileInput.value ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); Event.stop( event ); }, onRemoveClick : function( event ) { this.clearFileInput(); if ( this.attachmentType.value == 'AL' ) { this.removeHiddenField = document.createElement( 'input' ); this.removeHiddenField.type = 'hidden'; this.removeHiddenField.name = this.baseElementName + '_remove'; this.removeHiddenField.id = this.baseElementName + '_remove'; this.removeHiddenField.value = this.fullFileName.value; this.attachedFileArea.insertBefore( this.removeHiddenField, this.attachedFileArea.firstChild ); widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fullFileName.value ); } else { this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); } this.attachmentNameSpan.innerHTML = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); Event.stop( event ); }, clearFileInput : function() { var title = this.fileInput.title; Element.remove( this.fileInput ); this.fileInput = $( document.createElement( "input" ) ); this.fileInput.title = title; this.fileInput.type = "file"; this.fileInput.addClassName( "hiddenInput" ); this.fileInput.name = this.baseElementName + '_LocalFile0'; this.fileInput._defaultValue = ''; this.fileInputWrapper.insertBefore( this.fileInput, this.fileInputWrapper.firstChild ); Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); }, /** * Gets the file name based on the full file path. * * @param fullPath Fully-qualified path of file * @param isDecodedName (optional) Indicates that the filename has already been URL decoded */ getFileName : function( fullPath, isDecodedName ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return isDecodedName ? result : decodeURI( result ); }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.fullFileName.value == '' ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); Event.stop( event ); return; } } } }; widget.InlineSingleLocalFilePicker.pickerMap = {}; /** * Read Only File picker */ widget.ReadOnlyFilePicker = Class.create(); widget.ReadOnlyFilePicker.prototype = { /** * Creates a new file picker * * @param baseElementName the base name for the file picker elements */ initialize : function( baseElementName ) { this.baseElementName = baseElementName; this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } widget.ReadOnlyFilePicker.pickerMap[ baseElementName ] = this; } }; widget.ReadOnlyFilePicker.pickerMap = {}; widget.UserRoleSelect = Class.create(); widget.UserRoleSelect.prototype = { initialize : function( userSelectRoleDivStr, moveMsgJS, noRoleMsgJs ) { this.sourceValueName = "_left_values"; this.secondaryValueName = "_right_values"; this.primaryValueName = "_primary_value"; this.userSelectRoleDiv = $( userSelectRoleDivStr ); if ( this.userSelectRoleDiv ) { var selects = this.userSelectRoleDiv.getElementsByTagName( 'select' ); var inputs = this.userSelectRoleDiv.getElementsByTagName( 'input' ); var links = this.userSelectRoleDiv.getElementsByTagName( 'a' ); this.source = $( selects[ 0 ] ); this.primary = $( inputs[ 3 ] ); this.secondary = $( selects[ 1 ] ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); this.primaryValue = $( inputs[ 2 ] ); this.toPrimaryMove = $( links[ 0 ] ); this.toSecondaryMove = $( links[ 1 ] ); this.toSourceMove = $( links[ 2 ] ); Event.observe( this.toSourceMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, false, moveMsgJS, noRoleMsgJs ) ); Event.observe( this.toPrimaryMove, "click", this.switchPrimary.bindAsEventListener( this, moveMsgJS ) ); Event.observe( this.toSecondaryMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, true, moveMsgJS, noRoleMsgJs ) ); } }, switchPrimary : function( event, msg ) { var indx; indx = 0; var sourceArray = this.source; if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } if ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.getFromPrimary(); this.primaryValue.value = sourceArray.options[ indx ].value; this.primary.value = sourceArray.options[ indx ].text; sourceArray.options[ indx ].selected = false; sourceArray.options[ indx ] = null; sourceArray.options[ sourceArray.length ] = tmpOpt; } this.writeToSelectBoxValues( this.source, this.leftValues ); return false; }, getFromPrimary : function() { var primaryRoleField = this.primaryValue; var primaryField = this.primary; return new Option( primaryField.value, primaryRoleField.value ); }, writeToSelectBoxValues : function( selectBox, hiddenName ) { var i = 0; var values = ""; while ( i < selectBox.length ) { if ( i > 0 ) { values += ","; } values += selectBox.options[ i ].value; i++; } hiddenName.value = values; return true; }, switchUserRoleColumns : function( event, isSourceDest, msg, noRoleMsg ) { var indx; indx = 0; var sourceArray = this.source; var targetArray = this.secondary; if ( !isSourceDest ) // If we are moving from Dest to Source { var temp = sourceArray; sourceArray = targetArray; targetArray = temp; } if ( sourceArray.length <= 0 ) { alert( noRoleMsg ); return false; } if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } var rightIndex = 0; var targetLength = targetArray.length; while ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.cloneMultipleRows( sourceArray.options[ indx ] ); if ( targetLength > 0 ) { var i = targetLength; while ( i > 0 ) { var tmpOpt1 = this.cloneMultipleRows( targetArray.options[ i + rightIndex - 1 ] ); targetArray.options[ i + rightIndex ] = tmpOpt1; i--; } } sourceArray.options[ indx ].selected = false; targetArray.options[ rightIndex ] = tmpOpt; // targetArray.options[rigthIndex].selected=true; rightIndex = rightIndex + 1; sourceArray.options[ indx ] = null; } // end of while this.writeToSelectBoxValues( this.source, this.leftValues ); this.writeToSelectBoxValues( this.secondary, this.rightValues ); return false; }, cloneMultipleRows : function( opt ) { return new Option( opt.text, opt.value, opt.defaultSelected, opt.selected ); } }; widget.StepGroup = {}; widget.StepGroup.toggleStepGroup = function( e, activeTabStr ) { var event = e || window.event; var target = Event.findElement( event, 'li' ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); $( 'activeTabSpanId_' + tab.id ).innerHTML = activeTabStr; } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); $( 'activeTabSpanId_' + tab.id ).innerHTML = ""; } } ); Event.stop( event ); }; /** * Show a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.showStepGroup = function( number ) { var target = $( 'stepGroupTab_' + number ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; /** * Get the content block element to a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.getStepGroupContentBlock = function( number ) { var targetTab = $( 'stepGroupTab_' + number ); return $( targetTab.getAttribute( "bb:groupId" ) ); }; widget.StepGroup.showAllStepGroupsForSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } ); }; widget.StepGroup.revertAllStepGroupsAfterSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { if ( page.util.hasClassName( tab, 'active' ) ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } else { $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; widget.ShowUnsavedChanges = Class.create(); widget.ShowUnsavedChanges.prototype = { initialize : function( dataCollectionContainer, skipTextArea ) { widget.ShowUnsavedChanges.enabled = true; widget.ShowUnsavedChanges.registerOnValueChangeCallback( widget.ShowUnsavedChanges.showIconsForUnsavedChanges ); var container = $( dataCollectionContainer ); var inputs = $A( container.getElementsByTagName( 'input' ) ); var selects = $A( container.getElementsByTagName( 'select' ) ); var textareas = $A( container.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { input = $( input ); var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { input._defaultValue = input.checked; } else if ( type == 'hidden' || type == 'text' ) { input._defaultValue = input.value; } else { input._defaultValue = ''; } if ( type != 'hidden' && type != 'button' && type != 'submit' ) { input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); } }.bind( this ) ); selects.each( function( input ) // TODO: multiselect? { input = $( input ); input._defaultValue = input.selectedIndex; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); if ( !skipTextArea || !skipTextArea ) { textareas.each( function( input ) { input = $( input ); input._defaultValue = input.value; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); } } }; widget.ShowUnsavedChanges.onValueChangeCallback = function() { }; // do nothing widget.ShowUnsavedChanges.registerOnValueChangeCallback = function( callbackFunction ) { widget.ShowUnsavedChanges.onValueChangeCallback = callbackFunction; }; widget.ShowUnsavedChanges.dataElementsByStepGroup = {}; widget.ShowUnsavedChanges.onValueChange = function( event, elem ) { if ( widget.ShowUnsavedChanges.enabled ) { var dataElement = null; if ( event ) { dataElement = Event.findElement( event, 'li' ); } else { dataElement = elem.parentNode; while ( dataElement && dataElement.tagName.toLowerCase() != 'li' ) { dataElement = dataElement.parentNode; if ( dataElement.tagName.toLowerCase() == 'body' ) { dataElement = null; } } if ( dataElement ) { dataElement = $( dataElement ); } } if ( !dataElement ) { return; } var isDefault = true; var inputs = $A( dataElement.getElementsByTagName( 'input' ) ); var selects = $A( dataElement.getElementsByTagName( 'select' ) ); var textareas = $A( dataElement.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { isDefault &= ( input.checked == input._defaultValue ); } else if ( type == 'hidden' || type == 'text' ) { isDefault &= ( input.value == input._defaultValue ); } } ); selects.each( function( input ) // TODO: multiselect? { isDefault &= ( input.selectedIndex == input._defaultValue ); } ); textareas.each( function( input ) { isDefault &= ( input.value == input._defaultValue ); } ); // trigger call back function widget.ShowUnsavedChanges.onValueChangeCallback( isDefault, dataElement ); } }; widget.ShowUnsavedChanges.showIconsForUnsavedChanges = function( isDefault, dataElement ) { var imgs = dataElement.getElementsByTagName( 'img' ); var unsavedImg = null; for ( var i = 0; i < imgs.length; i++ ) { if ( imgs[ i ].className.indexOf( 'unsavedChangeImg' ) >= 0 ) { unsavedImg = $( imgs[ i ] ); break; } } if ( unsavedImg ) { if ( isDefault ) { dataElement.removeClassName( 'dirty' ); unsavedImg.hide(); } else { dataElement.addClassName( 'dirty' ); unsavedImg.show(); } widget.ShowUnsavedChanges.updateStepGroupIndicator(); } }; widget.ShowUnsavedChanges.updateStepGroupIndicator = function() { if ( widget.ShowUnsavedChanges.enabled ) { // Loop through each step group tab, and determine if an icon that indicates // unsaved changes should be displayed in the tab itself $$( '#dataCollectionContainer ul li.stepGroupTab' ).each( function( tab ) { var stepGroup = $( tab.getAttribute( "bb:groupId" ) ); var img = $( tab.getElementsByTagName( 'img' )[ 0 ] ); var link = $( tab.getElementsByTagName( 'a' )[ 0 ] ); var dataElements = widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ]; if ( !dataElements ) { dataElements = stepGroup.getElementsByTagName( 'li' ); widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ] = dataElements; } var dirtyCount = 0; for ( var i = 0; i < dataElements.length; i++ ) { //If the data element is hidden, we do not want to include it in the count of dirty //data elements. Doing so could result in the dirty image on the step group displaying //with no child data elements that display as dirty. if ( dataElements[ i ].hasClassName( "dirty" ) && dataElements[ i ].getStyle( "display" ) !== "none" ) { dirtyCount++; } } if ( dirtyCount > 0 && !tab.isDirty ) { img.show(); link.setStyle( { 'paddingLeft' : '20px' } ); tab.isDirty = true; } else if ( dirtyCount === 0 && tab.isDirty ) { img.hide(); link.setStyle( { 'paddingLeft' : '' } ); tab.isDirty = false; } } ); } }; // Call this when the value of a hidden data element changes that you want to // show an indicator for. Otherwise changing the value of the hidden element directly will // not cause an indicator to show. widget.ShowUnsavedChanges.changeHiddenValue = function( hiddenElem, value ) { hiddenElem.value = value; if ( widget.ShowUnsavedChanges.enabled ) { widget.ShowUnsavedChanges.onValueChange( null, hiddenElem ); } }; widget.ShowUnsavedChanges.enabled = false; /** * Supports a counter widget attached to a textbox -- it keeps track of the number of characters in the text box, and * updates a counter whenever that number changes. The counter turns red, and begins counting backwards, when the max * number of charters is exceeded. */ widget.TextBoxCounter = Class.create(); widget.TextBoxCounter.prototype = { /** * Contructor * * @param textBoxId The id of the textbox we're counting from * @param counterId The id of the element that countains the count * @param maxCharCount The max number of characters supported by this textbox * @param charactersRemainingLabel The label for the character count element * @param charactersOverLimitLabel The alternate label for the character element, for when the max # of characters * has been exceeded. */ initialize : function( textBoxId, counterId, maxCharCount, charactersRemainingLabel, charactersOverLimitLabel ) { this.textBoxElement = $( textBoxId ); this.counterElement = $( counterId ); this.maxCharCount = maxCharCount; this.countLabelElement = this.counterElement.up().childNodes[ 0 ]; this.charactersRemainingLabel = charactersRemainingLabel; this.charactersOverLimitLabel = charactersOverLimitLabel; // watch all keystrokes in the text area, and update the counter accordingly this.textBoxElement.observe( 'keyup', this.updateCount.bindAsEventListener( this ) ); // update the initial count this.updateCount(); this.registerCounter( textBoxId ); }, /** * Registers the current counter with the document, so that it can be accessed from anywhere on the page. * * @param id The id with which this counter can be accessed */ registerCounter : function( id ) { if ( !widget.TextBoxCounter.counters ) { widget.TextBoxCounter.counters = []; } widget.TextBoxCounter.counters[ id ] = this; }, /** * Update the counter. * * @param event The event that prompted this update, if any. */ updateCount : function( event ) { var chars = this.textBoxElement.value.length; // max character count exceeded if ( chars > this.maxCharCount ) { this.counterElement.update( chars - this.maxCharCount ).addClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersOverLimitLabel; } // max character count not exceeded else if ( chars <= this.maxCharCount ) { this.counterElement.update( this.maxCharCount - chars ).removeClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersRemainingLabel; } } }; widget.ColorPalettePicker = Class.create(); widget.ColorPalettePicker.prototype = { initialize : function( onChange, themeChangeElementId ) { widget.ColorPalettePicker.picker = this; this.onChange = onChange; var palettes = []; $A( $( 'paletteLibraryPanel' ).getElementsByTagName( 'li' ) ).each( function( li ) { if ( page.util.hasClassName( li, 'palette' ) ) { palettes.push( $( li ) ); } } ); this.palettes = palettes; this.libraryOpen = false; this.paletteLibraryPanel = $( 'paletteLibraryPanel' ); this.paletteLibraryButton = $( 'paletteLibraryButton' ); var updateHandler = this.updateCurrentSelection.bindAsEventListener( this ); // this.paletteLibraryPanel.toggleLibrary(); if ( this.palettes ) { this.palettes.each( function( palette ) { Event.observe( palette, "click", updateHandler ); } ); } if ( this.paletteLibraryButton ) { Event.observe( 'paletteLibraryButtonLink', "click", this.toggleLibrary.bindAsEventListener( this ) ); } if ( themeChangeElementId !== "" ) { Event.observe( themeChangeElementId, "change", this.changePaletteThemeTypeStyles.bindAsEventListener( this ) ); } }, changePaletteThemeTypeStyles : function( event ) { var dropdown = event.currentTarget; var themeExtRef = $F( dropdown ); var extRefToThemeTypeJson = $F( "themeExtRefToThemeTypeJson" ); var extRefToThemeTypeMap = this.convertJsonToObject( decodeURIComponent( extRefToThemeTypeJson ) ); var themeType = extRefToThemeTypeMap[themeExtRef]; var mapKey = null; this.palettes.each( function( palette ) { if( palette.id === "currentsystemthemecolorpalette" ) { mapKey = "theme_type_" + themeExtRef; } else { if( themeType !== null ) { mapKey = "theme_type_" + themeType; } else { mapKey = "theme_type_"; } } var styleJson = $F( palette.down('input[type=hidden]') ); var styleMap = this.convertJsonToObject( decodeURIComponent( styleJson ) ); var schemePreviewStyle = styleMap[mapKey]['schemePreview']; var schemePreviewHeadStyle = styleMap[mapKey]['schemePreviewHead']; var schemePreviewBodyStyle = styleMap[mapKey]['schemePreviewBody']; var modulePreviewStyle = styleMap[mapKey]['moduleBorder']; var modulePreviewHeadStyle = styleMap[mapKey]['moduleTitle']; var modulePreviewBodyStyle = styleMap[mapKey]['moduleBody']; palette.down('.schemePreview').writeAttribute("style", schemePreviewStyle); palette.down('.schemePreviewHead').writeAttribute("style", schemePreviewHeadStyle); palette.down('.schemePreviewBody').writeAttribute("style", schemePreviewBodyStyle); palette.down('.modulePreview').writeAttribute("style", modulePreviewStyle); palette.down('.modulePreviewHead').writeAttribute("style", modulePreviewHeadStyle); palette.down('.modulePreviewBody').writeAttribute("style", modulePreviewBodyStyle); }, this ); }, convertJsonToObject : function( json ) { if ( typeof ( JSON ) === 'object' && typeof ( JSON.parse ) === 'function' ) { return JSON.parse( json ); } else { return eval( '(' + json + ')' ); } }, toggleLibrary : function( event ) { var img = this.paletteLibraryButton.getElementsByTagName( 'img' )[ 0 ]; if ( this.libraryOpen ) { // Collapse the library. img.src = "/images/db/p.gif"; img.alt = page.bundle.getString( "dynamictree.expand" ); this.paletteLibraryPanel.hide(); this.libraryOpen = false; } else { // Expand the library. img.src = "/images/db/m.gif"; img.alt = page.bundle.getString( "dynamictree.collapse" ); this.paletteLibraryPanel.show(); this.libraryOpen = true; } // stop the event if exists; there will not be an event if called on page onLoad if ( event ) { Event.stop( event ); } }, selectColorPaletteByExtRef : function( extRef ) { var eventElement = $( extRef ); this.selectColorPaletteByElement( eventElement ); }, selectColorPaletteByElement : function( eventElement ) { this.palettes.each( function( p ) { if ( p.hasClassName( "selected" ) ) { p.removeClassName( 'selected' ); } } ); var selPal = eventElement; while ( selPal && selPal.tagName != 'LI' ) { selPal = selPal.parentNode; if ( selPal.tagName == 'BODY' ) { selPal = null; } } selPal.addClassName( 'selected' ); widget.ShowUnsavedChanges.changeHiddenValue( $( 'currentPaletteExtRef' ), selPal.id == 'currentsystemthemecolorpalette' ? '' : selPal.id ); eval( this.onChange ); $( 'currentPaletteLabel' ).update( $( selPal.id + '_label' ).innerHTML ); this.copyStyles( selPal.down( '.schemePreview' ), $( 'currentPalettePreview' ) ); this.copyStyles( selPal.down( '.schemePreviewHead' ), $( 'currentPalettePreviewHead' ) ); this.copyStyles( selPal.down( '.schemePreviewBody' ), $( 'currentPalettePreviewBody' ) ); this.copyStyles( selPal.down( '.modulePreview' ), $( 'currentModulePalettePreview' ) ); this.copyStyles( selPal.down( '.modulePreviewHead' ), $( 'currentModulePalettePreviewHead' ) ); this.copyStyles( selPal.down( '.modulePreviewBody' ), $( 'currentModulePalettePreviewBody' ) ); $( 'selectedPalette' ).show(); }, updateCurrentSelection : function( event ) { var eventElement = Event.element( event ); this.selectColorPaletteByElement( eventElement ); Event.stop( event ); }, copyStyles : function( s, d ) { d.style.cssText = s.style.cssText; } }; widget.ColorPalettePicker.picker = null; /** * node picker */ widget.MINodePicker = Class.create(); /** Constants used for the picker */ widget.MINodePicker.Constants = { EXISTING_NODE_SUFFIX : "", EXISTING_NODE_DELETE_SUFFIX : "", NEW_NODE_SUFFIX : "" }; widget.MINodePicker.prototype = { initConstants : function() { widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeSuffix" ); widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeDeleteSuffix" ); widget.MINodePicker.Constants.NEW_NODE_SUFFIX = page.bundle.getString( "nodePicker.const.newNodeSuffix" ); }, /** * Creates a new node picker * * @param baseElementName the base name for the node picker elements * @param pickerList the javascript object representing the picker list (of currently attached files) * @param allowMultipleSelect boolean indicating whether the picker should allow single or multiple select * @param entitlements comma delimited list of entitlement UIDs in which to check on node search * @param popupInstructions key value pair of bundle name and bundle key for instructions to be displayed in the pop * up * @param addPrimaryEntitlement Entitlement required to display primary radio button. * @param removeNodeEntitlement Entitlement required to display remove node link. */ initialize : function( baseElementName, pickerList, allowMultipleSelect, entitlements, popupInstructions, addPrimaryEntitlement, removeNodeEntitlement ) { this.initConstants(); this.baseElementName = baseElementName; this.allowMultipleSelect = allowMultipleSelect; this.entitlements = entitlements; this.nodePickerPopupButton = $( this.baseElementName + '_nodeBrowseButton' ); this.nodePickerUrl = "/webapps/blackboard/execute/institutionalHierarchy/nodePicker?cmd=openPicker&allowMultipleSelect=" + this.allowMultipleSelect + "&instructionKey=" + popupInstructions + "&entitlements=" + this.entitlements + "&addPrimaryEntitlement=" + addPrimaryEntitlement + "&removeNodeEntitlement=" + removeNodeEntitlement; Event.observe( this.nodePickerPopupButton, "click", this.onNodeBrowse.bindAsEventListener( this ) ); this.pickerList = pickerList; this.selectedNodesListContainer = $( this.baseElementName + '_listHtml' ); // make sure that all removedNodes are hidden var removedNodes = this.selectedNodesListContainer .getElementsBySelector( 'input[name=' + this.baseElementName + widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX + ']' ); removedNodes.each( function( node ) { node.up( 'tr' ).hide(); } ); var showList; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { showList = this.selectedNodesListContainer && this.pickerList && this.pickerList.tableBody && !this.pickerList.tableBody .empty(); } // For single node picker, the attached node is contained within a span element else { showList = this.selectedNodesListContainer && this.selectedNodesListContainer.select( "input.selectedNodeData" ) && this.pickerList; } if ( this.pickerList && this.pickerList.tableBody ) { // If no visible row then hide the table label and headers. if ( !this.pickerList.tableBody.select( "tr" ).any( function( row ) { return row.visible(); } ) ) { showList = false; } } this.showHideSelectedNodesList( showList ); widget.MINodePicker.registerNodePicker( this ); }, /** * Pop up the node search window from which to pick nodes */ onNodeBrowse : function( event ) { this.nodePickerWindow = null; var windowId = new Date().getTime(); if ( $( 'primaryNodeIdStr' ) ) { this.nodePickerUrl += '&primaryNodeIdStr=' + $F( 'primaryNodeIdStr' ); } if ( $( 'objectType' ) ) { this.nodePickerUrl += '&objectType=' + $F( 'objectType' ); } this.nodePickerWindow = popup.launchPicker( this.nodePickerUrl, windowId ); if ( this.nodePickerWindow ) { this.nodePickerWindow.opener.customHandler = this.onNodePick.bind( this ); } Event.stop( event ); }, /** * Callback called after node(s) have been selected from the node picker pop up. This method updates the UI list of * currently select nodes. * * @param selectedNodesObjArr The array of currently selected nodes from the picker */ onNodePick : function( selectedNodesObjArr ) { this.showHideSelectedNodesList( true ); var existingNodes; if ( this.allowMultipleSelect ) { // Array of existing selected nodes in the node picker list existingNodes = this.selectedNodesListContainer.down( "tbody" ).select( "input.selectedNodeData" ); } else { // Existing selected node in the node picker list for single node picker existingNodes = this.selectedNodesListContainer.select( "input.selectedNodeData" ); } // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. if ( selectedNodesObjArr && selectedNodesObjArr.length !== 0 ) { // Switch the radio button selection to Create hierarchy under the specified entity (for single node pickers) if ( $( "selectedRoot" ) ) { $( "selectedRoot" ).checked = true; } } /* * For each selected node, add the node to the list if it is a newly selected node, otherwise unhide the node if * it is an existing selection that has been marked for delete. Specifically: - If node is an existing selected * node and marked for delete and hidden, then unmark and show - If node is an existing selected node and not * marked for delete and showing, then do nothing - If node is a newly selected node and is not already there, add * the row - If node is a newly selected node and is already there, then do nothing */ selectedNodesObjArr.each( function( node ) { // See if the picked node is already in the list of nodes var existingNode; existingNodes.each( function( inputEle ) { if ( node.nodeIdStr === inputEle.value ) { existingNode = inputEle; if ( existingNode.disabled && existingNode.checked ) { // If its a disabled primary node then restore the value of it in hidden param. $( this.baseElementName + '_disabledPrimaryNode' ).value = node.nodeIdStr; } throw $break; } } ); // If not, then add this newly picked node to list if ( !existingNode ) { var primaryRadioChecked; var existingPrimaryNodeRadios = this.selectedNodesListContainer .select( 'input[name=' + this.baseElementName + '_PrimaryNode]' ); if ( existingPrimaryNodeRadios.all( function( radio ) { return !radio.checked; } ) ) { primaryRadioChecked = true; } // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { // This calls the cell generator methods for each column in the "currently selected nodes" list this.pickerList.addRow( this.baseElementName, node, this.nodePickerWindow, primaryRadioChecked ); } // For single node picker, the attached node is contained within a span element else { this.selectedNodesListContainer.innerHTML = ""; this.pickerList.cellGenerators.each( function( generator, index ) { var args = []; args.push( this.baseElementName, node, this.nodePickerWindow ); this.selectedNodesListContainer.innerHTML += generator.apply( window, args ); }.bind( this ) ); } } else { /* * If picked node is already in the list AND is an existing selected node that is marked for delete and * hidden, then unmark node and show in list. */ if ( existingNode.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ) ) { existingNode.name = existingNode.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ); if ( this.allowMultipleSelect ) { existingNode.up( "tr" ).show(); } } } }.bind( this ) ); }, /** * Shows or hides the selected nodes list * * @param show boolean to indicate show or hide */ showHideSelectedNodesList : function( show ) { if ( this.selectedNodesListContainer ) { return show ? this.selectedNodesListContainer.show() : this.selectedNodesListContainer.hide(); } } }; /** * Removes the specified node selection from the list. Should be called from an onclick handler on a link in the * currently selected nodes table. */ widget.MINodePicker.removeSelectedNode = function( event, removeLink, baseElementName ) { var e = event || window.event; // Have user confirm removal of selected node if ( confirm( page.bundle.getString( "nodePicker.nodeRemoveConfirmMsg" ) ) ) { var visibleRows = []; var picker = widget.MINodePicker.getNodePicker( baseElementName ); var hiddenNodeDataEle; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( picker.allowMultipleSelect ) { // Get references to DOM elements in the list removeLink = $( removeLink ); var rowToHideRemove = removeLink.up( "tr" ); var tbodyEle = rowToHideRemove.up( "tbody" ); hiddenNodeDataEle = rowToHideRemove.down( "input.selectedNodeData" ); var primaryNodeRadioSelector = 'input[name=' + baseElementName + '_PrimaryNode]'; var primaryNodeRadioInCurrentRow = rowToHideRemove.down( primaryNodeRadioSelector ); if ( primaryNodeRadioInCurrentRow ) { // Check if removed node is selected as a primary node if ( primaryNodeRadioInCurrentRow.checked ) { if ( primaryNodeRadioInCurrentRow.disabled ) { // A disabled primary node is removed from UI then nullify the value of hidden param storing its value. $( baseElementName + '_disabledPrimaryNode' ).value = ''; } else { // Get the next node which is not checked as primary and is enabled. var nextNode = picker.selectedNodesListContainer.select( primaryNodeRadioSelector ).find( function( radio ) { return ( !radio.checked && !radio.disabled && radio.up( 'tr' ).visible() ); } ); if ( nextNode ) { nextNode.checked = true; } else { // In case there's no next node with primary node radio button, then uncheck current primary manually primaryNodeRadioInCurrentRow.checked = false; } } } } // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); // hide rowToHideRemove.hide(); } // If is a newly selected node else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { // remove the row from the DOM Element.remove( rowToHideRemove ); } tbodyEle.select( "tr" ).each( function( row ) { if ( row.visible() ) { visibleRows.push( row ); } } ); } // For single node picker, the attached node is contained within a span element else { hiddenNodeDataEle = picker.selectedNodesListContainer.down( "input.selectedNodeData" ); // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); } // If is a newly selected node, clear the span content else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { picker.selectedNodesListContainer.innerHTML = ""; } } // If there are no more selected nodes, hide some UI elements if ( visibleRows.length === 0 ) { // Hide the whole selected nodes table picker.showHideSelectedNodesList( false ); // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. // Switch the radio button selection to Create hierarchy under the top level (for single node pickers) if ( $( "topLevelRoot" ) ) { $( "topLevelRoot" ).checked = true; } } } Event.stop( e ); }; /** * A registry of defined node pickers and methods to access this registry */ widget.MINodePicker.nodePickers = {}; widget.MINodePicker.registerNodePicker = function( nodePicker ) { widget.MINodePicker.nodePickers[ nodePicker.baseElementName ] = nodePicker; }; widget.MINodePicker.unRegisterNodePicker = function( nodePicker ) { delete widget.MINodePicker.nodePickers[ nodePicker.baseElementName ]; }; widget.MINodePicker.getNodePicker = function( baseElementName ) { return widget.MINodePicker.nodePickers[ baseElementName ]; }; /** * Cell generators for the currently selected nodes table. Mostly copies what is in multiInstNodePickerListElement.vm. */ widget.MINodePicker.cellGenerators = { /** * Dynamic rendering of a cell in the node "Name" column */ nodeName : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { var result = '<input type="hidden" name="' + pickerNameStr + widget.MINodePicker.Constants.NEW_NODE_SUFFIX + '" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData">'; result += '<img src="/images/ci/ng/entity_small.png" alt="">'; result += selectedNodeObj.nodeName; return result; }, /** * Dynamic rendering of a cell in the node "Primary Node" column */ nodePrimary : function( pickerNameStr, selectedNodeObj, nodePickerWindow, primaryRadioChecked ) { var result = '<input type="radio" id="' + selectedNodeObj.nodeIdStr + '_Primary' + '" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData"'; if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' ) { result += ' disabled'; } if ( primaryRadioChecked ) { result += ' checked'; } result += ' >'; // Since values of disabled radio element doesn't go through the request, adding hidden param here to store its // value. if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' && primaryRadioChecked ) { result += '<input type="hidden" id="' + pickerNameStr + '_disabledPrimaryNode" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" />'; } return result; }, /** * Dynamic rendering of a cell in the remove node column */ nodeRemove : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_canRemoveObject' ).value == 'true' ) { var result = '<img src="/images/ci/icons/x_ia.gif" alt="">'; result += '<a href="#" onclick="widget.MINodePicker.removeSelectedNode(event, this, '; result += "'" + pickerNameStr + "');"; result += '">' + page.bundle.getString( "nodePicker.nodeRemoveLabel" ); result += '</a>'; return result; } else { return ''; } } };

Take Test MC Exercises Punctuation Semicolon Review.mht

Current Location

Take Test: MC Exercises: Punctuation: Semicolon Review

Content

Assistive Technology Tips [opens in new window]

Instructions

Description
Instructions
Multiple Attempts This Test allows multiple attempts.
Force Completion This Test can be saved and resumed later.

Collapse Question Completion Status:

1Question Incomplete 2Question Incomplete 3Question Incomplete 4Question Incomplete 5Question Incomplete 6Question Incomplete 7Question Incomplete 8Question Incomplete 9Question Incomplete 10Question Incomplete

Question 1

  1.   Select the sentence that contains no errors in the use of semicolons. (Note that some of the sentences may not require a semicolon.) Answer
    The ancient Greeks and Romans believed that Zeus, or Jupiter, was in charge of the sky, Poseidon, or Neptune, was god of the sea, and Hades, or Pluto, was god of the underworld.
    The ancient Greeks and Romans believed that Zeus, or Jupiter, was in charge of the sky; Poseidon, or Neptune, was god of the sea; and Hades, or Pluto, was god of the underworld.
    The ancient Greeks and Romans believed that Zeus, or Jupiter; was in charge of the sky; Poseidon, or Neptune; was god of the sea, and Hades, or Pluto; was god of the underworld.

10 points  

Question 2

  1.   Select the sentence that contains no errors in the use of semicolons. (Note that some of the sentences may not require a semicolon.) Answer
    The four mythologies that have influenced European culture are Greek and Roman mythology, involving the gods of Mount Olympus, Mesopotamian mythology, from the Middle East, Egyptian mythology, in which the sun plays a central role, and Norse mythology from Scandinavia.
    The four mythologies that have influenced European culture are Greek and Roman mythology, involving the gods of Mount Olympus; Mesopotamian mythology, from the Middle East; Egyptian mythology, in which the sun plays a central role, and Norse mythology from Scandinavia.
    The four mythologies that have influenced European culture are Greek and Roman mythology, involving the gods of Mount Olympus; Mesopotamian mythology, from the Middle East; Egyptian mythology, in which the sun plays a central role; and Norse mythology from Scandinavia.

10 points  

Question 3

  1.   Select the sentence that contains no errors in the use of semicolons. (Note that some of the sentences may not require a semicolon.) Answer
    The classical goddess of war was known to Greeks as Athena and to Romans as Minerva; in addition, the Greeks and Romans also had a god of war—Ares, or Mars.
    The classical goddess of war was known to Greeks as Athena; and to Romans as Minerva; in addition, the Greeks and Romans also had a god of war—Ares, or Mars.
    The classical goddess of war was known to Greeks as Athena and to Romans as Minerva, in addition, the Greeks and Romans also had a god of war—Ares, or Mars.

10 points  

Question 4

  1.   Select the sentence that contains no errors in the use of semicolons. (Note that some of the sentences may not require a semicolon.) Answer
    Both Greeks and Romans called the god of the sun Apollo; but they had different names for the goddess of the hunt; Artemis and Diana, respectively.
    Both Greeks and Romans called the god of the sun Apollo, but they had different names for the goddess of the hunt: Artemis and Diana, respectively.
    Both Greeks and Romans called the god of the sun Apollo, but they had different names for the goddess of the hunt, Artemis; and Diana; respectively.

10 points  

Question 5

  1.   Select the sentence that contains no errors in the use of semicolons. (Note that some of the sentences may not require a semicolon.) Answer
    Mythology usually deals with divinities; in contrast, folktales generally focus on ordinary people, even if they have supernatural elements.
    Mythology usually deals with divinities, in contrast folktales generally focus on ordinary people, even if they have supernatural elements.
    Mythology usually deals with divinities, in contrast; folktales generally focus on ordinary people, even if they have supernatural elements.

10 points  

Question 6

  1.   Select the sentence that contains no errors in the use of semicolons. (Note that some of the sentences may not require a semicolon.) Answer
    Dionysus was god of the vine and, therefore, of wine, his Roman name was Bacchus.
    Dionysus was god of the vine, and; therefore, of wine, his Roman name was Bacchus.
    Dionysus was god of the vine and, therefore, of wine; his Roman name was Bacchus.

10 points  

Question 7

  1.   Select the sentence that contains no errors in the use of semicolons. (Note that some of the sentences may not require a semicolon.) Answer
    Among the better-known figures of Egyptian mythology are the husband-wife, brother-sister pair Osiris and Isis, the former is god of the underworld and judge of the dead, while the latter is goddess of love.
    Among the better-known figures of Egyptian mythology are the husband-wife, brother-sister pair Osiris and Isis; the former is god of the underworld and judge of the dead; while the latter is goddess of love.
    Among the better-known figures of Egyptian mythology are the husband-wife, brother-sister pair Osiris and Isis; the former is god of the underworld and judge of the dead, while the latter is goddess of love.

10 points  

Question 8

  1.   Select the sentence that contains no errors in the use of semicolons. (Note that some of the sentences may not require a semicolon.) Answer
    Mesopotamian mythology developed among the Sumerians and then evolved through the Akkadians, Babylonians, and Assyrians.
    Mesopotamian mythology developed among the Sumerians; and then evolved through the Akkadians, Babylonians, and Assyrians.
    Mesopotamian mythology developed among the Sumerians and then evolved through the Akkadians; Babylonians; and Assyrians.

10 points  

Question 9

  1.   Select the sentence that contains no errors in the use of semicolons. (Note that some of the sentences may not require a semicolon.) Answer
    The ancient Greeks and Romans shared gods; although they gave the gods different names, for example, the goddess of love was Aphrodite to the ancient Greeks but Venus to the ancient Romans.
    The ancient Greeks and Romans shared gods, although they gave the gods different names, for example; the goddess of love was Aphrodite to the ancient Greeks but Venus to the ancient Romans.
    The ancient Greeks and Romans shared gods, although they gave the gods different names; for example, the goddess of love was Aphrodite to the ancient Greeks but Venus to the ancient Romans.

10 points  

Question 10

  1.   Select the sentence that contains no errors in the use of semicolons. (Note that some of the sentences may not require a semicolon.) Answer
    The in Norse theory of the universe included Asgard, the realm of the gods, Midgard, the realm of humans, Hel, the underworld, and Valhalla, where slain warriors go to live with the immortal gods.
    The Norse theory of the universe included Asgard, the realm of the gods; Midgard, the realm of humans; Hel, the underworld; and Valhalla, where slain warriors go to live with the immortal gods.
    The Norse theory of the universe included Asgard, the realm of the gods, Midgard, the realm of humans, Hel, the underworld; and Valhalla, where slain warriors go to live with the immortal gods.

10 points  

 Save and Submit

Click Save and Submit to save and submit. Click Save All Answers to save all answers. Click Close Window to close window.

Links to Test Questions and Answers
Read question 1 Read answers for question 1 Read question 2 Read answers for question 2 Read question 3 Read answers for question 3 Read question 4 Read answers for question 4 Read question 5 Read answers for question 5 Read question 6 Read answers for question 6 Read question 7 Read answers for question 7 Read question 8 Read answers for question 8 Read question 9 Read answers for question 9 Read question 10 Read answers for question 10

@font-face { font-family: Utilicons; src:url(fonts/utilicons/utilicons-web-webfont.eot); } HTML { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } APPLET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OBJECT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IFRAME { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H1 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H2 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H5 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H6 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } P { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ABBR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ACRONYM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ADDRESS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BIG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CITE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CODE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DFN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } EM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } INS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } KBD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } Q { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } S { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SAMP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SMALL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRIKE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRONG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUB { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } VAR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FIELDSET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FORM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LABEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LEGEND { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CAPTION { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TBODY { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TFOOT { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } THEAD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TR { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TH { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } FONT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BACKGROUND: #fff } OL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } UL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } TABLE { BORDER-COLLAPSE: collapse } TH { FONT-WEIGHT: normal } CAPTION { TEXT-ALIGN: left } TH { TEXT-ALIGN: left } TD { TEXT-ALIGN: left } BLOCKQUOTE:before { CONTENT: "" } BLOCKQUOTE:after { CONTENT: "" } Q:before { CONTENT: "" } Q:after { CONTENT: "" } BLOCKQUOTE { QUOTES: "" "" } Q { QUOTES: "" "" } INPUT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } BUTTON { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } SELECT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } .field SELECT { MAX-WIDTH: 100% } .noLabelField SELECT { MAX-WIDTH: 100% } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px !important } .vtbegenerated IMG { FILTER: alpha(opacity=auto) !important; opacity: auto } .vtbegenerated UL { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated OL { LIST-STYLE-TYPE: decimal; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated LI { LIST-STYLE-POSITION: outside; DISPLAY: list-item } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL[type=circle] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type=disc] LI { LIST-STYLE-TYPE: disc } .vtbegenerated UL[type=square] LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 24px } .inlineVtbegenerated { DISPLAY: inline } .hideme { DISPLAY: none !important } .hidden { DISPLAY: none } .clearfloats { CLEAR: both } .hideoff { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; TOP: -1000px; LEFT: -10000px } .altHideoff1 { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; LEFT: -10000px } .boldme { FONT-WEIGHT: bold } .u_inlineStack { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > LI { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > DIV { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStack SELECT { MAX-WIDTH: 300px } .u_resetFont { FONT-SIZE: 100% } .u_reverseAlign { TEXT-ALIGN: right } .u_centerAlign { TEXT-ALIGN: center } .u_normalAlign { TEXT-ALIGN: left } .u_floatThis-right { FLOAT: right } .u_floatThis-left { FLOAT: left } .u_floatWrapper-right > DIV { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-right > LI { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-left > DIV { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LI { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LABEL { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_floatWrapper-right:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_controlsWrapper:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_clearFloatsWrapper > DIV { FLOAT: none !important } .u_clearFloatsWrapper > LI { FLOAT: none !important } .u_controlsWrapper { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .u_indent { MARGIN-LEFT: 24px !important } .u_scrollPanel-vertical { OVERFLOW-Y: auto } .u_panel-short { HEIGHT: 70px; MAX-HEIGHT: 100px } .u_panel-medium { HEIGHT: 70px; MAX-HEIGHT: 150px } .u_panel-long { HEIGHT: 70px; MAX-HEIGHT: 200px } HTML { HEIGHT: 100% } BODY { MIN-WIDTH: 1000px; HEIGHT: 100% } BODY.topFrame { OVERFLOW-Y: hidden; HEIGHT: 89px } BODY.filePicker { MIN-WIDTH: 400px } BODY.popup { MIN-WIDTH: 100% } .content-system-page { MIN-WIDTH: 780px } BODY.popup DIV.locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.csMenuFrame { MIN-WIDTH: 210px; WIDTH: 100% } BODY.popupMenu { MIN-WIDTH: 210px; WIDTH: 100% } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } H1 { FONT-WEIGHT: bold } H2 { FONT-WEIGHT: bold } H3 { FONT-WEIGHT: bold } H4 { FONT-WEIGHT: bold } H5 { FONT-WEIGHT: bold } H6 { FONT-WEIGHT: bold } STRONG { FONT-WEIGHT: bold } B { FONT-WEIGHT: bold } EM { FONT-STYLE: italic } TABLE.bouncer { WIDTH: 100% } TABLE.bouncer TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .brandingImgWrap { OVERFLOW: hidden } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { POSITION: relative; OVERFLOW-Y: hidden } .topTabs-compact { POSITION: relative } .topTabs .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs-compact .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs .tabWrapper-right .appTabs { FLOAT: right } .topTabs-compact .tabWrapper-right .appTabs { FLOAT: right } .breadcrumbs { POSITION: relative } .locationPane { POSITION: relative; MIN-WIDTH: 100%; ZOOM: 1; DISPLAY: inline-block; OVERFLOW: visible } .navigationPane { POSITION: absolute; WIDTH: 200px; ZOOM: 1; CLEAR: both; OVERFLOW: visible; TOP: 0px; LEFT: 0px } .menuWrap { POSITION: relative; ZOOM: 1 } .contentPane { MIN-WIDTH: auto; MARGIN: 0px 14px 0px 212px; ZOOM: 1; DISPLAY: block; OVERFLOW: visible } #puller { Z-INDEX: 3; POSITION: absolute } #puller A { WIDTH: 15px; DISPLAY: block; BACKGROUND: #ccc; HEIGHT: 30px } .contcollapsed { MARGIN-LEFT: 15px } .content { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .container { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .containerPortal { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .popup .container { MIN-HEIGHT: 400px } .container { OVERFLOW: visible } .containerOptions { OVERFLOW: visible } .column-1 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-2 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-3 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-4 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } column-5 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-1 { WIDTH: 100% } .column-2 { WIDTH: 50% } .column-3 { WIDTH: 33.3% } .column-4 { WIDTH: 25% } .column-5 { WIDTH: 20% } #lightbox .column-3 { MARGIN: 0px; MIN-HEIGHT: 200px !important } #lightbox .column-2 { MARGIN: 0px; MIN-HEIGHT: 200px !important } INPUT[type='submit'].submit { FONT-WEIGHT: bold } .mainButton A { FONT-WEIGHT: bold } .actionBarMicro .mainButton A { FONT-WEIGHT: bold } .rumble .mainButton > A { FONT-WEIGHT: bold } .rumble_top .mainButton > A { FONT-WEIGHT: bold } .button-1 { FONT-WEIGHT: bold } .button-1-img { FONT-WEIGHT: bold } .modeSwitchWrap { TOP: 6px; RIGHT: 0px; LEFT: auto } .modeSwitchWrap DIV { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .modeSwitch { POSITION: relative; DISPLAY: block; OVERFLOW: hidden } .read-on { MARGIN-RIGHT: 0px } A.read-off IMG { POSITION: absolute; BOTTOM: 0px; LEFT: 0px } A.read-on IMG { POSITION: absolute; BOTTOM: 0px; RIGHT: 0px } .switcherLabel { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .helpLink { POSITION: relative; TOP: 1px } .helpLink A.browseIcon { DISPLAY: inline-block } .vtbeSwitch { POSITION: relative; FLOAT: right } .vtbeSwitch SPAN { DISPLAY: inline-block } .fileInputWrapper { POSITION: relative; FLOAT: left; OVERFLOW: hidden } .fileInputWrapper INPUT.hiddenInput { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: right; FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 210%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px; opacity: 0 } .fileInputWrapper INPUT[type='file'] { FILTER: alpha(opacity=0) !important } .fileInputWrapper INPUT.visibleInput { Z-INDEX: 1; POSITION: relative; TOP: 0px; RIGHT: 0px } .frameResizeToggle { POSITION: absolute; BOTTOM: 0px; DISPLAY: block; OVERFLOW: hidden; LEFT: 0px; _top: 68px } A.colorChip { DISPLAY: inline-block } A.colorChip SPAN { DISPLAY: inline-block } .clearfix:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfixParent > *:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfix { DISPLAY: block } .clearfixParent > * { DISPLAY: block } INPUT[type='button'] { } INPUT[type='submit'] { } BUTTON { } FORM#content { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } .reorder { POSITION: absolute; CURSOR: move } .contextMenuContainer { ZOOM: 1 } .gbtable .contextMenuContainer { DISPLAY: inline } .gbtable_header .contextMenuContainer { DISPLAY: inline } .gbtable_header TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } .gbtable THEAD TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } A.cmimg { ZOOM: 1 } HTML { FONT: 300 0.78em "Lucida Grande", Arial, sans-serif } H1 { FONT-SIZE: 148% } H2 { FONT-SIZE: 123.1% } H3 { FONT-SIZE: 110% } H1 { MARGIN: 1em 0px } H2 { MARGIN: 1em 0px } H3 { MARGIN: 1em 0px } A { COLOR: #128fa8; TEXT-DECORATION: none } A:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } TABLE { FONT-SIZE: 100% } THEAD TH { FONT-WEIGHT: bold } #contentFrame { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } #schemePreview { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY.topFrame { BACKGROUND: #f7f7f7 } BODY.login-page { POSITION: relative; MIN-HEIGHT: 800px } BODY.popup { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } BODY.csMenuFrame { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } BODY.popupMenu { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } .csMenuFrame { FONT-SIZE: 95% } BODY.my-places-popup { MIN-WIDTH: 300px; WIDTH: auto; BACKGROUND: #fff } BODY.external-breadcrumbs { BACKGROUND-IMAGE: none } BODY.picker { MIN-WIDTH: 400px; BACKGROUND: #fff } .breadcrumbs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 9px; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .locationPane { MARGIN-TOP: 12px } BODY.picker .locationPane { MARGIN: 0px; DISPLAY: block } .csPicker .locationPane { DISPLAY: block } .navigationPane { MARGIN: 0px; WIDTH: 210px; TOP: 0px; LEFT: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .menuWrap { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .contentPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px 0px 222px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portalPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .popup .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .picker .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .course-tools-page #listContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 0px } .picker .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } .popup .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } #puller { Z-INDEX: 3; POSITION: absolute; BOTTOM: 1px; TOP: -1px; RIGHT: -8px; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A { BORDER-BOTTOM: #777 1px solid; POSITION: relative; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 8px; BACKGROUND: url(images/reorder_bg.png) #bbb repeat-y; HEIGHT: 100%; OVERFLOW: visible; BORDER-TOP: #777 1px solid; BORDER-RIGHT: #777 1px solid; opacity: 0; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0; box-shadow: 1px 0 3px rgba(0, 0, 0, 0.4) inset } .menuWrap:hover #puller A { FILTER: alpha(opacity=100); opacity: 1; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A:after { BORDER-BOTTOM: #666 1px solid; POSITION: absolute; FILTER: alpha(opacity=0) !important; BORDER-LEFT: #666 0px solid; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1; BACKGROUND-COLOR: #777; PADDING-LEFT: 1px; PADDING-RIGHT: 6px; DISPLAY: none !important; COLOR: #fff; FONT-SIZE: 180%; BORDER-TOP: #666 1px solid; CONTENT: "\2190"; TOP: 200px; RIGHT: -30px; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 3px; opacity: 0; -webkit-transition: opacity .5s ease-in-out; -moz-transition: opacity .5s ease-in-out; border-radius: 0 12px 12px 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, .5); transition: opacity .5s ease-in-out } .pullcollapsed#puller A { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #00add0; opacity: 1 } #puller A:hover { BACKGROUND-COLOR: #777 } #puller A IMG { POSITION: relative; FILTER: alpha(opacity=0)\9; PADDING-BOTTOM: 3px; PADDING-LEFT: 1px; WIDTH: 12px; PADDING-RIGHT: 6px; BACKGROUND: url(images/menu_expand_rtl.gif) no-repeat 0px 0px; HEIGHT: 24px; TOP: 200px; RIGHT: -9px; PADDING-TOP: 3px } .pullcollapsed#puller A:hover { BACKGROUND-COLOR: #777; -webkit-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller A:after { CONTENT: "\2192"; opacity: 0 } .pullcollapsed#puller A:hover:after { opacity: 1 } #puller A:hover:after { opacity: 1 } .pullcollapsed#puller A:hover IMG { FILTER: alpha(opacity=100) } #puller A:hover IMG { FILTER: alpha(opacity=100) } .pullcollapsed#puller A:hover IMG { BACKGROUND: url(images/menu_collapse_rtl.gif) no-repeat 0px 0px } .navcollapsed { MARGIN-LEFT: -210px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller { RIGHT: -10px; opacity: 1; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navcollapsed .menuWrap { DISPLAY: block !important } .contcollapsed { MARGIN-LEFT: 12px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #topFrame { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .bgBanner { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .brandingImgWrap { HEIGHT: 46px } .brandingImgWrap A { MARGIN: 8px 12px 0px; DISPLAY: inline-block } .bannerImage { MAX-HEIGHT: 35px } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #555; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 89px; PADDING-TOP: 0px; -moz-box-shadow: 0 -6px 17px #333 inset; -webkit-box-shadow: 0 -6px 17px #333 inset } .topTabs-compact { HEIGHT: 47px } .tabWrapper-left { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-center { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-right { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .appTabs { POSITION: relative; WIDTH: auto } .topTabs-compact .tabWrapper-left { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-center { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-right { PADDING-TOP: 20px } #topTab { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A SPAN { BORDER-BOTTOM: transparent 1px dotted; PADDING-BOTTOM: 1px } .topTabs-compact .appTabs A SPAN { PADDING-BOTTOM: 0px } .appTabs A:hover { COLOR: #fff } .appTabs A:focus { COLOR: #fff } .appTabs A:hover SPAN { BORDER-BOTTOM: #fff 1px double } .appTabs A:focus SPAN { BORDER-BOTTOM: #fff 1px double } #topTabActive { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:hover { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:focus { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:hover SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:focus SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .topTabs-compact .appTabs .active .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs .active A:hover .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs A { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:hover { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:focus { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .round1 A { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .round2 A { -moz-border-radius: 12px 12px 0 0; -webkit-border-radius: 12px 12px 0 0; border-radius: 12px 12px 0 0 } .topGlobalLinks { TEXT-ALIGN: right; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); FLOAT: right; FONT-SIZE: 90%; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .topGlobalLinks UL { Z-INDEX: 1001 } .topGlobalLinks UL LI { MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; COLOR: #ccc } .loggedInAs { POSITION: relative; FONT: italic 100% Georgia; COLOR: #999; BORDER-TOP: 0px } .loggedInAs IMG { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 18px !important; PADDING-RIGHT: 1px; DISPLAY: inline-block; HEIGHT: 18px !important; TOP: -2px; RIGHT: -9px; PADDING-TOP: 1px; LEFT: auto } .loggedInAs SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: inline-block; PADDING-TOP: 6px } .topGlobalLinks A { BACKGROUND-IMAGE: none !important; MIN-WIDTH: 18px; TEXT-ALIGN: left; PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline-block; COLOR: #ccc; PADDING-TOP: 6px } .topGlobalLinks UL LI:first-child A { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks UL LI:first-child { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks A .link-icon { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); WIDTH: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; FLOAT: right; HEIGHT: 16px; OVERFLOW: hidden } .topGlobalLinks .myPlaces .link-icon { BACKGROUND-POSITION: -113px 0px } .topGlobalLinks .myPlaces:hover .link-icon { BACKGROUND-POSITION: -113px -16px } .topGlobalLinks .home .link-icon { BACKGROUND-POSITION: -129px 0px } .topGlobalLinks .home:hover .link-icon { BACKGROUND-POSITION: -129px -16px } .topGlobalLinks .logout .link-icon { DISPLAY: none } .topGlobalLinks .logout { PADDING-BOTTOM: 6px; TEXT-INDENT: 0px; PADDING-LEFT: 9px; WIDTH: auto !important; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .topGlobalLinks .help .link-icon { BACKGROUND-POSITION: -145px 0px } .topGlobalLinks .help:hover .link-icon { BACKGROUND-POSITION: -145px -16px } .topGlobalLinks A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topGlobalLinks A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topTabs-compact .loggedInAs SPAN { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks A { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks .logout { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } UL.nav LI.sub UL.narrow LI A { TEXT-INDENT: -5px; FONT-SIZE: 90% } .hotItems { Z-INDEX: 10000; POSITION: relative; WIDTH: 240px; FLOAT: right; HEIGHT: 28px; COLOR: #666; MARGIN-LEFT: 6px; FONT-SIZE: 90% } .topTabs-compact .hotItems { DISPLAY: none } .hotItems .hotLinks { POSITION: absolute; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; MAX-HEIGHT: 46px; OVERFLOW: auto; RIGHT: 0px; PADDING-TOP: 4px; LEFT: 0px; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; border-radius: 0 0 0 4px } .hotItems .hotLinks LI { DISPLAY: inline } .hotItems .hotLinks A { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT: italic 100% Georgia; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; TEXT-DECORATION: none; PADDING-TOP: 3px } .hotItems .hotLinks LI:after { POSITION: relative; COLOR: #999; CONTENT: "\2022"; RIGHT: 1px } .hotItems .hotLinks LI A:hover { COLOR: #eee; TEXT-DECORATION: underline } .path { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px } .breadcrumbs .noToggle { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .simplePath LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .path .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .path .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .simplePath .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .path A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .simplePath A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .path A:hover { COLOR: #333; TEXT-DECORATION: underline } .simplePath A:hover { COLOR: #333; TEXT-DECORATION: underline } .path .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .simplePath .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .path .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .simplePath .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .path .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='course_id']:before { CONTENT: "H" } .simplePath .root A[href*='course_id']:before { CONTENT: "H" } .path .root A[href*='admin']:before { CONTENT: "S" } .simplePath .root A[href*='admin']:before { CONTENT: "S" } .path .root A[href*='tabId=']:before { CONTENT: "m" } .simplePath .root A[href*='tabId=']:before { CONTENT: "m" } .path .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .simplePath .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .simplePath .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .path .root A:hover:before { COLOR: #888 } .simplePath .root A:hover:before { COLOR: #888 } .path .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .simplePath .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .path LI.contextPath { PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contextPath > DIV { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath > DIV:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath:hover > DIV { opacity: 1 } .contextPath:hover > DIV:hover { opacity: 1 } .contextPath A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .courseArrow A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .contextPath A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .contextPath A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow { DISPLAY: inline-block } .courseArrow A { DISPLAY: inline-block } .coursePath:hover .courseArrow { opacity: 1 } .banner + .breadcrumbs { BACKGROUND-COLOR: inherit; MARGIN: 0px } .breadcrumb-controls { FLOAT: right } .content { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #contentArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } #schemePreviewBody { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .contentBox { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .popup .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .picker .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .portal .contentBox { -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15) } #contentArea { MARGIN: 0px; COLOR: #444 } .container { MARGIN: 0px; COLOR: #444 } .containerOptions { MARGIN: 0px; COLOR: #444 } .containerPortal { MARGIN: 0px; COLOR: #444 } .containerPortal { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .portal .container { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .containerOptions .searchbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } .containerOptions .liveArea { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } #addFolderForm { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } DIV.okContainer { POSITION: relative; PADDING-BOTTOM: 60px } DIV.ok DIV.container { POSITION: relative; PADDING-BOTTOM: 60px } .collabContainer { POSITION: relative; PADDING-BOTTOM: 60px } .column-1 { MARGIN: 6px 0px 0px } .column-2 { MARGIN: 6px 0px 0px } .column-3 { MARGIN: 6px 0px 0px } .column-4 { MARGIN: 6px 0px 0px } .column-5 { MARGIN: 6px 0px 0px } .leftColumn-narrow { MARGIN: -20px 0px 0px -30px; WIDTH: 22%; FLOAT: left; OVERFLOW: auto; BORDER-RIGHT: #ccc 3px double } .picker .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .picker #bb-question-discover .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .rightColumn-narrow { WIDTH: 22%; FLOAT: right; MARGIN-LEFT: 1% } .rightColumn-wide { WIDTH: 74%; FLOAT: right } .leftColumn-wide { BORDER-LEFT: #ccc 3px double; WIDTH: 76%; FLOAT: left; MARGIN-LEFT: -3px } .picker .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker #bb-question-discover .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker .leftColumn-wide H1 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #bb-question-discover .leftColumn-wide { BORDER-LEFT: #ccc 3px double; MARGIN: -20px -20px 0px -3px; WIDTH: 80% } #bb-question-discover .leftColumn-wide + .leftColumn-wide { BORDER-LEFT: medium none; MARGIN: 0px; WIDTH: auto } #bb-question-discover .leftColumn-narrow { WIDTH: 24% } .leftColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .rightColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .leftColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .rightColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .columnPalette H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .leftColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .rightColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .leftColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } .rightColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } A.itemHead:hover { TEXT-DECORATION: underline } .leftColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .rightColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .leftColumn-narrow H3.hideoff { MARGIN: 0px } .leftColumn-narrow .columnPalette:first-child { BORDER-TOP: 0px } .paletteGroup { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .columnPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .paletteGroup DIV.columnPalette { BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .paletteItems { MARGIN: 0px 0px 4px; FONT-SIZE: 95% } .paletteItems LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 16px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } .paletteItems DIV { MARGIN: 0px 0px 0px 16px } #searchForm .paletteItems LI { MARGIN: 0px 0px 0px 24px } .paletteItems LI A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 110%; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .paletteItems LI LABEL { PADDING-LEFT: 21px; DISPLAY: inline-block } .picker .paletteItems LI LABEL { FONT-SIZE: 94% } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } UL.paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI:hover { BACKGROUND: #fff } .paletteItems LI A:hover { TEXT-DECORATION: underline } .paletteItems LI.selectedItem { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.selectedItem:hover { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active:hover { BACKGROUND: #fff4bf; COLOR: #000 } .columnActions UL LI A { DISPLAY: block } #copyright { POSITION: relative; MARGIN: 16px 0px 0px 9px; DISPLAY: inline-block; FONT-SIZE: 82% } .newCopyright { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 12px; PADDING-TOP: 20px } .logo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .legal { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .additionalInfo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 0px; MIN-HEIGHT: auto; PADDING-LEFT: 9px; PADDING-RIGHT: 12px; PADDING-TOP: 9px } .logo { POSITION: absolute; MARGIN-TOP: -20px; LEFT: 0px } .logo IMG { WIDTH: 45px } .additionalInfo { FLOAT: none } .legal P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P:first-child { PADDING-BOTTOM: 0px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } .additionalInfo P:first-child:after { POSITION: relative; COLOR: #ccc; CONTENT: "\2022"; RIGHT: -1px } .additionalInfo P:first-child A { PADDING-RIGHT: 12px } .additionalInfo P:first-child A:hover { BACKGROUND: url(images/micro_popup.png) no-repeat right 2px } .productTitle A { TEXT-ALIGN: right; LINE-HEIGHT: 1.1em; DISPLAY: block; COLOR: #333; FONT-SIZE: 125%; FONT-WEIGHT: bold; TEXT-DECORATION: none } .productTitle A:hover { TEXT-DECORATION: underline } .additionalInfo A:hover { TEXT-DECORATION: underline } .copyrightDetailContents { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #777; MARGIN: 0px; MIN-HEIGHT: 5em; PADDING-LEFT: 24px; WIDTH: 740px; PADDING-RIGHT: 24px; DISPLAY: none; COLOR: #fff; CLEAR: left; BORDER-TOP: #555 1px solid; TOP: 0px; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 12px; LEFT: 0px; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); border-radius: 3px } .productImg { MARGIN-TOP: 5px; FLOAT: left } .copyrightDetailContents UL { TEXT-ALIGN: left; MARGIN: 4px 0px 0px 24px; FLOAT: left } .copyrightDetailContents UL LI SPAN { FONT-WEIGHT: bold } A.closeCopyright { POSITION: relative; FLOAT: right; TOP: -5px; RIGHT: -16px } .contentBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 1em; MARGIN: 0px 1em 0.6em; PADDING-LEFT: 1.4em; PADDING-RIGHT: 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0.6em } .contentBlock H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; MARGIN: 0px 0px 1em; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .contentBlock UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentBlock UL.threeCol { WIDTH: 30%; FLOAT: left } .contentBlock UL.threeCol LI { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px 3px; FLOAT: none; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contentBlock UL.threeCol LI A { BACKGROUND-IMAGE: none } .contentBlock UL.threeCol LI A:hover { TEXT-DECORATION: underline } .contentBlock UL.threeCol LI A:focus { TEXT-DECORATION: underline } .contentBlock H3 INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock H3 SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock OL LI INPUT[type='checkbox'] { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .contentBlock H3 A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock INPUT.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } DIV.landingListWrapper { TEXT-ALIGN: center; MARGIN: 1.6em 0px 0px } DIV.landingListWrapper UL.landingList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI { TEXT-ALIGN: left; MARGIN: 0px 0px 1.6em; WIDTH: 50% } DIV.landingListWrapper UL.landingList-2cols LI { TEXT-ALIGN: left; MARGIN: 0px 3em 1.6em 0px; WIDTH: 45%; FLOAT: left } DIV.landingListWrapper UL.landingList LI.restart { MARGIN-TOP: -13.6em } DIV.landingListWrapper UL.landingList LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList-2cols LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList LI UL { LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em } DIV.landingListWrapper UL.landingList LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; CLEAR: left; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #000; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .containerLanding { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } DIV.landing DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } BODY.landingBody DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } .inst-email DIV.landing DIV.container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } DIV.landingPageColumn { PADDING-BOTTOM: 0px; MARGIN: 1.2em 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .twoCol { MARGIN: 1.2em 0px; WIDTH: 49% } .threeCol { MARGIN: 1.2em 0px; WIDTH: 32.5% } .landingPageColumn UL { MARGIN: 0px 0px 0px 30px } .landingPageColumn .outcomesLanding { PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI { TEXT-ALIGN: left; MARGIN: 0px 0px 2.2em } .inst-email .landingPageColumn UL LI { MARGIN: 0px } .landingPageColumn .outcomesLanding LI { MARGIN: 0px 0px 1.2em } .landingPageColumn UL LI A { TEXT-DECORATION: none } .landingPageColumn UL LI A:hover { TEXT-DECORATION: underline } .landingPageColumn H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI H3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 115%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } .landingPageColumn .outcomesLanding LI P { BORDER-TOP: 0px } .landingPageColumn H3 IMG { MARGIN: 0px 0px 0px -12px } .landingPageColumn H3.hiddenlink IMG { POSITION: absolute; FILTER: alpha(opacity=40); TOP: 0px; LEFT: 1.1em; opacity: .4 } .landingPageColumn UL LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em; PADDING-LEFT: 1.6em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #555; PADDING-TOP: 1px } .landingPageColumn UL LI UL LI.more { PADDING-TOP: 3px } .landingPageColumn UL LI UL LI.more A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; COLOR: #555; PADDING-TOP: 0px } .landingPageColumn UL LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn H3.hiddenlink { POSITION: relative; PADDING-BOTTOM: 0.6em; PADDING-LEFT: 4.2em; PADDING-RIGHT: 1.2em; PADDING-TOP: 1em } .landingPageColumn H3.hiddenlink A { COLOR: #777; TEXT-DECORATION: none } .landingPageColumn H3.hiddenlink A:hover { COLOR: #777; TEXT-DECORATION: none } .subhead_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #333; FONT-SIZE: 90%; PADDING-TOP: 0px } .list_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 1.3em; PADDING-RIGHT: 2px; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .landingPageColumn .outcomesLanding .list_text A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 3px; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; HEIGHT: 360px; OVERFLOW: auto; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.datalist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.landingPageColumn UL LI UL.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 250px; OVERFLOW: auto; BORDER-TOP: medium none; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.datalistScroll LI { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: white; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.datalistScroll LI:hover { BACKGROUND-COLOR: #ffc } DIV.landingPageColumn UL LI UL.datalistScroll LI:focus { BACKGROUND-COLOR: #ffc } DIV.datalist TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } DIV.datalistScroll TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } .emptylist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: white; MARGIN: 6px 0px 0px 1.4em; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 12px } DIV.landingPageColumn UL LI UL.subcaret { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.subcaret LI { PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.complete { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_complete_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.inprogress { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_active_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } .iconLegendLabel { MARGIN: 1px 0px 1px 1.6em; FONT-SIZE: 95% } DIV.landingPageColumn UL LI UL.subcaret LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI UL.datalist LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI DIV A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI TABLE A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI P A { TEXT-DECORATION: underline } .genericButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .genericButtonImg { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browse { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browseIcon { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } INPUT[type='submit'].submit { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble_top A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paging A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .itemHeaderControl A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .actionMenuButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paletteSearch .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } H3#cs_search + UL DIV.none:first-child .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .mainButton H2 { MARGIN: 0px; FONT-SIZE: 100% } .secondaryButton H2 { MARGIN: 0px; FONT-SIZE: 100% } #primaryButton { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble_top .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1 { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1-img { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } #secondaryButton { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2 { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2-img { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } #secondaryButton { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .sub A IMG { MARGIN: -2px -4px 0px 0px } .sub .button-1 IMG { MARGIN: -2px -4px 0px 0px } .sub .button-2 IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton A IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton .button-2 IMG { MARGIN: -2px -4px 0px 0px } .mainButton A { DISPLAY: block } .secondaryButton A { DISPLAY: block } .actionBar .button-1 { DISPLAY: block } .actionBar .button-2 { DISPLAY: block } .mainButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .mainButton H2 > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .secondaryButton > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .secondaryButton H2 > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .sub.mainButton A { PADDING-RIGHT: 12px } .sub.secondaryButton A { PADDING-RIGHT: 12px } .mainButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A { FONT-WEIGHT: 600 } .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 30px } .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 30px } .popup .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .popup .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .genericButtonImg { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } INPUT[type='submit'].genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browse { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browseIcon { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .paging A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .itemHeaderControl > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .actionMenuButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } #toolsSearchBox + .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .treeContainer .tree LI A.button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .threadButtons .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .dbThreadInfo .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .containerOptions INPUT.genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-2 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-3 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-4 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'] { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'].submit { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='button'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .genericButtonImg { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-3-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .itemHeaderControl A { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .browseIcon { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .genericButtonImg { DISPLAY: inline-block !important } INPUT[type='submit'].genericButton { FONT-WEIGHT: bold } .button-3 { FONT-WEIGHT: bold } .searchbar INPUT[type='submit'].genericButton { FONT-WEIGHT: normal } .u_reverseAlign#editGradeActionList A.genericButton { DISPLAY: inline-block; MARGIN-BOTTOM: 5px } .genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .threadButtons .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .dbThreadInfo .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img.contextArrow:hover { box-shadow: none } .button-4-img.contextArrow:focus { box-shadow: none } .paletteSearch .button-4:hover { BACKGROUND-IMAGE: none !important } .paletteSearch .button-4:focus { BACKGROUND-IMAGE: none !important } .button-5 { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5-img { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5:hover { BACKGROUND: #ededed; COLOR: black } .button-5-img:hover { BACKGROUND: #ededed; COLOR: black } .button-6 { TEXT-DECORATION: none } .mainButton A.disabled { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .rumble A { DISPLAY: block } .rumble_top A { DISPLAY: block } .rumble .sub A IMG { MARGIN: -2px -1px 0px 3px } .rumble_top .sub A IMG { MARGIN: -2px -1px 0px 3px } .paging A { DISPLAY: inline-block } .rumble_top .inventory_paging .gotolink { DISPLAY: inline-block } .rumble .inventory_paging .gotolink { DISPLAY: inline-block } .listItemSelect { MARGIN: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #555 } #threadArea .listItemSelect { MARGIN: 0px } .rumble_top .listItemSelect { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 4px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .listItemSelect { PADDING-BOTTOM: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .rumble .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble_top .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble .listItemSelect A:hover { TEXT-DECORATION: none } .rumble_top .listItemSelect A:hover { TEXT-DECORATION: none } .listItemSelect LABEL { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline; PADDING-TOP: 0px } .listItemSelect SELECT { FONT-SIZE: 95% } INPUT.calcButton { MARGIN: 2px 0px; WIDTH: 2em; DISPLAY: inline-block } INPUT#width { WIDTH: 5em } INPUT#height { WIDTH: 5em } SELECT#border { WIDTH: 5em } SELECT#controls { WIDTH: 5em } .smallControls INPUT[type='text'].width { WIDTH: 5em } .smallControls INPUT[type='text'].height { WIDTH: 5em } .smallControls SELECT.quality { WIDTH: auto } .smallControls SELECT.controls { WIDTH: auto } .smallControls SELECT.border { WIDTH: auto } .actionBarMicro .mainButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .secondaryButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .mainButton A IMG { MARGIN: 0px } .actionBarMicro .secondaryButton A IMG { MARGIN: 0px } .actionBarMicro A SPAN IMG { VISIBILITY: hidden } .actionBar A SPAN IMG { VISIBILITY: hidden } .actionBarMicro .access-reorder { -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .actionBarMicro A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBar A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBarMicro #quickViewLink A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #shortcutView A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #quickViewLink A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#quickViewLink A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #shortcutView A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#shortcutView A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #addCmItem > A SPAN { BACKGROUND-POSITION: -16px 0px } .actionBarMicro #detailViewLink2 UL LI A { WIDTH: 90px } .actionBarMicro #addCmItem:hover > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro .active#addCmItem > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro #detailViewLink A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #folderView A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #detailViewLink2 A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #folderView A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#folderView A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #courseMapButton A SPAN { BACKGROUND-POSITION: -48px 0px } .actionBarMicro #courseMapButton A:hover SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro .active#courseMapButton A SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro #refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshView A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshMenuLink A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro #refreshView A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshView A SPAN { BACKGROUND-POSITION: -64px -16px } A.access-reorder SPAN { BACKGROUND-POSITION: -80px 0px } A.access-reorder:hover SPAN { BACKGROUND-POSITION: -80px -16px } A.active.access-reorder SPAN { BACKGROUND-POSITION: -80px -16px } .actionBar .sub A .chevron { BACKGROUND-POSITION: -95px 0px } .actionBar .sub:hover A .chevron { BACKGROUND-POSITION: -95px -16px } .actionBar .sub A:focus .chevron { BACKGROUND-POSITION: -95px -16px } .actionBarMicro .active > A { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:hover { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:focus { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } A.liveAreaTab:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub H2 > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .mainButton.sub:hover H2 > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang H2:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang:hover H2:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub:hover > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .actionBarMicro UL:hover + UL .active A:after { DISPLAY: none } A.liveAreaTab:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang H2:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang:hover H2:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .sub:hover > A:after { BORDER-BOTTOM-COLOR: #d1eaef } .columnActions.actionBarMicro { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 3px } .alignPanel LI.sub { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .alignPanel LI.sub A.button-4:after { CONTENT: none } .columnActions UL { MARGIN: 0px 0px 2px } .columnActions .mainButton A { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .columnActions .mainButton A:hover { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .modeSwitchWrap { DISPLAY: inline-block; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; FONT-WEIGHT: bold; BORDER-RIGHT: transparent 1px dotted } .modeSwitch { PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: #ccc; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -moz-border-radius: 16px; -webkit-border-radius: 16px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); border-radius: 16px } .modeSwitch:before { POSITION: relative; LINE-HEIGHT: 0.9; COLOR: #bbb; FONT-SIZE: 22px; VERTICAL-ALIGN: middle; CONTENT: "\2022"; TOP: -1px; FONT-WEIGHT: normal; MARGIN-RIGHT: 2px; LEFT: 0px; font-effect: outline } .read-on { BACKGROUND-COLOR: #777; MARGIN-RIGHT: 0px } .read-on:hover { BACKGROUND: #555 } .read-on { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .read-on:before { COLOR: lime; text-shadow: 0 0 4px lime } .disabled.read-on:before { COLOR: #999 } .disabled.read-on { COLOR: #999 } .read-off:before { COLOR: #999 } .read-off { COLOR: #999 } .read-off.modeSwitch { TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } A.read-off IMG { DISPLAY: none } A.read-on IMG { DISPLAY: none } A.read-on .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } A.read-off .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } .modeSwitch SPAN { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .switcherLabel { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 4px !important; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 2px !important } .vtbeSwitch { TOP: 2px } .vtbeSwitch SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .legacy .vtbeSwitch { HEIGHT: 2.2em } .vtbeSwitch DIV.modeSwitchWrap { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ccc 1px solid; TOP: 2px; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .vtbeSwitch DIV.modeSwitchWrap A SPAN#statusText { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 0px !important } .vtbeSwitch DIV.modeSwitchWrap A.read-off { BACKGROUND-COLOR: #ddd } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover { BACKGROUND-COLOR: #fff } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover SPAN#statusText { COLOR: #000 } TABLE.vtbeTable-legacy { WIDTH: 100% } .vtbeTable-legacy TEXTAREA { WIDTH: 100% } .helpLink { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .helpLink A.browseIcon { BORDER-BOTTOM: 0px; POSITION: relative; TEXT-ALIGN: center; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#777777); BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; BACKGROUND: #777; FONT-SIZE: 115%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; box-shadow: none; border-radius: 12px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .helpLink A.browseIcon IMG { DISPLAY: none } .helpLink A.browseIcon:before { Z-INDEX: 1; POSITION: relative; WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: #fff; CONTENT: "?"; RIGHT: -4px; FONT-WEIGHT: bold } .helpLink A.browseIcon:hover { box-shadow: none } .helpLink A.browseIcon:focus { box-shadow: none } .helpLink A[title*='Off'].browseIcon:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bbbbbb,endColorstr=#bbbbbb); BACKGROUND: #bbb } .helpLink A[title*='Off'] { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } TABLE.reorder { opacity: 1 } .reorder SPAN { DISPLAY: inline-block; HEIGHT: 20px } TABLE.reorder SPAN { HEIGHT: auto } .item .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } .item .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .liItem .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .subList-reorder .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .buttonCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .dndHandle .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .portlet .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder { WIDTH: 16px } .subList-reorder .reorder { WIDTH: 16px } .buttonCm .reorder { WIDTH: 16px } .portlet .reorder SPAN { DISPLAY: block; BACKGROUND-POSITION: -237px -116px; HEIGHT: 24px } .portlet .reorder { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; BOTTOM: -1px; BORDER-TOP: #555 1px solid; TOP: -1px; BORDER-RIGHT: #555 0px solid; LEFT: -19px; opacity: 0; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px } .module-dragstate.portlet .reorder { BORDER-RIGHT-WIDTH: 0px; BOTTOM: -2px; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-LEFT-WIDTH: 2px; TOP: -2px; LEFT: -20px } .reorder IMG { FILTER: alpha(opacity=0); opacity: 0 } .item .reorder IMG { MARGIN: 6px 3px } .portlet .reorder IMG { WIDTH: 18px; HEIGHT: 20px } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .liItem:focus .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .listCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buttonCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .portlet H2:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentListPlain LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentList > LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg { MARGIN: 0px; WIDTH: 16px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -125px; HEIGHT: 16px } TABLE.inventory A.cmimg { FILTER: alpha(opacity=0); opacity: 0 } TABLE.inventory TR:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg:hover { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg:focus { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg IMG { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 15px; PADDING-RIGHT: 0px; HEIGHT: 15px; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .buttonCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .portlet A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } A.cmimg-small { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .listCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .listCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .courseMenu .subhead A.cmimg { TOP: 9px } .buttonCm .courseMenu .subhead .cmimg { TOP: 2px } .portlet A.cmimg { POSITION: relative; TOP: 2px; RIGHT: 0px } .listCm .courseMenu A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .portlet A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .buildList LI .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .item .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .buildList LI .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .item .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .listCm .courseMenu LI:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 3px; BOTTOM: 0px; PADDING-RIGHT: 4px; PADDING-TOP: 4px; -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); border-radius: 0 3px 0 0 } .frameResizeToggle A { WIDTH: 16px; DISPLAY: block; BACKGROUND: url(images/utilicons_sprite_rev.png) no-repeat -158px 0px; HEIGHT: 16px; OVERFLOW: hidden } .frameResizeToggle:hover { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle A.resize-on { BACKGROUND-POSITION: -175px 0px; opacity: .5 } .frameResizeToggle A.resize-off { BACKGROUND-POSITION: -159px 0px; opacity: .8 } .frameResizeToggle A.resize-on:hover { BACKGROUND-POSITION: -159px -16px; opacity: 1 } .frameResizeToggle A.resize-off:hover { BACKGROUND-POSITION: -175px -16px; opacity: 1 } .frameResizeToggle A IMG { WIDTH: 18px; HEIGHT: 18px } A.close { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close-menu { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close { TOP: 0px; RIGHT: 20px } A.close IMG { DISPLAY: none } A.close-menu IMG { DISPLAY: none } .lbAction IMG { DISPLAY: none } A.close:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } .lbAction:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT-SIZE: 14px } A.close:hover:before { COLOR: #888 } A.close-menu:hover:before { COLOR: #888 } .lbAction:hover:before { COLOR: #888 } .builderItem A.close { FILTER: alpha(opacity:0); opacity: 0 } .builderItem:hover A.close { FILTER: alpha(opacity:100); opacity: 1 } .liveArea A.close { TOP: 6px; RIGHT: 6px } .cmdiv A.close-menu { Z-INDEX: 100; POSITION: relative; FILTER: alpha(opacity=100); TOP: 0px; RIGHT: 0px; opacity: 1 } #bb-assessment-canvas [id*='receipt_nested'].receipt A.close { TOP: 6px; RIGHT: 6px } A.colorChip { PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 1px } .pageTitle A.colorChip { PADDING-BOTTOM: 4px; PADDING-LEFT: 7px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } A.colorChip SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -123px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } A.colorChip:hover SPAN { BACKGROUND-POSITION: -320px -141px } A.colorChip SPAN IMG { FILTER: alpha(opacity=0); WIDTH: 16px; HEIGHT: 16px; opacity: 0 } A.colorChip IMG.chipSwatch { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 16px; HEIGHT: 16px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #aaa 1px solid } SPAN.colorChipName { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: inline-block !important; VERTICAL-ALIGN: middle; PADDING-TOP: 0px !important } INPUT[type='text'] { FONT-SIZE: 90% } INPUT[type='password'] { FONT-SIZE: 90% } SELECT { FONT-SIZE: 90% } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .courseMenu INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .courseMenu INPUT[type='text'] { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { MARGIN-LEFT: 0px } #calculatorValue { MARGIN: 3px 0px; WIDTH: 10em } A.microControl { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A.microControl IMG { WIDTH: 12px; HEIGHT: 12px } A.save { BACKGROUND: url(images/controls.png) no-repeat -50px -123px } A.cancel { BACKGROUND: url(images/controls.png) no-repeat -70px -123px } .fileInputWrapper { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; MARGIN-RIGHT: 9px; PADDING-TOP: 0px } .fileInputWrapper INPUT.hiddenInput { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .backLink { POSITION: absolute; MARGIN: 0px; BOTTOM: 0px; RIGHT: 0px } .tocBottom_min .backLink { BOTTOM: 48px } .tocBottom_max .backLink { BOTTOM: 348px } .tocBottom_open .backLink { BOTTOM: 178px } .shortDoc .backLink { POSITION: relative; TEXT-ALIGN: left; MARGIN-TOP: 15px; BOTTOM: 0px; RIGHT: 0px } .backLink A { BORDER-BOTTOM: #cdcdcd 0px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 18px; DISPLAY: inline-block; BACKGROUND: #eee; COLOR: #888; BORDER-TOP: #cdcdcd 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #cdcdcd 0px solid; TEXT-DECORATION: none; PADDING-TOP: 8px; -moz-box-shadow: 1px 1px 4px #DDD inset; -webkit-box-shadow: 1px 1px 4px #ddd inset; -moz-border-radius: 4px 0 4px 0; -webkit-border-radius: 4px 0 4px 0; text-shadow: 0 1px 0 #fff } .shortDoc .backLink A { BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px } .backLink A:before { LINE-HEIGHT: 1.2; COLOR: #999; FONT-SIZE: 120%; CONTENT: "\2190" } .backLink A:hover { BACKGROUND: #ddd; COLOR: #777 } .backLink A:hover:before { COLOR: #00add0 } .sliderWrapper { BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 0px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 13px; BACKGROUND: #fff; FLOAT: left; FONT-SIZE: 85%; PADDING-TOP: 14px; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0 } #sliderHandle { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: -2px 0px 0px; WIDTH: 4px; DISPLAY: block; BACKGROUND: #999; HEIGHT: 4px; BORDER-TOP: #555 1px solid; CURSOR: ew-resize; BORDER-RIGHT: #555 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } #sliderTrack { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 6px; WIDTH: 60px; DISPLAY: inline-block; BACKGROUND: #ededed; HEIGHT: 2px; BORDER-TOP: #ccc 1px solid; TOP: -2px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .itemCounter { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #cdcdcd; FONT-SIZE: 115%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #pageHeader { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitleSmall { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } #pageHeader { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #schemePreviewHead { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitle H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitleError H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #pageHeader { FONT-SIZE: 185% } .pageTitle H1 { FONT-SIZE: 185% } .pageTitleError H1 { FONT-SIZE: 185% } .picker .pageTitle H1 { FONT-SIZE: 160% } .popup .pageTitle H1 { FONT-SIZE: 160% } .pageTitle #titleicon { DISPLAY: inline-block } .pageTitle H1 { DISPLAY: inline-block } .pageTitle A.cmimg { DISPLAY: inline-block } .pageTitle H1 + .contextMenuContainer { POSITION: relative; MARGIN-LEFT: 2px; VERTICAL-ALIGN: top; TOP: 4px } .pageTitle A.cmimg { MARGIN: 0px } .pageTitle #titleicon { MARGIN: 0px 6px 0px 0px; DISPLAY: none } .pageTitle [src*='slideshare']#titleicon { BORDER-BOTTOM: #dedede 1px solid; POSITION: absolute; BORDER-LEFT: #dedede 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; WIDTH: auto; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #fff; HEIGHT: 39px; BORDER-TOP: #dedede 0px solid; TOP: 1px; RIGHT: 7px; BORDER-RIGHT: #dedede 0px solid; PADDING-TOP: 4px; border-radius: 0 4px 0 4px } .pageTitle [src*='youtube']#titleicon { POSITION: absolute; WIDTH: auto; DISPLAY: block; HEIGHT: 44px; TOP: 8px; RIGHT: 14px } .pageTitleSmall H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #fff; FONT-SIZE: 135%; PADDING-TOP: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.9) } #pageHeader { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } #schemePreviewHead { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .hierarchy-page .pageTitle + .container { MARGIN-TOP: -20px; BACKGROUND: #fff } .picker .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popup .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } #pageHeader { BACKGROUND-COLOR: #dedede } #schemePreviewHead { BACKGROUND-COLOR: #dedede } .pageTitleIcon { DISPLAY: table-row } .pageTitle .details { DISPLAY: none } .pageTitle .contextMenuContainer { DISPLAY: inline-block !important } .pageTitle .titleButtons { DISPLAY: inline-block !important } .pageTitleEdit { DISPLAY: inline-block !important } #pageTitleBar { DISPLAY: inline-block; MARGIN-RIGHT: 6px } .pageTitle H2 { MARGIN: 0px; COLOR: #333; CLEAR: both; FONT-SIZE: 100% } .pageTitle H2 SPAN { FONT-WEIGHT: normal } .contextString { COLOR: #777; FONT-WEIGHT: normal } .pageTitle .label { COLOR: #777; FONT-WEIGHT: normal } .error .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#DB0F0F,endColorstr=#FC0202); box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6) inset } .error .pageTitle H1 { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2) } .customBanner { TEXT-ALIGN: center; BACKGROUND-COLOR: transparent; MARGIN: 0px; OVERFLOW: hidden } DIV.localViewToggle + DIV.pageTitle { PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #fafafa inset; border-radius: 0 } DIV#lightboxContent H2 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; FONT-SIZE: 130%; PADDING-TOP: 18px } .helphelp { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .pageTitle P { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .label.details { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .mapTabs + .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .mapTabs ~ .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .helphelp A { BORDER-BOTTOM: #666 1px dotted; COLOR: #666; TEXT-DECORATION: none } .helphelp A:hover { BORDER-BOTTOM-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-TOP-STYLE: solid; BORDER-LEFT-STYLE: solid } DIV.helphelp UL { MARGIN: 6px 0px } .version { MARGIN-TOP: 6px; DISPLAY: inline-block; COLOR: #666; FONT-SIZE: 60%; FONT-WEIGHT: normal } .version I { FONT-STYLE: normal; FONT-WEIGHT: bold } .version SPAN { POSITION: relative; WIDTH: 13px; DISPLAY: inline-block; OVERFLOW: hidden; TOP: -2px; LEFT: -5px } .version SPAN:before { POSITION: relative; COLOR: #00add0; FONT-SIZE: 105%; CONTENT: "+"; TOP: 0px; FONT-WEIGHT: bold; LEFT: 0px } .colophon { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px 14px; PADDING-LEFT: 55px; WIDTH: 30em; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: right; FONT-SIZE: 85%; OVERFLOW: visible; RIGHT: 0px; PADDING-TOP: 0px } .colophon IMG { POSITION: absolute; LEFT: 0px } .installation { LINE-HEIGHT: 1.3em; COLOR: #666 !important } .installation SPAN { FONT-WEIGHT: bold } .actionBar { Z-INDEX: 110; BORDER-TOP: #444 1px solid; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .hierarchy-page .actionBar { MARGIN-TOP: -21px } .hierarchy-page #toolsTabForm .actionBar { MARGIN: -21px -30px 0px } .actionBar UL LI { POSITION: relative } .actionBar UL LI.mainButton { Z-INDEX: 210 } .actionBar UL LI.secondaryButton { Z-INDEX: 209 } .actionBar UL LI.mainButton:hover { Z-INDEX: 112 } .pageTitle + .actionBar { -moz-border-radius: 0; border-radius: 0 } .actionBar .mainButton { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBar .secondaryButton { MARGIN: 0px; FLOAT: right } .actionMenu { Z-INDEX: 111; POSITION: relative } .actionMenuItem { Z-INDEX: 123; POSITION: relative } .actionBarMicro { -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .csMenuFrame .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popupMenu .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .portlet .actionBarMicro { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .portlet .actionBarMicro UL { MARGIN: 2px } .actionBarMicro UL LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBarMicro .mainButton { Z-INDEX: 1000 } .actionBarMicro .secondaryButton { Z-INDEX: 10; FLOAT: right } .actionBar { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .actionBarMicro { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .searchbar { POSITION: relative } .searchbarPicker { POSITION: relative } .subActionBar { POSITION: relative } .searchbarCanvas.searchbar { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN: -24px -30px 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dfdfdf 0px 0px; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #F0F0F0 inset; -webkit-box-shadow: 1px 0 0 #F0F0F0 inset } .picker .searchbarCanvas.searchbar { MARGIN: -24px -20px 20px } .picker .leftColumn-narrow H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } .picker .leftColumn-wide H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } #bb-question-discover .searchbarCanvas.searchbar FIELDSET H2 { DISPLAY: inline-block; FONT-SIZE: 100%; FONT-WEIGHT: normal } .subActionBar { FONT-SIZE: 95% } .searchbar TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE TD TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE FIELDSET { PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 3px } .searchbar TABLE DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .searchbar FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchbarPicker { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .searchbar:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .searchbarPicker:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .receipt A.close { FILTER: alpha(opacity=70); TOP: 1px; RIGHT: 4px; opacity: .7 } .slideshowControls { TEXT-ALIGN: center; MARGIN: 8px auto 12px; FONT-SIZE: 100% } .searchbar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbarPicker FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .subActionBar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbar H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .searchbarPicker H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .picker .searchbar H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbarPicker H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbar .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbarPicker .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .liveArea FIELDSET .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbar OL LI { MARGIN: 5px; FLOAT: left } .searchbarPicker OL LI { MARGIN: 5px; FLOAT: left } .liveArea FIELDSET OL LI { MARGIN: 5px; FLOAT: left } .searchbar OL LI > DIV { MARGIN: 0px 4px 4px 0px; DISPLAY: inline-block } .searchbar OL LI.options { FLOAT: right } .searchbarPicker OL LI.options { FLOAT: right } .liveArea FIELDSET OL LI.options { FLOAT: right } .searchbarPicker SPAN { DISPLAY: inline } .searchbar SPAN.spacer { MARGIN: 0px 4px } .cmImg { TEXT-ALIGN: center; MARGIN: 0px 0px 6px 12px; WIDTH: 180px; OVERFLOW: hidden } .cmImg IMG { WIDTH: 180px } .navDivider { PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; MARGIN: 0px 0px 4px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; LETTER-SPACING: 2px; COLOR: #999; FONT-SIZE: 80%; FONT-WEIGHT: bold; PADDING-TOP: 18px; text-shadow: 0 1px 0 #f9f9f9 } .cmPreviewWrapper { WIDTH: 212px } .navPalette { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .csMenuFrame .navPalette { MARGIN: 0px 0px 18px } .navPalette H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 105%; PADDING-TOP: 0px } .navPaletteTitle { POSITION: relative } .navPaletteTitle H3 + H3 { POSITION: absolute; TOP: 0px; RIGHT: 0px } .navPaletteCol H3 { BORDER-BOTTOM: 0px } .navPalette H4 { MARGIN: 0px; FONT-SIZE: 100% } .navPaletteContent UL LI { POSITION: relative; ZOOM: 1 } .navPaletteContent { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .listCm .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .singleControl .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .tools .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } #courseMenuPalette DIV.navPaletteContent { PADDING-BOTTOM: 14px; PADDING-TOP: 14px; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset } #courseMenuPalette { MARGIN-BOTTOM: 0px } .singleControl .navPaletteContent { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .singleControl { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPalette .discover { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPaletteContent A { PADDING-BOTTOM: 3px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; WORD-BREAK: normal; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 3px } .navPaletteContent A:hover { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A:focus { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A.comboLink { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.open { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.submenuLink { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink_active { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent A.submenuLink_active IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent UL LI:first-child H4 A { BORDER-TOP: medium none } .navPaletteContent UL LI:first-child A { BORDER-TOP: medium none } .navPaletteContent UL LI H4 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPaletteContent H3 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px; text-shadow: 0 1px 0 #f9f9f9 } .navPaletteContent H3 A:hover { TEXT-DECORATION: none } .navPaletteContent H3 A:focus { TEXT-DECORATION: none } #courseMenu { BACKGROUND-COLOR: #0078cb; COLOR: #fff } .controlpanel UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .controlpanel A { BORDER-TOP: #ccc 1px dotted } .controlpanel A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .controlpanel A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { DISPLAY: inline-block } .navPaletteContent H3 A.submenuLink_active { DISPLAY: inline-block } .controlpanel A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .controlpanel A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink_active:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .navPaletteContent H3 A.submenuLink_active:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .controlpanel A.submenuLink:hover:after { COLOR: #aaa } .controlpanel A.submenuLink_active:hover:after { COLOR: #aaa } .tools A.submenuLink:hover:after { COLOR: #aaa } .tools A.submenuLink_active:hover:after { COLOR: #aaa } .navPaletteContent H3 A.submenuLink:hover:before { COLOR: #aaa } .navPaletteContent H3 A.submenuLink_active:hover:before { COLOR: #aaa } .controlpanel A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .tools A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel H4 A.open { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navPaletteContent UL LI:first-child H4 A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore H4 { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel A.comboLink_active { Z-INDEX: 1; POSITION: relative } .tools A.comboLink_active { Z-INDEX: 1; POSITION: relative } .controlpanel H4 A.open { Z-INDEX: 1; POSITION: relative } .treeViewCs .navPaletteContent { } .treeViewCs .bottomRound B { } .courseFilesPalette { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .paletteSearch { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 6px } .classFiles H4#cs_search + UL LI:first-child { BORDER-BOTTOM: #aaa 1px dotted; PADDING-BOTTOM: 6px; MARGIN: 2px 9px 2px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 95%; PADDING-TOP: 0px } .classFiles H4#cs_search + UL LI { BACKGROUND-IMAGE: none } .classFiles A#filesPaletteContentCollectionLink { BACKGROUND-IMAGE: url(images/indicators.png); PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 98% -143px; COLOR: #aaa; PADDING-TOP: 3px } .navPaletteContent .submenu .paletteSearchElement { PADDING-BOTTOM: 9px; MARGIN: 6px 0px 0px -16px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BORDER-TOP: #bbb 1px dotted; PADDING-TOP: 10px } .paletteSearchElement INPUT { WIDTH: 99px } .classFiles UL.tree > LI { BACKGROUND-IMAGE: none !important } .listCm .courseMenu { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .ineditmode DIV.listCm UL.courseMenu { MARGIN: 0px } .ineditmode DIV.listCm UL.courseMenu LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px -1px 0px 0px; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid } .ineditmode DIV.listCm UL.courseMenu LI:hover { BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff !important; -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -moz-transition: border, margin, background, -moz-box-shadow 500ms cubic-bezier(0.420, 0.000, 1.000, 1.000); box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-transition-property: background, border, -webkit-box-shadow; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000); background-clip: padding-box } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder { -webkit-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder:before { -webkit-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .listCm .courseMenu LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .buttonCm LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .buttonCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .listCm .courseMenu A:hover { TEXT-DECORATION: underline } .listCm .courseMenu A:focus { TEXT-DECORATION: underline } .buttonCm LI A:hover { TEXT-DECORATION: underline } .buttonCm LI:focus { TEXT-DECORATION: underline } .listCm .courseMenu > LI:hover A SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:hover { COLOR: #128fa8 !important } .listCm .courseMenu A:focus { COLOR: #128fa8 !important } .listCm .courseMenu A:hover SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:focus SPAN { COLOR: #128fa8 !important } .listCm .courseMenu .here A { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:hover { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:focus { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A.cmimg { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu .here A.cmimg:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .listCm .subhead H3 { PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #courseMenu_folderView H4 A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } #courseMenu_folderView .subhead { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .navPaletteContent .subhead H3 A { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .navPaletteContent .subhead H3 A:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .listCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { BACKGROUND-IMAGE: none !important } .noteditmode .listCm .courseMenu .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .noteditmode .listCm .buttonCm .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .listCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .buttonCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .listCm .courseMenu .collapsed { PADDING-BOTTOM: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; HEIGHT: 2px; PADDING-TOP: 0px } .buttonCm .navPaletteContent { BACKGROUND: none transparent scroll repeat 0% 0% } .buttonCm LI { BACKGROUND-COLOR: transparent; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 12px 0px } .buttonCm .courseMenu .here A { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .buttonCm .courseMenu .here A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .cmLink-hidden { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-empty { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-hidden IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -123px } .cmLink-hidden { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -138px } .buttonCm .invisible .cmLink-hidden { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { RIGHT: 32px } .buttonCm .bottomRound { DISPLAY: none } .pickerMenu { POSITION: absolute; MARGIN: 0px; WIDTH: 150px; TOP: 0px; LEFT: 14px } .pickerMenu UL LI A { BACKGROUND-IMAGE: none } DIV.pickerMenu A.simpleLink { BACKGROUND-IMAGE: none } .pickerMenu A.open { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:hover { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:focus { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .discover .topRound B { } .discover .bottomRound B { } .discover .navPaletteContent { } .singleControl .topRound B { } .singleControl .bottomRound B { } .singleControl .navPaletteContent { } .discover A IMG { DISPLAY: none } .discover.navPalette { MARGIN-BOTTOM: 0px } .singleControl A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .navPalette .discover A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .singleControl A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A.enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .discover A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { COLOR: #3c0; CONTENT: "+" } .discover A:before { COLOR: #eee; CONTENT: "F" } .navPaletteContent .submenu { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; FONT-SIZE: 90%; PADDING-TOP: 0px; -moz-box-shadow: 0 1px 4px #ccc; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore .submenu { BACKGROUND: #fff; FONT-SIZE: 90% } .navPaletteContent .submenu LI { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent .submenu LI UL LI { PADDING-LEFT: 12px } .navPaletteContent .submenu LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } H4#cs_search + UL DIV A { DISPLAY: block; FONT-SIZE: 90% } .controlpanel .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu .emptyMsg { COLOR: #777 } .controlpanel .submenu A:hover { TEXT-DECORATION: underline } .controlpanel .submenu A.here { TEXT-DECORATION: underline } .controlpanel .submenu A:focus { TEXT-DECORATION: underline } .explore .submenu A:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .explore .submenu A:focus { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .tools .submenu { BACKGROUND: #fff } .controlpanel .submenu { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel .submenu LI UL { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND-COLOR: transparent } .navPalette A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .controlpanel A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPalette A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPalette A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPaletteCol H3 A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol H3 A.comboLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol .navPaletteContent H3 { BACKGROUND-IMAGE: none } .navPaletteCol .actionBarMicro { DISPLAY: none } .shortcutViewCs UL LI A { TEXT-ALIGN: center; BORDER-TOP: #ededed 1px dotted } .shortcuts LI A { BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted } .shortcuts LI A:hover { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .shortcuts LI A:focus { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .treeContainer#courseMenu_folderView { OVERFLOW-X: auto } DIV.expTreeContainer { BACKGROUND: #eee } DIV.treeContainer UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.treeContainer > UL.tree { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree > UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.listCm DIV.treeContainer UL.tree { OVERFLOW-X: auto; ZOOM: 1 } DIV.treeContainer UL.tree LI H4 + UL { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; ZOOM: 1; FONT-SIZE: 90%; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .sideTOC UL.tree > LI { OVERFLOW-X: visible } DIV.treeContainer UL.tree LI.last { BACKGROUND-IMAGE: none } UL.tree LI.last { BACKGROUND-IMAGE: none } DIV.treeContainer UL.tree LI.here A { BACKGROUND-COLOR: #ededed } UL.tree LI.here A { BACKGROUND-COLOR: #ededed } DIV.treeContainer UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.open_folder { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: #ebeffa; FONT-SIZE: 95%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.exp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folder.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI A.collapse { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folderopen.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer H4.treehead { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 2px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.treeContainer H4.first { MARGIN: 0px 0px 2px } DIV#userTreeDiv { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead { BACKGROUND-IMAGE: none; MARGIN: 0px; BORDER-TOP: #ccc 1px dotted } DIV.treeContainer UL.tree LI.subhead H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.first A { BORDER-TOP: medium none } DIV.treeContainer UL.tree LI.subhead H4 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 6px } UL.tree LI.subhead:first-child { MARGIN-TOP: 0px } UL.tree LI.subhead:first-child > A { BORDER-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.treeSubhead-collapsed A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: normal } .tableOverflowControl { OVERFLOW-X: auto } .inventory { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 0px; BORDER-SPACING: 0; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-COLLAPSE: separate; BACKGROUND: #fff; COLOR: #000; CLEAR: both; PADDING-TOP: 0px } .inventory CAPTION { TEXT-ALIGN: left; COLOR: #999; FONT-SIZE: 85% } .inventory > THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .splashTable THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .inventory > THEAD TR TH:first-child { BORDER-LEFT: medium none; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .inventory > TBODY { BORDER-BOTTOM: #ccc 2px solid } .inventory > TBODY TR { BORDER-BOTTOM: #ccc 1px solid } .inventory > TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory > TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory#drawerItems TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory#drawerItems TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory > TBODY TR TH { TEXT-ALIGN: left; FONT-WEIGHT: normal } .inventory > TBODY TR TD:first-child { BORDER-LEFT: medium none } .inventory > TBODY .gray TD { BACKGROUND: #fff4bf } .inventory > TBODY .gray TH { BACKGROUND: #fff4bf } .inventory > THEAD TR TH.sorted { BACKGROUND: #ccc } TH.sorted { BACKGROUND: #ccc } .splashTable THEAD TR TH.sorted { BACKGROUND: #ccc } .inventory > TBODY TR TD.sorted { BACKGROUND: #eee } .inventory > THEAD TR TH.sorted A { COLOR: #000 !important; FONT-WEIGHT: bold } .sortable > THEAD TH A { COLOR: #666; MARGIN-RIGHT: 9px } .sortable > THEAD TH A:hover { COLOR: #333; TEXT-DECORATION: underline } .sortable A.sortheader { POSITION: relative; PADDING-RIGHT: 17px; DISPLAY: block; MARGIN-RIGHT: 0px; text-shadow: 0 1px 0 #fff } .sortable .sortarrow { COLOR: #ff0; TOP: 0px; RIGHT: 0px; TEXT-DECORATION: none; LEFT: auto } TR.high { BACKGROUND: #fff4bf } .high { BACKGROUND: #fff4bf } .disabledCell { BACKGROUND-COLOR: #f0f0f0 } .inventory .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .inventory > TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments { WIDTH: 100% } .inventory .dndHandle { POSITION: static; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 5px } .inventory .dndHandle .reorder IMG { HEIGHT: 20px } .inventory .dndHandle .reorder:hover IMG { HEIGHT: 20px } .inventory .dndHandle .reorder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory .dndHandle .reorder:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory TR:hover .dndHandle { BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px } .reorderable > TBODY TR:hover { -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset } .reorderable > TBODY TR:hover TD { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable > TBODY TR:hover TH { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable TBODY TR TD:first-child { BORDER-LEFT: transparent 1px solid } .inventory TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .inventory > TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .attachments TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .attachments TBODY TR { BORDER-TOP: #eee 1px solid } .inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } .attachments TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .attachments TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory > TBODY UL.subtabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } TABLE.inventory > TBODY UL.subtabs LI { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.status { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; BACKGROUND: #f9f9f9; COLOR: #000; FONT-SIZE: 90%; PADDING-TOP: 1px } DIV.status A IMG { VERTICAL-ALIGN: middle } DIV.status P { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left !important; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; LINE-HEIGHT: 10%; MARGIN: 2px auto 4px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } DIV.status P IMG { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #8dafaf; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 8px; PADDING-TOP: 0px } DIV.stopped P IMG { BACKGROUND: url(images/controls.png) #fff no-repeat -20px -180px } DIV.status A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.status DIV { POSITION: relative; TEXT-ALIGN: center } DIV.status A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } TABLE.inventory-simple { MARGIN: 0px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } TABLE.attachments THEAD TR.warningRow { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TABLE.inventory-simple THEAD TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } TABLE.inventory-simple TBODY TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TH { COLOR: #000 } TABLE.inventory-simple .removeCell { BACKGROUND: #ededed; COLOR: #777 } TABLE.inventory-simple .removeCell TD { COLOR: #999 } TABLE.inventory-simple .removeCell TH { COLOR: #999 } TABLE.inventory-simple .removeCell TD A IMG { FILTER: alpha(opacity=40); opacity: .4 } TABLE.inventory-simple .smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.inventory-simple TBODY TR.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TD { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TH { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.stepItems-reorder { BORDER-SPACING: 0; MARGIN-BOTTOM: 12px; FONT-SIZE: 85% } TABLE.gbColumns { ZOOM: 1; FONT-SIZE: 90% } TABLE.stepItems-reorder TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BACKGROUND: #fff; COLOR: #999 } TABLE.gbColumns THEAD TR TH { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TD { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TH.sorted { BORDER-LEFT: #777 1px solid; BACKGROUND: #999; BORDER-RIGHT: #777 1px solid } TABLE.gbColumns THEAD TR TH A { COLOR: #fff } TABLE.gbColumns THEAD TR TD A { COLOR: #fff } TABLE.stepItems-reorder THEAD TR.lowerHeader TH { BORDER-BOTTOM: #ccc 2px solid; COLOR: #333 } TABLE.stepItems-reorder TBODY TR TD.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder THEAD TR TH.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder TR TH.clearCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TD { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TH { BORDER-TOP: 0px } TABLE.stepItems-reorder THEAD TR:first-child { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; TEXT-ALIGN: right; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD SPAN.reorder { POSITION: relative; FILTER: alpha(opacity=100); WIDTH: 18px !important; DISPLAY: block; BACKGROUND: url(images/controls.png) #ededed no-repeat -177px -122px; HEIGHT: 20px; TOP: 2px; CURSOR: move; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; LEFT: auto; opacity: 1; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } TABLE.gbColumns TBODY TR TD SPAN.reorder { BACKGROUND: url(images/controls.png) #ededed no-repeat -237px -122px } TABLE.stepItems-reorder TBODY TR.frozenbar TD SPAN.reorder { TOP: 1px } TABLE.stepItems-reorder TBODY TR TD INPUT { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: 95%; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } TABLE.stepItems-reorder TBODY TR TD.points INPUT { WIDTH: 3em } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=text] { WIDTH: 90% } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=checkbox] { WIDTH: auto } TABLE.stepItems-reorder TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px 4px 0px 0px } TABLE.gbColumns TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px; WIDTH: auto } TABLE.gbColumns TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; PADDING-TOP: 6px } TABLE.gbColumns TBODY TR.frozenbar TD { BACKGROUND: #ccc; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: 0px } TABLE.gbColumns TFOOT TR.lastRow TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #999; HEIGHT: 2px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.frozen TD { BACKGROUND: #ededed } TABLE.gbColumns THEAD TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } TABLE.gbColumns TBODY TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } DIV.areaHighlight TABLE.gbColumns THEAD TR TD.clear { BACKGROUND: inherit } TD.clear { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozen TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TFOOT TR.lastRow TD.clear { BACKGROUND: inherit } TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.gbColumns TBODY TR.placeholder TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.placeholder TD.clear { BACKGROUND: inherit } UL.dragableHighlight LI TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozen TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TFOOT TR.lastRow TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TR.rowdrag { Z-INDEX: 1; BACKGROUND: #ccc } .insertImg { Z-INDEX: 20; POSITION: relative; TOP: 12px } .insertImgUp { Z-INDEX: 20; POSITION: absolute; RIGHT: -10px } TABLE.inventory > TBODY TR TD.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > THEAD TR TH.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > TBODY TR TD.hideCell { DISPLAY: none } TABLE.inventory > THEAD TR TH.hideCell { DISPLAY: none } .clickOrder { DISPLAY: none } TABLE.inventory > TBODY TR TD.clickOrder { BORDER-LEFT: medium none; BACKGROUND-COLOR: #ddd } TABLE.inventory TR TD.endCell { PADDING-BOTTOM: 0px !important; BACKGROUND-COLOR: #ddd !important; PADDING-LEFT: 0px !important; WIDTH: 1px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.inventory TR.orderRow TD.clickOrder { TEXT-ALIGN: center; BACKGROUND-COLOR: #ddd } TABLE.inventory TR.orderRow TD.clickOrder DIV { POSITION: relative } .sortedplus { BACKGROUND-IMAGE: url(images/controls.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 48% -995px } .dragCol { BACKGROUND-COLOR: #999 } TABLE.splashTable { BORDER-BOTTOM: #ccc 2px solid; MARGIN: 3px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.splashTable THEAD TR { COLOR: #999 } TABLE.splashTable THEAD TR TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } TABLE.splashTable THEAD TR TH A { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #666; TEXT-DECORATION: none } TABLE.splashTable THEAD TR TH A:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; TEXT-DECORATION: underline } TABLE.splashTable TBODY TR { BORDER-TOP: #ddd 1px solid } TABLE.splashTable TBODY TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TH { TEXT-ALIGN: left; COLOR: #000 } TABLE.splashTable TH.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.splashTable TD.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } .contentBlock A { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -450px; TEXT-DECORATION: none } .contentBlock A.collapse { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -1045px; TEXT-DECORATION: none } .contentBlock A.collapse:hover { TEXT-DECORATION: underline } .contentBlock A.hover { TEXT-DECORATION: underline } TABLE.reorderCols { MARGIN: 18px 0px 9px; WIDTH: 100%; BORDER-COLLAPSE: collapse; CLEAR: both; FONT-SIZE: 95% } TABLE.reorderCols THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #ededed; BORDER-TOP: #ccc 1px solid; CURSOR: move; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } TABLE.reorderCols THEAD TR TH.noReorderCol { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; CURSOR: default; BORDER-RIGHT: medium none } TABLE.reorderCols TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed; COLOR: #555 } TABLE.reorderCols THEAD TH SPAN.reorderToolTip { BACKGROUND: url(images/controls.png) #ddd no-repeat -347px -122px } TABLE.reorderCols THEAD TR TH.axis { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed 0px 50%; COLOR: #555 } .ghostTd { BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; FONT: 10px arial; BACKGROUND: #eee; HEIGHT: auto; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 2px } TABLE.reorderCols THEAD TH.dragging { BACKGROUND: #ccc } TABLE.reorderCols THEAD TH.hovering { BACKGROUND: #666 } TABLE.reorderCols THEAD TH.hovering IMG { DISPLAY: none } .rumble { MARGIN: 0px 0px 9px; BACKGROUND: url(images/selected_items.png) no-repeat -1974px center } .rumble_top { MARGIN: 12px 0px 0px; BACKGROUND: url(images/selected_items.png) no-repeat 12px center } #mapCanvasForm .rumble_top { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble_top { BORDER-BOTTOM: #eee 2px solid } .noBatchActions { BACKGROUND-IMAGE: none !important; PADDING-BOTTOM: 5px !important; PADDING-LEFT: 5px !important; PADDING-RIGHT: 5px !important; PADDING-TOP: 5px !important } .rumbleBuildList { MARGIN: 0px 0px 0px 18px; BORDER-TOP: #eee 2px solid } .rumbleBuildList UL LI { Z-INDEX: 1000 } .rumbleBuildListTop UL LI { Z-INDEX: 1000 } .rumble_top UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble_top UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .rumble UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .contentListPlain .rumble LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentListPlain .rumble_top LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble_top LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .selectList .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble_top LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble LI.listActionGroup A { DISPLAY: inline } .rumble_top LI.listActionGroup A { DISPLAY: inline } .paging { TEXT-ALIGN: right; FLOAT: right; CLEAR: left } .pagingprefs { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN-TOP: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 3px } .paging SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BORDER-RIGHT: #ccc 1px dotted; PADDING-TOP: 1px } .rumble_top .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .rumble .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .jumptopage INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } .jumptopage INPUT { WIDTH: 2em; FONT-WEIGHT: normal; -moz-border-radius: 0; -webkit-border-radius: 0 } .rumble_top .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .inventory_paging A { DISPLAY: inline-block } .inventory_paging IMG { DISPLAY: inline-block } .inventory_paging SPAN { DISPLAY: inline-block } .inventory_paging DIV { DISPLAY: inline-block } .jumptopage DIV { DISPLAY: inline-block } .inventory_paging A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px } .inventory_paging IMG { MARGIN: 2px 2px 3px } .inventory_paging A.inactive { FILTER: alpha(opacity=40); opacity: .4 } A.jumpToPageOpen { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } A.jumpToPageOpen:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } DIV.jumptopage INPUT#currentpage_bot { WIDTH: auto } DIV.jumptopage INPUT#currentpage_top { WIDTH: auto } INPUT#currentpage_bot { WIDTH: auto } INPUT#currentpage_top { WIDTH: auto } .jumptopage { FLOAT: right } .jumptopage DIV { MARGIN: 0px 0px 0px 3px } .jumptopage BUTTON { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; TOP: -2px; RIGHT: 0px; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .jumptopage BUTTON IMG { MARGIN: 0px } .rumble_top .secondaryControl { FLOAT: right } .rumble .secondaryControl { FLOAT: right } .key-valueTable TR { BORDER-BOTTOM: medium none } .key-valueTable TH { BORDER-BOTTOM: medium none } .key-valueTable TD { BORDER-BOTTOM: medium none } .key-valueTable TBODY { BORDER-BOTTOM: medium none } .key-valueTable TBODY TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TH { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TR:first-child TH { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TR:first-child TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TH { COLOR: #555 } .infoListWrapper .key-valueTable { MARGIN: 3px 9px 6px } TD.removeCell { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A IMG { FILTER: alpha(opacity=30); opacity: .3 } .contentList { MARGIN: -20px -30px } .buildList { MARGIN: -20px -30px } .contentListPlain { MARGIN: -20px -30px } .announcementList { MARGIN: -20px -30px } #bb-assessment-canvas .contentListPlain { MARGIN: 0px -30px } .gradingList { MARGIN: 0px -30px } .buildList#survey { MARGIN: 0px -30px } #manageFormCanvasForm .buildList { MARGIN: 0px -30px } #mapCanvasForm .buildList { MARGIN: 0px 30px } .hierarchy-page #toolSettingsForm #dataCollectionContainer { MARGIN: -10px -30px } .leftColumn-wide .contentListPlain { MARGIN: 0px } .contentList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .buildList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentListPlain > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .announcementList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPageItem { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentList > LI.read:first-child:hover { BORDER-TOP: transparent 1px solid } .buildList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentListPlain > LI:first-child { BORDER-TOP: transparent 1px solid } .announcementList > LI:first-child { BORDER-TOP: transparent 1px solid } #bb-assessment-canvas .contentListPlain > LI:first-child { BORDER-TOP-COLOR: #ccc } #bb-assessment-canvas .contentListPlain > LI { MIN-HEIGHT: 16px; PADDING-LEFT: 42px } #bb-assessment-canvas .contentListPlain > LI .item { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-assessment-canvas .contentListPlain > LI .details { PADDING-BOTTOM: 5px; PADDING-TOP: 12px } .takeQuestionDiv { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='_'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='step'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer H3.submittitle.steptitle { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } .takeQuestionDiv H3 { MARGIN: 0px } .takeQuestionDiv + H3 { PADDING-LEFT: 28px } #assessmentGradeForm #dataCollectionContainer { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .contentList > LI { MIN-HEIGHT: 50px } .buildList > LI { MIN-HEIGHT: 50px } .contentListPlain > LI { MIN-HEIGHT: 50px } .announcementList > LI { MIN-HEIGHT: 50px } .contentPageItem { MIN-HEIGHT: 50px } .liItem:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList > LI:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList LI:first-child:hover { BORDER-TOP-COLOR: #666 } .contentList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .gradingList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .liItem A[onclick*='toggleDetails'] { POSITION: relative; VISIBILITY: hidden; TOP: -6px; RIGHT: -19px } .liItem:hover A[onclick*='toggleDetails'] { VISIBILITY: visible } .liItem A[onclick*='toggleDetails'] IMG { VISIBILITY: hidden } .liItem A[title*='Hide'] { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 0px 0px } .liItem A[title*='Show'] { BACKGROUND: url(images/portlet_expand_alt_rev.png) no-repeat 0px 0px } .contentListPlain .item_icon { DISPLAY: none } .item { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; CURSOR: move; PADDING-TOP: 0px } .contentList .item { PADDING-BOTTOM: 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .gradingList .item { PADDING-RIGHT: 120px } .announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .announcementList-read .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } #announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .item:hover { CURSOR: move } .item:focus { CURSOR: move } .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .announcementList-read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .contentList-slim .read .item { PADDING-LEFT: 48px } .read .item:hover { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .read .item:focus { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .tab-groups H3.item { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 8px; MARGIN: 0px 11em 8px -12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tab-groups H3.item .reorder + SPAN { FONT-STYLE: italic; MARGIN: 0px 4px 0px 0px; FONT-FAMILY: Georgia; COLOR: #999; FONT-SIZE: 90%; FONT-WEIGHT: normal } .item_icon { POSITION: absolute; MARGIN: 0px; TOP: 12px; LEFT: 24px } .read .item_icon { MARGIN: 0px; LEFT: 18px } .item H3 { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item .contextMenuContainer { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item H3 + .contextMenuContainer { POSITION: relative; TOP: 2px } .tab-groups .item .contextMenuContainer { FLOAT: none } .item INPUT[type=checkbox] { MARGIN: 2px 6px 0px -6px; FLOAT: left } .iconsOnly { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 24px auto; WIDTH: 80% } .iconsOnly LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 0px; FLOAT: left !important; PADDING-TOP: 0px } .iconsOnly > LI:first-child { BORDER-TOP-COLOR: #ccc } .iconsOnly .read { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconsOnly .item_icon { PADDING-BOTTOM: 0px; MIN-HEIGHT: 50px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 12px; LEFT: auto } .iconsOnly .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MIN-HEIGHT: 3em; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .iconsOnly .read .item { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .iconsOnly .item H3 { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly .item .contextMenuContainer { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly LI:hover .item_icon { BACKGROUND: #ededed } .iconsOnly LI:hover .item { BACKGROUND: #ededed } .iconsOnly LI:focus .item_icon { BACKGROUND: #ededed } .iconsOnly LI:focus .item { BACKGROUND: #ededed } .iconsOnly .read .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .read .item_icon { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read:hover .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:hover .item { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item { BACKGROUND: none transparent scroll repeat 0% 0% } .buildList LI INPUT { MARGIN: 2px 8px; FLOAT: left } .buildList INPUT.browse { MARGIN: 0px 0px 6px } .buildList INPUT.genericButton { MARGIN: 0px 0px 6px } .buildList INPUT[type=button] { MARGIN: 0px 0px 6px } .contentListRight { POSITION: absolute; RIGHT: 6px; FONT-WEIGHT: normal; LEFT: auto } .pagedContentListRight { TOP: 4px } .contentListRightOffset { MARGIN-RIGHT: 12em } .contentList .details { PADDING-LEFT: 60px } .contentListPlain .contentListRight + .details { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; PADDING-LEFT: 28px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } .announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } #announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } .contentList-slim .read .details { MARGIN-LEFT: 48px } .staffInfoList .details { MARGIN-RIGHT: 160px } .staffInfoList .hasPhoto .details { MIN-HEIGHT: 135px } .details > P { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .details .note { FONT-WEIGHT: bold } .details > P.important { PADDING-BOTTOM: 0px; MARGIN: 3px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .details > P.important SPAN { COLOR: #888; FONT-WEIGHT: normal } .itemDetails { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .itemDetails P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .announcementInfo P SPAN { COLOR: #999 } .announcementInfo SPAN { COLOR: #999 } .itemDetails SPAN { COLOR: #999 } .announcementInfo P SPAN SPAN { FONT-SIZE: 95% !important } .noItems { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } .additional + P .warnFont { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } #listContainer .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .additional + P .warnFont { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { TEXT-ALIGN: center; PADDING-TOP: 100px } .hierarchy-page .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { MARGIN: 0px auto; DISPLAY: block } .additional + P .warnFont { DISPLAY: block; PADDING-TOP: 100px } .details .attachments { WORD-WRAP: break-word; MARGIN-BOTTOM: 9px; WORD-BREAK: normal } .buildList > LI.separator { Z-INDEX: 0; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; MIN-HEIGHT: 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #ededed; TOP: 0px; PADDING-TOP: 14px; LEFT: 0px } .separator H3.item { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .external-breadcrumbs .receipt { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .separator .line { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: relative; MARGIN: 0px 24px 0px 30px; TOP: 6px; LEFT: 0px } .separator .text { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .external-breadcrumbs .receipt { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .buildList .detailList .hidden { DISPLAY: none } .buildList .detailList .tagContainer { POSITION: relative } .buildList .detailList .tagContainer .hidden { DISPLAY: none } .buildList .detailList .tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer .newTagForm { BORDER-LEFT: #999 1px dotted; MARGIN-LEFT: 6px } .tagContainer .newTagForm LABEL { PADDING-LEFT: 6px } .currentTags { Z-INDEX: 100; POSITION: absolute; LINE-HEIGHT: 1.8; WIDTH: 16em; ZOOM: 1; DISPLAY: none; OVERFLOW: hidden; TOP: 1.2em; RIGHT: 0px } .currentTags SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 18px } .currentTags A { FONT-WEIGHT: bold } .currentTags A.closeCloud { POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 1px; LINE-HEIGHT: 1; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; TOP: 0px; PADDING-TOP: 0px; LEFT: 0px } .auto_complete { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; WIDTH: 12em; BACKGROUND: #e2eefe; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid } .auto_complete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .auto_complete UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3%; WIDTH: 96%; PADDING-RIGHT: 1%; OVERFLOW: hidden; CURSOR: pointer; PADDING-TOP: 2px } .auto_complete UL LI.selected { BACKGROUND-COLOR: #fff } .auto_complete UL STRONG.highlight { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .freq1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 90%; PADDING-TOP: 0px } .freq2 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 105%; PADDING-TOP: 0px } .freq3 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 120%; PADDING-TOP: 0px } .freq4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 135%; PADDING-TOP: 0px } .freq5 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 150%; PADDING-TOP: 0px } .freq6 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 165%; PADDING-TOP: 0px } .freq1:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq2:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq3:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq4:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq5:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq6:hover { BACKGROUND: white; TEXT-DECORATION: none } .currentTags A.tagDisabled { FILTER: alpha(opacity=70); FONT-WEIGHT: normal; TEXT-DECORATION: none; opacity: .7 } .currentTags A.tagDisabled:hover { BACKGROUND: none transparent scroll repeat 0% 0% } .tab-groups .tab-group-label { FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #999 } .subList { MARGIN: 3px 0px 6px } .subList-reorder { MARGIN: 3px 0px 6px } .subList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .buildList .detailList { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .subList-reorder LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 6px } .subList-reorder LI:hover { BORDER-BOTTOM-COLOR: #bbb !important; BORDER-TOP-COLOR: #bbb !important; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #bbb !important; BORDER-LEFT-COLOR: #bbb !important } .subList LI A IMG { VERTICAL-ALIGN: middle } .subList-reorder LI A IMG { VERTICAL-ALIGN: middle } .subList LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList-reorder LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList LI P { VISIBILITY: hidden } .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .buildList .detailList LI .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder .itemDetails { DISPLAY: none } .subList-reorder .details { DISPLAY: none } .subList .details { DISPLAY: none } .itemDetails + .details { OVERFLOW: visible; MARGIN-RIGHT: 13em } .subList LI P SPAN { FONT-WEIGHT: bold } .subListArtifact { CLEAR: both } .detailList .subListArtifact { CLEAR: both } .subListArtifact LI { POSITION: static } .detailList .subListArtifact LI { POSITION: static } .detailList .subListArtifact { ZOOM: 1 } .detailList .subListArtifact LI { ZOOM: 1 } .detailList .subListArtifact LI A { ZOOM: 1 } .buildList .detailList { MARGIN: 0px 0px 0.6em 0.7em } .buildList .detailList .subList { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.buildList UL.detailList OL.subList { LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: decimal } UL.buildList UL.detailList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 0.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: table-row; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } UL.buildList UL.detailList LI SPAN { WIDTH: 135px; DISPLAY: block; FLOAT: left; FONT-WEIGHT: bold } UL.buildList UL LI > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; WIDTH: 79%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: 135px; PADDING-TOP: 0px } UL.buildList UL LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } UL.noimg LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } .buildList .pageBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } .buildList .sectionBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } DIV.itemHeaderControl { POSITION: absolute; TOP: 9px; RIGHT: 14.5em } DIV.itemHeaderControl A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.cartMode { PADDING-BOTTOM: 49px } .addedRow { COLOR: #999 } TABLE.sortable TBODY TR.addedRow TH LABEL A { COLOR: #999 } .addedRow TD A { COLOR: #999 } .addedRow { } .addedRow IMG { FILTER: alpha(opacity=50); opacity: .5 } TABLE#datatable2 TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 THEAD TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .itemSelector { MARGIN: 0px auto; WIDTH: 20px; HEIGHT: 20px } .itemSelector INPUT { FILTER: alpha(opacity=0); opacity: 0 } .available { BACKGROUND: url(../../../images/ci/ng/available_ti.png) no-repeat 0px 0px } .inprogress { BACKGROUND: url(../../../images/ci/ng/progress.png) red no-repeat 0px 0px } .remove { BACKGROUND: url(../../../images/ci/ng/remove_ti.png) no-repeat 0px 0px } .itemTray { Z-INDEX: 10000; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 18px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .picker .itemTray { RIGHT: 12px; LEFT: 12px } DIV.itemTrayContentPane { LEFT: 200px } DIV.itemTrayContentPaneWide { LEFT: 0px } .itemTray H2 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H3 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H2 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H3 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H2 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H3 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H2 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray H3 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray DIV.noItems { TEXT-ALIGN: center; COLOR: #777 } .itemTray #cartList { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .itemTray #selectedItemsWrapper { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #777; PADDING-TOP: 4px } .itemTray .cartTableWrapper { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; OVERFLOW-Y: auto; BACKGROUND: #fff; MAX-HEIGHT: 130px; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .sideTOC .cartTableWrapper { OVERFLOW: auto } #count { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .itemTray #numberOfElements { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #progress { Z-INDEX: 300; POSITION: absolute; MARGIN: 300px 50%; WIDTH: 100px; DISPLAY: none } #progress DIV { MARGIN-LEFT: -100% } #cartSubmit { Z-INDEX: 200 } #cartList FIELDSET { PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #f6f6f6; PADDING-TOP: 3px } #cartList FIELDSET UL LI INPUT[type=text] { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 2.3em; PADDING-RIGHT: 0px; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 0px } .itemGallery { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .itemGallery > LI { TEXT-ALIGN: center; MARGIN: 5px 5px 20px; WIDTH: 1.2em; ZOOM: 1; VERTICAL-ALIGN: top; PADDING-TOP: 0.06em; _height: 130px } .itemGallery .stackFix { WIDTH: 100%; HEIGHT: auto } .itemIconHolder { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px auto 0.05em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 1em; PADDING-TOP: 0px } .itemIconHolder A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; ZOOM: 1; DISPLAY: block; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .itemIconHolder A:hover { BORDER-BOTTOM-COLOR: #777; BORDER-TOP-COLOR: #777; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777 } .itemIconWrapper { BORDER-BOTTOM: #f1f1f1 0.02em solid; POSITION: absolute; BORDER-LEFT: #f1f1f1 0.02em solid; MARGIN: 0px 50%; WIDTH: auto; BOTTOM: 0px; BORDER-TOP: #f1f1f1 0.02em solid; BORDER-RIGHT: #f1f1f1 0.02em solid } .x-small LI { WIDTH: 1.8em; FONT-SIZE: 70px } .small LI { FONT-SIZE: 100px } .normal LI { FONT-SIZE: 140px } .large LI { FONT-SIZE: 180px } .x-large LI { FONT-SIZE: 220px } .u_resetFont-px { FONT-SIZE: 12px } .itemIconLink-vertical A { WIDTH: 0.78em; HEIGHT: 0.9em } .itemIconLink-square A { WIDTH: 0.78em; HEIGHT: 0.78em } .itemIconLink-horizontal A { WIDTH: 1em; HEIGHT: 0.78em } .itemIconLink-vertical IMG { WIDTH: 0.8em; HEIGHT: 0.9em; VERTICAL-ALIGN: top } .itemIconLink-square IMG { WIDTH: 0.8em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-horizontal IMG { WIDTH: 1em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-vertical .itemIconWrapper { LEFT: -0.39em } .itemIconLink-square .itemIconWrapper { LEFT: -0.39em } .itemIconLink-horizontal .itemIconWrapper { LEFT: -0.5em } .itemInfo { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-SIZE: 12px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.2em } .itemInfo LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; LINE-HEIGHT: 1.25em; MARGIN: 0px; WIDTH: 100%; FONT-SIZE: 95%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .itemInfo LI SPAN { VERTICAL-ALIGN: top } .itemInfo LI .label { TEXT-ALIGN: right } .itemInfo .cmimg { WIDTH: 18px } .itemInfo .cmimg IMG { WIDTH: 18px } .itemInfo .title { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .itemInfo INPUT[type='text'] { WIDTH: 100% } .itemInfo .high { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; BACKGROUND: #fff1c5; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .lb-content .itemInfo { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 3px } .lb-content .itemInfo LI { LINE-HEIGHT: 1.45em } .lb-content .itemInfo .title { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .iconGallery > LI { MARGIN: 5px 5px 12px; WIDTH: 75px } .iconGallery .itemIconHolder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; HEIGHT: 60px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemIconHolder A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemTitle { COLOR: #666; FONT-SIZE: 85% } .iconGallery .itemIconWrapper { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: auto; PADDING-RIGHT: 4px; BACKGROUND: #fff; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px; LEFT: -30px } .sideTOC_panelMin .container { POSITION: static !important } .sideTOC_panel .container { POSITION: static !important } .sideTOC_panelMax .container { POSITION: static !important } .tocWrapper { Z-INDEX: 200; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 0px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .tocHidden { TOP: -10000px !important } .tocHead { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #333; PADDING-TOP: 10px } .tocHead H2 { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .tocActions { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .sideTOC H2 { FLOAT: none !important; FONT-SIZE: 110%; text-shadow: 0 1px 0 #f0f0f0 } .tocActions { WHITE-SPACE: nowrap } .tocActions A { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions SPAN { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions > IMG { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .actionBar .tocNavText { PADDING-BOTTOM: 13px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; COLOR: #eee; PADDING-TOP: 13px } .actionBar .tocNavText + A { MARGIN-RIGHT: 12px } .actionBar .tocNavText + IMG { MARGIN-RIGHT: 12px } .tocActions SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .tocTreeWrapper { PADDING-BOTTOM: 0px; OVERFLOW-Y: auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .sideTOC .tocTreeWrapper { OVERFLOW: auto } UL#tocTree LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL#tocTree A.itemActive { FONT-WEIGHT: bold; TEXT-DECORATION: none } UL#tocTree SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; COLOR: #555; PADDING-TOP: 0px } .treeNodeIcon { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .sideTOC { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 200px; BOTTOM: auto; PADDING-RIGHT: 0px; BACKGROUND: #ddd; BORDER-TOP: #aaa 1px solid; TOP: 0px; RIGHT: auto; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -2px 0 2px rgba(0, 0, 0, .2) inset, 0px 3px 2px #ddd inset, 0px -3px 2px #ddd inset; -webkit-box-shadow: none; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: none } .sideTOCMinimize { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 9px !important; BOTTOM: auto; PADDING-RIGHT: 0px; BORDER-TOP: medium none; TOP: 0px; RIGHT: auto; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } .sideTOCMinimize .tocActions { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 1px; LEFT: -24px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .sideTOCMinimize .tocActions A { MARGIN: -1px 0px 0px; DISPLAY: block } .tocBottom_pullExpanded { LEFT: 228px } .tocBottom_pullCollapsed { LEFT: 18px } .tocSide_pullExpanded { TOP: 4px; LEFT: 222px } .tocSide_pullCollapsed { LEFT: 13px } .sideTOC_panel { PADDING-LEFT: 201px } .sideTOC_panelMin { PADDING-LEFT: 21px } .sideTOC_panelMax { PADDING-LEFT: 351px } .tocBottom_min { PADDING-BOTTOM: 30px } .tocBottom_max { PADDING-BOTTOM: 330px } .tocBottom_open { PADDING-BOTTOM: 160px } .tocBottom_open .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_max .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_min .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panel .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMax .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMin .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .localViewToggle { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .localViewToggle UL { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .localViewToggle UL LI { FLOAT: right } .localViewToggle UL LI.active { POSITION: relative } .localViewToggle A { PADDING-BOTTOM: 7px; TEXT-TRANSFORM: inherit; MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; DISPLAY: block; FONT-SIZE: 90%; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .localViewToggle A:hover { TEXT-DECORATION: underline } .localViewToggle .active A:hover { TEXT-DECORATION: none } .localViewToggle A.active { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } DIV.localViewToggle H2 { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } .localViewToggle A.active:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } DIV.localViewToggle H2:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .localViewToggle .separator { BORDER-LEFT: #d7bb66 1px dotted; PADDING-LEFT: 6px; MARGIN-LEFT: 6px } .localViewToggle A.miniComboButton { BORDER-BOTTOM: #d7bb66 1px solid; BORDER-LEFT: #d7bb66 1px solid; PADDING-RIGHT: 16px; BACKGROUND: url(images/controls.png) #f5e7bd no-repeat -1px -500px; COLOR: #444; BORDER-TOP: #d7bb66 1px solid; BORDER-RIGHT: #d7bb66 1px solid; TEXT-DECORATION: none !important } .containerTabs { MARGIN: 6px 24px 0px; FONT-SIZE: 100% } .containerTabs LI { POSITION: relative; FLOAT: left } .containerTabs LI A { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI H3 { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs LI H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs .active A { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:hover { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:focus { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active H3 { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .active H3:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .tabhead H3 { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 18px; COLOR: #555; PADDING-TOP: 9px } .collapseTabs .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #d1eaef } .collapseTabs .containerTabs .active A:before { CONTENT: none } .portlet .containerTabs { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 8px } .portlet .containerTabs LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .containerTabs LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } .portlet .containerTabs .active A { MARGIN: 0px } .collapseTabs .containerTabs { MARGIN: 0px } .portlet .containerTabs .active A:before { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:after { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:before { BORDER-BOTTOM-COLOR: #ddd } .portlet .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #fff4bf; BOTTOM: -1px } .mapTabs { POSITION: relative; MARGIN: 20px -30px 0px; BACKGROUND: #d1eaef; CLEAR: both; BORDER-TOP: #aaa 1px solid; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .lesson-plan-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { BORDER-BOTTOM: #bbb 1px solid } .evidence-page .mapTabs LI:before { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:after { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:before { Z-INDEX: 100; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #bbb 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 1px } .evidence-page .mapTabs LI.active + LI:after { BORDER-LEFT-COLOR: #eaeaea } .evidence-page .mapTabs LI:first-child:before { DISPLAY: none } .evidence-page .mapTabs LI:first-child:after { DISPLAY: none } .evidence-page .mapTabs LI A { PADDING-LEFT: 30px } .evidence-page .mapTabs LI.active H3 { PADDING-LEFT: 30px } .mapTabs UL { MARGIN-TOP: 0px; MARGIN-LEFT: 0px } DIV.mapTabs UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mapTabs UL LI.active H3 { POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; BACKGROUND: #eaeaea; FONT-SIZE: 100%; PADDING-TOP: 14px } .mapTabs UL LI.active H3:before { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #eaeaea; BOTTOM: -1px } .mapTabs UL LI.active:first-child H3:after { MARGIN-LEFT: 0px } .mapTabs UL LI.active:first-child H3:before { MARGIN-LEFT: 0px } .lesson-plan-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .hierarchy-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .lesson-plan-page .mapTabs UL LI.active H3:before { DISPLAY: none } .hierarchy-page .mapTabs UL LI.active H3:before { DISPLAY: none } .evidence-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #fff } .mapTabs UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; COLOR: #01869e; FONT-SIZE: 100%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .mapTabs UL LI A:hover { TEXT-DECORATION: underline } .mapTabs UL LI SPAN:hover { BORDER-BOTTOM-STYLE: solid } .mapTabs A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs LI:first-child A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 54px; BACKGROUND-POSITION: 30px 50% } .mapTabs UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI:first-child H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI DIV { PADDING-BOTTOM: 7px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: none; PADDING-TOP: 7px } .mapTabs UL LI.saveTab A { DISPLAY: none } UL.containerTabs LI.saveTab IMG { DISPLAY: none } .mapTabs UL LI.saveFadeIn { FILTER: alpha(opacity=0); opacity: 0 } .mapTabs UL LI.saveTab DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/tab_receipt_back.gif) #44b10e repeat-x center bottom; COLOR: white; FONT-WEIGHT: bold; PADDING-TOP: 5px } DIV.mapHelp { PADDING-BOTTOM: 0px; MARGIN: -1px 0px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff1c5; PADDING-TOP: 4px } UL.setStatus { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 3px; LIST-STYLE-TYPE: none; MARGIN: 15px 0px 9px 30px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #eee 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 3px } UL.setStatus LI { MARGIN: 0px 6px 0px 0px; FONT-SIZE: 95% } UL.setStatus LI INPUT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.setStatus LI LABEL { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 1px 0px } UL.setStatus LI LABEL.complete { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_complete.gif) no-repeat 1px 0px } FORM.mapCanvasForm DIV.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } FORM.mapCanvasForm H3.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } .mapTabs .containerTabs { BORDER-BOTTOM: 0px } #mapCanvasForm { MARGIN: 0px -30px } #mapCanvasForm #containerDiv { MARGIN: 20px 0px } .evidence-page .infoListWrapper H3 A.itemHead { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .infoListWrapper H3 A.itemHeadOpen { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .leftColumn-narrow { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f9f9f9; MARGIN: 0px; PADDING-LEFT: 6px; WIDTH: 26%; PADDING-RIGHT: 6px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; border-radius: 3px 3px 3px 3px } .evidence-page .leftColumn-wide { WIDTH: 69% } .sessionBox { WIDTH: 95% } .sessionBox .key-valueTable { } .sessionBox .key-valueTable TBODY TD { PADDING-RIGHT: 40px } .sessionBox .key-valueTable TBODY TH { PADDING-RIGHT: 40px } .evidence-page .criteriaSummary { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; MARGIN: 0px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 12px } .evidence-page .paletteItems LI { MARGIN-LEFT: 0px } .paneTabs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: -12px 0px 12px; ZOOM: 1; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .subtabs-framed .paneTabs { -moz-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -webkit-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; border-radius: 0 } .paneTabs UL { CLEAR: both } .paneTabs UL LI { Z-INDEX: 200; POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs .active { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs A { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 12px } .paneTabs UL LI:first-child A { BORDER-LEFT: 0px } .paneTabs A:hover { TEXT-DECORATION: underline } .paneTabs .active A:hover { TEXT-DECORATION: none } .paneTabs .active A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:focus { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active H3 { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:after { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #ccc 8px solid; BOTTOM: 0px } .paneTabs .active A:after { BOTTOM: -1px } .paneTabs .activepersonal A { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .activepersonal A:hover { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .personal A { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dedede; TEXT-DECORATION: none; PADDING-TOP: 3px } .paneTabs .external A { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #dedede no-repeat 2px center } .paneTabs .external A:hover { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #fff1c5 no-repeat 2px center } .paneTabs .activepersonal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs .personal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs A.paneTabOptions { DISPLAY: none } .paneTabs .activepersonal:hover A.paneTabOptions { FILTER: alpha(opacity=100); opacity: 1 } .paneTabs A.hiddenTabsLink { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center 6px } .paneTabs A.hiddenTabsLink IMG { FILTER: alpha(opacity=0); WIDTH: 2px; HEIGHT: 2px; opacity: 0 } .panelTabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .panelTabs LI { BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FLOAT: right; TOP: 2px !important; RIGHT: -3px; PADDING-TOP: 0px !important } .panelTabs LI.active { Z-INDEX: 2 } .panelTabs LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI.active A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI A:hover { BACKGROUND-COLOR: #f6f6f6 } .panelTabs LI.active A { BORDER-BOTTOM: 0px; COLOR: #333; FONT-WEIGHT: bold } .panelTabs LI.active A.preview { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 2px solid; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .panelTabs LI.active A.edit { BORDER-BOTTOM: 0px; MARGIN: 0px } .collapseTabs { MARGIN-BOTTOM: 12px } .collapseTabsData { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; BACKGROUND: #d1eaef; PADDING-TOP: 12px; -moz-border-radius: 3px } .containerTabsCollapsed { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .collapseTabs LI A { TEXT-DECORATION: underline } .collapseTabs LI.active { Z-INDEX: 1000 } .sequenceMapHead { MARGIN: 6px 0px } .sequenceMapHead H3 { MARGIN: 12px 0px 6px } .sequenceMapHead P { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 0px } DIV.sequenceMapHead DIV.actionBar { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #fff7de; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.searchResultList-sortOptions { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: right; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; MIN-HEIGHT: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 15px; PADDING-TOP: 10px } DIV.searchResultList-sortOptionsCount { WIDTH: auto; FLOAT: left } DIV.dropzone { BORDER-BOTTOM: #aaa 2px dashed; BORDER-LEFT: #aaa 2px dashed; BORDER-TOP: #aaa 2px dashed; BORDER-RIGHT: #aaa 2px dashed; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -moz-border-radius: 3px; -webkit-border-radius: 3px } .container DIV.dropzone { TOP: 3px !important } .modalOverlay { Z-INDEX: 90; POSITION: fixed; FILTER: alpha(opacity=1); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .01 } .cmdiv { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .menumini { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.quickAddPal { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.keyboardAccess { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .nav .sub UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .gb_currView.nav .sub > UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .menumini UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .keyboardAccess { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } SPAN.currentTags { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea-slim { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .previewArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .jumptopage { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .bcContent .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI IMG + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } DIV.treeContainer UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #learningUnitToc UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #loginLang UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .actionBar .mainButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .secondaryButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBarMicro .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton:first-child .flyout { MARGIN: 0px 0px 0px -2px } DIV.calPicker.quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI IMG + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } DIV.treeContainer UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } #learningUnitToc UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.nestedList { -moz-box-shadow: none; -webkit-box-shadow: none } .liveArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } .previewArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } #addFolderForm { MARGIN: 0px -30px } UL.tree LI A + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI IMG + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } DIV.treeContainer UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #learningUnitToc UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .builderItem .liveArea { Z-INDEX: 100; POSITION: absolute; TOP: 12px; LEFT: 22px } .previewArea { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; MARGIN-TOP: 0px; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .jumptopage { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 8px } .jumptopage LABEL { FONT-SIZE: 90% } .liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.secondaryButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { OVERFLOW: hidden } .actionBar UL LI.secondaryButton A.liveAreaTab { OVERFLOW: hidden } .liveArea-slim { PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 3px } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .columnActions .nav .sub UL { MARGIN-TOP: 0px } .nav .sub UL { POSITION: absolute; DISPLAY: none } .nav .sub .flyout { POSITION: absolute; DISPLAY: none } .nav .sub UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .nav .sub UL UL { DISPLAY: block } .nav .sub .flyout UL { DISPLAY: block } .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .nav .sub:hover .flyout { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { TOP: 18px } .rumble_top .nav .sub:hover UL { TOP: 18px } .rumble .nav .sub:hover UL { TOP: 18px } .quickAddPal { WIDTH: auto } .quickAddColor { WIDTH: 311px } .quickAddColor A.genericButton { MARGIN: 2px 0px; FLOAT: left } .cmdiv { Z-INDEX: 1150 !important; BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .cmdiv UL { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; WIDTH: 180px; PADDING-RIGHT: 4px; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 3px } .cmdiv UL:first-child { BORDER-TOP: medium none } .menumini UL:first-child { BORDER-TOP: medium none } .cmdiv UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .menumini UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .nav .sub UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .menumini A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } #loginLang UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: auto; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .nav .sub UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .nav LI.sub UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .actionBarMicro .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .actionBarMicro .nav LI.sub UL LI A:focus { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:focus { BACKGROUND-IMAGE: none } .nav LI.sub UL LI A:focus { BACKGROUND-COLOR: #fff !important } .cmdiv A:focus { BACKGROUND-COLOR: #fff !important } .menumini A:focus { BACKGROUND-COLOR: #fff !important } .nav .sub UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .paneTabs .nav .sub UL LI A { TEXT-ALIGN: left } .timediv UL LI A:hover { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { BACKGROUND-COLOR: #369; COLOR: #444 } .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; LEFT: 0px } .topTabs-compact .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; RIGHT: 0px; LEFT: auto } .cmdiv LI.contextmenubar_top { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .menumini LI.contextmenubar { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-border-radius: 0; -webkit-border-radius: 0 } .quickAddPal H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .keyboardAccess H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .quickAddPalHeader { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .comText .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .e_expandArea .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess P.paletteHelp { BORDER-BOTTOM: #fc0 1px solid; BORDER-LEFT: #fc0 1px solid; PADDING-BOTTOM: 3px; MARGIN: 6px 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; WHITE-SPACE: normal; BACKGROUND: #fff1c5; FONT-SIZE: 90%; BORDER-TOP: #fc0 1px solid; BORDER-RIGHT: #fc0 1px solid; PADDING-TOP: 3px } .bcMenuDiv-1 { WIDTH: 190px } .bcMenuDiv-2 { WIDTH: 380px } .bcMenuDiv-3 { WIDTH: 570px } .bcMenuDiv-4 { WIDTH: 760px } .bcMenuDiv-5 { WIDTH: 950px } .flyout { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 12px !important; PADDING-RIGHT: 12px !important; PADDING-TOP: 9px !important } .nav .sub .flyout DIV { POSITION: static; PADDING-BOTTOM: 6px; MARGIN: 0px; MIN-HEIGHT: 1px; FLOAT: left } .flyout H3 { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 95% Georgia, serif; LETTER-SPACING: 2px; PADDING-TOP: 0px } .flyout H3 .line { HEIGHT: 1px; BORDER-TOP: #ccc 1px solid } .flyout H3 .text { BACKGROUND: #d1eaef } .nav .sub .flyout UL { Z-INDEX: 1000; BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted; BORDER-RIGHT: 0px; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .nav .sub .flyout DIV H3 + UL { BORDER-TOP: 0px } .nav .sub .flyout DIV UL:first-child { BORDER-TOP: 0px } .nav .sub .flyout A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .quickAddPal .colorlist { MARGIN: 6px 0px 9px 6px; WIDTH: 288px } .quickAddPal .stepcontent .colorlist LI { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 14px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 14px; OVERFLOW: hidden; BORDER-TOP: #333 1px solid; CURSOR: pointer; BORDER-RIGHT: #333 1px solid; PADDING-TOP: 0px } .quickAddPal .colorlist LI A { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:link { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: 12px; HEIGHT: 12px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .quickAddPal .colorlist LI A:active { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A:focus { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:active { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:focus { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorPreview { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: white; PADDING-TOP: 3px } .quickAddPal .colorPreview IMG { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #444 1px solid; MARGIN: 3px; WIDTH: 42px; DISPLAY: block; BACKGROUND: black; FLOAT: left; HEIGHT: 42px; BORDER-TOP: #444 1px solid; BORDER-RIGHT: #444 1px solid } .quickAddPal .colorPreview DIV { WIDTH: 66%; FLOAT: left; MARGIN-LEFT: 3px } .quickAddPal .colorPreview SPAN { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 0px } SPAN.title_color_name { COLOR: #666 } .receipt { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .warning { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .inlineDialog { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .contentPaneWide.tabbedPane .receipt { Z-INDEX: 201; BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; PADDING-BOTTOM: 12px; MARGIN: -12px 0px 10px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .contentPane .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .contentPaneWide .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .container .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px; box-shadow: none } .receipt ~ #editmodeWrapper { Z-INDEX: 1; POSITION: relative } .receipt ~ .contentBox { Z-INDEX: 1; POSITION: relative } .sideTOC_panel .receipt ~ #editmodeWrapper { POSITION: static } .sideTOC_panel .receipt { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .tabbedPane .receipt A.close IMG { DISPLAY: none } .contentPane .receipt A.close IMG { DISPLAY: none } .contentPaneWide .receipt A.close IMG { DISPLAY: none } A.closeCopyright IMG { DISPLAY: none } .tabbedPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPaneWide .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .receipt A.close:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { } .receipt A.close:hover:before { COLOR: #fff } A.closeCopyright:hover:before { COLOR: #fff } .inlineDialog { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .inlineReceipt { POSITION: absolute; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .miniReceipt { Z-INDEX: 300; BORDER-BOTTOM: #bbb 1px solid; POSITION: absolute; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .bad { COLOR: #fff; FONT-WEIGHT: bold } .good { COLOR: #fff; FONT-WEIGHT: bold } .removing { COLOR: #fff; FONT-WEIGHT: bold } .adding { COLOR: #fff; FONT-WEIGHT: bold } .infoReceipt { COLOR: #fff; FONT-WEIGHT: bold } .brokenFileLink { COLOR: #fff; FONT-WEIGHT: bold } .portlet SPAN.warning.due { COLOR: #fff; FONT-WEIGHT: bold } .good A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .removing { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .brokenFileLink { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .portlet SPAN.warning.due { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .container .warningReceipt { PADDING-RIGHT: 24px } .warningReceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.areceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.close:before { } .contentPane .warningReceipt A.close { TOP: 5px; RIGHT: 5px } .warningReceipt A.close:hover:before { } .good { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .adding { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .infoReceipt { BORDER-BOTTOM-COLOR: #62758f; BORDER-TOP-COLOR: #62758f; BACKGROUND: #6d8aaf; BORDER-RIGHT-COLOR: #62758f; BORDER-LEFT-COLOR: #62758f } .attention { BORDER-BOTTOM-COLOR: #fc3; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #fc3; MARGIN: 0px 0px 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff4bf; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; BORDER-LEFT-WIDTH: 2px; FONT-WEIGHT: normal; PADDING-TOP: 4px } .removing { FONT-WEIGHT: normal } .adding { FONT-WEIGHT: normal } .brokenFileLink { FONT-WEIGHT: normal } .portlet SPAN.warning.due { FONT-WEIGHT: normal } .brokenFileLink { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet SPAN.warning.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .infoBox { BORDER-BOTTOM: #afdf61 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #afdf61 1px solid; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #afdf61 1px solid; BORDER-RIGHT: #afdf61 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .infoBox > .message { DISPLAY: block; MARGIN-BOTTOM: 4px } .info-ok { BORDER-BOTTOM-COLOR: #afdf61; BORDER-TOP-COLOR: #afdf61; BACKGROUND: #d9efa4; COLOR: #360; BORDER-RIGHT-COLOR: #afdf61; BORDER-LEFT-COLOR: #afdf61 } .nestedReceipt { Z-INDEX: 1001; PADDING-BOTTOM: 12px !important; MARGIN: 0px 20% 6px 0px; PADDING-LEFT: 12px !important; PADDING-RIGHT: 30px !important; PADDING-TOP: 6px !important } [id*='receipt_nested'].receipt { PADDING-RIGHT: 28px } .columnMsgWrapper { MARGIN-LEFT: 60% } .columnMsgWrapper .column-2 { MIN-HEIGHT: 1px } .smsIssue { POSITION: relative; MARGIN: 3px 3px 9px } .t2vIssue { POSITION: relative; MARGIN: 3px 3px 9px } .bubbleStem-bottom-center { BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: transparent 10px solid; WIDTH: 0px; BOTTOM: -12px; HEIGHT: 0px; MARGIN-LEFT: -8px; BORDER-TOP: #fc3 12px solid; BORDER-RIGHT: transparent 10px solid; LEFT: 50% } .nextStepsReceipt { BACKGROUND-IMAGE: url(images/reorder_bg.png); POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4; BACKGROUND-COLOR: #eee; MARGIN: 10px -30px -20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #545454; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3) } .nextStepsText { PADDING-BOTTOM: 18px; MARGIN: 0px 0px 0px 20px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fefefe; PADDING-TOP: 18px } .nextStepsText H5 { MIN-WIDTH: 6em; LINE-HEIGHT: 2em; DISPLAY: inline-block; COLOR: #545454; text-shadow: 1px 1px 1px #fff } .receiptCollapsed { POSITION: relative; FONT-SIZE: 90% } .external-breadcrumbs .receipt { BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; BORDER-TOP: 0px; TOP: -9px; BORDER-RIGHT: 0px; box-shadow: none } .stepcontent LI.fieldError { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; BACKGROUND: #fff1c5; PADDING-TOP: 2px } .stepcontent LI.fieldError .fieldErrorText { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { DISPLAY: inline; MARGIN-LEFT: 0px } .criteriaSummary { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px -28px 0px 0px; PADDING-LEFT: 12px; BACKGROUND: #f9f9f9 } #bb-question-discover H2 { FONT-SIZE: 110% } #filterContainer H2 { MARGIN-LEFT: 14px } #filterContainer .columnActions { MARGIN-LEFT: 14px } .criteriaSummary H3 { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .criteriaSummary .hidden { DISPLAY: none; VISIBILITY: hidden } .criteriaSummary UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .criteriaSummary UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FLOAT: left; FONT-SIZE: 90%; PADDING-TOP: 3px; border-radius: 12px } .criteriaSummary UL LI:first-child { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG { MARGIN: 0px; DISPLAY: block; FLOAT: left; COLOR: #aaa; FONT-WEIGHT: normal } .receipt-highlight { BACKGROUND: #fff4bf; box-shadow: 0 0 4px #fff } .receipt-default { BACKGROUND: none transparent scroll repeat 0% 0%; box-shadow: none } .criteriaSummary UL LI STRONG:before { POSITION: relative; LINE-HEIGHT: 1; COLOR: #aaa; FONT-SIZE: 120%; CONTENT: "+"; FONT-WEIGHT: bold; LEFT: -2px } .criteriaSummary UL LI SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI A { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI SPAN { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG + SPAN { MARGIN-LEFT: 3px } .criteriaSummary UL LI A { PADDING-RIGHT: 18px; BACKGROUND: url(../../../images/ci/icons/delete_li.gif) #eee no-repeat 96% 2px; TEXT-DECORATION: none } .search-element { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 18px; PADDING-LEFT: 9px; PADDING-RIGHT: 3px; BACKGROUND: #f9f9f9; PADDING-TOP: 18px } .search-element H2 { LINE-HEIGHT: 1; MARGIN: 0px; WIDTH: 0px; DISPLAY: inline-block; HEIGHT: 22px; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; OVERFLOW: hidden; FONT-WEIGHT: normal } .search-element H2:before { POSITION: relative; MARGIN: 0px 3px 6px 0px; FONT: 17px/1 "Utilicons"; COLOR: #aaa; VERTICAL-ALIGN: middle; CONTENT: "F"; TOP: 2px } .search-element INPUT[type='text'] { WIDTH: 60%; -moz-appearance: searchfield; -webkit-appearance: searchfield } .calPicker { Z-INDEX: 1500 !important } .calPicker .calHead { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .calPicker H3 { BORDER-BOTTOM: medium none; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 40px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .calPicker .previous { POSITION: absolute; TOP: 2px; LEFT: 2px } .calPicker .next { POSITION: absolute; TOP: 2px; RIGHT: 2px } .calPicker DIV.calFoot { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; CLEAR: both; PADDING-TOP: 6px } .calPicker A.contextmenubar { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .calPicker A.contextmenubar:hover { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .timediv { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .timediv UL { WIDTH: 8em; HEIGHT: 200px; OVERFLOW: auto } .timediv UL LI.contextmenubar_top { WIDTH: 114px; TOP: -18px } .timediv UL LI A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .csPicker { MIN-WIDTH: 300px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 12px; FONT-SIZE: 95%; PADDING-TOP: 0px } .csPicker .actionBar { FONT-SIZE: 110% } .csPicker .localViewToggle { FONT-SIZE: 110% } .csPicker .contentPaneWide { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .breadcrumbs { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .itemTray { Z-INDEX: 1000 } .csPicker .itemTray .taskbuttondiv { MARGIN: 0px; FONT-SIZE: 105% } .csPicker .itemTray H3 { FONT-SIZE: 115% } .csPicker #titleicon + H1 { MARGIN-TOP: 2px } .csPicker .itemTray #numberOfElements { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.lb-overlay { Z-INDEX: 1001; POSITION: fixed; BACKGROUND-COLOR: #000; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px } DIV.lb-wrapper { Z-INDEX: 1002; POSITION: fixed; OVERFLOW: hidden } DIV.lb-wrapper DIV.lb-header { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #dedede; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } DIV.lb-wrapper DIV.lb-header H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 15px; HEIGHT: 1.23em; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-header A { POSITION: absolute; DISPLAY: block; TOP: 10px; RIGHT: 10px } DIV.lb-wrapper DIV.lb-header A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; VERTICAL-ALIGN: top; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.lb-wrapper DIV.lb-content { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: auto; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-content DIV.lb-loading { BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) no-repeat center center } DIV.lb-wrapper DIV.topRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #lightbox DIV.bottomRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } DIV.lb-wrapper DIV.topRound B { DISPLAY: block; OVERFLOW: hidden } #lightbox DIV.bottomRound B { DISPLAY: block; OVERFLOW: hidden } DIV.lb-wrapper DIV.topRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } #lightbox DIV.bottomRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } #lightbox DIV.bottomRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightbox DIV.bottomRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightboxWrapper { Z-INDEX: 1001; POSITION: absolute; TOP: 0px; RIGHT: 0px; LEFT: 0px } #lightboxWrapper-inner { Z-INDEX: 1002; POSITION: relative; TEXT-ALIGN: center; WIDTH: 100%; TOP: 0px; LEFT: 0px } #lightbox { Z-INDEX: 1003; POSITION: relative; TEXT-ALIGN: left; MARGIN: 40px 0px 0px; DISPLAY: block; TOP: auto; LEFT: auto } .my-places-popup #lightbox { MARGIN: 0px } .my-places-popup #lightboxWrapper { POSITION: relative } #lightbox #lightboxContent { BORDER-BOTTOM: #333 2px solid; POSITION: relative; BORDER-LEFT: #333 2px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff !important; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP: #333 2px solid; BORDER-RIGHT: #333 2px solid; PADDING-TOP: 1px; -moz-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -moz-border-radius: 5px; -webkit-border-radius: 5px } .my-places-popup #lightbox #lightboxContent { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .lb-container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lb-content .container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lbAction { Z-INDEX: 1005; POSITION: absolute; TOP: 9px; RIGHT: 9px } #overlay { Z-INDEX: 1000; POSITION: fixed; FILTER: alpha(opacity=30); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .30 } .done#lightbox #lbLoadMessage { DISPLAY: none } .done#lightbox #lbContent { DISPLAY: block } .loading#lightbox #lbContent { DISPLAY: none } .loading#lightbox #lbLoadMessage { DISPLAY: block } .myPlacesContent { PADDING-BOTTOM: 16px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; HEIGHT: auto !important; MAX-HEIGHT: 500px !important; FONT-SIZE: 95%; OVERFLOW: auto; PADDING-TOP: 16px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .avatar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .myavatar { MARGIN-BOTTOM: 12px; MAX-HEIGHT: 150px; OVERFLOW: hidden } #lightbox .tallPara { PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 14px } #lightbox UL { MARGIN: 4px 0px 12px } #lightbox UL LI { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } #lightbox UL LI A:hover { TEXT-DECORATION: underline } DIV.lbContainer P.taskButtonsContent { MARGIN: 12px 0px 6px } .toBeRemoved { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .toBeRemoved > TD { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .unsavedItem { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD:first-child { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD { BACKGROUND-IMAGE: none } A.selectedItem { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } A.selectedItem:focus { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } TR.inEditMode-row { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TR.inEditMode-row TD { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 6px !important } #dataCollectionContainer { MARGIN: -20px -30px 0px } .popup #dataCollectionContainer { MARGIN: -12px -20px } DIV#dataCollectionContainer DIV.contentBlock { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-question-discover .inventoryListContainerDiv { PADDING-LEFT: 12px } .picker .inventoryListContainerDiv { PADDING-LEFT: 12px } .blogContainer .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV[id*='step'] { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } .submittitle { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #infoStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #taskStatusStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #linkedContentStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } DIV[id*='stepcontent'] { PADDING-BOTTOM: 0px; PADDING-LEFT: 48px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-TOP: 0px } .steptitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { PADDING-BOTTOM: 18px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .steptitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { MARGIN-RIGHT: 3px } #toolSettingsForm .steptitle SPAN { DISPLAY: none } #toolSettingsForm .stepcontent { PADDING-LEFT: 20px } #toolSettingsForm .steptitle { PADDING-LEFT: 9px } #toolSettingsForm .submittitle.steptitle { PADDING-LEFT: 27px } H3.noNumber { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 4px } .stepcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .stepcontent LI { PADDING-BOTTOM: 6px; MARGIN-BOTTOM: 6px } .stepcontent LI LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .stepcontent LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .stepcontent .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepcontent .stepHelp:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .stepcontent .fieldHelp { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 2px } A.browse + .fieldHelp { PADDING-TOP: 9px } .stepcontent .nonHelp { COLOR: #000; FONT-SIZE: 95% } .stepcontent .nestedList LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .nestedListSmall LI { FONT-SIZE: 90% } .nestedSubList { MARGIN: 6px 6px 6px 30px } .stepLite { PADDING-BOTTOM: 12px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 6px } .columnStep .column-3 { MIN-HEIGHT: 200px } .columnStep .column-3 TABLE.attachments { FONT-SIZE: 90% } .columnStep DIV H3 { MARGIN: 6px } .columnStep DIV DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } OL.nestedList LI DIV.imgLabel { WIDTH: auto } OL.nestedList LI DIV.imgLabel SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } OL.nestedList LI DIV.imgLabel SPAN.control { DISPLAY: inline } #title_color_value { PADDING-TOP: 6px } DIV.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.gb_gridCell_inner H3.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.field { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { WIDTH: 100% } DIV.label SPAN.contextMenuContainer { DISPLAY: inline } DIV.noLabelField BR { DISPLAY: none } SPAN.stepHelp BR { DISPLAY: block } SPAN.fieldHelp BR { DISPLAY: block } DIV.field OL P { PADDING-BOTTOM: 3px } DIV.noLabelField UL P { PADDING-BOTTOM: 3px } DIV.field EM { MARGIN-TOP: 5px; DISPLAY: inline-block; FONT: italic 100% Georgia, serif; COLOR: #888 } FIELDSET.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } DIV.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } FIELDSET.info DIV.label { COLOR: #666 } .reqfield { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 40px; PADDING-RIGHT: 0px; FONT: italic 105% Georgia, serif; FLOAT: left; COLOR: #777; PADDING-TOP: 24px } .reqfield:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .required > .label > LABEL:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .reqfield IMG { DISPLAY: none } .required > .label > LABEL IMG { DISPLAY: none } .requiredField { PADDING-BOTTOM: 6px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(../../../images/ci/icons/required.gif) no-repeat 0px center; PADDING-TOP: 6px } DIV.label IMG.indicator { POSITION: absolute; TOP: 0px; LEFT: -18px } .largeText DIV.label { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText DIV.field { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 75% !important; FONT-WEIGHT: normal } .field A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 95% } DIV.editBlock { FLOAT: left; MARGIN-RIGHT: 12px } .largeText DIV.field DIV.editBlock LABEL { FONT-SIZE: 80%; FONT-WEIGHT: normal } .largeText DIV.field DIV.exemptdiv LABEL { FONT-SIZE: 65% } .largeText TEXTAREA { FONT-SIZE: 80% } LI.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; PADDING-TOP: 3px; -moz-border-radius: 6px; -webkit-border-radius: 6px } .e_expandArea { MARGIN-TOP: 21px } #e_groups_menu { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #ceeaee; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .parent-child-listing { WIDTH: 50% } .parent-child-listing .stepHelp { MARGIN-LEFT: 24px } .parent-child-listing UL { BORDER-LEFT: #ccc 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 12px 10px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .parent-child-listing LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .stepcontent .hierarchy { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .stepcontent .hierarchy LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; PADDING-TOP: 0px } OL.hierarchy LI H5 { POSITION: relative; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 11em; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 8px } OL.hierarchy LI H5 SPAN { BORDER-BOTTOM: medium none; DISPLAY: inline; COLOR: #888; FONT-SIZE: 100% } OL.hierarchy LI H5 A { POSITION: absolute; FONT-SIZE: 90%; TOP: 9px; RIGHT: 0px; FONT-WEIGHT: normal } OL.hierarchy LI DIV { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 2px; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } OL.hierarchy LI DIV.gbData SPAN { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 2px } OL.hierarchy LI DIV.gbData SPAN:first-child { BORDER-LEFT: medium none; PADDING-LEFT: 0px; MARGIN-LEFT: 0px } OL.hierarchy LI DIV INPUT.points { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT.points { WIDTH: 2em } OL.hierarchy LI DIV INPUT.name { WIDTH: 16em } LI.parent { PADDING-BOTTOM: 0px !important } OL.hierarchy LI.parent OL LI H5 { BACKGROUND-IMAGE: none } .stepPanels { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .stepPanels LI { BORDER-BOTTOM: medium none } .panelTitle { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 4px 0px 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; CURSOR: pointer; PADDING-TOP: 3px } .mdHead A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { WIDTH: 100%; DISPLAY: block } .panelTitle .date { POSITION: absolute; COLOR: #666; FONT-SIZE: 95%; TOP: 2px; RIGHT: 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none } .panelTitle A SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 2px } .mdHead A SPAN.date { FONT-WEIGHT: normal } .mdList { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel P SPAN { COLOR: #666 } .mdList H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .mdList P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanelControls { FONT-SIZE: 90% } .contentAreaBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px 24px 24px; BACKGROUND: #fff; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .contentAreaBlock #step1 { BORDER-TOP: 0px } .taskbuttondiv { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .taskButtonsContent { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .okbutton { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .picker .taskbuttondiv { PADDING-BOTTOM: 9px; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .container .taskbuttondiv:first-child { MARGIN-TOP: 0px } DIV#dataCollectionContainer .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#dataCollectionContainer .reqfield + .taskbuttondiv { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#containerdiv .mapCanvasForm .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } #customizeDataCollection .taskbuttonhelp { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px } DIV#dataCollectionContainer .taskbuttonhelp + .taskbuttondiv { PADDING-BOTTOM: 18px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 0px } SPAN.stepTitleRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } SPAN.contentListRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } .taskButtonsContent { PADDING-BOTTOM: 0px; MARGIN: 24px -12px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 9px } P.okbutton INPUT { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 100%; PADDING-TOP: 1px } .taskbuttonhelp { PADDING-BOTTOM: 0px; FONT-STYLE: italic; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } #taskbuttondiv P { BORDER-BOTTOM: red 1px solid; TEXT-ALIGN: left; BORDER-LEFT: red 1px solid; FONT-STYLE: italic; MARGIN: 6px 0px; DISPLAY: block; FONT-SIZE: 90%; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .stepTitleRight { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; TOP: -2px; RIGHT: -2px; PADDING-TOP: 6px; LEFT: auto } LEGEND { POSITION: absolute; LINE-HEIGHT: 0; HEIGHT: 0px; TOP: -10000px } FIELDSET OL LI SPAN.tagContainer INPUT { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer A.browse { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.hidden { DISPLAY: none } .contentBlock OL LI SPAN.hidden { DISPLAY: none } .selectItems { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 639px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .selectItems SELECT { MARGIN: 6px 0px 0px; WIDTH: 300px; DISPLAY: block; MAX-WIDTH: 300px; HEIGHT: 115px; FONT-SIZE: 100% } #dataCollectionContainer .noLabelField > .selectItems { POSITION: relative; PADDING-BOTTOM: 15px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 15px } #dataCollectionContainer .noLabelField > .userRoleSelect:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems.userRoleSelect:before { LEFT: 358px } #dataCollectionContainer .noLabelField > .selectItems.cumulativeSelectItems:before { LEFT: 47% } .selectItems INPUT[type=button] { MARGIN: 6px 0px 0px } .selectItems INPUT[type=text] { MARGIN: 6px 0px; WIDTH: 300px; DISPLAY: block; FONT-SIZE: 100% } .selectArrows { POSITION: relative; MARGIN-TOP: 60px } .selectArrows A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectArrows BUTTON { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectItems H4 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px 56px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .userRoleSelect { WIDTH: auto } .userSelectedRoles { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 56px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .userSelectedRoles .selectArrows { POSITION: absolute; MARGIN: 0px; TOP: 28px; LEFT: 20px } .selectItems .available-roles H4 { MARGIN-LEFT: 0px } .selectItems .available-roles SELECT { HEIGHT: 200px } .multiSelect { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .multiSelect > DIV { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; WIDTH: 46%; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } .multiSelect SELECT { WIDTH: 100% } .multiSelect .selectArrows { TEXT-ALIGN: center; MARGIN: 40px 0px; WIDTH: 5% } .widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: 6px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } .widgetControls { FONT-SIZE: 90% } TABLE .widgetControls { FONT-SIZE: 90% } .widget .spellCheck { FLOAT: right } .widget .textBoxItem { FLOAT: right } DIV.liveArea FIELDSET.stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.liveArea FIELDSET.stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.liveArea FIELDSET.stepcontent TEXTAREA { WIDTH: 100% } DIV.liveArea FIELDSET.stepcontent SPAN.inlineHelp { DISPLAY: inline } .quickAddPal .stepcontent { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; PADDING-TOP: 3px } .quickAddPal .stepcontent LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .quickAddPal .stepcontent .label { WIDTH: 30%; PADDING-RIGHT: 2px; OVERFLOW: visible } .quickAddPal .stepcontent .field { WIDTH: 65% } .quickAddPal LI.fieldError .fieldErrorText { DISPLAY: block; COLOR: red; MARGIN-LEFT: 74px; FONT-SIZE: 85%; FONT-WEIGHT: normal } DIV.quickAddPal DIV.field INPUT[type=text] { WIDTH: 100% } DIV.quickAddPal DIV.field SELECT { WIDTH: 100% } DIV.quickAddPal DIV.field TEXTAREA { WIDTH: 100% } DIV.quickAddPal LI.stepHelp { WIDTH: auto } DIV.quickAddPal LI DIV SPAN { WIDTH: auto } DIV.field SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.field SPAN.control { DISPLAY: inline } DIV.quickAddPal DIV.field INPUT.datePickerInput { WIDTH: 8em } DIV.quickAddPal DIV.field INPUT.timePickerInput { WIDTH: 8em } .dtpickerEndDiv { PADDING-TOP: 10px } DIV#texteditor { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } DIV#texteditor TEXTAREA { WIDTH: 450px; DISPLAY: block; MARGIN-LEFT: 0px } DIV#texteditor A.textBoxItem { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 80%; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 2px } SELECT.survey_question { MAX-WIDTH: 100% } .htmlarea .toolbar DIV > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FLOAT: left; HEIGHT: 22px; PADDING-TOP: 0px } .htmlarea IFRAME { MIN-WIDTH: 300px !important } .htmlarea .toolbar A.wikiButton { WIDTH: auto !important } .htmlarea .toolbar A.wikiButton IMG { WIDTH: auto !important } .vtbe_footer { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .vtbe_footer SPAN { FONT-SIZE: 100% } .vtbe_footer INPUT[type=button] { FONT-SIZE: 95% } .vtbe_footer A { MARGIN: 0px 0px 0px 3px } .resize_handle { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BACKGROUND: url(images/controls.png) #ccc no-repeat 50% -1px; HEIGHT: 12px; BORDER-TOP: #ddd 1px solid; CURSOR: n-resize } .resize_handle:hover { BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #bbb; BORDER-TOP-COLOR: #ccc } .resize_handle IMG { WIDTH: 100%; HEIGHT: 8px } .tabGroupsPreview { MARGIN: -11px -12px 24px; FONT-SIZE: 100% } .previewContent { Z-INDEX: 1; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; BACKGROUND: url(images/backgrounds_h.png) #aaa repeat-x 0px -320px; PADDING-TOP: 14px } .previewContent IFRAME { WIDTH: 100%; HEIGHT: 300px } .previewContent .appTabs { TOP: -3px } .tabGroupsPreview TABLE DIV { DISPLAY: block } .previewOverlay { POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=30); TEXT-TRANSFORM: uppercase; WIDTH: 100%; LETTER-SPACING: 10px; COLOR: #555; FONT-SIZE: 300%; TOP: 130px; FONT-WEIGHT: bold } .tabGroupsPreview .previewOverlay { TOP: 40px } .previewOverlay SPAN { FILTER: alpha(opacity=30); PADDING-BOTTOM: 6px; BACKGROUND-COLOR: white; PADDING-LEFT: 24px; PADDING-RIGHT: 12px; PADDING-TOP: 6px; opacity: .30 } P.warning { PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #cf1d19; MARGIN: 12px 0px 24px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 9px } .warning { BACKGROUND: #a7d0df } DIV.tabPreview { Z-INDEX: 1; BORDER-BOTTOM: #cdcdcd 12px solid; POSITION: relative; BORDER-LEFT: #cdcdcd 12px solid; MARGIN: 0px 6px 6px; WIDTH: auto; BACKGROUND: #cdcdcd; BORDER-TOP: #cdcdcd 12px solid; BORDER-RIGHT: #cdcdcd 12px solid } DIV.tabPreview DIV.paneTabs { MARGIN-TOP: 12px } .buttonLibrary { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 207px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .buttonLibrary LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FLOAT: left; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .buttonLibrary LI A { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 3px } .buttonLibrary LI A.selected { FONT-WEIGHT: bold; TEXT-DECORATION: none } .buttonLibrary LI A:hover { TEXT-DECORATION: underline } DIV.menuStyleStep { MARGIN: 9px 40px 0px 0px; WIDTH: 212px; FLOAT: left } DIV.menuDefaultStyleStep { MARGIN: 9px auto; WIDTH: 212px } .schemeWrapper { MARGIN: 0px 12px 0px 0px; FLOAT: left } .buttonLibrary .schemeWrapper { PADDING-BOTTOM: 10px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #fff; FLOAT: none; PADDING-TOP: 10px; -moz-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); border-radius: 4px } .buttonLibrary .selected .schemeWrapper { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #bbb; PADDING-TOP: 10px } #selectedPalette .schemePreview { BORDER-BOTTOM: #bbb 10px solid; BORDER-LEFT: #bbb 10px solid; BORDER-TOP: #bbb 10px solid; BORDER-RIGHT: #bbb 10px solid; -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); border-radius: 4px } .schemeWrapper SPAN { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: italic 100% Georgia; PADDING-TOP: 6px } UL.buttonLibrary LI.selected { POSITION: absolute; TOP: 6px; LEFT: 0px } UL.buttonLibrary LI.selected A.selected { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A.selected SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .schemePreview { PADDING-BOTTOM: 0px; PADDING-LEFT: 16px; WIDTH: 160px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .modulePreview { BORDER-BOTTOM: 0px solid; POSITION: relative; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px !important; MARGIN: 6px 0px 0px auto; PADDING-LEFT: 0px !important; WIDTH: 140px; BOTTOM: 0px; PADDING-RIGHT: 0px !important; HEIGHT: 57px; FONT-SIZE: 85%; BORDER-TOP: 1px solid; RIGHT: 0px; BORDER-RIGHT: 0px solid; PADDING-TOP: 0px !important; LEFT: auto } .schemePreviewHead { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 6px !important } .modulePreviewHead { PADDING-BOTTOM: 4px !important; MARGIN: 0px; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-WEIGHT: bold; PADDING-TOP: 4px !important } .schemePreviewBody { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 3px } .modulePreviewBody { PADDING-BOTTOM: 3px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 4px !important } .moduleList { BORDER-TOP: #ccc 1px solid } .moduleItem { BORDER-BOTTOM: #ccc 1px solid } .module { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } .moduleHeading { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 10px } .module H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 110% } .moduleDescription { WIDTH: 90% } .more { DISPLAY: none } .moduleAction { MARGIN: 10px 0px } .moduleCategory { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .moduleCategory A { FONT-WEIGHT: bold } .moduleSample { PADDING-LEFT: 10px; DISPLAY: none } .expandedModule { BACKGROUND-COLOR: #efefef } .expandedModule .moduleDetails { WIDTH: 47% } .expandedModule .moduleSample { WIDTH: 47% } .expandedModule .more { DISPLAY: inline } .expandedModule .moduleSample { DISPLAY: block } .leftColumn-wide#moduleList .contentListPlain { PADDING-LEFT: 18px } .moduleListActionBar { PADDING-LEFT: 18px } #moduleList .contentListPlain > LI.expandedModule .moduleSample > DIV { MIN-HEIGHT: 50px !important; WORD-WRAP: normal } #moduleBody { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } #moduleBorder { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .portlet { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #efede3; MARGIN: 0px 10px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #444; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 0 2px 4px rgba(0, 0, 0, .05); border-radius: 3px } .containerPortal > DIV:first-child .portlet { MARGIN: 0px 10px 20px 0px } .reorderableModule:hover { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; -webkit-transition-property: border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border, background; -moz-transition-duration: 200ms; -moz-transition-timing-function: ease-in-out } .reorderableModule:hover H2 { COLOR: #000 } .module-dragstate { BORDER-BOTTOM-COLOR: #555; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: 2px; opacity: .9; -moz-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-transition-property: border-width, border-color, background, -webkit-box-shadow; -webkit-transition-duration: 50ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border-width, border-color, background, -moz-box-shadow; -moz-transition-duration: 50ms; -moz-transition-timing-function: ease-in-out } #moduleTitle { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 .moduleTitle { WORD-WRAP: break-word } .portlet H2.dragHandle { PADDING-LEFT: 20px } .portlet H2.dragHandle:hover { CURSOR: move } .portlet H2 A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; COLOR: #fff; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .portlet H2 A:hover { TEXT-DECORATION: underline } .portlet H2 A IMG { VERTICAL-ALIGN: middle } .portlet H2.noTitle { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 1.4em; PADDING-TOP: 0px } .portlet H2.noTitle:hover { BACKGROUND: #ededed } .portlet A { WORD-WRAP: break-word; TEXT-DECORATION: none } .portlet A:hover { TEXT-DECORATION: underline } .edit_controls { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FLOAT: right; PADDING-TOP: 7px } .portlet .edit_controls { VISIBILITY: hidden } .portlet:hover .edit_controls { VISIBILITY: visible } .edit_controls A { Z-INDEX: 201; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 1px; TEXT-DECORATION: none; PADDING-TOP: 0px; verical-align: top } .portlet .edit_controls A:hover { TEXT-DECORATION: none } .portlet:hover .edit_controls A { TEXT-DECORATION: none } .edit_controls .moduleToggleLink { Z-INDEX: 201; POSITION: absolute; FILTER: alpha(opacity=50); PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 14px; PADDING-RIGHT: 3px; HEIGHT: 14px; TOP: 3px; PADDING-TOP: 3px; LEFT: -4px; opacity: .5 } .edit_controls A IMG { DISPLAY: none } .edit_controls A:before { FONT: 16px/1 "Utilicons"; COLOR: #bcbcbc; text-shadow: 0 1px 0 #fff } .edit_controls A:hover:before { COLOR: #888 } .edit_controls A.moduleToggleLink { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px } .edit_controls A[title*='Expand'].moduleToggleLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .edit_controls A.moduleCloseLink:before { CONTENT: "X" } .edit_controls A.moduleDetachLink:before { FONT: 16px/1 "Utilicons"; CONTENT: "w" } .edit_controls A[href*='edit_module']:before { CONTENT: "S" } .collapsible { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px } .collapsible TABLE { BORDER-SPACING: 3px 2px; BORDER-COLLAPSE: separate; FONT-FAMILY: Helvetica, Arial, sans-serif; COLOR: #333; FONT-SIZE: 90% } .collapsible .help { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .imgWrapper { TEXT-ALIGN: center; MARGIN: 6px auto; OVERFLOW: auto } .portlet H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } #lightbox H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.portletBlock H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.blockContents H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .flyout H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 5px } .portlet H4 { PADDING-BOTTOM: 2px; TEXT-INDENT: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 1px } .portlet .portletList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList LI:first-child { BORDER-TOP: medium none } .portlet .portletList LI IMG { DISPLAY: none } .portlet .courseListing LI > A { FONT-WEIGHT: bold } .portlet .courseRole { COLOR: #777 } .portlet .dataBlockLabel { COLOR: #777 } .portlet .eventDate { COLOR: #777 } .portlet .eventList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .eventList LI .date { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f0f0f0; COLOR: #597298; FONT-WEIGHT: bold; PADDING-TOP: 2px; -moz-border-radius: 1px; -webkit-border-radius: 1px; border-radius: 1px } .portlet .eventList LI .event { PADDING-BOTTOM: 2px; PADDING-LEFT: 18px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .portlet .eventList LI .description { FONT-SIZE: 90% } .portlet .eventDate { FONT-SIZE: 90% } .portlet .eventList LI .event A { FONT-WEIGHT: bold } .portlet SPAN.origin { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #999; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet .portletList-img > LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList-img > LI:first-child { BORDER-TOP: medium none; PADDING-TOP: 0px } .portlet .portletList-img > LI IMG { DISPLAY: none } .portlet .courseInformation { PADDING-BOTTOM: 0px; TEXT-INDENT: -16px; MARGIN: 4px 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock { PADDING-BOTTOM: 0px; TEXT-INDENT: -4px; MARGIN: 4px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock UL { MARGIN-TOP: 5px } .portlet .courseDataBlock UL LI { TEXT-INDENT: 0px } .portlet .calculatorModule { TEXT-ALIGN: center } .portlet .calculator { PADDING-BOTTOM: 6px; MARGIN: 0px auto; PADDING-LEFT: 6px; WIDTH: 10em; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .portlet .portletPath { MARGIN: 4px; BACKGROUND: #f0f0f0; FONT-SIZE: 90%; -moz-border-radius: 1px; -webkit-border-radius: 1px } .portlet .portletPath SPAN { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; DISPLAY: inline-block; BACKGROUND: #ddd; COLOR: #666; FONT-WEIGHT: bold; PADDING-TOP: 1px; -moz-border-radius: 1px 0 0 1px; -webkit-border-radius: 1px 0 0 1px } .portlet .courseDataBlock UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px -895px; PADDING-TOP: 0px } .portlet .courseDataBlock A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock LI A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock A:hover { TEXT-DECORATION: underline } .portlet .courseDataBlock LI A:hover { TEXT-DECORATION: underline } .portletHelp { PADDING-BOTTOM: 2px; MARGIN: 4px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #688ba8; FONT-SIZE: 95%; PADDING-TOP: 1px } DIV.module_actions { PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.8em; MARGIN: 4px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.module_actions A:link { BORDER-BOTTOM: #ccc 1px outset; BORDER-LEFT: #ccc 1px outset; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 5px; COLOR: #036; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px outset; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px outset; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.module_actions A:hover { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions A:active { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions IMG { MARGIN: 0px 3px; VERTICAL-ALIGN: middle } DIV.module_actions SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.module_actions LABEL { FONT-WEIGHT: bold } DIV.scroll_div { MAX-HEIGHT: 300px; OVERFLOW: auto } .portlet DIV.scroll_div { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN-BOTTOM: 3px; BACKGROUND: #fff4bf; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .submission_list { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .submission_list LI { PADDING-BOTTOM: 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; PADDING-TOP: 9px } .submission_list LI:first-child { BORDER-TOP: medium none } .submission_list LI A { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .submission_list LI A.label { MARGIN-LEFT: 0px; FONT-SIZE: 100%; FONT-WEIGHT: bold } .submission_list LI DIV.button { MARGIN: 4px 0px 0px; FLOAT: right } .submission_list LI SPAN { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .eudModule { PADDING-BOTTOM: 24px; MARGIN: 0px } .styledModule-dark { PADDING-BOTTOM: 24px; MARGIN: 0px } .portlet .noItems { TEXT-ALIGN: center; FONT-STYLE: italic } .eudModule .eudModule-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .styledModule-dark .module-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .eud-button-wrap { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } IMG.eud-avatar { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 28px; PADDING-RIGHT: 2px; BACKGROUND: #fff; HEIGHT: 28px; PADDING-TOP: 2px; -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -moz-border-radius: 2px; -webkit-border-radius: 2px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } .actionMenuButton { FILTER: none; PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: block; BACKGROUND: #eee; VERTICAL-ALIGN: middle; PADDING-TOP: 3px } DIV[id*='actionMenu_'] { Z-INDEX: 1000; MARGIN-TOP: -4px; MARGIN-LEFT: -3px } .portlet .portletBlock { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 6px } .portlet .portletBlock:first-child { BORDER-TOP: 0px } .moduleActions + .portletBlock { BORDER-TOP: 0px } .blockGroups LI:first-child { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .portlet .memberList { MARGIN: 0px 0px 5px } .itemGroups { PADDING-BOTTOM: 0px; MARGIN: 4px 9px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .itemGroups .itemGroups { MARGIN-BOTTOM: 4px; MARGIN-LEFT: 0px } .portlet .blockGroups LI { FONT-SIZE: 100% } .portlet .itemGroups LI { PADDING-BOTTOM: 7px; LINE-HEIGHT: 120%; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .memberList LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 14px !important; PADDING-TOP: 0px } .portlet .course { DISPLAY: block; FONT-SIZE: 90% } .portlet UL.memberList { DISPLAY: block; FONT-SIZE: 90% } .portlet SPAN.refresh { DISPLAY: block; FONT-SIZE: 90% } .portlet .course { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet SPAN.noIndent { MARGIN-LEFT: 0px !important } .portlet .whatsNew SPAN.course { MARGIN-LEFT: 0px !important } .portlet SPAN.course { MARGIN-LEFT: 0px !important } .portlet UL.hierarchyList { MARGIN-LEFT: 22px } .portlet UL.hierarchyList LI { OVERFLOW-X: visible; TEXT-INDENT: -18px } .portlet UL.hierarchyList LI * { TEXT-INDENT: 0px } .portlet UL.hierarchyList LI.childless { TEXT-INDENT: 0px } .portlet UL LI UL LI SPAN.warning { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.newItemCount { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .flag { BORDER-BOTTOM: #efa495 1px solid; BORDER-LEFT: #efa495 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; BACKGROUND: #ffe4df; COLOR: #c30; FONT-SIZE: 90%; BORDER-TOP: #efa495 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #efa495 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL.memberList SPAN { FONT-SIZE: 100% } .portlet UL.memberList SPAN.newItemCount { FONT-SIZE: 100% } .portletInfoFooter { POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 9px; BOTTOM: 5px; PADDING-RIGHT: 9px; COLOR: #999; FONT-SIZE: 90%; RIGHT: 0px; PADDING-TOP: 2px } .dateSelector { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .blockGroups LI SPAN.newItemCount { COLOR: #999; FONT-WEIGHT: normal } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHead A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .portlet .portletBlock H4 A:hover { BACKGROUND: #eee } .portlet .portletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .portlet .portletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .portlet .subCategories LI A { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead:hover { CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) #fff no-repeat 1px 9px; COLOR: #0099b6 } .blockGroups .itemHeadOpen:hover { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen:focus { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups LI IMG.spacer { WIDTH: 50px; HEIGHT: 0px } .blockGroups LI SPAN.headerText:hover { CURSOR: pointer; TEXT-DECORATION: underline } .viewHeader { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .viewHeader H3 { COLOR: #666; FONT-WEIGHT: bold } DIV.waitingFrame { BACKGROUND: #fff } .moduleControlWrapper { MARGIN: 6px 0px 0px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 6px } .moduleControlWrapper A { POSITION: relative; MARGIN: 0px 2px } .moduleControlWrapper A:after { POSITION: relative; COLOR: #bbb; FONT-SIZE: 14px; CONTENT: "\2192"; RIGHT: 0px; FONT-WEIGHT: bold } .moduleBlock { MARGIN: 6px } .portlet H1 { MARGIN: 6px; FONT-SIZE: 120% } .assessmentPortlet DIV.assessmentPortletBlock { BORDER-BOTTOM-COLOR: #777; PADDING-BOTTOM: 0px; BORDER-TOP-COLOR: #777; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #f9f9f9; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4 A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4 A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet UL.subCategories { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock UL.subCategories LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet UL.subCategories LI A { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead:hover { BACKGROUND-COLOR: #e3efff; TEXT-DECORATION: underline } UL.assessmentBlockGroups LI A.itemHeadOpen { BACKGROUND: #fff no-repeat 3px center } UL.assessmentBlockGroups LI A.itemHeadOpen:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .assessmentPortlet UL.subCategories LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } UL.assessmentBlockGroups LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .assessmentPortlet UL.subCategories LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } UL.assessmentBlockGroups LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } .assessmentPortlet UL.itemGroup LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.assessmentBlockGroups LI UL.itemGroups LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet UL.itemGroup LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI UL.items { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; FONT-SIZE: 110%; PADDING-TOP: 2px } UL.assessmentBlockGroups LI UL.itemGroups LI A { FONT-WEIGHT: normal } UL.itemGroups LI UL.items LI A { FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H3 { MARGIN: 0px } .assessmentPortlet DIV.assessmentPortletBlock H3 A { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f0f0f0; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet DIV.assessmentPortletBlock H3 A:hover { TEXT-DECORATION: none } .assessmentPortlet DIV.assessmentPortletBlock:first-child H3 A { BORDER-TOP: medium none } .assessmentPortlet DIV.assessmentPortletBlock H3 A.open { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/less_options.gif) #e3efff no-repeat 99% center; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet UL.objectList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortletBlock UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .blockContents UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.memberList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet .blockContents UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet .blockContents UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .portlet #loginBoxFull { PADDING-BOTTOM: 16px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull P { MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; COLOR: #444; FONT-SIZE: 0.95em } .portlet #loginBoxFull P.welcome { PADDING-BOTTOM: 0px; MARGIN: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000; FONT-SIZE: 1em; FONT-WEIGHT: bold; PADDING-TOP: 0px } .portlet #loginBoxFull UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } .portlet #loginBoxFull LI LABEL { FONT-SIZE: 100%; FONT-WEIGHT: normal } .portlet #loginBoxFull INPUT[type='text'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='password'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull A { FONT-SIZE: 0.9em } .portlet #loginBoxFull P A { FONT-SIZE: 1em } .portlet #loginBoxFull P.welcome A { FONT-SIZE: 1em } .portlet #loginBoxFull LI + LI + LI { FLOAT: left } .portlet #loginBoxFull LI + LI + LI + LI { TEXT-ALIGN: right; FLOAT: right } .portlet #loginBoxFull LI INPUT.submit { MARGIN: -14px -3px 0px 0px } #body { PADDING-BOTTOM: 60px } #loadstatus { POSITION: relative; HEIGHT: 180px } FIELDSET.highlight { BACKGROUND: #eee } FIELDSET.highlight DIV.input { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .builderItem .item { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FONT-SIZE: 100%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 12px } .builderItem:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } #lessonPlanForm #dataCollectionContainer .contentListPlain LI:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } LI.builderItem { MIN-HEIGHT: auto } .builderItem .close { POSITION: absolute; TOP: 5px; CURSOR: pointer; RIGHT: 5px } .builderItem IFRAME { WIDTH: 100% !important } DIV.subheading { FONT-WEIGHT: bold } DIV.required DIV.inputField { PADDING-LEFT: 1.5em; BACKGROUND: url(../../images/ci/icons/required.gif) no-repeat left 2px; MARGIN-LEFT: -1.5em } .inputOptions { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.5em } .offscreen { POSITION: absolute; HEIGHT: 0px; LEFT: -999em } .label A:hover { CURSOR: pointer } #lessonPlanForm #customFormBuilderDiv { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer .contentListPlain { MARGIN: 0px } .alignPanelLightbox { MIN-WIDTH: 650px; PADDING-BOTTOM: 10px; MIN-HEIGHT: 250px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .alignHeader { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .alignPanel TABLE TD { FONT-SIZE: 90% } .alignPanel TABLE TH { FONT-SIZE: 90% } .alignPanel TABLE TD.descriptionCell { MIN-WIDTH: 120px; WORD-WRAP: break-word } .alignPanel THEAD TH.smallCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .alignPanel THEAD TH { WHITE-SPACE: nowrap } .alignPanel TD.actionCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 4px } .pageBreadcrumb { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #fff; HEIGHT: 1em; PADDING-TOP: 6px } .pageBreadcrumb UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .pageBreadcrumb LI { FLOAT: left; COLOR: #999; MARGIN-LEFT: 3px; FONT-WEIGHT: bold } .pageBreadcrumb LI A { COLOR: #036; FONT-WEIGHT: bold; MARGIN-RIGHT: 3px; TEXT-DECORATION: none } .pageBreadcrumb LI A.active { COLOR: #036; FONT-WEIGHT: bold; TEXT-DECORATION: none } .sStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #063; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .sStatusI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #c00; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .panelList { PADDING-BOTTOM: 0px; MARGIN: 2px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; PADDING-TOP: 0px } .panelList > LI { MARGIN: 0px 0px 1px } .panelNested { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #fff; MARGIN: 4px 0px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; OVERFLOW: hidden; PADDING-TOP: 4px } .panelHead { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; WORD-WRAP: break-word; BACKGROUND: #efefef; PADDING-TOP: 6px } .panelHead A { COLOR: #000; TEXT-DECORATION: none } .panelItem { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 6px } .panelList_leftCol { POSITION: absolute; TOP: 6px; LEFT: 6px } .panelList_rightCol { POSITION: absolute; TOP: 6px; RIGHT: 6px } .panelList_centerCol { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 0px } UL.logMessages { LIST-STYLE-TYPE: none; TEXT-INDENT: -1em; PADDING-LEFT: 1em; MARGIN-LEFT: 0px; LIST-STYLE-IMAGE: none } LI.logError { COLOR: red } LI.logWarning { COLOR: blue } LI.logMessage { MARGIN-TOP: 0.1em } .connectionWrapper { POSITION: relative; MARGIN-TOP: 1px; PADDING-RIGHT: 30px } .connectionWrapper A { POSITION: absolute; MARGIN-TOP: -14px; TOP: 50%; RIGHT: 0px } .invertItems { POSITION: relative; DISPLAY: block !important; MARGIN-RIGHT: 26px } .invertItems A { POSITION: absolute; TOP: -14px; RIGHT: -33px } .subcategories { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 11px !important; PADDING-RIGHT: 11px !important; PADDING-TOP: 6px !important } .subcategories H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.calendarTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.announcementTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.calendarTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.announcementTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.calMonth { PADDING-BOTTOM: 6px; MARGIN: 10px 4px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; OVERFLOW: auto; PADDING-TOP: 2px } DIV.calMonth TABLE { BORDER-BOTTOM: #a8beda 2px solid; BORDER-LEFT: #a8beda 1px solid; MARGIN: 0px auto; BORDER-COLLAPSE: collapse; BORDER-TOP: #a8beda 2px solid; BORDER-RIGHT: #a8beda 2px solid } DIV.calMonth TABLE THEAD TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE TBODY TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE THEAD TD DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TBODY TH DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE THEAD TH { BORDER-BOTTOM: #a0a0a0 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 8em; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; OVERFLOW: hidden; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } DIV.calMonth TABLE TBODY TD { BORDER-BOTTOM: #a8beda 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 8em; PADDING-RIGHT: 0px; BACKGROUND: url(images/backgrounds_h.png) white repeat-x 0px -400px; HEIGHT: 8em; OVERFLOW: hidden; BORDER-RIGHT: #a8beda 1px solid; PADDING-TOP: 0px } DIV.calMonth TABLE TH:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:focus { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:active { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD A.daylink { BORDER-BOTTOM: #a8beda 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; WIDTH: 1.2em; PADDING-RIGHT: 0.2em; DISPLAY: block; BACKGROUND: #e3efff; FLOAT: left; FONT-SIZE: 110%; FONT-WEIGHT: bold; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0.2em } DIV.calMonth TABLE TD A.daylink:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD A.daylink SPAN { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TD.today { BACKGROUND-COLOR: #fff4bf } DIV.calMonth TABLE TD.today A.daylink { BACKGROUND: #fff4bf; FONT-WEIGHT: bold } DIV.calMonth TABLE TD.today A.daylink:hover { BACKGROUND: url(images/backgrounds_h.png) #fff4bf repeat-x 0px -50px } DIV.calMonth TABLE TD.offday { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:hover { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:focus { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD DIV { WIDTH: 8em; CLEAR: both; OVERFLOW: hidden } DIV.calMonth TABLE TD DIV UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.calMonth TABLE TD DIV UL LI { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FONT-SIZE: 90%; PADDING-TOP: 1px } TABLE.calYear { POSITION: relative; MIN-WIDTH: 200px; MARGIN: 6px; BORDER-COLLAPSE: collapse; FONT-SIZE: 95% } TABLE.calYearFloat { MARGIN: 6px 0.66%; WIDTH: 32%; FLOAT: left } TABLE.calYear THEAD TD { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear TBODY TH { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear CAPTION { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 108%; PADDING-TOP: 2px } TABLE.calYear CAPTION A { FONT-WEIGHT: bold; TEXT-DECORATION: none } TABLE.calYear CAPTION A:hover { TEXT-DECORATION: underline } TABLE.calYear THEAD TH { BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } TABLE.calYear TBODY TD { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; WHITE-SPACE: nowrap; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } TABLE.calYear TD A { POSITION: relative; WIDTH: 100%; DISPLAY: block; TEXT-DECORATION: none } TABLE.calYear TD A IMG { FLOAT: left } TABLE.calYear TD:hover { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:focus { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:active { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TH:hover { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:focus { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:active { BACKGROUND-COLOR: #ccc } TABLE.calYear TD.today { BACKGROUND: #999 } TABLE.calYear TD.today:hover { BACKGROUND: #999 } TABLE.calYear TD.today:focus { BACKGROUND: #999 } TABLE.calYear TD.today A { COLOR: #fff; FONT-WEIGHT: bold; text-shadow: 0 -1px 0 #555 } TABLE.calYear TD.today A:hover { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:active { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:focus { BACKGROUND-IMAGE: none } TABLE.calYear TD.offday { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:hover { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:focus { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.hasEvent { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -50px; FONT-WEIGHT: bold } TABLE.calendarDay { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; MARGIN: 10px 0px 0px; WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #cdcdcd 1px solid; BORDER-RIGHT: #cdcdcd 1px solid } TABLE.calendarDay THEAD { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay THEAD TH { POSITION: absolute; TOP: 0px; LEFT: -1000px } UL.calendarWeek LI TABLE.calendarDay { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } TABLE.calendarDay TBODY TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 3px; WIDTH: 6%; PADDING-RIGHT: 12px; BACKGROUND: #f3f3f3; COLOR: #555; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } TABLE.calendarDay TBODY TH:hover { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:focus { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:active { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #fff; VERTICAL-ALIGN: top; BORDER-TOP: #cdcdcd 1px solid; PADDING-TOP: 0px } TABLE.calendarDay TBODY TD.hasEvent { PADDING-LEFT: 6px } TABLE.calendarDay TBODY TD.hasEvent A.jumpToEvent { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay TBODY TR.halfHour TH { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.halfHour TD { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.midday TH { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TBODY TR.midday TD { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TR.notBusinessHours TH { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #f3f3f3; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TABLE.calendarDay TR.notBusinessHours TD { BACKGROUND: #fafafa } TABLE.calendarDay TBODY TR.notBusinessHours TD.hasEvent { BACKGROUND: #fafafa } TABLE.calendarDay TR TH SPAN.ampm { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #bbb; LETTER-SPACING: 0.1em; COLOR: #fff; FONT-SIZE: 75%; TOP: -1.2em; PADDING-TOP: 0px; LEFT: -4px } TABLE.calendarDay TBODY TR:hover { -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calendarDay TBODY TR:hover TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TD DIV DIV { PADDING-BOTTOM: 1px; MARGIN: 0px 4px 0px -6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: #b5ccea; FLOAT: left; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } TABLE.calendarDay TD DIV DIV.contextMenuContainer { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px -3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: none; PADDING-TOP: 0px } TABLE.calendarDay TD DIV SPAN { COLOR: #555; FONT-SIZE: 90% } UL.calendarWeek { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #cdcdcd 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #cdcdcd 1px solid; PADDING-TOP: 0px } UL.calendarWeek LI { BORDER-BOTTOM: #cdcdcd 1px solid; POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } UL.calendarWeek LI UL:first-child { BORDER-TOP: medium none } UL.calendarWeek UL LI:first-child { BORDER-TOP: medium none } UL.calendarWeek LI H3.weekDay { PADDING-BOTTOM: 0.3em; MARGIN: 0px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BACKGROUND: #e3efff; COLOR: #666; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 0.3em } UL.calendarWeek LI H3.weekDay:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.calendarWeek LI UL LI { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ededed 1px solid; PADDING-TOP: 6px } UL.calendarWeek LI UL LI:hover { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:focus { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:active { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI H4 { PADDING-BOTTOM: 1px; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 3px; WIDTH: 10em; PADDING-RIGHT: 3px; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 1px } UL.calendarWeek LI DIV { MARGIN-LEFT: 11em } UL.calendarWeek LI DIV.contextMenuContainer { MARGIN: 0px 0px 0px -3px } UL.calendarWeek LI UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } .diffbox-wrapper { MARGIN: 9px auto; WIDTH: 80% } .legendbox-wrapper { MARGIN: 9px auto; WIDTH: 90% } .legendbox-wrapper > DIV { BORDER-LEFT: #ddd 1px solid } .legendbox-wrapper > DIV:first-child { BORDER-LEFT: medium none } .diffbox-left { FLOAT: left } .diffbox-right { FLOAT: left } .diffbox-arrow { FLOAT: left } .legendbox { FLOAT: left } .diffbox-left { WIDTH: 44% } .diffbox-right { WIDTH: 44% } .legendbox-3 { WIDTH: 33% } .legendbox-2 { WIDTH: 48% } .diffbox-left > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .diffbox-right > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #fff; PADDING-TOP: 3px } .diffbox-right > DIV { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .diffbox-left UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-right UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .legendbox UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-left UL LI:first-child { BORDER-TOP: 0px } .diffbox-right UL LI:first-child { BORDER-TOP: 0px } .legendbox UL LI:first-child { BORDER-TOP: 0px } .diffbox-left .label { WIDTH: 30%; COLOR: #666 } .diffbox-right .label { WIDTH: 30%; COLOR: #666 } .legendbox .label { WIDTH: 30%; COLOR: #666 } .diffbox-left .field { WIDTH: 59% } .diffbox-right .field { WIDTH: 59% } .legendbox .label { WIDTH: 45%; FONT-SIZE: 90% } .legendbox .field { WIDTH: 55% } .diffbox-arrow { TEXT-ALIGN: center; WIDTH: 6%; PADDING-TOP: 50px } .diffLegend-sample { POSITION: static !important; WIDTH: 90px !important; HEIGHT: 17px !important } .addedImg-sample { HEIGHT: 13px !important } .removedImg-sample { HEIGHT: 13px !important } .changedImg-sample { HEIGHT: 13px !important } .diff-html-added { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-removed { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .added-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .removed-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-added { BACKGROUND-COLOR: #cfc } .added-sample { BACKGROUND-COLOR: #cfc } .diff-html-removed { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .removed-sample { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .diff-html-changed { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .changed-sample { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .diff-html-added IMG { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .addedImg-sample { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .diff-html-removed IMG { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .removedImg-sample { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .diff-html-changed IMG { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } .changedImg-sample { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } DIV.diff-removed-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-added-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } .diff-addedImg-sample { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-removed-image { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } .diff-removedImg-sample { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } DIV.diff-added-image { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } .diff-addedImg-sample { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } DIV.blogContainer DIV.wikiPage { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid } DIV.blogContainer DIV.wikiPage H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; FONT-SIZE: 120%; PADDING-TOP: 9px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryDate { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 6px } .editWiki { MARGIN: 9px } .topRound { DISPLAY: none } .bottomRound { DISPLAY: none } .playerControls { POSITION: relative; PADDING-BOTTOM: 6px !important; MARGIN-TOP: 0px; PADDING-LEFT: 6px !important; PADDING-RIGHT: 6px !important; MARGIN-BOTTOM: 2px; PADDING-TOP: 6px !important } IMG.managedPluginStatusIcon { MARGIN: 1px 7px 3px 0px } UL.metaDataList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.metaDataList LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } UL.metaDataList LI H3 { MARGIN: 0px; DISPLAY: inline } .bb-cpgbtd { FONT-SIZE: 90% } .bb-cpgbth { FONT-SIZE: 90% } .bb-cpmgtd { COLOR: #000; FONT-SIZE: 85% } .bb-cpmgth { FONT-SIZE: 85%; FONT-WEIGHT: bold } #resizeHandle { BORDER-BOTTOM: #999 1px solid; POSITION: absolute; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 0px; WIDTH: 3px; BOTTOM: 0px; BACKGROUND: #ddd; BORDER-TOP: #999 1px solid; TOP: 0px; BORDER-RIGHT: #999 1px solid; LEFT: 200px; -moz-border-radius: 1px; -webkit-border-radius: 1px } #resizeHandle:hover { BACKGROUND: #aaa; CURSOR: e-resize } #resizeHandle .collapseControl { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #resizeHandle .pullcollapsed { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .collapseControl:hover { CURSOR: pointer } .caretTitleModifier { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; COLOR: #444; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } .landingPageColumn H3.hiddenlink .linkStatus { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0.4em } TABLE.inventory .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .additional { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .additional .left { FLOAT: left } .additional .right { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: right; COLOR: #777; PADDING-TOP: 2px } .additional .right SPAN.size { COLOR: #000; FONT-WEIGHT: bold } .additional .left SPAN.suboption { DISPLAY: block } A.add { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #b3efb3; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.add:hover { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #e4ffdf; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.remove { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffc4bf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } A.remove:hover { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffd2cf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .listColumnHead { BORDER-BOTTOM: #ccc 1px dotted; MARGIN-BOTTOM: 3px; COLOR: #555; FONT-SIZE: 90%; FONT-WEIGHT: bold } .customFormBuilderLabel { WIDTH: 88%; DISPLAY: block; WORD-WRAP: break-word } .textareaWrapper TEXTAREA { WIDTH: 100% } .textareaWrapper TABLE { WIDTH: 100% } .tools.navPalette { } DIV.instructionData { MARGIN: 0px 0px 12px } DIV.instructionData UL { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } DIV.instructionData UL LI H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 100% } DIV.instructionData UL LI.instructions { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px } DIV.instructionData UL LI.saving { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.instructionData UL LI.instructions A.browse { BORDER-BOTTOM: medium none; BORDER-LEFT: #ccc 1px solid; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .assessmentInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } .assessmentInstructions H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px }

.assessmentPortlet { Z-INDEX: 1; POSITION: fixed; RIGHT: 43px } .assessmentPortlet H3 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.assessmentPortletBlock H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.blockContents H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .savingQuestion { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: none; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #c03; FONT-SIZE: 150%; PADDING-TOP: 2px } TR.dummyVTBEFooter TD { BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 2px } .qIncomplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; COLOR: #333; BORDER-TOP: #999 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } .qComplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; BACKGROUND-COLOR: #ccc; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; FLOAT: left; COLOR: #888; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } DIV.canvasHead { PADDING-BOTTOM: 12px; MARGIN: 0.6em 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #f6f6f6; PADDING-TOP: 6px } DIV.canvasHead UL LI { BORDER-TOP: #eee 1px solid } DIV.canvasHead UL LI:first-child { BORDER-TOP: medium none } DIV.canvasHead UL LI DIV.label { COLOR: #555 } .peer_instructions { MARGIN: 12px 6px } .peerHelp { COLOR: #555 } H2.evaluator { MARGIN: 1em 0px 0.3em } H2.evaluator SPAN { FONT-SIZE: 90%; FONT-WEIGHT: normal } DIV.peerCriteriaStatus { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; BACKGROUND: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 0.3em } DIV.peerCriteriaStatus A.itemHeadOpen { MARGIN: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 90%; FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV.peerCriteriaStatus A.itemHeadOpen:hover { TEXT-DECORATION: underline } DIV.peerCriteriaStatus TD.qStatus { PADDING-BOTTOM: 4px; PADDING-LEFT: 1px; WIDTH: 5%; PADDING-RIGHT: 1px; PADDING-TOP: 4px } DIV.peerCriteriaStatus TD.qStatus A SPAN { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #fff 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 1px solid; PADDING-TOP: 1px } DIV.peerCriteriaStatus TD.qStatus A SPAN.qComplete { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qComplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qIncomplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus A SPAN IMG { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 12px; PADDING-RIGHT: 2px; HEIGHT: 12px; PADDING-TOP: 2px } .questionNumber { FONT-WEIGHT: bold } .questionType { FONT-WEIGHT: bold } .questionNumber { COLOR: #aaa } .questionDiv { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: -1px 0px 6px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.6em } .questionDiv H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: 0px 0px 0.6em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv P { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv DIV.criteriaText { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .questionDiv DIV.submission_text { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; WIDTH: 100%; PADDING-RIGHT: 4px; HEIGHT: 150px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .questionDiv TABLE { WIDTH: 98% } .questionDiv TABLE TABLE { WIDTH: auto } .questionDiv TD.label { WIDTH: 150px; WHITE-SPACE: nowrap } #creceipt { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: red; FONT-WEIGHT: bold; PADDING-TOP: 4px } UL.fileData { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.fileData LI { BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FLOAT: left; PADDING-TOP: 2px } UL.listNav { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: #ddd; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.listNav LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: #ededed; FLOAT: left; COLOR: #2d2680; PADDING-TOP: 0px } UL.listNav LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.listNav LI A:hover { BACKGROUND-COLOR: #dedede; TEXT-DECORATION: underline } UL.listNav LI A.active { BORDER-BOTTOM: #000 2px solid; BORDER-LEFT: #000 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BACKGROUND: #fff; COLOR: #000; BORDER-TOP: #000 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 2px solid; PADDING-TOP: 2px } UL.evaluation { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.evaluation LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 4px } UL.evaluation LI P { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 0px; WIDTH: 79%; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } UL.evaluation H4 { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 4px; WIDTH: 20%; PADDING-RIGHT: 0px; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } UL.evaluation LI P SPAN { COLOR: #555 } DIV.stepPanel DIV.user_html { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.stepPanels H4.defaultCursor { CURSOR: default } H4.defaultCursor { CURSOR: default } .qShow { DISPLAY: block } .qHide { DISPLAY: none } .completionContainer { PADDING-BOTTOM: 6px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainerLarge { PADDING-BOTTOM: 6px; HEIGHT: 75px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainer A IMG { VERTICAL-ALIGN: baseline } .pagedRumble { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 14px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px } .pagedPointsOutsideBar { POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; TOP: 0px; RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 0px; LEFT: auto } .pagedPoints { PADDING-BOTTOM: 6px; LINE-HEIGHT: 100%; MARGIN: -5px 24px -5px -10px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 5px } .designAreaHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaFooter { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaFooter H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaHeader .headertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .designAreaFooter .footertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV#emptyText { MARGIN: 0.6em 16px } .infoListWrapper { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #assessmentGradeForm .infoListWrapper { MARGIN: 0px -12px 18px } .infoListWrapper H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .infoListWrapper H3 A { PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -443px; PADDING-TOP: 3px } .infoListWrapper H3 A.open { BACKGROUND: url(images/indicators.png) no-repeat 0px -1040px } .infoList { MARGIN: 6px 12px } .infoList > LI { PADDING-BOTTOM: 0px !important; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 3px !important } .infoListWrapper .infoList > LI { BORDER-TOP: #cdcdcd 1px dotted } .infoList LI:first-child { BORDER-TOP: medium none } .infoList LI DIV H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .details .infoList { MARGIN-TOP: 0px !important } .infoListFloat { MARGIN: 0px } .infoListFloat LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 3px !important; PADDING-LEFT: 10px !important; PADDING-RIGHT: 10px !important; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 3px !important } .copyQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .linkQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .copyQuestion { BACKGROUND: url(/images/ci/icons/file_copy_ti.png) no-repeat 1px center } .linkQuestion { BACKGROUND: url(/images/ci/icons/file_link_ti.png) no-repeat 1px center } DIV.contentListRight { Z-INDEX: 1000; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 9px; RIGHT: 9px; FONT-WEIGHT: normal; PADDING-TOP: 4px } DIV.contentListRight A { MARGIN-LEFT: 4px; FONT-WEIGHT: bold } DIV.contentListRight SPAN:first-child + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN[style*='none']:first-child + SPAN { DISPLAY: none } DIV.contentListRight SPAN[style*='none']:first-child + SPAN + SPAN { DISPLAY: none } DIV.contentListRight SPAN SPAN { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 9px } DIV.contentListRight STRONG { PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.assessmentHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } DIV.assessmentHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 3px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.assessmentHeader DIV { MARGIN: 3px; COLOR: #555 } .questionShell { WIDTH: 100% } .questionShell > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TBODY > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell > TBODY > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH.labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell .labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell TD.valueCell { WIDTH: 83% } .questionShell .correctAnswer { WIDTH: 2% } .questionShell .field { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 15px; WIDTH: 95%; PADDING-RIGHT: 15px; PADDING-TOP: 0px } .questionShell .field IMG { POSITION: absolute; TOP: 52%; LEFT: -2px } .questionShell .field .vtbegenerated IMG { POSITION: relative; TOP: auto; LEFT: auto } .questionShell .vtbegenerated { WIDTH: 95%; DISPLAY: inline !important } .questionShell TD.valueCell TABLE .vtbegenerated { DISPLAY: inline !important } .takeQuestionDiv .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } #assessmentGradeForm .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } DIV.multiAssign { MARGIN: 3px 0px 9px } DIV.multiAssign UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; LIST-STYLE-IMAGE: none; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI.read { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI P { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } DIV.multiAssign UL LI.label { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.1em; PADDING-LEFT: 0px; WIDTH: 12em; PADDING-RIGHT: 0px; WHITE-SPACE: normal; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #888; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI P SPAN { COLOR: #888 } DIV.multiAssign A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } H3 A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.multiAssign A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.simpleLink { DISPLAY: block; COLOR: #666; FONT-WEIGHT: normal } H3 SPAN.status A.buttonMicro { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } H3 SPAN.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 DIV.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 SPAN.status SPAN { COLOR: #888 } H3 DIV.status SPAN { COLOR: #888 } H3 DIV.status { DISPLAY: inline } .gbtable_header DIV.gbText { text-shadow: 0 -1px 0 #777 } .gbtable THEAD DIV.gbText { text-shadow: 0 -1px 0 #777 } .subActionBar:hover { Z-INDEX: 1000 } .subActionBar DIV.block { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar DIV.button { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar SPAN.block { FLOAT: none } .subActionBar SPAN.button { FLOAT: none } .subActionBar LI.sub { POSITION: relative } .subActionBar FIELDSET LEGEND + DIV.block { BORDER-LEFT: 0px } .subActionBar SELECT { MAX-WIDTH: 180px; VERTICAL-ALIGN: middle } .subActionBar DIV.button { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .subActionBar DIV.last { BORDER-RIGHT: medium none } .subActionBar FIELDSET { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .subActionBar OPTGROUP { FONT-STYLE: normal; MARGIN-TOP: 6px; COLOR: #777; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal } .subActionBar OPTGROUP OPTION { COLOR: #000 } .subActionBar UL LI.sortableSelector A { PADDING-LEFT: 18px } .navPageHeader { TEXT-ALIGN: center; MARGIN: 1em 0px } .navPageHeader H3 { DISPLAY: inline; MARGIN-LEFT: 12px } .navPageHeader SPAN { MARGIN: 0px 6px 0px 0px; COLOR: #888; FONT-WEIGHT: normal } FIELDSET.secondaryActions { FLOAT: right } DIV.secondaryBlock { FLOAT: right } .cellInfoPanel { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #eee 1px solid; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid } .cellStatus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #f6f6f6; FONT-SIZE: 85%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .cellStatus DIV { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 2px } .statusTitle { BACKGROUND: #eee; COLOR: #666 } .statdata { COLOR: #000; OVERFLOW: hidden } .cellStatus DIV.gbTableTimeStamp { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; FLOAT: right; COLOR: #666; PADDING-TOP: 2px } .sortImage { POSITION: absolute; TOP: 9px; LEFT: 6px } .bubble { Z-INDEX: 1000; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } .bubble UL { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #e2eefe; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; OVERFLOW: hidden; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid; PADDING-TOP: 6px } .bubble UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 4px; PADDING-LEFT: 0px; WIDTH: 174px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #666; CLEAR: left; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .bubble UL LI SPAN { WIDTH: 80px; DISPLAY: block; FLOAT: left; COLOR: #666; FONT-WEIGHT: normal; MARGIN-RIGHT: 3px } .bubble UL LI SPAN.icon { WIDTH: 20px; FLOAT: left; OVERFLOW: hidden } .bubble UL LI SPAN.label { WIDTH: 147px; FONT-SIZE: 100%; FONT-WEIGHT: normal } .bubbleStem { POSITION: relative; WIDTH: 190px; HEIGHT: 14px } .bottom .bubbleStem { BOTTOM: 4px } .top .bubbleStem { TOP: -2px } .left .bubbleStem { PADDING-LEFT: 24px } .right .bubbleStem { TEXT-ALIGN: right; RIGHT: 24px } .selectList { Z-INDEX: 100; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #viewList { Z-INDEX: 1000 !important } .selectList LI { Z-INDEX: 101; MARGIN: 0px 4px 0px 0px; FLOAT: left } .selectList .sub A { DISPLAY: block; TEXT-DECORATION: none } .selectList .sub:hover UL { TOP: 20px !important; LEFT: 0px } .selectList .sub UL LI { POSITION: static !important; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .selectList .sub UL LI H4 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #888; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .selectList .sub UL LI H4 { WIDTH: 152px } .selectList .sub UL LI A { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:hover { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:focus { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub A #currentView { BACKGROUND-IMAGE: none } .selectList .sub A #currentSortBy { BACKGROUND-IMAGE: none } .selectList .sub A #currentColSortDir { BACKGROUND-IMAGE: none } UL.selectList LI.sub UL LI.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } UL.selectList LI.sub UL LI.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } DIV.gradeDetails { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 6px } DIV.gradeDetails DIV.label { WIDTH: 15% } SPAN.unstyled { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 0px } @media Print { DIV.hideOnPrint { DISPLAY: none } } DIV.gradeDetailsStep { BORDER-BOTTOM: #ccc 2px solid; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px 0px 6px } .gradeInfoHeader { PADDING-BOTTOM: 3px; MARGIN: 0px -12px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3 { PADDING-BOTTOM: 3px; MARGIN: 0px 4px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 3px } .gradeInfoHeader H3 SPAN { COLOR: #000; FONT-WEIGHT: bold } .gradeInfoHeader H3.root { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #888; COLOR: #fff; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3.root SPAN { COLOR: #fff } UL.gb_currView LI.sub UL LI.favorite A { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } UL.gb_currView LI.sub UL LI.favorite A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } .navStatusButtons .taskbuttondiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.staticFooter DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader { MARGIN: 10px 0px 0px } DIV.staticFooter DIV.details { BORDER-BOTTOM: #ddd 1px solid } .gbColumns_rumble { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ddd 1px solid } .staticHeader { POSITION: relative; ZOOM: 1; CLEAR: both } .staticFooter { POSITION: relative; ZOOM: 1; CLEAR: both } .staticHeader DIV.itemHeaderControl { RIGHT: 0px } .staticFooter DIV.itemHeaderControl { RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { RIGHT: 0px } .staticHeader DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticFooter DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticHeader DIV.itemHeaderControl A { DISPLAY: inline-block } .staticFooter DIV.itemHeaderControl A { DISPLAY: inline-block } UL.gbCategories LI DIV.itemHeaderControl A { DISPLAY: inline-block } UL.dragableHighlight { BORDER-BOTTOM: #999 1px dashed; PADDING-BOTTOM: 3px; MARGIN: 12px -30px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; BORDER-TOP: #999 1px dashed; PADDING-TOP: 12px } UL.gbCategories LI H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticHeader H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticFooter H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } UL.gbCategories LI H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticHeader H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticFooter H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.areaHighlight DIV.container { BACKGROUND: #f9f9f9 } DIV.areaHighlight DIV.bottomRound B { BACKGROUND: #f9f9f9 } UL.dragableHighlight LI H3.item { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .dragableHighlight DIV.details { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } .dbThreadInfo DL { MARGIN: 1em } .dbThreadInfo DT { PADDING-BOTTOM: 0.1em; MARGIN: 0px; PADDING-LEFT: 0.1em; WIDTH: 8em; PADDING-RIGHT: 0.1em; FLOAT: left; COLOR: #999; CLEAR: left; FONT-WEIGHT: bold; PADDING-TOP: 0.1em } .dbThreadInfo DD { PADDING-BOTTOM: 0.1em; MARGIN: 0px 0px 0px 9em; PADDING-LEFT: 0.1em; PADDING-RIGHT: 0.1em; PADDING-TOP: 0.1em } .rating { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 80px; PADDING-RIGHT: 0px; BACKGROUND: url(images/controls.png) no-repeat 0px -20px; HEIGHT: 16px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .star0 { BACKGROUND-POSITION: 0px -20px } .star1 { BACKGROUND-POSITION: 0px -36px } .star2 { BACKGROUND-POSITION: 0px -52px } .star3 { BACKGROUND-POSITION: 0px -68px } .star4 { BACKGROUND-POSITION: 0px -84px } .star5 { BACKGROUND-POSITION: 0px -100px } UL.rating LI { TEXT-INDENT: -999em; CURSOR: pointer } UL.rating LI A { Z-INDEX: 200; POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 0px; TEXT-DECORATION: none; LEFT: 0px } UL.rating LI.one A { LEFT: 0px } UL.rating LI.two A { LEFT: 16px } UL.rating LI.three A { LEFT: 32px } UL.rating LI.four A { LEFT: 48px } UL.rating LI.five A { LEFT: 64px } UL.rating LI A:hover { Z-INDEX: 2; WIDTH: 80px; BACKGROUND: url(images/controls.png) no-repeat -90px -36px; HEIGHT: 16px; OVERFLOW: hidden; LEFT: 0px } UL.rating LI.one A:hover { BACKGROUND-POSITION: -90px -36px } UL.rating LI.two A:hover { BACKGROUND-POSITION: -90px -52px } UL.rating LI.three A:hover { BACKGROUND-POSITION: -90px -68px } UL.rating LI.four A:hover { BACKGROUND-POSITION: -90px -84px } UL.rating LI.five A:hover { BACKGROUND-POSITION: -90px -100px } DIV.collectionViewReadMessageBorder { BORDER-LEFT: #ccc 1px solid; MARGIN-LEFT: 30px } DIV.collectionViewUnreadMessageBorder { BORDER-BOTTOM: #999 3px solid; BORDER-LEFT: #999 3px solid; MARGIN-LEFT: 30px; BORDER-TOP: #999 3px solid; BORDER-RIGHT: #999 3px solid } TABLE.treeframe TR TD { VERTICAL-ALIGN: middle } TABLE.tree_view TR TD IMG { VERTICAL-ALIGN: middle } TABLE.treeframe { MARGIN: 0px } TABLE.treeframe TBODY TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe THEAD TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe TR.high { BACKGROUND-COLOR: transparent } TR.thread TD { VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid } TR.thread TD IMG { VERTICAL-ALIGN: middle } TABLE.unreadmessageborder { BORDER-BOTTOM: #666 3px solid; BORDER-LEFT: #666 3px solid; BORDER-TOP: #666 3px solid; BORDER-RIGHT: #666 3px solid } TABLE.readmessageborder { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TR.show { DISPLAY: table-row } TR.hide { DISPLAY: none } .loadingelipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #ffc; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .gradefield { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 9px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #000; FONT-SIZE: 120%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 4px } .gradefield INPUT { BORDER-BOTTOM: #666 2px solid; BORDER-LEFT: #666 2px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-FAMILY: arial, sans-serif; BACKGROUND: #fff; FONT-SIZE: 110%; VERTICAL-ALIGN: middle; BORDER-TOP: #666 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #666 2px solid; PADDING-TOP: 1px } .gradefield INPUT.inputtypebutton { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; DISPLAY: inline; BACKGROUND: #ededed; HEIGHT: auto; FONT-SIZE: 80%; OVERFLOW: visible; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .gradefield A { FONT-SIZE: 120%; FONT-WEIGHT: bold } .gradefield SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; COLOR: #555; FONT-SIZE: 80%; PADDING-TOP: 0px } .overridegrade { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 3px 0px 3px 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline; FONT-SIZE: 80%; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .overridegrade INPUT.inputtypebutton { MARGIN-TOP: -3px; FONT-SIZE: 70%; VERTICAL-ALIGN: middle; FONT-WEIGHT: normal } DIV.parentmessage { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #ededed; CLEAR: both; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .availability { PADDING-BOTTOM: 1px; FONT-STYLE: italic; MARGIN: 6px 0px; PADDING-LEFT: 3px; WIDTH: auto; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TD.tag_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.msg_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.checkbox_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } TD.prevnextpostarea { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } H3.dbheading { MARGIN-TOP: 0px; DISPLAY: inline; MARGIN-BOTTOM: 0px; FONT-WEIGHT: normal } .dbThread { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa 1px solid; MARGIN: 24px 30px; BACKGROUND: #eee; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 3px 6px #ccc; -webkit-box-shadow: 0 3px 6px #ccc; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbThreadCheckbox { POSITION: absolute } .dbThreadCheckbox INPUT { MARGIN: 10px } .dbThread .dbThreadInfo { PADDING-BOTTOM: 1em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; COLOR: #555; PADDING-TOP: 1em } .dbThreadInfo DL { MARGIN: 0px; WIDTH: 50%; FLOAT: left; FONT-SIZE: 95% } .dbThreadBody { PADDING-BOTTOM: 2em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; BACKGROUND: #fff; PADDING-TOP: 2em } P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbParentPost P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbThreadHeader { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter { PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadHeader .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadFooter .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } .dbThreadHeader .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } DIV.spacerDiv { CLEAR: both } .threadButtons .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .dbThreadInfo .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo P { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.6em } .dbThreadInfo P.detailButtons { FLOAT: right } .dbThreadTree { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MIN-HEIGHT: 80px; MAX-HEIGHT: 200px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #threadArea { PADDING-BOTTOM: 18px; MARGIN: 0px -30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } #message { MARGIN: 0px -30px -20px; BORDER-TOP: #ccc 1px solid } #message_upper { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: -20px -30px 0px } .dbParentPost { BORDER-BOTTOM: #bbb 1px dashed; BORDER-LEFT: #bbb 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -0.6em 0px 1.2em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #bbb 1px dashed; BORDER-RIGHT: #bbb 1px dashed; PADDING-TOP: 0.6em; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbParentPost H4 { MARGIN: 0px 0px 0.6em } .dbParentPost H4 A { WIDTH: 100%; DISPLAY: block } .dbParentPost P { PADDING-BOTTOM: 1.2em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .dbParentPostBody { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; MARGIN-BOTTOM: 0.6em; BACKGROUND: #fcfcfc; CLEAR: both; PADDING-TOP: 0.6em } .loadingElipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: 12px auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #fff7de; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .unreadmessage { FONT-WEIGHT: bold } H3.unreadmessage { FONT-WEIGHT: bold } .unreadmessage.dbheading { FONT-SIZE: 100% } .unread-count { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #128fa8; COLOR: #fff; PADDING-TOP: 2px; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px } #threadArea DIV.checked { BACKGROUND-COLOR: #eee } #threadArea DIV.checked_top { BACKGROUND-COLOR: #eee } #threadArea DIV.checked { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } #threadArea DIV.checked_top { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } DIV.blogContainer { WIDTH: 74%; FLOAT: left } DIV.blogContainer H3.blogHead { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer DIV.blogEntry { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogContainer DIV.blogEntry H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; WORD-WRAP: break-word; BACKGROUND: url(images/small_discussions.gif) no-repeat 8px 9px; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 9px } DIV.blogContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 3px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } DIV.blogContainer DIV.entryDate { COLOR: #444; FONT-SIZE: 95% } DIV.blogContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.blogContainer DIV.entryFooter { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #eaeaea; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.5% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px -12px; DISPLAY: none; BORDER-TOP: #999 1px solid; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.blogContainer DIV.entryFooter DIV.addBlogComment H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .addBlogComment .stepcontent OL { WIDTH: 100% } .addBlogComment .stepcontent OL LI { WIDTH: 100% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment DIV.controls { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.blogContainer UL.entryComments { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eaeaea; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.blogContainer UL.entryComments LI P { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } DIV.blogContainer UL.entryComments LI P.commentDate { Z-INDEX: 10; BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: right; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; MARGIN: 2px 0px -1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bubble_top_thin.gif) no-repeat 15px 100%; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #444; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.blogContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.blogContainer DIV.blogInstructions H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.journalNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.contentAreaNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } .messageCollectionContainer { FLOAT: left } DIV.blogNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { WORD-WRAP: break-word; OVERFLOW: hidden } DIV.blogNav UL.blogArchiveList LI A { WIDTH: 100%; WORD-WRAP: break-word } .indentedWikiList { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 22px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .indentedWikiList IMG { MARGIN: 0px 3px 0px -22px } .blogNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .journalNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .blogNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } .journalNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogNav LI.currentBlog { FONT-WEIGHT: bold } DIV.blogNav LI.currentBlog SPAN { FONT-WEIGHT: normal } DIV.blogContainer .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.blogNav .newItems { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav .gradeStatus { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.blogNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.blogNav UL UL { MARGIN-LEFT: 9px } DIV.blogNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } DIV.journalContainer { WIDTH: 74%; FLOAT: left; MARGIN-RIGHT: 1% } DIV.journalContainer H3.blogHead { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.journalContainer DIV.blogEntry { BORDER-BOTTOM: #eee 3px solid; POSITION: relative; BORDER-LEFT: #eee 0px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 36px; PADDING-RIGHT: 0px; BACKGROUND: url(images/blog_notebook_paper.gif) #fff repeat-y 0px 0px; BORDER-TOP: #eee 3px solid; BORDER-RIGHT: #eee 3px solid; PADDING-TOP: 0px } DIV.journalContainer DIV.blogEntry H4 { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 12px } DIV.journalContainer DIV.entryDate { Z-INDEX: 100; BORDER-BOTTOM: #c0dace 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; PADDING-TOP: 3px } DIV.journalContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; PADDING-TOP: 12px } DIV.journalContainer DIV.entryFooter { PADDING-BOTTOM: 12px; MARGIN: 0px 0px 0px -31px; PADDING-LEFT: 43px; PADDING-RIGHT: 12px; ZOOM: 1; BACKGROUND: url(images/blog_notebook_paper_bot.gif) repeat-x center bottom; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.35% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment { DISPLAY: none; MARGIN-BOTTOM: 6px } DIV.journalContainer UL.entryComments { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #c0dace 1px solid; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.journalContainer UL.entryComments LI P { PADDING-BOTTOM: 0px; MARGIN: 4px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI P.commentDate { COLOR: #444; MARGIN-LEFT: 19px; FONT-SIZE: 90% } DIV.journalContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: url(images/small_blog_comment.gif) no-repeat 0px 3px; COLOR: #000; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 3px } DIV.journalContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.journalContainer DIV.blogInstructions H4 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.blogInstructions P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { OVERFLOW: hidden } DIV.journalNav LI.currentBlog { FONT-WEIGHT: bold } DIV.journalNav LI.currentBlog SPAN { FONT-WEIGHT: normal } .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.journalNav .newItems { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.journalContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.journalNav UL UL { MARGIN-LEFT: 9px } DIV.journalNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } #blogNavLinks { POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 6px; RIGHT: 6px; PADDING-TOP: 0px } .contentAreaPalette UL#aboutBlog LI.currentBlogView { BORDER-BOTTOM: #0078cb 2px solid; BORDER-LEFT: #0078cb 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; MARGIN-BOTTOM: 3px; BACKGROUND: #eff6ff; BORDER-TOP: #0078cb 2px solid; BORDER-RIGHT: #0078cb 2px solid; PADDING-TOP: 2px } .currentBlogView A { COLOR: black; TEXT-DECORATION: none } UL.blogArchiveList { MARGIN-LEFT: 16px } UL.blogArchiveList LI { PADDING-BOTTOM: 4px } #gradeWidget SPAN#blogGradeValue { POSITION: relative; PADDING-LEFT: 6px } #blogGradeValue IMG { POSITION: absolute; TOP: 0px; LEFT: 0px } .contentAreaNav A.itemHead { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 6px } .contentAreaPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } DIV.blogNav .contentAreaPalette:first-child { BORDER-TOP: 0px } DIV.journalNav .contentAreaPalette:first-child { BORDER-TOP: 0px } .rightColumn-narrow .contentAreaPalette:first-child { BORDER-TOP: 0px } .contentAreaPalette UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .contentAreaPalette LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 0px } .contentAreaPalette LI LI { FONT-SIZE: 100% } DIV.iconLegendBlog { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .contentAreaNav A#blogListLink { PADDING-RIGHT: 48px } #loginPageContainer { MARGIN: 0px auto; MIN-HEIGHT: 100%; HEIGHT: auto !important } #loginHeader { POSITION: absolute; TOP: 0px; RIGHT: 0px } #loginHeader UL LI { POSITION: relative; MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; BACKGROUND: #888; VERTICAL-ALIGN: top; BORDER-TOP: 0px } #loginHeader UL LI A { PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 12px; WIDTH: 28px; PADDING-RIGHT: 12px; DISPLAY: inline-block; HEIGHT: 18px; PADDING-TOP: 6px } #loginHeader UL LI:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang H2:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang:hover H2 { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginHeader UL LI:first-child { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI:first-child A { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI IMG { DISPLAY: none } #loginHeader UL LI.font-size:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.contrast:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.font-size A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast:before { CONTENT: "c" } #loginHeader UL LI:hover:before { COLOR: #fff; CURSOR: pointer } #loginHeader UL LI.contrast { BORDER-LEFT: #777 1px solid; MARGIN-LEFT: -4px } #loginLang { POSITION: absolute; TOP: 0px; LEFT: 0px } #loginLang H2 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; BACKGROUND: #888; HEIGHT: 17px; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 4px; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0 } #loginLang H2 SPAN { TEXT-INDENT: -999px; WIDTH: 0px; DISPLAY: inline-block; OVERFLOW: hidden } #loginLang H2:before { FONT: 140%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "W"; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginLang H2:hover:before { COLOR: #fff } #loginLang UL { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 150px; PADDING-RIGHT: 6px; TOP: -1000px; PADDING-TOP: 6px; LEFT: -1000px } #loginLang:hover UL { WIDTH: 175px; TOP: 28px; LEFT: 0px; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0 } #loginLang H2:hover:after { Z-INDEX: 100 } #loginLang:hover H2:after { Z-INDEX: 100 } #loginLang UL LI A { WIDTH: auto } DIV.loginBody { PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BACKGROUND: url(images/Bb_learn_small.png) no-repeat 94px 94px; PADDING-TOP: 260px } DIV.loginBody .receipt { PADDING-BOTTOM: 14px; MARGIN: 0px auto 16px; PADDING-LEFT: 19px; WIDTH: 409px; PADDING-RIGHT: 4px; PADDING-TOP: 12px } #loginBox { TEXT-ALIGN: center } #loginBox UL { MARGIN: 0px auto; WIDTH: 415px } #loginBox LI { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #loginBox LI + LI + LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } #loginBox LI + LI + LI + LI { POSITION: relative; TEXT-ALIGN: right; DISPLAY: block } #loginBox LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #loginBox LI INPUT { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100%; PADDING-RIGHT: 10px; FONT-SIZE: 140%; PADDING-TOP: 10px; -moz-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1) } #loginBox INPUT[type='text'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='password'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='text']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox LI INPUT[type='submit'] { PADDING-BOTTOM: 7px; MARGIN: -31px -9px 0px 12px; PADDING-LEFT: 22px; WIDTH: auto; PADDING-RIGHT: 22px; FONT-SIZE: 130%; PADDING-TOP: 7px } #loginFormTitle { POSITION: absolute; DISPLAY: none } #loginFormText { POSITION: absolute; DISPLAY: none } DIV.portlet #loginFormTitle { POSITION: static; DISPLAY: block } DIV.portlet #loginFormText { POSITION: static; DISPLAY: block } #loginOptions { TEXT-ALIGN: center; MARGIN: 38px auto 26px; WIDTH: 600px } #loginOptions H2 { MARGIN: 10px } #loginOptions P { MARGIN: 10px; COLOR: #444; FONT-SIZE: 0.85em } #loginOptions UL LI { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI.subOption { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } #loginOptions UL LI.subOption A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } .forgot A { BORDER-BOTTOM: #0099b6 1px dotted } #loginOptions UL LI A:hover { BORDER-BOTTOM-STYLE: solid } #loginOptions UL LI.subOption A:hover { BORDER-BOTTOM-STYLE: solid } .forgot A:hover { BORDER-BOTTOM-STYLE: solid } #loginText { TEXT-ALIGN: center; PADDING-BOTTOM: 18px; PADDING-LEFT: 80px; PADDING-RIGHT: 80px; DISPLAY: none; BACKGROUND: #5f6062; BORDER-TOP: #777 1px solid; PADDING-TOP: 12px } #loginText P SPAN { COLOR: #fff; FONT-SIZE: 105%; FONT-WEIGHT: bold } #loginText P { MARGIN: 0px; COLOR: #ededed; FONT-SIZE: 95% } #loginImage { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } #loginImage IMG { MARGIN: 0px auto } #loginAnnouncements { PADDING-BOTTOM: 7px; MARGIN: 0px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 24px } #loginAnnouncements H3 { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 9px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: none; COLOR: #555; FONT-SIZE: 110%; PADDING-TOP: 6px } #loginAnnouncements UL { TEXT-ALIGN: center; MARGIN: 0px auto; WIDTH: 800px } #loginAnnouncements UL LI:before { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:after { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:before { LEFT: 8px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } #loginAnnouncements UL LI:after { RIGHT: 8px; -moz-transform: rotate(2deg); -webkit-transform: rotate(2deg) } #loginAnnouncements LI { POSITION: relative; TEXT-ALIGN: justify; PADDING-BOTTOM: 24px; MARGIN: 0px 0px 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; ZOOM: 1; BACKGROUND: #fff; COLOR: #666; FONT-SIZE: 95%; VERTICAL-ALIGN: top; PADDING-TOP: 18px; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15) } #loginAnnouncements UL LI STRONG:first-child { MARGIN: 0px 0px 12px; FONT-FAMILY: Georgia, serif; FLOAT: left; COLOR: #000; FONT-SIZE: 115% } #loginAnnouncements UL LI STRONG + EM { TEXT-ALIGN: right; MARGIN: 0px; DISPLAY: block; FONT-FAMILY: Georgia; FLOAT: right } #loginAnnouncements UL LI STRONG + EM + BR { DISPLAY: none } #loginAnnouncements UL LI .vtbegenerated { LINE-HEIGHT: 1.38; CLEAR: both } #loginAnnouncements UL LI:first-child { BORDER-TOP: 0px } #loginAnnouncements A { BORDER-BOTTOM: #128fa8 1px dotted } #loginAnnouncements A:hover { BORDER-BOTTOM-STYLE: solid } #loginAnnouncements A:focus { BORDER-BOTTOM-STYLE: solid } #loginHeader H1 { DISPLAY: none } #loginHeader H2 { DISPLAY: none } #loginHeader .productLogo { DISPLAY: none } #loginOptions #gatewayButtonsTitle { DISPLAY: none } #loginOptions #gatewayButtonsInstructions { DISPLAY: none } .login-page #copyright { POSITION: absolute; TEXT-ALIGN: center; MARGIN-TOP: 24px; WIDTH: 900px; BOTTOM: 24px; MARGIN-LEFT: -450px; LEFT: 50% } #loginAnnouncements + #copyright { POSITION: relative } .loginCopyright { WIDTH: 580px !important } .login-page #copyright .logo { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; PADDING-TOP: 0px } .login-page #copyright .newCopyright { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .loginCopyright .legal { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .additionalInfo { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .legal { BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; WIDTH: 24.5em; PADDING-RIGHT: 12px; PADDING-TOP: 3px } #loginPane + #copyright .legal P { MARGIN: 0px; DISPLAY: inline } #loginPane + #copyright .additionalInfo P { MARGIN: 0px; DISPLAY: inline } .login-page .copyrightDetailContents { MIN-HEIGHT: 6.5em; MARGIN-LEFT: -394px; LEFT: 50% } H1.pageTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .caliperTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .discoverTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .unitHomePageTitle { MARGIN: -60px -30px 5px } .caliperTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .unitHomePageTitle H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .discoverTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } .unitHomePageTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .caliperTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .unitHomePageTitle A.browseNoImg { PADDING-BOTTOM: 3px; PADDING-TOP: 2px } .reports { MIN-WIDTH: 810px; BACKGROUND: #f0f0f0 } .reports .navigationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .container { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports #dataCollectionContainer { MARGIN: 0px } .reports DIV[id*='step'] { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .reports UL { MARGIN: 12px } .reports .stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports UL LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; PADDING-TOP: 0px } .reports .label { COLOR: #777 } .reports .field { COLOR: #000 } .reports UL LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .reports H1 { PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 9px } .reports H2 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; PADDING-TOP: 3px } .reports H3 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .reports H3 A IMG { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .reports H3.steptitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; LETTER-SPACING: 0px; COLOR: #fff; FONT-SIZE: 110%; PADDING-TOP: 4px } .reports H4 { PADDING-BOTTOM: 3px; MARGIN: 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; COLOR: #fff; FONT-SIZE: 115%; PADDING-TOP: 3px } .reports H5 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 6px; MARGIN: 12px -12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .reports .attachments { MARGIN: 0px } .reports t.wide { MARGIN: 0px; WIDTH: 100% } #toc { LIST-STYLE-POSITION: outside; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: decimal; MARGIN: 12px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #toc UL { MARGIN: 0px 24px 24px } .toc_div { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; PADDING-BOTTOM: 4px; MARGIN: 6px 18px 18px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid; PADDING-TOP: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .toc_div OL LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports .toc_div H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .toc_div H2 A IMG { MARGIN-RIGHT: 6px } .toc_div A.toggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #f6f6f6; FLOAT: right; FONT-SIZE: 95%; TOP: -4px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .toc_div A.toggle:hover { BACKGROUND: #fff } .backtotop { FLOAT: right } .dateofreport { FLOAT: right } .dateofreport { MARGIN: 6px 18px 12px 0px } .reports .block { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 18px 24px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px 4px 0 4px; -webkit-border-radius: 4px 4px 0 4px } .backtotop { POSITION: relative; MARGIN-BOTTOM: -40px; FLOAT: right; MARGIN-RIGHT: -1px } .backtotop A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f6f6f6; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .backtotop A:hover { BACKGROUND: #fff } .backtotop A IMG { MARGIN-RIGHT: 5px } DIV.fontPreview { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 4px; MARGIN: 3px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 4px } .textareaDiv { PADDING-BOTTOM: 6px } .textareaDiv TABLE { WIDTH: 98% } .textareaDiv TABLE TABLE { WIDTH: 100% } .textareaDiv TABLE TABLE TABLE { WIDTH: 100% } .textareaDiv TEXTAREA { WIDTH: 100%; BORDER-TOP: #666 2px solid } DIV.textToolbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 97.7%; PADDING-RIGHT: 0px; BACKGROUND: #f6f6f6; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } DIV.textToolbar A { WHITE-SPACE: nowrap; FONT-SIZE: 90% } DIV.textToolbar LABEL { PADDING-LEFT: 4px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.textToolbar SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } .previewTextArea { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #999 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 459px; PADDING-RIGHT: 0px; DISPLAY: none; BACKGROUND: #fff; HEIGHT: 112px; OVERFLOW: auto; BORDER-TOP: #999 2px solid; BORDER-RIGHT: #999 2px solid; PADDING-TOP: 0px } .previewTextArea DIV.previewTitle { BORDER-BOTTOM: #eee 2px solid; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; PADDING-TOP: 2px } .previewTextArea DIV.previewTitle A { FLOAT: right } .previewTextArea DIV.previewTitle H6 { MARGIN: 0px; FLOAT: left; FONT-SIZE: 90% } .previewTextArea DIV.previewContent { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .messageContainer H6 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .messageContainer P { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .messageVariable { BORDER-BOTTOM: #ed9 1px solid; BORDER-LEFT: #ed9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; BORDER-TOP: #ed9 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ed9 1px solid; PADDING-TOP: 0px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .myPlaces .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .explore .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .myPlaces A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .myPlaces A:hover { TEXT-DECORATION: underline } .myPlaces A:focus { TEXT-DECORATION: underline } .myPlaces A.home { PADDING-RIGHT: 20px } .myPlaces SPAN.homeIconWrap { POSITION: absolute; BACKGROUND: url(/images/ci/icons/clphomepage/home_ti.gif) no-repeat 0px 0px; TOP: 3px; RIGHT: 3px } .myPlaces SPAN.homeIconWrap IMG { WIDTH: 16px; HEIGHT: 16px } .myPlaces A.unit { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.course { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.ee { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.program { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.workspace { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.unit { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.unit:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.course { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.course:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.ee { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.ee:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.program { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.program:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.workspace { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .myPlaces A.workspace:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .explore A { PADDING-LEFT: 30px; BACKGROUND: url(images/indicators.png) no-repeat 9px -1489px } .explore H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .wizardBody .locationPane { MARGIN: 0px; DISPLAY: block } .wizardBody .breadcrumbs .courseName { DISPLAY: none } .wizardBody .breadcrumbs .courseId { DISPLAY: none } .wizardBody .breadcrumbs { HEIGHT: 24px } .wizardBody .path .root A:before { POSITION: relative; FONT-FAMILY: "Pictos"; COLOR: #aaa; FONT-SIZE: 20px; CONTENT: "H"; TOP: -2px; FONT-WEIGHT: normal } .wizardBody .modeSwitchWrap { POSITION: absolute; TOP: 15px; RIGHT: 12px } .wizardBody { BACKGROUND: #fff } .wizardBody .container { POSITION: static } .wizardBody #contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 210px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 10px; PADDING-TOP: 12px } .wizardBody FORM#contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .topRound { DISPLAY: none } .wizardBody > .locationPane > .contentPaneWide > .topRound { POSITION: absolute; DISPLAY: block; TOP: 60px } .wizardBody #pageTitleDiv IMG { DISPLAY: none } .wizardBody .reqfield { MARGIN: 0px 0px 6px -6px; FLOAT: none } .wizardBody #containerdiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardHead H2 { MARGIN: 0px; FONT-SIZE: 110% } .wizardHead .helphelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .contentPaneWide > .contentBox > .pageTitle H1 { FONT-SIZE: 150% } .wizardBody .containerWizard { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .wizardBody .contentPaneWide > .contentBox > .pageTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 18px; MARGIN: -13px -12px 24px -224px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .wizardBody .contentPaneWide > .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .wizardHead { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; MARGIN-BOTTOM: 24px; BACKGROUND: #efede3; PADDING-TOP: 12px } .wizardBody #dataCollectionContainer { MARGIN: 0px } .wizardHead + .container { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px 4px 4px 4px } .wizardBody .containerWizard .container { HEIGHT: auto } .wizardBody .containerWizard .locationPane { MARGIN-TOP: 12px } .wizardBody UL.contentList LI DIV.details { OVERFLOW-X: visible } .wizardFinishText { MARGIN: 6px 0px 150px } .wizardSubmit { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px -79px -210px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #ccc 1px solid; TOP: 18px; PADDING-TOP: 18px } .wizardSubmit INPUT[name='cancel'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='Previous'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='finish'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='cancel']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='cancel']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[type=image] { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .wizardSubmit SPAN { MARGIN: 0px 18px; COLOR: #999 } .wizardSubmit SPAN STRONG { COLOR: #000 } .wizardBottomRound B.inner { BACKGROUND: #fff1c5 } .wizardBottomRound B.outer { BACKGROUND: #fff1c5 } .wizardBottomRound B.middle { BACKGROUND: #fff1c5 } .navigationPaneWizard { PADDING-BOTTOM: 0px; MARGIN-TOP: 63px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .navigationPaneWizard DIV B.inner { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.middle { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.outer { MARGIN-RIGHT: 0px !important } .navigationPaneWizard .navPalette { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .wizardBody #courseMenuPalette { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .wizardBody #courseMenuPalette DIV.navPaletteContent { -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navigationPaneWizard H2 { PADDING-BOTTOM: 6px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; LETTER-SPACING: 0.2em; COLOR: #00add0; FONT-SIZE: 90%; FONT-WEIGHT: 100; PADDING-TOP: 6px } .navigationPaneWizard .navPalette SPAN { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #ededed; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .navigationPaneWizard .navPalette LI { PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #777; FONT-SIZE: 95%; PADDING-TOP: 6px } .navigationPaneWizard .navPalette UL LI:first-child { POSITION: relative; BORDER-TOP: medium none } .navigationPaneWizard .navPalette UL LI.currentStep { COLOR: #000; FONT-WEIGHT: bold } .navigationPaneWizard .navPalette UL LI.currentStep:after { POSITION: absolute; LINE-HEIGHT: 0.5; COLOR: #999; FONT-SIZE: 18px; CONTENT: "?"; TOP: 9px; RIGHT: 0px } .containerWizard .controlPanel .navPaletteContent A { PADDING-BOTTOM: 4px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(../../../images/ci/ng/portlet_expand.gif) no-repeat 2px 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 4px } .containerWizard .navPaletteContent H2 { MARGIN: 0px; FONT-SIZE: 105% } .containerWizard .navPaletteContent H2 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px } .containerWizard .controlpanel LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #logDetail { OVERFLOW-Y: auto; HEIGHT: 300px } .totalMsgs { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 14px !important; PADDING-RIGHT: 6px !important; COLOR: #555; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 11px !important } .latestEntry { FLOAT: right !important; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal } .log-summary { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } .log-summary A { MARGIN: 0px 3px; DISPLAY: inline-block } .log-summary LI { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .sis-seperator { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .log-summary LI:first-child { BORDER-LEFT: medium none } .log-type { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; COLOR: #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .log-summary .log-type { FONT-SIZE: 120% } .log-error { BACKGROUND: #ef3e36 } .log-warning { BACKGROUND: #fcb040 } .log-message { BACKGROUND: #0b9444 } .log-debug { BACKGROUND: #00aeef } .log-header { MARGIN: 0px 0px 9px } .attachments .log-type { MIN-WIDTH: 6em; TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; LETTER-SPACING: 0.1em; FONT-SIZE: 90%; FONT-WEIGHT: normal } .table-scroll-wrapper TABLE { MARGIN: 0px } .table-scroll-wrapper TBODY { OVERFLOW-Y: auto; HEIGHT: 200px; OVERFLOW: hidden } .row-selected { BACKGROUND-COLOR: #e2eefe !important } .log-search > DIV > DIV { PADDING-BOTTOM: 0px !important; MARGIN: 6px 6px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 9px !important; DISPLAY: inline-block; BORDER-RIGHT: #bbb 1px dotted; PADDING-TOP: 0px !important } .answerSavedButton { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavingButton { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .timeUpWarning { COLOR: #cf0c0c } .thirtySecondWarning { COLOR: #cf0c0c } .oneMinuteWarning { COLOR: #cf0c0c } .fiveMinuteWarning { COLOR: #000 } .halfTimeWarning { COLOR: #000 } .headerForProgressBar { Z-INDEX: 100; POSITION: relative } DIV.assessmentPortletBlock H3.headerForProgressBar A { BACKGROUND: none transparent scroll repeat 0% 0% } .progressBar { Z-INDEX: 90; POSITION: absolute; BOTTOM: 0px; TOP: 0px; LEFT: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .progressBarStyle { BACKGROUND: #b6f796 } .progressBarStyleOneMin { BACKGROUND: #ffe79f } .progressBarStyleThirtySec { BACKGROUND: #ffafaf } .progressBarStyleOvertime { BACKGROUND: #ffafaf } .timerBar { BORDER-BOTTOM: #fff 2px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: #fff 2px solid; PADDING-BOTTOM: 3px; MARGIN: 4px 14px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; FONT-SIZE: 105%; BORDER-TOP: #fff 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 2px solid; PADDING-TOP: 3px; -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 9px; -webkit-border-radius: 9px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timer STRONG { Z-INDEX: 100; POSITION: relative } .timerText { PADDING-BOTTOM: 6px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; PADDING-TOP: 6px } .liveArea.timer { PADDING-BOTTOM: 9px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 6px } .questionStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 3px } .timedQuestionStatus { PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 2px groove; PADDING-TOP: 3px } .completionContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .questionStatus .questionStatusLabel { MARGIN: 0px; LETTER-SPACING: 0px; FONT-WEIGHT: normal } .questionStatus .questionStatusLabel A { COLOR: #666; TEXT-DECORATION: none } .questionStatus .questionStatusLabel A:hover { COLOR: #000; TEXT-DECORATION: underline } .timerMessage { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 2px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timeLabel { COLOR: #666; FONT-WEIGHT: normal } .timeValue { FONT-SIZE: 120% } .timer-collapsed.timer-toggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 0px 2px; PADDING-TOP: 0px } .timer-expanded.timer-toggle { POSITION: absolute; WIDTH: 20px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 3px 4px; HEIGHT: 20px; TOP: 5px; LEFT: 4px } .timerBar .timerLabel:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .timerMessage:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .progressBarStyleOvertime + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "t" } .progressBarStyleOneMin + .timerLabel:before { COLOR: #7f6b2f; CONTENT: "!" } .progressBarStyleThirtySec + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "!" } .timerMessage:before { CONTENT: "t" } .halfTimeWarning:before { COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } #collabRubricList .collabRubricListTypeContainer { MARGIN: 4px } .rubricGradingTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricGradingTable TH { COLOR: #45586f } .rubricTable TH { COLOR: #45586f } .rubricTable THEAD TH { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .rubricTable THEAD TH:first-child { BORDER-LEFT: medium none } .rubricGradingTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .rubricGradingTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH LABEL { FONT-WEIGHT: normal } .rubricTable TBODY TH INPUT { FONT-WEIGHT: normal } .rubricTable TBODY TH > SPAN { FONT-WEIGHT: normal } .rubricGradingTable .rubricCellHeader { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rubricGradingTable .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricSelectedValue { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricCellDescription { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingList .radioLabel { PADDING-BOTTOM: 3px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT-WEIGHT: bold; PADDING-TOP: 3px } .rubricGradingTable .rubricCellContainer { POSITION: relative; MIN-HEIGHT: 30px; OVERFLOW: hidden } .rubricCellRadio { POSITION: absolute; TOP: 6px } .rubricGradingList .rubricCellRadio { POSITION: absolute; TOP: 2px } .selectedCell .rubricCellRadio { TOP: -60px } .pointContainer { FONT-WEIGHT: bold } .rubricGradingTable .feedback { DISPLAY: none } .rubricGradingTable .selectedCell .feedback { DISPLAY: block } .rubricGradingTable .feedback TEXTAREA { WIDTH: 99% } .rubricGradingTable .selectedCell { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px; COLOR: #000; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .3); box-shadow: 0 0 6px rgba(0, 0, 0, .3) } .rubricGradingList .selectedCell { BACKGROUND: url(images/button_ok_ti.png) no-repeat 4px 3px } .rubricGradingTable TBODY TD:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #d1eaef; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .rubricTable TBODY TD:hover { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricGradingTable TBODY .selectedCell:hover { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px } .rubricCriteriaHead { WIDTH: 15% !important } .rubricInlineEdit { POSITION: relative } .rubricInlineEdit > DIV { Z-INDEX: 100; POSITION: absolute; WHITE-SPACE: nowrap } .gridActionBar { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gridActionBar .data TH { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .stepcontent .gridActionBar LI { PADDING-BOTTOM: 0px; MARGIN-BOTTOM: 0px } .rubricGradingTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricSelectedValue { DISPLAY: block; FONT-SIZE: 130%; FONT-WEIGHT: bold } .rangePercent { COLOR: #666; FONT-SIZE: 90%; FONT-WEIGHT: normal } .selectedCell .rangeValue { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #aaa 1px dashed; PADDING-TOP: 6px } .rubricControlContainer .containerTabs { MARGIN: 0px } .rubricControlContainer .contentAreaBlock { MARGIN: 0px } .rubricGradingList .rubricGradingCell { POSITION: relative; MARGIN: 1px 0px; OVERFLOW: hidden } .rubricGradingList .feedback { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .rubricGradingList .feedback TEXTAREA { WIDTH: 99% !important } .rubricGradingList H4 { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .rubricGradingList H4 SPAN { POSITION: absolute; PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 0px; RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 1px } .rubricGradingTotalPoints { MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingOverride { PADDING-BOTTOM: 6px; MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingComments .editor { MARGIN-TOP: 20px } .rubricGradingComments .rubricVtbeLabel { DISPLAY: block; MARGIN-BOTTOM: 10px } .alignmentPanel TR { COLOR: #555 } .alignmentPanel .gradingRubric { BACKGROUND-COLOR: #ffd; COLOR: #000 } .alignmentPanel .gradingRubric .title { FONT-WEIGHT: bold } .alignmentPanel UL.nav SPAN { PADDING-LEFT: 3px } .rubricPanel THEAD TR TH { WHITE-SPACE: normal !important } .rubricPopupContainer .rubricControlContainer { MARGIN: 0px 0px 10px } .rubricPopupContainer .onlyOne.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .onlyOne.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .last.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricGradingCell .pointRangeEdit { DISPLAY: none } .selectedCell.rubricGradingCell .pointRangeView { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .last.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricGradingTable .pointRangeView { DISPLAY: block; FONT-WEIGHT: bold } .selectedCell.rubricGradingCell .pointRangeEdit { DISPLAY: block; FONT-WEIGHT: bold } TD[align='right'] { TEXT-ALIGN: right !important } TD[align='left'] { TEXT-ALIGN: left !important } TR[align='right'] { TEXT-ALIGN: right !important } TR[align='left'] { TEXT-ALIGN: left !important } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: small; PADDING-TOP: 0px !important } .vtbegenerated P { MARGIN-BOTTOM: 4px } .vtbegenerated ADDRESS { FONT-STYLE: italic; DISPLAY: block } .vtbegenerated IMG { FILTER: alpha(opacity = auto) !important; opacity: auto } .vtbegenerated UL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated OL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated LI { LIST-STYLE-POSITION: inside } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated H5 { FONT-SIZE: 90% } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 35px } .vtbegenerated UL[type='circle'] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type='square'] LI { LIST-STYLE-TYPE: square } .vtbegenerated UL[type='disc'] LI { LIST-STYLE-TYPE: disc } .inlineVtbegenerated { DISPLAY: inline } .tree .treeNodeIcon { WIDTH: 16px; HEIGHT: 16px } .navPaletteContent .submenu LI.favorite { PADDING-LEFT: 10px } .navPaletteContent UL[id*='files_groupContents'] .favorite { PADDING-LEFT: 0px } .columnPalette H5 { MARGIN: 6px 0px 3px; COLOR: #555 } .blogNav .stepcontent { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .button-split-left { DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #f6f6f6 2px solid; -webkit-border-bottom-right-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -moz-border-radius-bottomright: 0 } .button-split-left:hover { BORDER-RIGHT: #555 2px solid } .button-split-right { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FLOAT: left; MARGIN-LEFT: -1px; PADDING-TOP: 4px; -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0 } .full_evaluation_view_component H3 { MARGIN: 18px 0px 3px } .full_evaluation_view_component H3:first-child { MARGIN: 9px 0px 3px } .gradeSide_panel .container { POSITION: relative; PADDING-RIGHT: 45% } .gradeSide_panel .contentListPlain { MARGIN: -20px 0px 0px -30px } .collabContainer { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .gradeSide { WIDTH: 36%; TOP: 20px; RIGHT: 20px } .gradeSide { BORDER-BOTTOM: #555 3px solid; POSITION: absolute; BORDER-LEFT: #555 3px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; BOTTOM: auto; PADDING-RIGHT: 4px; BACKGROUND: #888 0px 0px; BORDER-TOP: #555 3px solid; TOP: 20px; RIGHT: 20px; BORDER-RIGHT: #555 3px solid; PADDING-TOP: 4px; LEFT: auto; border-radius: 4px } .collapseTabsData A.close { TOP: 4px; RIGHT: 4px } .evalColumn .taskbuttondiv { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .gradeItemsWrapper { OVERFLOW: visible } .gradeSide .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .evalColumn { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 18px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2) } .evalColumn .liveArea { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .column-wrapper { POSITION: relative; OVERFLOW: visible !important } .column-nav { WIDTH: 190px; FLOAT: left } .colspan2 { POSITION: relative; MARGIN-LEFT: 190px } .colspan2#standards-column { BORDER-LEFT: #ccc 3px double; PADDING-BOTTOM: 12px; MARGIN-BOTTOM: -41px; TOP: -20px; LEFT: -3px } .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; COLOR: #555; PADDING-TOP: 18px } .column-nav .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; PADDING-TOP: 18px } .pageHead-2 H2 { MARGIN: 0px; FONT-SIZE: 120%; FONT-WEIGHT: normal } .pageHead-2 SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .pageHead-2 SPAN:first-child { BORDER-RIGHT: #aaa 1px dotted } .column-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .column-nav-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .category-column .column-nav-inner { BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee',endColorstr = '#cccccc',GradientType = 1); BORDER-LEFT: medium none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #column_lrn_std_category { BORDER-RIGHT: #ccc 3px double } .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 18px !important; BACKGROUND: #fff; PADDING-TOP: 6px !important } #standards-column .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 6px !important } .column-nav .column-inner { DISPLAY: none } .navmenu-list-item { BORDER-BOTTOM: #777 1px solid; POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 21px; DISPLAY: block; WORD-WRAP: break-word; PADDING-TOP: 12px } .navmenu-list > LI:hover { BACKGROUND: #777 } .navmenu-list > LI > A { COLOR: #f6f6f6; FONT-SIZE: 110%; FONT-WEIGHT: 200; TEXT-DECORATION: none } .navmenu-list A SPAN { DISPLAY: none } .navmenu-list .active { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active:hover { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active A { COLOR: #000 } .column2-nav .category-column .navmenu-list LI > A { PADDING-LEFT: 24px } .column-wrapper .actionBar > UL > LI > A { PADDING-BOTTOM: 8px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; COLOR: #333; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 8px } .column-wrapper .actionBar > UL > LI > A:hover { BACKGROUND: #ccc } .standards .button-2 { COLOR: #444 } .standards .button-2:hover { BORDER-BOTTOM-COLOR: #aaa; BORDER-TOP-COLOR: #aaa; BORDER-RIGHT-COLOR: #aaa; BORDER-LEFT-COLOR: #aaa } .category-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .category-column .navmenu-list-item { BORDER-BOTTOM-COLOR: #d6d6d6; BORDER-TOP-COLOR: #d6d6d6; BORDER-RIGHT-COLOR: #d6d6d6; BORDER-LEFT-COLOR: #d6d6d6 } .category-column .navmenu-list-item A { COLOR: #333 } .category-column .navmenu-list-item:hover { FILTER: alpha(opacity = 100) !important; BACKGROUND-COLOR: #e0e0e0; opacity: 1 } .category-column .navmenu-list .active { Z-INDEX: 1001; BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; RIGHT: -4px; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; -moz-box-shadow: -4px 3px 5px #DDD; -webkit-box-shadow: -4px 3px 5px #DDD; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #DDD; border-radius: 4px 0 0 4px } .navmenu-list .inactive { FILTER: alpha(opacity = 75); opacity: .75 } .standards .actionBar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 32px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .actionBar#actionbarlrn_std_doc { BORDER-BOTTOM-COLOR: #777 } .actionBar#actionbarlrn_std_doc > UL > LI > A { COLOR: #f0f0f0; -moz-border-radius: 4px 0 0 0; -webkit-border-radius: 4px 0 0 0; border-radius: 4px 0 0 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .actionBar#actionbarlrn_std_doc > UL > LI > A:hover { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_doc > UL > LI:hover > A { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_category > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std_category > UL > LI > A:hover { BACKGROUND: #ccc; COLOR: #000 } .actionBar#actionbarlrn_std { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 9px 0px 20px; BACKGROUND: #f0f0f0; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .actionBar#actionbarlrn_std > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std > UL > LI > A:hover { BACKGROUND: #ddd; COLOR: #000 } .standards .actionBar > UL { MARGIN: 0px; HEIGHT: 32px } .standards .actionBar UL LI { FLOAT: left } .standards .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .standards .searchbar .selectedItem LABEL SPAN { FONT-SIZE: 90% } .navmenu-actions-1 { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #f0f0f0; BORDER-TOP: #ccc 1px solid; TOP: 4px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px; LEFT: -4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .active .navmenu-actions-1 { LEFT: -4px } .navmenu-actions-2 { POSITION: absolute; PADDING-BOTTOM: 1px !important; PADDING-LEFT: 1px !important; PADDING-RIGHT: 1px !important; TOP: 22px; PADDING-TOP: 1px !important; LEFT: -4px } .navmenu-list-item .contextMenuContainer { POSITION: absolute; MARGIN-TOP: -8px; TOP: 50%; RIGHT: 9px; opacity: 0 } .navmenu-list .active .contextMenuContainer { opacity: 1 } .navmenu-list .active:hover .contextMenuContainer { opacity: 1 } .navmenu-list-item:hover .contextMenuContainer { opacity: .5 } .navmenu-list-item:hover .contextMenuContainer:hover { opacity: 1 } .standards .column-1 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-3 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 1%; WIDTH: 46%; PADDING-RIGHT: 1%; PADDING-TOP: 0px } .standards .column-3 { MARGIN: 0px; WIDTH: 31% } .standardForm > H3 + DIV.column-2 { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standards .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .standards .stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standardForm { POSITION: absolute !important; TOP: 38px; LEFT: 6px } .inline-form-title { MARGIN: 6px 0px } .docs-column .column-nav-inner { BORDER-BOTTOM: #777 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#999999',endColorstr = '#777777',GradientType = 1); BORDER-LEFT: #777 1px solid; MIN-HEIGHT: 400px; BACKGROUND: #999; COLOR: #fff; BORDER-TOP: #777 1px solid; BORDER-RIGHT: medium none; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px } .docs-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .iconToggleWrapper { ZOOM: 1; DISPLAY: inline-block } .iconToggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px -5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .quickAddPal .iconToggle { MARGIN: 0px 0px 0px -1px } .iconToggle:first-child { MARGIN: 0px; -moz-border-radius: 2px 0 0 2px; -webkit-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px } .iconToggle:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #e8f0fe; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .stepcontent .iconToggle .fieldHelp { Z-INDEX: 100; BORDER-BOTTOM: #555 1px solid; POSITION: absolute; MIN-WIDTH: 200px; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #fff; FONT-SIZE: 90%; BORDER-TOP: #555 1px solid; TOP: 100%; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 3px; LEFT: 0px; -moz-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .iconToggle:hover .fieldHelp { Z-INDEX: 10; DISPLAY: block } .iconToggleWrapper .selectedItem { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #cdcdcd; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset } .iconToggle LABEL SPAN { DISPLAY: none; COLOR: #555 } .selectedItem LABEL SPAN { DISPLAY: inline } .selectedItem .fieldHelp STRONG { DISPLAY: none } #lrn_std .panelHead { PADDING-BOTTOM: 9px; PADDING-LEFT: 25px; PADDING-RIGHT: 16px; PADDING-TOP: 9px } #lrn_std .sHeader { MARGIN-LEFT: -21px } #lrn_std .contextMenuContainer { } .lb-content .itemTray { POSITION: absolute } .lb-drawer { PADDING-BOTTOM: 54px } .lb-noTitleBar #pageTitleBar { DISPLAY: none } .lb-locationPane { MARGIN: 0px } .lb-locationPane #contentPanel { MARGIN: 0px } .lb-contentBox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none; border-radius: 0 } .overSoftLimit { COLOR: red } .autocomplete_pos { TOP: 15px !important; LEFT: 0px !important } .autocomplete { Z-INDEX: 5; BORDER-BOTTOM: #888 1px solid; POSITION: absolute; BORDER-LEFT: #888 1px solid; BACKGROUND-COLOR: #fff; WIDTH: 250px; BORDER-TOP: #888 1px solid; BORDER-RIGHT: #888 1px solid; box-shadow: 0 0 3px rgba(0, 0, 0, .3) } .autocomplete .selected { BACKGROUND-COLOR: #ccc } .autocomplete UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; CURSOR: pointer; PADDING-TOP: 2px } .quickAddPal .field { POSITION: relative } .quickAddPal .noLabelField { POSITION: relative } .renameCategory { Z-INDEX: 1200; POSITION: absolute; BOTTOM: 0px; DISPLAY: block; TOP: 0px; RIGHT: 0px; LEFT: 0px } .renameCategory A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } LI SPAN.labelMenuItem { COLOR: #000; FONT-WEIGHT: bold } #toolSettingsWrapper_table TBODY TR { BORDER-TOP: #ddd 1px dashed } #toolSettingsWrapper_table TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #toolSettingsWrapper_table TBODY TR.rowTitle TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle { BACKGROUND-COLOR: #ebebeb; BORDER-TOP: #ddd 1px solid } #toolSettingsWrapper_table TBODY TR.rowTitle H3 { MARGIN: 0.5em 0px } .tooltipContainer { POSITION: relative; TEXT-DECORATION: none } .tooltip { DISPLAY: none; WORD-WRAP: break-word } .tooltip-top { DISPLAY: none; WORD-WRAP: break-word } .tooltipContainer:hover .tooltip { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltipContainer:hover .tooltip-top { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltip:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip-top:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 1px; COLOR: #3b3b3b; LEFT: 1px; -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); -khtml-transform: rotate(90deg) } .tooltip-top:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: auto; COLOR: #4f4f4f; TOP: 0px; LEFT: -2px; -moz-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -o-transform: rotate(-90deg); -khtml-transform: rotate(-90deg) } .paddedMetadata { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 6px !important; PADDING-TOP: 6px !important } .quickAddPal .colorlist LI A.transparent { BACKGROUND-IMAGE: url(/images/swatches/transparent.gif); BACKGROUND-POSITION: -1px -1px; COLOR: transparent } .quickAddPal .colorlist LI A.transparent:hover { BACKGROUND-POSITION: -2px -2px } DIV.checkListActions { PADDING-BOTTOM: 10px } .quickAddPal .colorlist LI A.transparent:active { BACKGROUND-POSITION: -3px -3px } .quickAddPal .colorlist LI A.transparent:focus { BACKGROUND-POSITION: -3px -3px } .theme_scrollbar_content H2 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; FONT-STYLE: italic; MARGIN: -35px 0px 15px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; LETTER-SPACING: 0.06em; COLOR: #333; FONT-SIZE: 130%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #wizard .theme_scrollbar_content H2 { COLOR: #ccc } .theme-switch-wrapper { DISPLAY: inline-block } .theme-switch { POSITION: relative; MARGIN: -14px 9px -14px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-RIGHT: #ccc 1px solid } .theme-switch .sub > A { PADDING-BOTTOM: 14px; LINE-HEIGHT: 1; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; OVERFLOW: hidden; PADDING-TOP: 14px } .theme-switch .sub > A:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .theme-switch .sub:hover > A { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .dummy-switch.theme-switch:hover { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .theme-switch A SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch SPAN SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:after { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM-COLOR: #999; TOP: -8px } .theme-switch .nav .sub UL { WIDTH: 180px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .theme-switch .nav .sub UL LI H4 { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#999999,endColorstr=#333333); PADDING-BOTTOM: 4px; MARGIN-TOP: 5px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #fff; PADDING-TOP: 4px } .theme-switch .nav .sub UL A { PADDING-BOTTOM: 4px; PADDING-LEFT: 18px; WIDTH: 142px; PADDING-RIGHT: 4px; FONT-SIZE: 95%; PADDING-TOP: 4px } BODY DIV.lb-overlay { BACKGROUND: url(images/reorder_bg.png) #bbb -10px 0px } #wizard { Z-INDEX: 1100; BORDER-BOTTOM: #666 1px solid; POSITION: fixed; BORDER-LEFT: #666 1px solid; WIDTH: 900px; BACKGROUND: #555; MARGIN-LEFT: -450px; BORDER-TOP: #666 1px solid; TOP: 5px; BORDER-RIGHT: #666 1px solid; LEFT: 50%; box-shadow: 0 11px 20px rgba(0, 0, 0, .7); border-radius: 9px; background-clip: content-box } #wizard H1 { BORDER-BOTTOM: #666 1px solid; PADDING-BOTTOM: 10px; MARGIN: 1px 0px 0px 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #494949; COLOR: #bbb; FONT-SIZE: 110%; PADDING-TOP: 10px; box-shadow: 0 -1px 0 #363636 inset; border-radius: 9px 9px 0 0; text-shadow: 0 -1px 0 #111 } #wizard .accordion-wrapper { MARGIN: 0px 30px; BACKGROUND: none transparent scroll repeat 0% 0%; border-radius: 0 0 6px 6px } #wizard .accordion_toggle { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_content { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_toggle { POSITION: relative; TEXT-ALIGN: right; PADDING-RIGHT: 60px; COLOR: #aaa; FONT-SIZE: 90%; BORDER-TOP: #444 1px solid; CURSOR: pointer; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .accordion_toggle .accordionTabLabel { FLOAT: left; COLOR: #eee; FONT-SIZE: 125%; TEXT-DECORATION: none } #wizard .accordion_toggle SPAN#selectedStructureName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle SPAN#selectedThemeName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle_help { TEXT-ALIGN: left } #wizard .accordion_toggle A#unselectStructure { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectTheme { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectStructure:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectTheme:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectStructure:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle A#unselectTheme:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle:first-child { BORDER-TOP: 0px; box-shadow: none } #wizard .accordion_content { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #3d3b3b; HEIGHT: 245px; OVERFLOW: hidden; PADDING-TOP: 0px } #wizard .accordion_content A { COLOR: #1ec8ea } #wizard .accordion_toggle_addstructure .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-1.png) no-repeat } #wizard .accordion_toggle_choosetheme .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-2.png) no-repeat } #wizard .accordion_toggle_help .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-4.png) no-repeat } #wizard .right-image { POSITION: absolute; WIDTH: 30px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center center; HEIGHT: 30px; TOP: 6px; RIGHT: 8px; opacity: .5 } #wizard .previewArea { PADDING-BOTTOM: 5px; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #474747; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 235px; MAX-HEIGHT: 235px; FONT-SIZE: 85%; OVERFLOW: hidden; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 5px } .course_welcome_help_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } .selected.course_welcome_help_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.course_welcome_help_scrollbar_handle { } .course_welcome_help_container { POSITION: relative } #wizard .previewArea .introduction { WIDTH: 80% } #wizard .previewArea .helplink { WIDTH: 80% } #wizard .previewArea .customHelp { WIDTH: 80% } #wizard .previewArea .conclusion { POSITION: absolute; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #3d3b3c; PADDING-LEFT: 10px; WIDTH: 20%; BACKGROUND-ATTACHMENT: fixed; PADDING-RIGHT: 10px; COLOR: #bbb; FONT-SIZE: 90%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } #wizard .previewArea .customHelp { PADDING-BOTTOM: 1em; MARGIN-TOP: 0.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; COLOR: #bbb; FONT-SIZE: 90%; BORDER-TOP: #555 1px dotted; PADDING-TOP: 1em } #wizard .previewArea H3 { MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 3px; FONT-SIZE: 140%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN { TEXT-TRANSFORM: uppercase; DISPLAY: block; COLOR: #888; FONT-SIZE: 65%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN SPAN { TEXT-TRANSFORM: lowercase; FONT-STYLE: italic; DISPLAY: inline; FONT-SIZE: 95% } #wizard .helplink .easylist { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN-TOP: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 0px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } #wizard .helplink .easylist LI { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; WIDTH: 46%; PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #555 2px dotted; PADDING-TOP: 3px } #wizard .helplink .easylist LI H3 { FONT-FAMILY: Georgia, serif } #wizard .helplink .easylist LI P { PADDING-LEFT: 0px } #wizard .helplink .easylist LI P { COLOR: #ddd } #wizard .log-summary { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; box-shadow: 0; border-radius: 0 } #wizard .conclusion H3 { TEXT-TRANSFORM: uppercase; MARGIN-TOP: 10px; COLOR: #888; FONT-SIZE: 100%; FONT-WEIGHT: normal } #wizard .conclusion UL { MARGIN-BOTTOM: 15px } #wizard .conclusion UL LI { MARGIN-BOTTOM: 5px } #wizard .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #wizard .content-inner { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #3d3b3b; BORDER-TOP: 0px; BORDER-RIGHT: 0px } #wizard .introtext { PADDING-BOTTOM: 1em; LINE-HEIGHT: 1.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 2em; FLOAT: left; COLOR: #ccc; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 1em } #wizard .introtext LABEL { FONT-STYLE: italic; DISPLAY: none; MARGIN-LEFT: 15px; FONT-SIZE: 85% } #wizard .introtext INPUT { FONT-STYLE: italic; FONT-FAMILY: Georgia, serif; MARGIN-BOTTOM: 10px; FONT-SIZE: 200% } #wizard .introtext .courseNameAndDescription TABLE TABLE { WIDTH: 99%; MARGIN-LEFT: 7px } #wizard .introtext TEXTAREA { FONT-SIZE: 110% } #wizard .introtext INPUT { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext TEXTAREA { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext .courseNameAndDescription { WIDTH: 60%; PADDING-RIGHT: 0.8em; FLOAT: left; MARGIN-RIGHT: 1em; BORDER-RIGHT: #666 3px dotted } #wizard .introtext P { LINE-HEIGHT: 1.4em; FONT-STYLE: italic; MARGIN: 55px 20px 0px 0px; FONT-FAMILY: Georgia, serif; FONT-SIZE: 90% } .themes .horizontal-block { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 8px; MARGIN: 35px 10px 0px; PADDING-LEFT: 0px; WIDTH: 230px; PADDING-RIGHT: 0px; HEIGHT: 184px; BORDER-TOP: #ddd 1px solid; CURSOR: pointer; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 8px } #wizard .themes .horizontal-block { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555 } .help .horizontal-block { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 250px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .themes .horizontal-block IMG { MARGIN: 0px auto; WIDTH: 203px; HEIGHT: 152px } .theme-selector { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 26px; PADDING-RIGHT: 26px; PADDING-TOP: 10px } .structure .theme-selector { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .theme-selector SPAN { FONT-SIZE: 110%; FONT-WEIGHT: bold } #wizard .selected .theme-selector SPAN { COLOR: #333 } .selected .theme-selector SPAN { COLOR: #fff } .structure .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } .themes .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } #wizard .structure .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard .themes .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected A { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard LI.selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .themes .selected.horizontal-block:hover { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } DIV.scroller { HEIGHT: 200px; OVERFLOW: hidden } .themes DIV.scroller { HEIGHT: 245px } DIV.scroller DIV.section { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: 780px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 225px; OVERFLOW: hidden; PADDING-TOP: 0px } .horizontal-block { TEXT-ALIGN: left; PADDING-BOTTOM: 6px; MARGIN: 8px 0px 0px 7px; PADDING-LEFT: 18px; WIDTH: 167px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: none; HEIGHT: 214px; FONT-SIZE: 80%; VERTICAL-ALIGN: top; PADDING-TOP: 3px; border-radius: 5px } .horizontal-block UL { MARGIN-LEFT: 4px } .structure .horizontal-block { HEIGHT: 178px; CURSOR: pointer } #wizard .gotocourse { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; PADDING-RIGHT: 2px; COLOR: #ccc; BORDER-TOP: #444 1px solid; PADDING-TOP: 10px; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .gotocourse LABEL { WIDTH: auto; DISPLAY: inline-table } #wizard .gotocourse LABEL SPAN { DISPLAY: block; COLOR: #999; FONT-SIZE: 10px } #wizard .gotocourse .button-2 { BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 8px; BORDER-TOP-COLOR: #333; MARGIN-BOTTOM: 7px; BORDER-RIGHT-COLOR: #333; FONT-SIZE: 115%; BORDER-LEFT-COLOR: #333; MARGIN-RIGHT: 25px; PADDING-TOP: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 1px 1px 0 #fefefe inset, -1px -1px 0 #888 inset; text-shadow: 0 1px 0 #BBB } #wizard .gotocourse .button-2:hover { BORDER-BOTTOM-COLOR: #222; BORDER-TOP-COLOR: #222; BORDER-RIGHT-COLOR: #222; BORDER-LEFT-COLOR: #222 } #wizard .number { POSITION: relative; LINE-HEIGHT: 1; FLOAT: left; COLOR: #999; FONT-SIZE: 150%; VERTICAL-ALIGN: middle; TOP: -1px; FONT-WEIGHT: bold; MARGIN-RIGHT: 18px } #wizard .accordion_toggle_help .number { TEXT-INDENT: -9999px; WIDTH: 20px; BACKGROUND: url(/images/ci/icons/step_star_light.png) no-repeat; HEIGHT: 20px; MARGIN-RIGHT: 14px; opacity: .4; background-size: 100% 100% } #wizard .gotocourse .secondary.button-2 { COLOR: #555; FONT-WEIGHT: normal; text-shadow: none } #wizard .gotocourse #welcomePageCancelButton { MARGIN-RIGHT: 10px } #wizard A.wizard-close:before { FONT: 150% "Utilicons"; CONTENT: "X" } #wizard A.wizard-close { POSITION: absolute; COLOR: #888; TOP: 8px; RIGHT: 13px } .theme_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 2px } #wizard .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { } .theme_scrollbar_content { TEXT-ALIGN: center; HEIGHT: 245px; OVERFLOW: hidden } .structure_scrollbar_container { POSITION: relative } .structure_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } DIV.courseStructureDescriptions .structure_scrollbar_track { MARGIN: 1px 3% 1px 0px; TOP: 10px } #wizard .structure_scrollbar_track { MARGIN: 1px 0px; TOP: 0px } #wizard .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } #wizard .selected.structure_scrollbar_handle:hover { BACKGROUND-COLOR: #777 } .selected.structure_scrollbar_handle { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle { } .selected.structure_scrollbar_handle:hover { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle:hover { } .structure_scrollbar_content { MARGIN-TOP: 30px; HEIGHT: 370px; OVERFLOW: hidden } #wizard .structure_scrollbar_content { MARGIN-TOP: 22px; HEIGHT: 200px } .courseStructureOuterDiv { MIN-WIDTH: 800px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 10px; PADDING-TOP: 0px } #wizard .courseStructureOuterDiv { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #3d3b3b; MIN-HEIGHT: 250px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .courseStructureNameScroller { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #fff; MARGIN: 10px 0px 0px; WIDTH: 170px; FLOAT: left; HEIGHT: 400px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; box-shadow: -1px 0 4px #CCC; border-top-left-radius: 4px; border-bottom-left-radius: 4px } #wizard .courseStructureNameScroller { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0px; HEIGHT: 220px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none; border-radius: 0 } .courseStructureNameScroller OL LI { MARGIN-BOTTOM: 3px; CURSOR: pointer } .courseStructureNameScroller OL LI:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .courseStructureNameScroller OL LI.courseStructureChoiceLink:focus { OUTLINE-COLOR: #fff; -moz-box-shadow: inset 0 0 6px #128FA8; -webkit-box-shadow: inset 0 0 6px #128FA8; box-shadow: inset 0 0 6px #128FA8 } #wizard .courseStructureNameScroller OL LI { MARGIN-LEFT: 13px } .courseStructureHeader { PADDING-BOTTOM: 5px; FONT-STYLE: italic; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #999; FONT-SIZE: 85%; CURSOR: default !important; PADDING-TOP: 15px } #structureDescription H3 { TEXT-ALIGN: center; MARGIN-TOP: 110px; FONT: italic 100% Georgia, serif } #wizard .courseStructureHeader { PADDING-LEFT: 0px; COLOR: #aaa; PADDING-TOP: 0px; text-shadow: 0 0 1px #222 } .courseStructureChoiceLink { PADDING-BOTTOM: 5px; PADDING-LEFT: 33px; PADDING-RIGHT: 5px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 5px } #wizard .courseStructureChoiceLink { PADDING-LEFT: 20px } .courseStructureChoiceSelected { BACKGROUND-COLOR: #f5f4ef; COLOR: #3d3b3b; border-top-left-radius: 4px; border-bottom-left-radius: 4px } .courseStructureChoiceSelected A { COLOR: #333 } #wizard .courseStructureChoiceSelected A { COLOR: #333 } .courseStructureDescriptions { POSITION: relative; HEIGHT: 400px; MARGIN-LEFT: 170px } #wizard .courseStructureDescriptions { POSITION: relative; MARGIN: 10px 0px 10px 170px; HEIGHT: 225px } .courseStructureDescriptionAndMenu { BORDER-BOTTOM: #ccc 1px solid; POSITION: static; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; BACKGROUND-COLOR: #f5f4ef; MARGIN: 10px 0px 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 20px; WIDTH: 95%; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 400px; COLOR: #333; FONT-SIZE: 12px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px } #wizard .courseStructureDescriptionAndMenu { BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; MARGIN-TOP: 0px; MIN-HEIGHT: 225px; WIDTH: 635px; HEIGHT: 225px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .courseStructureDescriptions P { MARGIN-BOTTOM: 15px } .courseStructureDescriptions H3 { TEXT-ALIGN: center; MARGIN-TOP: 30px; MARGIN-BOTTOM: 0px; COLOR: #666; FONT-SIZE: 120% } .courseStructureDescriptions BR { DISPLAY: none } .structureIncludeSampleContentCheck { BACKGROUND-COLOR: #f4f1e3; PADDING-LEFT: 15px; WIDTH: 100%; DISPLAY: block; HEIGHT: 40px; MARGIN-LEFT: -20px; PADDING-TOP: 10px; box-shadow: -10px 0 6px #CCC inset } #wizard .structureIncludeSampleContentCheck { Z-INDEX: 1; POSITION: absolute; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 7px; WIDTH: 630px; PADDING-RIGHT: 0px; HEIGHT: 25px; MARGIN-LEFT: -12px; BORDER-TOP: #ccc 1px solid; TOP: 185px; PADDING-TOP: 7px; box-shadow: 0 0 2px #999; border-radius: 5px 5px 0 0 } #wizard .accordion_content .useSelectedStructure { MARGIN-RIGHT: 15px } #wizard .accordion_content .useSelectedStructure { COLOR: #333 } #wizard .accordion_content .useExistingMenu { COLOR: #333 } #wizard .courseStructureDescriptions .structure_scrollbar_track { RIGHT: 15px } .courseStructureMenu { POSITION: relative; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; MARGIN: 0px 0px 0px 20px; MIN-HEIGHT: 400px; PADDING-LEFT: 10px; WIDTH: 200px; PADDING-RIGHT: 10px; FLOAT: right; OVERFLOW: hidden; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-top-right-radius: 5px; border-bottom-right-radius: 5px } #wizard .courseStructureMenu { PADDING-BOTTOM: 35px; MIN-HEIGHT: 265px } .courseStructureMenu .listCm .courseMenu A { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .courseStructureMenu .listCm .courseMenu .divider { PADDING-BOTTOM: 6px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 6px } .courseStructureMenu .topRound { DISPLAY: none } .courseStructureMenu .actionBarMicro { DISPLAY: none } .courseStructureMenu .bottomRound { DISPLAY: none } .courseStructureMenu #courseMenuPalette DIV.navPaletteContent { PADDING-TOP: 0px } .arrow_guide { POSITION: absolute; WIDTH: 156px; BACKGROUND: url(/images/ci/icons/left-arrow-point.png) no-repeat; HEIGHT: 34px; LEFT: 3% } #wizard .arrow_guide { TOP: 81% } .courseStructureDescription IMG { TEXT-ALIGN: center; MARGIN: 10px 0px 5px } .courseStructureDescription P.existing_text { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription P.existing_icon { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription A.button-3 { COLOR: #333; MARGIN-RIGHT: 15px } .courseStructureDescription A.existingstructure.unselectStructureButton { MARGIN-TOP: 5px; MARGIN-RIGHT: 37% } .courseStructureNameScroller .current-value { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png); BORDER-BOTTOM: #555 1px solid; POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 17px; WIDTH: 130px; BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-POSITION: 0px 20%; FONT-SIZE: 85%; TOP: 5px; FONT-WEIGHT: normal; LEFT: 15px; box-shadow: 0 -1px 0 #333 inset } #wizard .courseStructureNameScroller .current-value { TOP: 0px } .noSectionDivider { BORDER-TOP: medium none } .dividerRow { PADDING-BOTTOM: 0px !important; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 5px !important } .keyboardAccess .selectArrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .selectArrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess LABEL { DISPLAY: inline-block; FONT: italic 100% Georgia, serif; MARGIN-BOTTOM: 3px; COLOR: #777 } .keyboardAccess .selectArrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .keyboardAccess .y-arrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .access-reorder-block { MIN-WIDTH: 200px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 0px } .access-reorder-block SELECT { MIN-WIDTH: 200px } .y-arrows { TEXT-ALIGN: center; CLEAR: both } .brandingImgWrap IMG[src*='header_institution'] { POSITION: absolute; MAX-HEIGHT: 60px; TOP: 0px; LEFT: 12px } .sample-content { FONT: 113% Georgia, serif; BACKGROUND: url(images/bg_chalk_dark_s.png) 0px 0px } .sample-content .item H3 SPAN { FONT: bold 120% Georgia, serif; COLOR: #25bfcb !important } .sample-content TABLE { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated UL { MARGIN: 4px 0px } .sample-content .vtbegenerated P { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sample-content .vtbegenerated BR { HEIGHT: 1px } .sample-content.liItem:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } .buildList > LI.sample-content:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } DIV.loading-overwrite { Z-INDEX: 10000; POSITION: absolute; TEXT-ALIGN: center; WIDTH: 100%; BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) white no-repeat center 100px; HEIGHT: 100%; TOP: 0px; LEFT: 0px; opacity: 100 } DIV.loading-overwrite SPAN { POSITION: relative; FONT-SIZE: 200%; TOP: 10px } .sample-content DL { MARGIN: 0px } .sample-content DT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 9em; PADDING-RIGHT: 0px; FLOAT: left; FONT-WEIGHT: bold; PADDING-TOP: 0px } .sample-content DD { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 10em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .dueDate { COLOR: #063 } .dueDatePassed { COLOR: #900 } .inventory_paging A.inactive { opacity: .4 } .inactive { opacity: .4 } .linkLeftSpacesp { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .codeFragment { FONT-FAMILY: "Courier New" } .filteredTextHeader { BORDER-BOTTOM: 1px dotted; TEXT-ALIGN: center; BORDER-LEFT: 1px dotted; PADDING-BOTTOM: 5px; LINE-HEIGHT: 150%; BACKGROUND-COLOR: lightyellow; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline-block; BORDER-TOP: 1px dotted; BORDER-RIGHT: 1px dotted; PADDING-TOP: 5px } .filteredText { BACKGROUND-COLOR: lightyellow; COLOR: red } .floatedReceipt { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 10px !important; LINE-HEIGHT: 1.3em; BACKGROUND-COLOR: #fcfbd1 !important; MARGIN: 0px 0px 6px; PADDING-LEFT: 10px !important; WIDTH: 300px; PADDING-RIGHT: 22px !important; FONT-FAMILY: Helvetica, serif; COLOR: #333 !important; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal !important; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 10px !important; box-shadow: 1px 1px 5px #666; border-radius: 4px } .floatedReceipt A.close:before { } .floatedReceipt A.close:hover:before { } .floatedReceipt EM { FONT-WEIGHT: bold } .floatedReceipt A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: url(none); COLOR: #333 !important; BORDER-TOP: 0px; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important } .floatedReceipt A:hover { TEXT-DECORATION: none !important } .floatedReceipt#receipt_floated_theme { Z-INDEX: 1001; POSITION: absolute; TOP: 50px; RIGHT: 45px } .floatedReceipt#receipt_floated_courseMenu { Z-INDEX: 1201; POSITION: absolute; LEFT: 180px } .floatedReceipt .arrow { BORDER-BOTTOM: transparent 15px dashed; POSITION: absolute; BORDER-LEFT: transparent 15px dashed; HEIGHT: 0px; FONT-SIZE: 0px; BORDER-TOP: transparent 15px dashed; BORDER-RIGHT: transparent 15px dashed } .pointTop.floatedReceipt .arrow { BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #fcfbd1; TOP: -30px; LEFT: 58% } .pointLeft.floatedReceipt .arrow { BORDER-RIGHT-STYLE: solid; BORDER-RIGHT-COLOR: #fcfbd1; TOP: 10px; LEFT: -30px } .nav .sub .flyout .slideoutLink { FONT-WEIGHT: bold } .nav .sub .slideoutLink IMG { WIDTH: 16px; BACKGROUND: url(images/utilicons_arrows_dark.png) 16px 16px; FLOAT: right; HEIGHT: 16px } .nav .sub .slideoutLink-active { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; box-shadow: -3px 0 3px rgba(0, 0, 0, .3); border-radius: 0 } .nav .sub .slideoutLink-active IMG { BACKGROUND: url(images/utilicons_arrows_dark.png) 0px 16px } .slideoutOpen { MARGIN-LEFT: -1px !important; BORDER-RIGHT: #ccc 1px solid } .statusFilter { POSITION: relative; PADDING-LEFT: 8px; FONT-SIZE: 13px } LABEL.statusFilter { TOP: 0px } SPAN.statusFilter { TOP: 1px } .collapsible TABLE.reportcard TR TD:first-child { DISPLAY: block !important } #loginRedirectProviders H3 { MARGIN: 10px } #loginRedirectProviderList LI { MARGIN: 0px 10px 5px 0px; DISPLAY: inline-block } #loginRedirectProviderList LI IMG { WIDTH: 16px; HEIGHT: 16px } .paletteItems LABEL { MAX-WIDTH: 90%; WORD-WRAP: break-word } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems .inactive { MARGIN: 0px; opacity: .4 } DIV.comments DIV DIV.collabComments { BACKGROUND-COLOR: white; MAX-HEIGHT: 100px; OVERFLOW: auto !important } DIV.studentGradesCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetEditTabCommentPreview { WIDTH: 110px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetHistTabCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } .tooltip_show:focus { POSITION: static; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible } .radio-list { PADDING-LEFT: 20px } .radio-list LI { PADDING-BOTTOM: 4px !important; TEXT-INDENT: -26px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .radio-list LI INPUT[type=radio] { VERTICAL-ALIGN: bottom; MARGIN-RIGHT: 6px } .radio-list LI .button-4 { MARGIN-LEFT: 4px } .cartMode.csPicker #copyright { DISPLAY: none } .details .key-valueTable + .vtbegenerated { MARGIN-TOP: 12px !important } .ondemand-module { POSITION: relative; MARGIN: 14px 3px } .ondemand-module DIV { MARGIN-BOTTOM: 12px } .ondemand-module DIV A { PADDING-BOTTOM: 10px; PADDING-LEFT: 4%; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 10px; border-radius: 5px } .ondemand-module DIV A:hover { BACKGROUND: #00b3be; TEXT-DECORATION: none; box-shadow: 0 0 12px #2cb673; text-shadow: 0 -1px 0 rgba(0, 0, 0, .4) } .ondemand-module DIV A > SPAN { DISPLAY: block; MARGIN-BOTTOM: 3px; FONT-SIZE: 80%; FONT-WEIGHT: normal } .ondemand-module SPAN.release { BORDER-BOTTOM: #00add0 1px solid; POSITION: absolute; BORDER-LEFT: #00add0 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 13px; PADDING-RIGHT: 10px; BACKGROUND: #9dddea; COLOR: #000; FONT-SIZE: 85%; BORDER-TOP: #00add0 1px solid; TOP: -7px; RIGHT: -4px; BORDER-RIGHT: #00add0 1px solid; PADDING-TOP: 3px; border-radius: 12px 12px 12px 12px; text-shadow: 0 1px 0 rgba(255, 255, 255, .3) } .ondemand-module P { MARGIN: 0px 13px; FONT: italic 93%/1.45 Georgia, serif; COLOR: #666 }

@import url( theme1.css?v=9.1.90132.0 ); @import url( theme2.css?v=9.1.90132.0 );

BODY { HEIGHT: auto } HTML { HEIGHT: auto } BODY { MIN-WIDTH: 0px } DIV.topGlobalLinks { MIN-WIDTH: 0px } .navigationPane { DISPLAY: none } .contentPane { MARGIN: 0px 14px } .questionDiv .submission_text { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainerLarge { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry H4 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry .entryText { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogContainer .entryComments LI P { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .journalNav UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE THEAD TH { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TBODY TD { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TD DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .modeSwitch { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } A.cmimg-small { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .fileInputWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .field { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .noLabelField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .liveArea .stepcontent TEXTAREA { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonLibrary { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .previewTextArea { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .rating LI A:hover { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .dbThreadTree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .nav .sub UL LI A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmdiv A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .menumini A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .timediv UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentTags { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .auto_complete UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-header H2 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-content { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myPlacesContent { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myavatar { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble .detailComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeDetailsStep { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tableOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .inventory { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .brandingImgWrap { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList-read .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentListPlain .contentListRight + .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .landingPageColumn UL LI UL.datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .panelNested { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .module { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .moduleHeading { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .collapsible { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .imgWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .scroll_div { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .eudModule .eudModule-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .styledModule-dark .module-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet .itemGroups LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet UL.hierarchyList LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .customBanner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .loggedInAs { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #loggedInUserName { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .topTabs .hotItems UL.hotLinks { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmImg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemTray .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemIconHolder A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .title { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .high { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .navPaletteContent A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu H3 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .expTreeContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeContainer .tree LI H4 + UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #pickerPalette .tree > LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeScrollable { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #logDetail { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .table-scroll-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gridOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeItemsWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeSide .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV UL LI DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.comments DIV DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.studentGradesCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetEditTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetHistTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .u_scrollPanel-vertical { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentScore { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable_header DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gc_info UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI SPAN { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cumulativeSelectItems .selected_items .itemList { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .flynav UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .overrow DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .weightField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .criteriaItem { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important }

/* ================================================================== * General i18n functions * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ // internal methods function _escape(string) { // ?= does not seem to work return (''+string).replace(/^'|([^\\])'/g, "$1\\'").replace(/\n/g, "&crlf;"); } function _unescape(string) { return string.replace(/&crlf;/g, "\n"); } function _substitute(string, parameters) { for ( var key in parameters) { if ( parameters.hasOwnProperty( key ) ) { string = eval( "string.replace(/\\{" + key + "\\}/g, '" + _escape(parameters[key]) + "')" ); } } return _unescape(string); } // Public methods: these methods are instance methods of dynamically generated // Javascript bundle objects. See Java class blackboard.platform.intl.JsResource // and Perl module CI::L10n::JsResource. // Get a string from a resource bundle function i18n_get_string(key) { return this[key]; } // Get string and perform substitution using positions (arrays) or names (object) function i18n_get_formatted_string(key, parameters) { var string = this.getString(key); if (string && parameters) { // Convert to object keyed by string representation of array index if ( parameters.constructor.toString() == [].constructor.toString() ) { var array = parameters; parameters = {}; for (var i = 0; i < array.length; ++i) { parameters[''+i] = array[i]; } } string = _substitute(string, parameters); } return string; }

/* Prototype JavaScript framework, version 1.7 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key], type = typeof value; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError(); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (object.hasOwnProperty(property)) { results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toJSONEx: toJSON, // Leaving this in here to assist in debugging odd stringify issues in IE if we see them again in other contexts. toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); } function unescapeHTML() { return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#<Enumerable:' + this.toArray().inspect() + '>'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); }, hasResponder: function( callback ) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { return true; } }); return false; } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState]; // quite a high number of Interactive events can be generated on some browsers // triggering a memory issue in FF3 when building the response object. So if there is no // registered listener, quick return // see https://bugzilla.mozilla.org/show_bug.cgi?id=453709 if ( state == 'Interactive' ) { if ( this.notListeningToInteractive ) { if ( this.notListeningToInteractive.value ) return; } else { this.notListeningToInteractive = new Object(); this.notListeningToInteractive.value = ( !this.options['onInteractive'] && !Ajax.Responders.hasResponder( state ) ); if ( this.notListeningToInteractive.value ) return; } } var response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $s(element) { if (Object.isString(element)) { return document.getElementById(element); } return element; } function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { function shouldUseCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement('<input name="x">'); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCache(tagName, attributes) ? cache[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.idCounter = 1; Element.cache = { }; Element._purgeElement = function(element) { var uid = element._prototypeUID; if (uid) { Element.stopObserving(element); element._prototypeUID = void 0; delete Element.Storage[uid]; } } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, // only extend the element if it is a string - otherwise we don't need to extend the element remove: function(element) { if (Object.isString(element)) { element = $(element); } if (element.parentNode) { element.parentNode.removeChild(element); } return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = "<option value=\"test\">test</option>"; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = "<link>"; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var purgeElement = Element._purgeElement; var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) { while (element.firstChild) { element.removeChild(element.firstChild); } var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); nodes.each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(), value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType == 1) elements.push(Element.extend(element)); if (elements.length == maximumLength) break; } return elements; }, // Collect items without extending them all: rawRecursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) { elements.push(element); } return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === 1) { results.push(Element.extend(child)); } child = child.nextSibling; } return results; }, // Find the immediate descendents of the given element without extending them all rawImmediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).rawNextSiblings()); return []; }, previousSiblings: function(element, maximumLength) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, // Find the next siblings without actually extending them all rawNextSiblings: function(element) { return $(element).rawRecursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Prototype.Selector.find(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.previousSiblings(), expression, index); } else { return element.recursivelyCollect("previousSibling", index + 1)[index]; } }, next: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.nextSiblings(), expression, index); } else { var maximumLength = Object.isNumber(index) ? index + 1 : 1; return element.recursivelyCollect("nextSibling", index + 1)[index]; } }, select: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); }, adjacent: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element.parentNode).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $s(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, makePositioned: function(element) { element = $s(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source), delta = [0, 0], parent = null; element = $(element); if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className', forProp = 'for', el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'), f; el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if (element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(), fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html, force) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; var workaround = false; if (t) workaround = true; else if (force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = '&nbsp;' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) { div = div.firstChild; } } else { div.innerHTML = html; } return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')); Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); if (document.documentElement.hasAttribute) { Element.hasAttribute = function(element, attribute) { return element.hasAttribute(attribute); }; } else { Element.hasAttribute = Element.Methods.Simulated.hasAttribute; } Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = Element.Storage.UID++; uid = element._prototypeUID; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); }, purge: function(element) { if (!(element = $(element))) return; var purgeElement = Element._purgeElement; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } }); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = element.getStyle(property); } if (value === null) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value); var whole = null; var position = element.getStyle('position'); var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) { return number; } return number + 'px'; } function isDisplayed(element) { var originalElement = element; while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._prepared) return; var element = this.element; if (isDisplayed(element)) { this._prepared = true; return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = element.getStyle('position'), width = element.getStyle('width'); if (width === "0px" || width === null) { element.style.display = 'block'; width = element.getStyle('width'); } var context = (position === 'fixed') ? document.viewport : element.parentNode; element.setStyle({ position: 'absolute', visibility: 'hidden', display: 'block' }); var positionedWidth = element.getStyle('width'); var newWidth; if (width && (positionedWidth === width)) { newWidth = getPixelValue(element, 'width', context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getPixelValue(element, 'width', context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._prepared = true; }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._prepared = false; }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#<Element.Layout>"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } // Implementing a new method to avoid retesting the entire application with clientHeight function getDimensionsEx(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display != 'none') { // Safari bug return {width: element.clientWidth, height: element.clientHeight}; } return getDimensions(element); } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { element = $(element); var valueT = 0, valueL = 0, docBody = document.body; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getDimensions: getDimensions, getDimensionsEx: getDimensionsEx, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); Prototype._original_property = window.Sizzle; /*! * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; var origContext = context = context || document; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), soFar = selector; while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) selector += parts.shift(); set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { var ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { var ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { var cur = parts.pop(), pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { throw "Syntax error, unrecognized expression: " + (cur || selector); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set, match; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.match[ type ].exec( expr )) != null ) { var filter = Expr.filter[ type ], found, item; anyFound = false; if ( curLoop == result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr == old ) { if ( anyFound == null ) { throw "Syntax error, unrecognized expression: " + expr; } else { break; } } old = expr; } return curLoop; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part, isXML){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag && !isXML ) { part = part.toUpperCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part, isXML){ var isPartStr = typeof part === "string"; if ( isPartStr && !/\W/.test(part) ) { part = isXML ? part : part.toUpperCase(); for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName === part ? parent : false; } } } else { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context, isXML){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { if ( !inplace ) result.push( elem ); } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ for ( var i = 0; curLoop[i] === false; i++ ){} return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); }, CHILD: function(match){ if ( match[1] == "nth" ) { var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return /h\d/i.test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 == i; }, eq: function(elem, i, match){ return match[3] - 0 == i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } } return true; } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; case 'nth': var first = match[2], last = match[3]; if ( first == 1 && last == 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first == 0 ) { return diff == 0; } else { return ( diff % first == 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value != check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 ); } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return 0; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } (function(){ var form = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = "<a name='" + id + "'/>"; var root = document.documentElement; root.insertBefore( form, root.firstChild ); if ( !!document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = "<a href='#'></a>"; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "<p class='TEST'></p>"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; if ( !seed && context.nodeType === 9 && !isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ var div = document.createElement("div"); div.innerHTML = "<div class='test e'></div><div class='test'></div>"; if ( div.getElementsByClassName("e").length === 0 ) return; div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) return; Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ){ elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ) { elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } var contains = document.compareDocumentPosition ? function(a, b){ return a.compareDocumentPosition(b) & 16; } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; var isXML = function(elem){ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; while (element) { if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { return Element.extend(element); } element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { if (eventName === "beforeunload") { responder = function(event) { Event.extend(event, element); return handler.call(element, event); }; } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K, translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { return (translations[eventName] || eventName); }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (!registry) return element; if (!eventName) { registry.each( function(pair) { var eventName = pair.key; stopObserving(element, eventName); }); return element; } var responders = registry.get(eventName); if (!responders) return element; if (!handler) { responders.each(function(r) { stopObserving(element, eventName, r.handler); }); return element; } var i = responders.length, responder; while (i--) { if (responders[i].handler === handler) { responder = responders[i]; break; } } if (!responder) return element; if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } var _getElementsByClassName = instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return _getElementsByClassName( parentElement || document.body, className ); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#<Selector: " + this.expression + ">"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); /* * * Copyright (c) 2007 Andrew Tetlaw * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * * * * FastInit * http://tetlaw.id.au/view/javascript/fastinit * Andrew Tetlaw * Version 1.4.1 (2007-03-15) * Based on: * http://dean.edwards.name/weblog/2006/03/faster * http://dean.edwards.name/weblog/2006/06/again/ * Help from: * http://www.cherny.com/webdev/26/domloaded-object-literal-updated * */ var FastInit = { onload : function() { if (FastInit.done) { return; } FastInit.done = true; for(var x = 0, al = FastInit.f.length; x < al; x++) { FastInit.f[x](); } }, addOnLoad : function() { var a = arguments; for(var x = 0, al = a.length; x < al; x++) { if(typeof a[x] === 'function') { if (FastInit.done ) { a[x](); } else { FastInit.f.push(a[x]); } } } }, listen : function() { if (/WebKit|khtml/i.test(navigator.userAgent)) { FastInit.timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(FastInit.timer); delete FastInit.timer; FastInit.onload(); }}, 10); } else if (document.addEventListener) { document.addEventListener('DOMContentLoaded', FastInit.onload, false); } else if(!FastInit.iew32) { if(window.addEventListener) { window.addEventListener('load', FastInit.onload, false); } else if (window.attachEvent) { return window.attachEvent('onload', FastInit.onload); } } }, f:[],done:false,timer:null,iew32:false }; /*@cc_on @*/ /*@if (@_win32) FastInit.iew32 = true; document.write('<script id="__ie_onload" defer src="' + ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); document.getElementById('__ie_onload').onreadystatechange = function(){if (this.readyState == 'complete') { FastInit.onload(); }}; /*@end @*/ FastInit.listen(); /** * Only include the contents of this file once - for example, if this is included in a lightbox we don't want to re-run * all of this - just use the loaded version. (i.e. rerunning would clear page.bundle which would remove all the * language strings for the current page) */ if (!window.page) { var page = {}; page.isLoaded = false; /** * Utility for adding and using localized messages on the page. */ page.bundle = {}; page.bundle.messages = {}; page.bundle.addKey = function( key, value ) { page.bundle.messages[key] = value; }; page.bundle.getString = function( key /*, arg1, arg2, ..., argN */ ) { var result = page.bundle.messages[key]; if ( !result ) { return "!!!!" + key + "!!!!!"; } else { if ( arguments.length > 1 ) { for ( var i = 1; i < arguments.length; i++ ) { result = result.replace( new RegExp("\\{"+(i-1)+"\\}","g"), arguments[i] ); } } return result; } }; /** * Provides support for lazy initialization of javascript behavior when a certain * event happens to a certain item. */ page.LazyInit = function( event, eventTypes, initCode ) { var e = event || window.event; var target = Event.element( event ); // This is because events bubble and we want a reference // to the element we registered the handlers on. target = page.util.upToClass(target, "jsInit"); for (var i = 0; i < eventTypes.length; i++ ) { target['on'+eventTypes[i]] = null; } eval( initCode ); //initCode can reference "target" }; /** * Evaluates any <script> tags in the provided string in the global scope. * Useful for evaluating scripts that come back in text from an Ajax call. * If signalObject is passed then signalObject.evaluatingScripts will be set to false when done. */ page.globalEvalScripts = function(str, evalExternalScripts, signalObject) { //Get any external scripts var waitForVars = []; var scriptVars = [ { script: 'bb_htmlarea', variable: ['HTMLArea'] }, { script: 'w_editor', variable: ['WebeqEditors'] }, { script: 'wysiwyg.js', variable: ['vtbe_attchfiles'] }, { script: 'gradebook_utils.js', variable: ['gradebook_utils'] }, { script: 'rubric.js', variable: ['rubricModule'] }, { script: 'gridmgmt.js', variable: ['gridMgmt'] }, { script: 'calendar-time.js', variable: ['calendar'] }, { script: 'widget.js', variable: ['widget'] }, { script: 'vtbeTinymce.js', variable: ['tinyMceWrapper'] }, { script: 'WhatsNewView.js', variable: ['WhatsNewView'] }, { script: 'tiny_mce.js', variable: ['tinymce','tinyMCE'] } ]; if (evalExternalScripts) { var externalScriptRE = '<script[^>]*src=["\']([^>"\']*)["\'][^>]*>([\\S\\s]*?)<\/script>'; var scriptMatches = str.match(new RegExp(externalScriptRE, 'img')); if (scriptMatches && scriptMatches.length > 0) { $A(scriptMatches).each(function(scriptTag) { var matches = scriptTag.match(new RegExp(externalScriptRE, 'im')); if (matches && matches.length > 0 && matches[1] != '') { var scriptSrc = matches[1]; if (scriptSrc.indexOf('/dwr_open/') != -1) { // dwr_open calls will ONLY work if the current page's webapp == the caller's webapp, // otherwise we'll get a session error. THis will happen if a lightbox is loaded with // dynamic content from a different webapp (say /webapps/blackboard) while the main page // is loaded from /webapps/discussionboard. To avoid this, rewrite the url to use the // webapp associated with the current page. var newparts = scriptSrc.split('/'); var oldparts = window.location.pathname.split('/'); newparts[1] = oldparts[1]; newparts[2] = oldparts[2]; scriptSrc = newparts.join('/'); } var scriptElem = new Element('script', { type: 'text/javascript', src: scriptSrc }); var head = $$('head')[0]; head.appendChild(scriptElem); for ( var i = 0; i < scriptVars.length; i++ ) { if ( scriptSrc.indexOf( scriptVars[i].script ) != -1 ) { scriptVars[ i ].variable.each( function( s ) { waitForVars.push( s ); } ); break; } } } }); } } page.delayAddExtractedScripts(str.extractScripts(), waitForVars, signalObject); }; // Evaluate any inline script - delay a bit to give the scripts above time to load // NOTE that this is not guaranteed to work - if there are delays loading and initializing // the scripts required then code in these scripts might fail to find the required variables // If it is for our code then updating waitForVars appropriately per script will work page.delayAddExtractedScripts = function (scripts, waitForVars, signalObject) { var count = 0; if (waitForVars.length === 0) { page.actuallyAddExtractedScripts(scripts, signalObject); } else { new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( page.allVariablesDefined(waitForVars) ) { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } } else // give up if it takes longer than 5s to load { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } }.bind(this), 0.05 ); } }; page.allVariablesDefined = function(vars) { var result = true; for ( var i = 0; i < vars.length; i++ ) { if ( !window[vars[i]] ) { result = false; break; } } return result; }; page.actuallyAddExtractedScripts = function (scripts, signalObject) { var scriptExecutionDelay = 0; if( signalObject ) { scriptExecutionDelay = signalObject.delayScriptExecution; } scripts.each(function(script) { if ( script != '' ) { if ( Prototype.Browser.IE && window.execScript ) { ( function() { window.execScript( script ); }.delay( scriptExecutionDelay ) ); } else { ( function() { var scriptElem = new Element( 'script', { type : 'text/javascript' } ); var head = $$( 'head' )[ 0 ]; script = document.createTextNode( script ); scriptElem.appendChild( script ); head.appendChild( scriptElem ); head.removeChild( scriptElem ); }.delay( scriptExecutionDelay ) ); } } } ); if (signalObject) { signalObject.evaluatingScripts = false; } }; page.setIframeHeight = function () { try { var iframeElements = $$('iframe.cleanSlate'); iframeElements.each( function( iframeElement ) { if ( iframeElement.contentWindow && iframeElement.contentWindow.document && iframeElement.contentWindow.document.body ) { iframeElement.style.height = iframeElement.contentWindow.document.body.scrollHeight + 50 + 'px'; } }); } catch( e ){} }; page.onResizeChannelIframe = function( channelExtRef ) { var frameId = 'iframe' + channelExtRef; var listId = 'list_channel' + channelExtRef; var f = $( frameId ); f.style.height = f.contentWindow.document.getElementById( listId ).scrollHeight + 15 + "px"; }; /** * Contains page-wide utility methods */ page.util = {}; /** * Returns whether the specific element has the specified class name. * Same as prototype's Element.hasClassName, except it doesn't extend the element (which is faster in IE). */ page.util.hasClassName = function ( element, className ) { var elementClassName = element.className; if (elementClassName.length === 0) { return false; } if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) { return true; } return false; }; page.util.fireClick = function ( elem ) { if (Prototype.Browser.IE) { elem.fireEvent("onclick"); } else { var evt = document.createEvent("HTMLEvents"); evt.initEvent("click", true, true); elem.dispatchEvent(evt); } }; page.util.useARIA = function () { if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); var ffversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ffversion >= 1.9) { return true; } } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; var ieversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ieversion>=8) { return true; } } return false; }; // Find an element with the given className, starting with the element passed in page.util.upToClass = function ( element, className ) { while (element && !page.util.hasClassName(element, className)) { element = element.parentNode; } return $(element); }; page.util.isRTL = function () { var els = document.getElementsByTagName("html"); var is_rtl = (typeof(els) != 'undefined' && els && els.length == 1 && els[0].dir == 'rtl' ); return is_rtl ; }; page.util.allImagesLoaded = function (imgList) { var allDone = true; if (imgList) { for ( var i = 0, c = imgList.length; i < c; i++ ) { var animg = imgList[i]; // TODO - this doesn't appear to work on IE. if ( !animg.complete ) { allDone = false; break; } } } return allDone; }; // Exposes (display but keep invisible) an invisible element for measurement // recursively traverses up the DOM looking for // a parent node of element whose display == 'none' // If found, sets its style to: display:block, position:absolute, and visibility:hidden // and saves it as element.hiddenNode so it can be easily unexposed page.util.exposeElementForMeasurement = function ( element ) { element = $(element); var e = element; var hiddenNode; // find parent node that is hidden while ( !hiddenNode && e && e.parentNode) { if ( $(e).getStyle('display') === 'none') { hiddenNode = $(e); } e = $(e.parentNode); } if ( hiddenNode ) { // save original style attributes: visibility, position, & display element.hiddenNode = hiddenNode; var style = hiddenNode.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') { newStyles.position = 'absolute'; } hiddenNode.originalStyles = originalStyles; // set new style for: visibility, position, & display hiddenNode.setStyle( newStyles ); } }; // undo previous call to exposeElementForMeasurement page.util.unExposeElementForMeasurement = function ( element ) { element = $(element); if ( element && element.hiddenNode && element.hiddenNode.originalStyles ) { Element.setStyle( element.hiddenNode, element.hiddenNode.originalStyles ); element.hiddenNode.originalStyles = null; element.hiddenNode = null; } }; /** * Returns whether any part of the two elements overlap each other. */ page.util.elementsOverlap = function ( e1, e2 ) { var pos1 = $(e1).cumulativeOffset(); var a = { x1: pos1.left, y1: pos1.top, x2: pos1.left + e1.getWidth(), y2: pos1.top + e1.getHeight() }; var pos2 = $(e2).cumulativeOffset(); var b = { x1: pos2.left, y1: pos2.top, x2: pos2.left + e2.getWidth(), y2: pos2.top + e2.getHeight() }; return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; }; /** * To handle the case where the focus is visible but too close to the bottom of the page, scroll the page up a bit. */ page.util.focusAndScroll= function(elem) { elem.focus(); return page.util.ensureVisible(elem); }; page.util.ensureVisible= function(elem) { var scrolltop = document.viewport.getScrollOffsets().top; var mytop = elem.cumulativeOffset()[1]; var height = document.viewport.getDimensions().height; var realtop = mytop - scrolltop; var thirty = height * 0.3; if (realtop > (height-thirty)) { window.scrollBy(0,thirty); } return false; }; page.util.processJSProtoString = function (string, checkToken) { // This value must match the value passed as the 2nd parameter to this string. // The goal is to pass a known value, as a constant, through the javascript: pseudo-protocol // handler. We can then examine the result to determine the decoding method used by the current // browser. var sniffToken = '%C3%A9'; // There are three known decoding cases, non-translated, UTF8, and unescape if (checkToken === unescape(sniffToken)) { // Unescape decoded return decodeURIComponent(escape(string)); } else if (checkToken === sniffToken) { // Non-translated return decodeURIComponent(string); } else { // UTF8 Decoded/Unknown return string; } }; /** * Find the first action bar that precedes sourceElement * Returns the action bar div element if found, null otherwise * * @param sourceElement */ page.util.findPrecedingActionBar = function( sourceElement ) { var actionBar = null; // Loop through each ancestor of sourceElement, // starting with parent, until an action bar is found sourceElement.ancestors().each( function( item ) { actionBar = item.previous('div.tabActionBar') || item.previous('div.actionBarMicro') || item.previous('div.actionBar'); if (actionBar) { throw $break; } }); return actionBar; }; page.util.getLargestDimensions = function (element) { var width = 0; var height = 0; var dim; while (element != document) { dim = $(element).getDimensions(); if (dim.width > width) { width = dim.width; } if (dim.height > height) { height = dim.height; } element = element.up(); } return { width: width, height: height }; }; /* * Resize the current window so that it will fit the largest dimensions found for the given element. * Will also reposition on the screen if required to fit. Will not size larger than the screen. * NOTE that this will only work for popup windows - main windows are typically in a tabset in * the browser and they don't allow resizing like this. That's OK because the main use case * for this method is to make sure popup windows are resized appropriately for their content. */ page.util.resizeToContent = function (startElement) { var dim = page.util.getLargestDimensions(startElement); var newWidth = dim.width; newWidth += 25; // TODO: Haven't figured out why I need this extra space yet... if (window.innerWidth > newWidth) { newWidth = window.innerWidth; } if (newWidth > screen.width) { newWidth = screen.width; } var newHeight = dim.height; newHeight += 100; // TODO: Haven't figured out why I need this extra space yet if (window.innerHeight > newHeight) { newHeight = window.innerHeight; } if (newHeight > screen.height) { newHeight = screen.height; } var left = 0; var top = 0; if ( window.screenLeft ) { left = window.screenLeft; top = window.screenTop; } else if ( window.screenX ) { left = window.screenX; top = window.screenY; } if (left + newWidth > screen.width) { left = screen.width - newWidth; if (left < 0) { left = 0; } } if (top + newHeight > screen.height) { top = screen.height - newHeight; if (top < 0) { top = 0; } } window.moveTo(left,top); window.resizeTo(newWidth,newHeight); }; /** * Sets the css position of all li elements that are contained in action bars on the page. * Since z-index only works on positioned elements, this function can be used to ensure that * divs with a higher z-index will always appear on top of any action bars on the page. * * @param cssPosition */ page.util.setActionBarPosition = function( cssPosition ) { $$( 'div.actionBar', 'div.tabActionBar', 'div.actionBarMicro' ).each( function( actionbar ) { actionbar.select( 'li' ).each( function( li ) { li.setStyle( {position: cssPosition} ); }); }); }; /** * Class for controlling the course menu-collapser. Also ensures the menu is * the right height */ page.PageMenuToggler = Class.create(); page.PageMenuToggler.prototype = { /** * initialize */ initialize: function( isMenuOpen,key,temporaryScope ) { page.PageMenuToggler.toggler = this; this.key = key; if (temporaryScope) { this.temporaryScope = temporaryScope; } else { this.temporaryScope = false; } this.isMenuOpen = isMenuOpen; this.puller = $('puller'); this.menuPullerLink = $(this.puller.getElementsByTagName('a')[0]); this.menuContainerDiv = $('menuWrap'); this.navigationPane = $('navigationPane'); this.contentPane = $('contentPanel') || $('contentPane'); this.navigationPane = $('navigationPane'); this.locationPane = $(this.navigationPane.parentNode); this.breadcrumbBar = $('breadcrumbs'); this.menu_pTop = parseInt(this.menuContainerDiv.getStyle('paddingTop'), 10); this.menu_pBottom = parseInt(this.menuContainerDiv.getStyle('paddingBottom'), 10); this.loc_pTop = parseInt(this.locationPane.getStyle('paddingTop'), 10); if ( this.breadcrumbBar ) { this.bc_pTop = parseInt(this.breadcrumbBar.getStyle('paddingTop'), 10); this.bc_pBottom = parseInt(this.breadcrumbBar.getStyle('paddingBottom'), 10); } else { this.bc_pTop = 0; this.bc_pBottom = 0; } this.toggleListeners = []; this.onResize( null ); // fix the menu size // Doesn't work in IE or Safari.. //Event.observe( window, 'resize', this.onResize.bindAsEventListener( this ) ); Event.observe( this.menuPullerLink, 'click', this.onToggleClick.bindAsEventListener( this ) ); }, /** * Adds a listener for course menu toggle events */ addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, /** * Notifies all registered toggle event listeners that a toggle has occurred. */ _notifyToggleListeners: function( isOpen ) { this.toggleListeners.each( function( listener ) { listener( isOpen ); }); }, notifyToggleListeners: function( isOpen ) { // we call once the toggle is complete and the DOM in its new state. 2012 themes add transition, which seems // to collide with the logic to get dimensions of dom element, so the delay is a 1 sec to let time for those // transitions to be done. this._notifyToggleListeners.bind( this, isOpen ).delay( 1 ); }, /** * getAvailableResponse */ getAvailableResponse : function ( req ) { var originalMenuOpen = this.isMenuOpen ; if ( req.responseText.length > 0 ) { if ( req.responseText == 'true' ) { this.isMenuOpen = true; } else { this.isMenuOpen = false; } } if ( originalMenuOpen != this.isMenuOpen ) { this.notifyToggleListeners( this.isMenuOpen ); this.menuContainerDiv.toggle(); this.puller.toggleClassName("pullcollapsed"); this.contentPane.toggleClassName("contcollapsed"); this.navigationPane.toggleClassName("navcollapsed"); } }, /** * Expands the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ expand : function () { this.menuContainerDiv.show(); this.puller.removeClassName("pullcollapsed"); this.contentPane.removeClassName("contcollapsed"); this.navigationPane.removeClassName("navcollapsed"); this.isMenuOpen = true; var msg = page.bundle.messages[ "coursemenu.hide" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( true ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, true ); } else { UserDataDWRFacade.setStringPermScope( this.key, true ); } }, /** * Collapses the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ collapse : function () { this.menuContainerDiv.hide(); this.puller.addClassName("pullcollapsed"); this.contentPane.addClassName("contcollapsed"); this.navigationPane.addClassName("navcollapsed"); this.isMenuOpen = false; var msg = page.bundle.messages[ "coursemenu.show" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( false ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, false ); } else { UserDataDWRFacade.setStringPermScope( this.key, false ); } }, /** * Event triggered when the puller toggle control is clicked. Changes the * menu from open to closed or closed to open depending on existing state. */ onToggleClick: function( event ) { if ( this.isMenuOpen ) { this.collapse(); } else { this.expand(); } Event.stop( event ); }, /** * onResize */ onResize: function( event ) { var menuHeight = this.menuContainerDiv.getHeight(); var contentHeight = this.contentPane.getHeight(); var maxHeight = ( menuHeight > contentHeight ) ? menuHeight : contentHeight; this.contentPane.setStyle({height: maxHeight + 'px'}); this.navigationPane.setStyle({height: maxHeight + 'px'}); } }; page.PageMenuToggler.toggler = null; /** * Class for controlling the page help toggler in the view toggle area */ page.PageHelpToggler = Class.create(); page.PageHelpToggler.prototype = { initialize: function( isHelpEnabled, showHelpText, hideHelpText, assumeThereIsHelp ) { page.PageHelpToggler.toggler = this; this.toggleListeners = []; this.isHelpEnabled = isHelpEnabled; this.showText = showHelpText; this.hideText = hideHelpText; this.contentPanel = $('contentPanel') || $('contentPane'); var helperList = []; if ( this.contentPanel && !assumeThereIsHelp) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { helperList.push( $(el) ); } } } var helpTextToggleLink = $('helpTextToggleLink'); if ( ( !helperList || helperList.length === 0) && !assumeThereIsHelp ) { if ( helpTextToggleLink ) { helpTextToggleLink.remove(); } } else { if ( !isHelpEnabled ) { helperList.invoke( "toggle" ); } if ( !this.showText ) { this.showText = page.bundle.getString("viewtoggle.editmode.showHelp"); } if ( !this.hideText ) { this.hideText = page.bundle.getString("viewtoggle.editmode.hideHelp"); } this.toggleLink = helpTextToggleLink; this.toggleImage = $(this.toggleLink.getElementsByTagName('img')[0]); Event.observe( this.toggleLink, "click", this.onToggleClick.bindAsEventListener( this ) ); $(this.toggleLink.parentNode).removeClassName('hidden'); this.updateUI(); } }, addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, _notifyToggleListeners: function() { this.toggleListeners.each( function( listener ) { listener( this.isHelpEnabled ); }); }, notifyToggleListeners: function() { // we notify once the whole menu collapse/expand is done, so the DOM is in final state this._notifyToggleListeners.bind( this ).delay( ); }, updateUI: function( ) { if ( this.isHelpEnabled ) { $("showHelperSetting").value = 'true'; this.toggleImage.src = "/images/ci/ng/small_help_on2.gif"; this.toggleLink.setAttribute( "title", this.showText ); this.toggleImage.setAttribute( "alt", this.showText ); } else { $("showHelperSetting").value = 'false'; this.toggleImage.src = "/images/ci/ng/small_help_off2.gif"; this.toggleLink.setAttribute( "title", this.hideText ); this.toggleImage.setAttribute( "alt", this.hideText ); } }, onToggleClick: function( event ) { // Toggle all elements that have the css class "helphelp" var helperList = []; if ( this.contentPanel ) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { $(el).toggle(); } } } if ( this.isHelpEnabled ) { this.isHelpEnabled = false; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "false" ); } else { this.isHelpEnabled = true; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "true" ); } this.updateUI(); this.notifyToggleListeners(); Event.stop( event ); } }; /** * Class for controlling the display of a context menu. */ page.ContextMenu = Class.create(); page.ContextMenu.prototype = { initialize: function( contextMenuContainer, divId, forceMenuRefresh ) { this.displayContextMenuLink = contextMenuContainer.down("a"); this.contextMenuContainer = contextMenuContainer; this.forceMenuRefresh = forceMenuRefresh; this.uniqueId = this.displayContextMenuLink.id.split('_')[1]; this.contextMenuDiv = this.displayContextMenuLink.savedDiv; if ( !this.contextMenuDiv ) { this.contextMenuDiv = contextMenuContainer.down("div");//$('cmdiv_' + this.uniqueId); this.displayContextMenuLink.savedDiv = this.contextMenuDiv; page.ContextMenu.hiddenDivs.set(divId,this.contextMenuDiv); } this.originalContextMenuDiv = this.contextMenuDiv.cloneNode(true); $(this.contextMenuDiv).setStyle({zIndex: 200}); this.displayContextMenuLink.appendChild( this.contextMenuDiv ); // Temporarily add the menu back where it started this.closeContextMenuLink = contextMenuContainer.down(".contextmenubar_top").down(0); this.contextParameters = contextMenuContainer.readAttribute("bb:contextParameters"); this.menuGeneratorURL = contextMenuContainer.readAttribute("bb:menuGeneratorURL"); this.nav = contextMenuContainer.readAttribute("bb:navItem"); this.enclosingTableCell = contextMenuContainer.up("td"); this.menuOrder = contextMenuContainer.readAttribute("bb:menuOrder"); this.overwriteNavItems = contextMenuContainer.readAttribute("bb:overwriteNavItems"); this.beforeShowFunc = contextMenuContainer.readAttribute("bb:beforeShowFunc"); if (this.beforeShowFunc) { this.beforeShowFunc = eval(this.beforeShowFunc); } if ( this.menuOrder ) { this.menuOrder = this.menuOrder.split(','); } if ( !this.contextParameters ) { this.contextParameters = ""; } if ( !this.menuGeneratorURL ) { this.menuGeneratorURL = ""; } if ( !this.nav ) { this.nav = ""; } this.dynamicMenu = false; if ( this.menuGeneratorURL ) { this.dynamicMenu = true; } if (this.dynamicMenu) { Event.observe( this.displayContextMenuLink, "click", this.generateDynamicMenu.bindAsEventListener( this ) ); } else { Event.observe( this.displayContextMenuLink, "click", this.onDisplayLinkClick.bindAsEventListener( this ) ); } Event.observe( this.closeContextMenuLink, "click", this.onCloseLinkClick.bindAsEventListener( this ) ); Event.observe( this.contextMenuDiv, "keydown", this.onKeyPress.bindAsEventListener( this ) ); // adding nowrap to table cell containing context menu // If no enclosing td is found, try th if ( !this.enclosingTableCell ) { this.enclosingTableCell = contextMenuContainer.up("th"); } if ( this.enclosingTableCell ) { if ( !this.enclosingTableCell.hasClassName("nowrapCell") ) { this.enclosingTableCell.addClassName("nowrapCell"); } // if label tag is an immediate parent of context menu span tag, it needs nowrap as well if ( this.enclosingTableCell.down("label") && !this.enclosingTableCell.down("label").hasClassName("nowrapLabel")) { this.enclosingTableCell.down("label").addClassName("nowrapLabel"); } } if ( !this.dynamicMenu ) { var contexMenuItems = contextMenuContainer.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; // remove the context menu div from the page for performance reasons - add it back when we need to show it Element.remove( this.contextMenuDiv ); }, onKeyPress: function( event ) { var elem, children, index; var key = event.keyCode || event.which; if ( key == Event.KEY_UP ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_ESC ) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_TAB ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( (!event.shiftKey && index == children.length - 1) || (event.shiftKey && index === 0)) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } } else if ( key == Event.KEY_RETURN ) { if ( this.useARIA ) { elem = Event.element ( event ); (function() { page.util.fireClick( elem ); }.bind(this).defer()); Event.stop( event ); } } }, onAnchorFocus: function ( event ) { Event.element( event ).setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { Event.element( event ).setStyle({ backgroundColor: '' }); }, afterMenuGeneration: function( req ) { if ( this.dynamicMenu ) { var result; this.dynamicMenu = this.forceMenuRefresh; try { result = req.responseText.evalJSON( true ); if ( result.success == "true" ) { // append uniqueId to each li var menuHTML = result.contentMenuHTMLList.replace(/(<li.*?id=")(.*?)(".*?>)/g,"$1$2_"+this.uniqueId+"$3"); if ( this.forceMenuRefresh ) { this.contextMenuDiv.innerHTML = this.originalContextMenuDiv.innerHTML; } this.contextMenuDiv.insert({bottom:menuHTML}); $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); var contexMenuItems = this.contextMenuDiv.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } else { new page.InlineConfirmation("error", result.errorMessage, false ); } } catch ( e ) { new page.InlineConfirmation("error", result.errorMessage, false ); } } this.showMenu(); //focus on the first menu item (function() { this.contextMenuDiv.down("a").focus(); }.bind(this).defer()); }, appendItems: function( items, menuItemContainer ) { if (!menuItemContainer) { var uls = this.contextMenuDiv.getElementsBySelector("ul"); menuItemContainer = uls[uls.length-1]; } items.each( function ( item ) { if ( item.type == "seperator" ) { if (menuItemContainer.getElementsBySelector("li").length === 0) { return; } var ul = new Element('ul'); menuItemContainer.parentNode.appendChild( ul ); menuItemContainer = ul; return; } if ( !this.menuItemTempate ) { var menuItems = this.contextMenuDiv.getElementsBySelector("li"); this.menuItemTempate = menuItems[menuItems.length-1]; } var mi = this.menuItemTempate.cloneNode( true ); var a = mi.down('a'); var name = item.key ? page.bundle.getString( item.key ) : item.name ? item.name : "?"; a.update( name ); a.title = item.title ? item.title : name; a.href = "#"; menuItemContainer.appendChild( mi ); Event.observe( a, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( a, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( a, 'click', this.onItemClick.bindAsEventListener( this, item.onclick ) ); }.bind( this ) ); }, onItemClick: function( evt, func ) { this.onCloseLinkClick(); func(); Event.stop( evt ); }, setItems: function( items ) { // rather than try to match up new items with existing items, it's easier to delete the existing items // (except for the close item) and then add the new items // remove existing menu items, except close menu var menuItems = this.contextMenuDiv.getElementsBySelector("li").each( function (li ) { if ( !li.hasClassName("contextmenubar_top") ) { if (!this.menuItemTempate) { this.menuItemTempate = li; } li.stopObserving(); li.remove(); } }.bind( this ) ); // should only be one menuItemContainer var menuItemContainers = this.contextMenuDiv.getElementsBySelector("ul").each( function (ul) { if ( !ul.down("li") ) { ul.remove(); } }.bind( this ) ); this.appendItems(items, menuItems[0].parentNode); }, showMenu : function() { if (this.beforeShowFunc) { this.beforeShowFunc(this); } page.ContextMenu.registerContextMenu( this ); this.reorderMenuItems(); if ( this.useARIA ) { this.initARIA(); } var offset = this.displayContextMenuLink.cumulativeOffset(); var scrollOffset = this.displayContextMenuLink.cumulativeScrollOffset(); var viewportScrollOffset = document.viewport.getScrollOffsets(); if ( this.displayContextMenuLink.up( 'div.lb-content' ) ) { // Fix offset for context menu link inside a lightbox offset[0] = offset[0] + viewportScrollOffset[0]; offset[1] = offset[1] + viewportScrollOffset[1]; } else { // Fix the offset if the item is in a scrolled container offset[0] = offset[0] - scrollOffset[0] + viewportScrollOffset[0]; offset[1] = offset[1] - scrollOffset[1] + viewportScrollOffset[1]; } document.body.appendChild( this.contextMenuDiv ); this.contextMenuDiv.setStyle({display: "block"}); var width = this.contextMenuDiv.getWidth(); var bodyWidth = $(document.body).getWidth(); if ( page.util.isRTL() ) { offset[0] = offset[0] + this.displayContextMenuLink.getWidth() - width; } if ( offset[0] + width > bodyWidth ) { offset[0] = offset[0] - width + 30; } if ( this.keepMenuToRight ) { // In case the link is very wide (i.e. gradecenter accessible mode cell link for really wide cell) // make sure the menu renders to the right side of the link var linkWidth = this.displayContextMenuLink.getDimensions().width; if (linkWidth > width) { // Only worry if the link is actually wider than the menu offset[0] += (linkWidth-width); } } // Don't start the menu off the left side of the window if ( offset[0] < 0 ) { offset[0] = 0; } var height = this.contextMenuDiv.getHeight(); var bodyHeight = $(document.body).getHeight(); var ypos = offset[1] + this.displayContextMenuLink.getHeight() + 17; if ( ( height + ypos ) > bodyHeight ) { ypos -= height; ypos -= 34; } // Don't start the menu off the top of the screen if (ypos < 0 ) { ypos = 0; } if (height > bodyHeight) { // If the menu is too big to fit on the screen, set it to the height of the screen and allow scrollbars inside the menu this.contextMenuDiv.setStyle({ height: bodyHeight + "px", overflowY: "auto", overflowX: "hidden", left: offset[0] + "px", top: ypos + "px" }); } else { this.contextMenuDiv.setStyle({ left: offset[0] + "px", top: ypos + "px"}); } if ( !this.shim ) { this.shim = new page.popupShim( this.contextMenuDiv ); } this.shim.open(); }, initARIA: function() { if ( !this.initializedARIA ) { this.displayContextMenuLink.setAttribute( "aria-haspopup", "true" ); this.displayContextMenuLink.setAttribute( "role", "menubutton" ); this.contextMenuDiv.setAttribute( "role", "menu" ); this.contextMenuDiv.down( "ul" ).setAttribute( "role", "presentation" ); $A( this.contextMenuDiv.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval( decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "0"; link.setStyle( {cursor: 'pointer'} ); // make it look like a link. } }); this.initializedARIA = true; // Only initialize once. } }, reorderMenuItems : function() { if ( !this.menuOrder || this.menuOrder.length < 2 ) { return; } var orderMap = {}; var closeItem = null; var extraItems = []; // items not in order // Gather up all of the <li> tags in the menu and stick them in a map/object of id to the li object $A(this.contextMenuDiv.getElementsByTagName("li")).each( function( listItem ) { if (listItem.hasClassName("contextmenubar_top")) { closeItem = listItem; } else { if (this.menuOrder.indexOf(listItem.id) > -1) { orderMap[listItem.id] = listItem; // add item to map } else { extraItems.push(listItem); // listItem id not specified in menuOrder, so add listItem to extraItems } } }.bind(this) ); // Remove all the content from the context menu div $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list ) { Element.remove(list); }.bind(this) ); // Re-add the special "close" item as the first item. var ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); ulElement.insert({bottom:closeItem}); // Loop through the order, adding a <ul> at the start, and starting a new <ul> whenever a "*separator*" // is encountered, and adding the corresponding <li> for each of the ids in the order using the map/object this.menuOrder.each( function( id ) { if (id == "*separator*") { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); } else { ulElement.insert({bottom:orderMap[id]}); } }.bind(this) ); // Add any extraItems to thier own ul if (extraItems.length > 0) { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); extraItems.each( function( lineItem ) { ulElement.insert({bottom:lineItem}); }.bind(this) ); } // Remove any empty ULs and ensure that the added <ul>s have id of form "cmul${num}_${uniqueId}" $A(this.contextMenuDiv.getElementsByTagName("ul")).findAll( function( list ) { if ( list.childElements().length === 0 ) { list.remove(); return false; } else { return true; } }).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); this.menuOrder = null; // only re-order once }, generateDynamicMenu : function(event) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { var context_parameters = this.contextParameters; var menu_generator_url = this.menuGeneratorURL; var nav = this.nav; var overwriteNavItems = this.overwriteNavItems; if ( context_parameters ) { context_parameters = context_parameters.toQueryParams(); } else { context_parameters = {}; } var params = Object.extend({nav_item: nav }, context_parameters ); params = Object.extend( params, { overwriteNavItems : overwriteNavItems } ); new Ajax.Request(menu_generator_url, { method: 'post', parameters: params, onSuccess: this.afterMenuGeneration.bind( this ) }); } else { this.afterMenuGeneration(this); } $(event).preventDefault(); }, onDisplayLinkClick: function( event ) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { this.generateDynamicMenu(event); this.dynamicMenu = false; } else { this.showMenu(); //focus on the first menu item (function() { if (this.contextMenuDiv.style.display != 'none') { this.contextMenuDiv.down("a").focus(); } }.bind(this).defer()); $(event).preventDefault(); } }, onCloseLinkClick: function( event ) { this.close(); // grade center hides displayContextMenuLink onMouseOut, so we need to check if it is visible // before setting focus or IE will complain. Need to do funky visibility check because IE8 // sets display to empty string when removing parent container class (bug?) var disp = this.displayContextMenuLink.style.display; if ( disp != 'none' && disp != '' ) { this.displayContextMenuLink.focus(); } if (event) { Event.stop( event ); } }, close: function() { this.contextMenuDiv.style.display = "none"; // Delay the removal of the element from the page so firefox will continue to process // the click on the menu item chosen (otherwise it stops processing as soon as we remove the // element resulting in the menu not actually working) (function() { Element.remove( this.contextMenuDiv ); }.bind(this).delay(0.1)); if ( this.shim ) { this.shim.close(); } }, closeNow: function() { if (this.contextMenuDiv.style.display != "none") { this.contextMenuDiv.style.display = "none"; Element.remove( this.contextMenuDiv ); if ( this.shim ) { this.shim.close(); } } } }; /** * Function called to change the 'arrow' of a breadcrumb to face downward when they are clicked for the * contextual menu. * @param uniqId - unique number which identifies the crumb which was clicked * @param size - the size of the breadcrumb * @return */ page.ContextMenu.changeArrowInBreadcrumb = function (uniqId, event) { page.ContextMenu.alignArrowsInBreadcrumb(event); $('arrowContext_'+uniqId).addClassName('contextArrowDown').removeClassName('contextArrow'); //Stop the click event to propagate anymore -else all arrows will be aligned again Event.stop( event ); return false; }; //To align all breadcrumb arrows in one direction page.ContextMenu.alignArrowsInBreadcrumb = function (event) { if ($('breadcrumbs') !== null){ var bList = $($('breadcrumbs').getElementsByTagName('ol')[0]); var bs = bList.immediateDescendants(); if (bs.length !== null && bs.length >1){ for (var i = 2; i <= bs.length; i++) { var arrowSpan = $('arrowContext_'+i); if (arrowSpan !== null ){ $('arrowContext_'+i).addClassName('contextArrow').removeClassName('contextArrowDown'); } } } } return false; }; // "static" methods page.ContextMenu.LI = function(event, divId, forceMenuRefresh) { page.LazyInit(event,['focus','mouseover'],'new page.ContextMenu(page.util.upToClass(target,\'contextMenuContainer\'), \'' + divId + '\',' + forceMenuRefresh + ');'); }; page.ContextMenu.contextMenus = []; // _Open_ context menus page.ContextMenu.registerContextMenu = function( menu ) { page.ContextMenu.contextMenus.push( menu ); }; page.ContextMenu.hiddenDivs = $H(); // All the menu divs on the page - only needed for cases such as view_spreadsheet2.js where we try to modify the menus outside this framework page.ContextMenu.hideMenuDiv = function( uniqueId) { var linkId = 'cmlink_' + uniqueId; var link = document.getElementById(linkId); if (link && !link.savedDiv ) { var elementId = 'cmdiv_' + uniqueId; var element = link.nextSibling; // Should be the text between the link and div but check anyways if ( !element || element.id != elementId) { element = element.nextSibling; if ( !element || element.id != elementId) { element = document.getElementById(elementId); } } if (element) { link.savedDiv = element; page.ContextMenu.hiddenDivs.set(uniqueId,element); Element.remove( element ); } } }; page.ContextMenu.addDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { document.body.appendChild(ele); }); }; page.ContextMenu.removeDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { Element.remove(ele); }); }; page.ContextMenu.closeAllContextMenus = function( event ) { var deferClose = false; if ( event ) { var e = Event.findElement( event, 'a' ); if ( e && e.href.indexOf("#contextMenu") >= 0 ) { Event.stop( event ); return; } deferClose = true; } page.ContextMenu.contextMenus.each( function( menu ) { if ( menu != this ) { if (deferClose) { menu.close(); } else { menu.closeNow(); } } }); page.ContextMenu.contextMenus = []; }; /** * Enables flyout menus to be opened using a keyboard or mouse. Enables * them to be viewed properly in IE as well. */ page.FlyoutMenu = Class.create(); page.FlyoutMenu.prototype = { initialize: function( subMenuListItem ) { this.subMenuListItem = $(subMenuListItem); this.menuLink = $(subMenuListItem.getElementsByTagName('a')[0]); //special case to render iframe shim under new course content build menu if (this.subMenuListItem.hasClassName('bcContent')) { var buildContentDiv = this.subMenuListItem.down("div.flyout"); if ( !buildContentDiv ) { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } else { this.subMenu = buildContentDiv; } } else { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } this.menuLink.flyoutMenu = this; // calculate the next/previous tab stops this.previousSibling = this.subMenuListItem.previous(); while ( this.previousSibling && (!this.previousSibling.down('a') || !this.previousSibling.visible()) ) { this.previousSibling = this.previousSibling.previous(); } this.nextSibling = this.subMenuListItem.next(); while ( this.nextSibling && (!this.nextSibling.down('a') || !this.nextSibling.visible()) ) { this.nextSibling = this.nextSibling.next(); } var rumble = $(this.subMenuListItem.parentNode.parentNode); this.inListActionBar = rumble && ( rumble.hasClassName("rumble_top") || rumble.hasClassName("rumble") ); Event.observe( this.menuLink, 'mouseover', this.onOpen.bindAsEventListener( this ) ); Event.observe( subMenuListItem, 'mouseout', this.onClose.bindAsEventListener( this ) ); Event.observe( this.menuLink, 'click', this.onLinkOpen.bindAsEventListener( this ) ); Event.observe( this.subMenuListItem, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); $A( this.subMenu.getElementsByTagName('li') ).each ( function( li ) { $A(li.getElementsByTagName('a')).each( function( link ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( link, 'click', this.onLinkClick.bindAsEventListener( this, link ) ); }.bind( this ) ); }.bind( this ) ); // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; if ( this.useARIA ) { this.initARIA(); } this.enabled = true; }, initARIA: function() { var inListActionBar = this.inListActionBar; if ( inListActionBar ) { this.subMenuListItem.up('ul').setAttribute( "role", "menubar" ); } this.subMenuListItem.setAttribute( "role", "menuitem" ); this.subMenu.setAttribute( "role", "menu" ); if ( !this.menuLink.hasClassName("notMenuLabel") ) { this.subMenu.setAttribute( "aria-labelledby", this.menuLink.id ); } $A( this.subMenu.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); // List action bars have onclick handlers that prevent submission of the page // if no items are selected, so we can't register new onclicks here because // otherwise we can't stop them from executing. if ( !inListActionBar ) { if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval(decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "-1"; link.style.cursor = 'pointer'; // make it look like a link. } } }); }, setEnabled: function( enabled ) { this.enabled = enabled; if ( !enabled ) { this.subMenu.setStyle({ display: '' }); } }, onKeyPress: function( event ) { if (!this.enabled) { return; } var key = event.keyCode || event.which; var elem = Event.element ( event ); var children, index, link; if ( key == Event.KEY_UP ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } else if ( index === 0 ) { children[children.length - 1].focus(); // wrap to bottom } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index == -1 ) { this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); } else if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } else if ( index == ( children.length - 1 ) ) { children[0].focus(); // wrap to top } Event.stop( event ); } else if ( key == Event.KEY_LEFT ) { if ( !this.previousSibling || ( this.previousSibling.hasClassName("mainButton") || this.previousSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, true ); } else if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( !link || !this.previousSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_RIGHT ) { if ( !this.nextSibling || ( this.nextSibling.hasClassName("mainButton") || this.nextSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, false ); } else if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( !link || !this.nextSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_ESC ) { this.close(); this.menuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_RETURN && this.useARIA && !this.inListActionBar ) { page.util.fireClick( elem ); Event.stop( event ); } else if ( key == Event.KEY_TAB && this.useARIA ) { this.executeTab( event, false, event.shiftKey ); } }, executeTab: function( event, forceMenuLinkTab, shift ) { var elem = Event.element ( event ); var link; if ( ( elem != this.menuLink ) || forceMenuLinkTab ) { if ( shift ) { // Go to previous menu if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } else { // Go to next menu if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } this.close(); Event.stop( event ); } }, onOpen: function( event ) { if (!this.enabled) { return; } this.open(); }, onClose: function( event ) { var to = $(event.relatedTarget || event.toElement); if ( !to || to.up('li.sub') != this.subMenuListItem ) { this.close(); } }, onLinkOpen: function( event ) { if (!this.enabled) { return; } this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); Event.stop( event ); }, resizeAfterShowHide: function() { // TODO - ideally this would just resize the outer div, but closing and opening 'works' this.close(); this.open(); }, open: function() { var alreadyShown = this.subMenu.getStyle('display') === 'block'; // If the menu is already showing (i.e. as_ce4 theme, we don't need to position it) if ( !alreadyShown ) { // Set position of action bar elements to static to enable z-index stack order page.util.setActionBarPosition( 'static' ); var menuTop = this.subMenuListItem.getHeight(); if ( this.subMenu.hasClassName( 'narrow' ) ) { menuTop = 0; } this.subMenuListItem.setStyle( {position: 'relative'} ); this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: menuTop+'px', left: '0px', width: '', height: '', overflowY: '' }); var offset = Position.cumulativeOffset( this.subMenuListItem ); var menuDims = this.subMenu.getDimensionsEx(); var menuHeight = menuDims.height; var popupWidth = this.subMenu.getWidth(); var subListItemDims = this.subMenuListItem.getDimensions(); var menuWidth = subListItemDims.width; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); var offsetTop = offset[1] - scrollOffsets.top; this.subMenu.flyoutMenu = this; if ( (offsetTop + menuHeight + subListItemDims.height) > viewportDimensions.height) { if ( (offsetTop - menuHeight) > 0 ) { // if menu goes below viewport but still fits on-page, show it above button this.subMenu.setStyle({ top: '-'+menuHeight+'px' }); } else { // we need to create scrollbars var newWidth = this.subMenu.getWidth() + 15; popupWidth = newWidth + 5; var newMenuHeight = viewportDimensions.height - (offsetTop + subListItemDims.height) - 20; var newMenuTop = menuTop; if (newMenuHeight < offsetTop) { // More space above than below newMenuHeight = offsetTop; newMenuTop = -offsetTop; } this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: newMenuTop+'px', left: '0px', width: newWidth + 'px', height: newMenuHeight + 'px', overflowY: 'auto' }); } } var offsetLeft = offset[0] - scrollOffsets.left; if ( (offsetLeft + popupWidth) > viewportDimensions.width ) { var subMenuWidth = this.subMenuListItem.getWidth(); var newLeft = popupWidth - (viewportDimensions.width-offsetLeft); if ((newLeft > 0) && (newLeft < offsetLeft)) { newLeft = -newLeft; } else { newLeft = -offsetLeft; } this.subMenu.setStyle({ left: newLeft+'px' }); } if ( page.util.isRTL() ) { var newRight = 0; if ( (offsetLeft + menuWidth) - popupWidth < 0 ) { newRight = (offsetLeft + menuWidth) - popupWidth; } this.subMenu.setStyle({ left: '', right: newRight+'px'}); } if (!this.shim) { this.shim = new page.popupShim( this.subMenu); } this.shim.open(); } }, close: function() { // Reset position of action bar elements to relative page.util.setActionBarPosition( 'relative' ); this.subMenuListItem.setStyle({position: ''}); this.subMenu.setStyle({ display: '', top: '', left: '', width: '', height: '', overflowY: '' }); if ( this.shim ) { this.shim.close(); } }, onLinkClick: function( event, link ) { if (!this.enabled) { return; } setTimeout( this.blurLink.bind( this, link), 100); }, blurLink: function( link ) { link.blur(); if (page.util.hasClassName( link, "donotclose" )) { link.focus(); } else { this.close(); } }, onAnchorFocus: function ( event ) { if (!this.enabled) { return; } var link = Event.element( event ); link.setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { var link = Event.element( event ); link.setStyle({ backgroundColor: '' }); } }; /** * Class for providing functionality to menu palettes */ page.PaletteController = Class.create(); page.PaletteController.prototype = { /** * Constructor * * @param paletteIdStr Unique string identifier for a palette * @param expandCollapseIdStr Id value of anchor tag to be assigned * the palette expand/collapse functionality * @param closeOtherPalettesWhenOpen Whether to close all other palettes when this one is open */ initialize: function( paletteIdStr, expandCollapseIdStr, closeOtherPalettesWhenOpen, collapsed ) { // palette id string this.paletteItemStr = paletteIdStr; // palette element this.paletteItem = $(this.paletteItemStr); // default id string to palette contents container element this.defaultContentsContainerId = page.PaletteController.getDefaultContentsContainerId(this.paletteItemStr); // the currently active palette contents container element this.activeContentsContainer = $(this.defaultContentsContainerId); // expand/collapse palette toggle element this.paletteToggle = $(expandCollapseIdStr); if (this.paletteToggle) { Event.observe(this.paletteToggle, 'click', this.toggleExpandCollapsePalette.bindAsEventListener(this)); } this.closeOtherPalettesWhenOpen = closeOtherPalettesWhenOpen; page.PaletteController.registerPaletteBox(this); if (collapsed) { this.collapsePalette(true); } }, /** * Set the currently active palette contents container element * * @param container palette contents container element */ setActiveContentsContainer: function ( container ) { this.activeContentsContainer = container; }, /** * Get the currently active palette contents container element * * @return palette contents container element */ getActiveContentsContainer: function () { return this.activeContentsContainer; }, /** * Expands the palette if it's not already expanded. * * @return palette contents container element */ expandPalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display == "none" ) { itemList.style.display = "block"; itemPalClass.length = itemPalClass.length - 1; this.paletteItem.className = itemPalClass.join(" "); lastDiv.className = "bottomRound"; firstDiv.className = "topRound"; h2.className = ""; var itemTitle = expandCollapseLink.innerHTML.stripTags().trim(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_collapse.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.collapse.section.param', itemTitle); } if ( doNotPersist ) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Collapses the palette if it's not already collapsed. * * @return palette contents container element */ collapsePalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display != "none" ) { itemList.style.display = "none"; itemPalClass[itemPalClass.length] = 'navPaletteCol'; this.paletteItem.className = itemPalClass.join(" "); if (itemPalClass.indexOf('controlpanel') != -1) { lastDiv.className = "bottomRound controlpanelCol"; // colors the bottomRound to match the h2 background } if (itemPalClass.indexOf('listCm')!=-1) { lastDiv.className = "bottomRound listCmCol"; // colors the bottomRound to match the h2 background firstDiv.className = "topRound listCmCol"; // colors the topRound to match the h2 background h2.className = "listCmCol"; // colors h2 background (removes background image) } if (itemPalClass.indexOf('tools') != -1) { lastDiv.className = "bottomRound toolsCol"; firstDiv.className = "topRound listCmCol"; h2.className = "toolsCol"; } var itemTitle = expandCollapseLink.innerHTML.stripTags(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags().trim(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_expand.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.expand.section.param', itemTitle); } if (doNotPersist) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Takes in a key value pair to save to the session as sticky data. * * @param key The key that will have the current course id appended to it to be saved to the session. * @param value The value to the key. */ saveSessionStickyInfo: function( key, value ) { /* Get the course id off of the global variable if exists, so that data is saved per * user session per course. If course doesn't exist, use empty string. */ var current_course_id = window.course_id ? window.course_id : ""; UserDataDWRFacade.setStringTempScope( key + current_course_id, value ); }, /** * Whether the first tag has js onclick event binding on it for palette collapse/expand * * @param h2 */ useFirstTagForExpandCollapse: function ( h2 ) { return h2.getElementsByTagName('a')[0].id.indexOf( "noneExpandCollapseTag" ) > -1 ? false : true; }, /** * Toggles a palette from expand to collapse and vice versa. * * @param event Optional event object if this method was bound to event. */ toggleExpandCollapsePalette: function ( event, doNotPersist ) { // To prevent default event behavior if ( event ) { Event.stop( event ); } if ( this.activeContentsContainer.style.display == "none" ) { // palette is currently closed, so we will be expanding it if ( this.closeOtherPalettesWhenOpen ) { // if closeOtherPalettesWhenOpen is set to true for this palette, close all other palettes page.PaletteController.closeAllOtherPalettes(this.paletteItemStr, doNotPersist); } this.expandPalette( doNotPersist ); } else { // palette is currently expanded, so we will be collapsing it this.collapsePalette( doNotPersist ); } } }; // "static" methods page.PaletteController.paletteBoxes = []; page.PaletteController.registerPaletteBox = function( paletteBox ) { page.PaletteController.paletteBoxes.push( paletteBox ); }; /** * Get the palette controller js object by palette id * * @param paletteId */ page.PaletteController.getPaletteControllerObjById = function( paletteId ) { return page.PaletteController.paletteBoxes.find( function( pb ) { return ( pb.paletteItemStr == paletteId ); } ); }; /** * Closes all palettes except the specified one * * @param paletteToKeepOpen */ page.PaletteController.closeAllOtherPalettes = function( paletteToKeepOpen, doNotPersist ) { for(var i = 0; i < page.PaletteController.paletteBoxes.length; i++) { var paletteItem = page.PaletteController.paletteBoxes[i]; if (paletteToKeepOpen !== paletteItem.paletteItemStr) { paletteItem.collapsePalette( doNotPersist ); } } }; /** * Toggles (expand/collapse) the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.toggleExpandCollapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.toggleExpandCollapsePalette( null, doNotPersist); }; /** * Collapses the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.collapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.collapsePalette( doNotPersist); }; /** * Expand the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.expandPalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.expandPalette( doNotPersist); }; /** * Set the active palette contents container (element containing the body * contents of a palette). The active contents container is used to toggle * visibility when expanding and collapsing menu palettes. * * @param paletteId * @param paletteContentsContainer Optional container to set. * If not given, the palette's active * container will not be changed. * @return The new active palette contents container element. * If no paletteContentsContainer element was passed, * The current active palette contents container element * will be returned. */ page.PaletteController.setActivePaletteContentsContainer = function( paletteId, paletteContentsContainer ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); if ( paletteContentsContainer ) { paletteObj.setActiveContentsContainer( paletteContentsContainer ); } return paletteObj.getActiveContentsContainer(); }; /* * Get the default palette contents container id string * * @param paletteId */ page.PaletteController.getDefaultContentsContainerId = function( paletteId ) { return paletteId + "_contents"; }; /** * Class for providing expand/collapse functionality (with dynamic loading) */ page.ItemExpander = Class.create(); page.ItemExpander.prototype = { /** * Constructor * - expandLink - the link that when clicked will expand/collapse the item * - expandArea - the actual area that will get expanded/collapsed (if the item is dynamically loaded, this area will be populated dynamically) * - expandText - the text to show as a tooltip on the link for expanding * - collapseText - the text to show as a tooltip on the link for collapsing * - expandTitleText - the customized text for link title afer expanding the item; if null/undefined, use expandText * - collapseTitleText - the customized text for link title after collapsing the item;if null/undefined, use collapseText * - dynamic - whether the contents are dynamically loaded * - dynamicUrl - the URL to get the contents of the item from * - contextParameters - additional URL parameters to add when calling the dynamicUrl * - sticky - load/save expand state from UserData; true if null/undefined * - expanded - initially expanded; false if null/undefined */ initialize: function( expandLink, expandArea, expandText, collapseText, dynamic, dynamicUrl, contextParameters, expandTitleText, collapseTitleText, sticky, expanded ) { this.expandLink = $(expandLink); this.expandLinkImage = this.expandLink.down('img'); this.expandArea = $s(expandArea); // Register the expander so it can be found page.ItemExpander.itemExpanderMap[this.expandLink.id] = this; this.expandText = expandText.unescapeHTML(); this.collapseText = collapseText.unescapeHTML(); if ( expandTitleText !== null && expandTitleText !== undefined ) { this.expandTitleText = expandTitleText.unescapeHTML(); } else { this.expandTitleText = this.expandText; } if ( collapseTitleText !== null && collapseTitleText !== undefined ) { this.collapseTitleText = collapseTitleText.unescapeHTML(); } else { this.collapseTitleText = this.collapseText; } this.dynamic = dynamic; this.dynamicUrl = dynamicUrl; if ( contextParameters !== null && contextParameters !== undefined ) { this.contextParameters = contextParameters.toQueryParams(); } else { this.contextParameters = {}; } this.sticky = ( sticky !== null && sticky !== undefined ) ? sticky : true; this.expanded = ( expanded !== null && expanded !== undefined ) ? expanded : false; this.hasContents = !this.dynamic; if ( this.sticky ) { // get the course id off of the global variable if exists, because data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.getStringTempScope( this.expandLink.id + current_course_id, this.getAvailableResponse.bind( this ) ); } this.expandCollapse( !this.expanded ); Event.observe( this.expandLink, "click", this.onToggleClick.bindAsEventListener( this ) ); }, getAvailableResponse : function ( response ) { var originalExpanded = this.expanded ; var cachedExpanded = false; if ( response.length > 0 ) { if ( response == 'true' ) { cachedExpanded = true; } else { cachedExpanded = false; } } if ( originalExpanded != cachedExpanded ) { //because we want the menu to be in the cached state, //we pass in the opposite so that expandCollapse changes the menu state. this.expandCollapse(originalExpanded); } }, onToggleClick: function( event ) { if ( event ) { Event.stop( event ); } this.expandCollapse(this.expanded); if ( this.sticky ) { // get the course id off of the global variable if exists, so that data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.setStringTempScope( this.expandLink.id + current_course_id, this.expanded ); } }, expandCollapse: function(shouldCollapse) { var combo; if ( shouldCollapse ) //Collapse the item { $(this.expandArea).hide(); this.expandLink.title = this.expandTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.expandText; this.expandLinkImage.src = "/images/ci/icons/generic_expand.gif"; } if ( this.expandLink.hasClassName("comboLink_active") ) { combo = this.expandLink.up("li").down(".submenuLink_active"); this.expandLink.removeClassName("comboLink_active"); this.expandLink.addClassName("comboLink"); if ( combo ) { combo.removeClassName("submenuLink_active"); combo.addClassName("submenuLink"); } } else { this.expandLink.removeClassName("open"); } this.expanded = false; } else //Expand the item { if ( this.hasContents ) { $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.collapseText; this.expandLinkImage.src = "/images/ci/icons/generic_collapse.gif"; } if ( this.expandLink.hasClassName("comboLink") ) { combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } } else if ( this.dynamic ) { this.loadData(); } this.expanded = true; } }, loadData: function() { new Ajax.Request( this.dynamicUrl, { method: "post", parameters: this.contextParameters, requestHeaders: { cookie: document.cookie }, onSuccess: this.afterLoadData.bind( this ) }); }, afterLoadData: function( req ) { try { var result = req.responseText.evalJSON( true ); if ( result.success != "true" ) { new page.InlineConfirmation("error", result.errorMessage, false ); } else { this.hasContents = true; this.expandArea.innerHTML = result.itemContents; $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; this.expandLinkImage.alt = this.collapseText; if ( this.expandLink.hasClassName("comboLink") ) { var combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } this.expanded = true; } } catch ( e ) { //Invalid response } } }; page.ItemExpander.itemExpanderMap = {}; /** * Class for controlling the "breadcrumb expansion" (i.e. the "..." hiding the inner * breadcrumbs) */ page.BreadcrumbExpander = Class.create(); page.BreadcrumbExpander.prototype = { initialize: function( breadcrumbBar ) { var breadcrumbListElement = $(breadcrumbBar.getElementsByTagName('ol')[0]); var breadcrumbs = breadcrumbListElement.immediateDescendants(); if ( breadcrumbs.length > 4 ) { this.ellipsis = document.createElement("li"); var ellipsisLink = document.createElement("a"); ellipsisLink.setAttribute("href", "#"); ellipsisLink.setAttribute("title", page.bundle.getString('breadcrumbs.expand') ); ellipsisLink.innerHTML = "..."; this.ellipsis.appendChild( ellipsisLink ); this.ellipsis = Element.extend( this.ellipsis ); Event.observe( ellipsisLink, "click", this.onEllipsisClick.bindAsEventListener( this ) ); this.hiddenItems = $A(breadcrumbs.slice(2,breadcrumbs.length - 2)); breadcrumbListElement.insertBefore( this.ellipsis, this.hiddenItems[0] ); this.hiddenItems.invoke( "hide" ); } // Make sure the breadcrumbs don't run into the mode switcher var breadcrumbContainer = $(breadcrumbListElement.parentNode); var modeSwitcher = breadcrumbBar.down('.modeSwitchWrap'); if ( modeSwitcher ) { var containerWidth = breadcrumbContainer.getWidth(); var containerOffset = breadcrumbContainer.cumulativeOffset(); var modeSwitcherOffset = modeSwitcher.cumulativeOffset(); var modeSwitcherWidth = modeSwitcher.getWidth(); if ( page.util.isRTL() ) { if ( modeSwitcherOffset[0] + modeSwitcherWidth > containerOffset[0] ) { breadcrumbContainer.setStyle({ paddingLeft: ( modeSwitcherOffset[0] + modeSwitcherWidth ) + 'px'} ); } } // else //{ // breadcrumbContainer.setStyle({ paddingRight: ( containerWidth - ( modeSwitcherOffset[0] - containerOffset[0] ) ) + 'px'} ); //} } }, onEllipsisClick: function( event ) { this.hiddenItems.invoke( "show" ); this.ellipsis.hide(); Event.stop( event ); } }; /** * Dynamically creates an inline confirmation. */ page.InlineConfirmation = Class.create(); page.InlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, oneReceiptPerPage ) { var receiptId = $s('receipt_id'); // do not insert a duplicate receipt, if one already exists if(receiptId && oneReceiptPerPage) { return; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if ( type == "warning" ) { cssClass = "warningReceipt"; } var contentPane = $('contentPanel') || $('portalPane'); var receiptHtml = '<div id="receipt_id" class="receipt '+ cssClass +'">'+ '<a name="inlineReceipt" tabindex="-1" style="color:#FFFFFF">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } receiptHtml += '<a class="close" href="#close" title="'+ page.bundle.getString("inlineconfirmation.close") +'" onClick="Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="'+ page.bundle.getString("inlineconfirmation.close") +'" src="/images/ci/ng/close_mini.gif"></a></div>'; contentPane.insert({top:receiptHtml}); // use aria live region to announce this confirmation message rather than setting focus to it. (Too many things are fighting over setting focus) // Note: if this confirmation is invoked from a menu handler, it may not announce if focus is lost when the menu closes. See how courseTheme.js sets focus before invoking. var insertedA = contentPane.down('a[name="inlineReceipt"]'); insertedA.setAttribute("aria-live","assertive"); insertedA.parentNode.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced } }; page.NestedInlineConfirmationIdCounter = 0; page.NestedInlineConfirmation = Class.create(); page.NestedInlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, previousElement,showCloseLink, extracss, insertBefore, oneReceiptPerPage, fadeAway, focusDiv, fadingTime, insertTop, receiptDivId, focusOnRender ) { if ( Object.isUndefined( focusOnRender ) ) { focusOnRender = true; } var receiptId = $s('receipt_nested_id'); // do not insert a duplicate receipt, if one already exists var newDivId = 'receipt_nested_id'; if(receiptId) { if (oneReceiptPerPage) { return; } newDivId = newDivId + (page.NestedInlineConfirmationIdCounter++); } if (receiptDivId) { // Remove the old message with the same receiptDivId if there is one before adding a new one if ( $( receiptDivId ) != null ) $( receiptDivId ).remove(); newDivId = receiptDivId; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if (type == "warning") { cssClass = "warningReceipt"; } if (!extracss) { extracss = ""; } var arrowSpan = ''; if (extracss.indexOf( "point", 0 ) != -1) { arrowSpan = '<span class="arrow"></span>'; } var contentPane = $(previousElement); if (!contentPane) { // TODO - if we can't find the element we wanted to insert before, is it OK to just drop the notification? return; } var receiptHtml = '<div id="'+newDivId+'" style="display:none" class="receipt '+ cssClass +' '+extracss +'">'+arrowSpan+ '<a name="inlineReceipt" class="areceipt" tabindex="-1">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } if (showCloseLink) { // either this is a JS Snippet to execute on close or a simple true in which case we do nothing extra var onCloseFunction = ""; if ( typeof showCloseLink === "string" || showCloseLink instanceof String ) { if ( !page.closeReceiptLinkCounter ) { page.closeReceiptLinkCounter = 0; } else { ++page.closeReceiptLinkCounter; } onCloseFunction = "onReceiptClosed" + page.closeReceiptLinkCounter; receiptHtml += "<script type='text/javascript'>window." + onCloseFunction + " = function( ) { " + showCloseLink + " ; }; </script>"; onCloseFunction += "( );" } receiptHtml += '<a class="close" href="#close" style="z-index:1000" title="' + page.bundle.getString("inlineconfirmation.close") + '" onClick="' + onCloseFunction + 'Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="' + page.bundle.getString("inlineconfirmation.close") + '" src="/images/ci/ng/close_mini.gif"></a></div>'; } if ( insertBefore ) { contentPane.insert({before:receiptHtml}); } else if (insertTop) { contentPane.insert({top:receiptHtml}); } else { contentPane.insert({after:receiptHtml}); } this.insertedDiv = insertBefore?contentPane.previousSibling:(insertTop?contentPane.firstChild:contentPane.nextSibling); $(this.insertedDiv).show(); var insertedA = $(this.insertedDiv).down('a[name="inlineReceipt"]'); var fadingDuration = fadingTime ? fadingTime : 5000; if ( focusOnRender ) { try { ( function() { try { if ( focusDiv ) { page.util.focusAndScroll( $( focusDiv ) ); } else { page.util.focusAndScroll( insertedA ); } } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } }.defer() ); } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } } else { // not setting focus to this confirmation, so we make it an aria live region so it will be announced to the screen reader if ( focusDiv ) { page.util.ensureVisible( $( focusDiv ) ); } else { page.util.ensureVisible( insertedA ); } insertedA.setAttribute("aria-live","assertive"); this.insertedDiv.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced (needed for jaws 12) } if ( fadeAway ) { setTimeout( function() { Element.fade( contentPane.nextSibling, { duration : 0.3 } ); }, fadingDuration ); } }, close: function() { if ( this.insertedDiv ) { this.insertedDiv.remove(); } } }; page.NestedInlineFadeAwayConfirmation = Class.create(); page.NestedInlineFadeAwayConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; page.NestedInlineFadeAwaySingleConfirmation = Class.create(); page.NestedInlineFadeAwaySingleConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time, newDivId ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore, false /*only one instance*/, null, null, null, null, newDivId ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; /** * Make sure the container as position: relative so that the offset can work */ page.MiniReceipt = Class.create(); page.MiniReceipt.prototype = { initialize: function( message, containerElement, top, left, time ) { var visibleDuration = time ? time : 2000; var top = top?top:-22; // usually show receipt above var left = left?left:0; var alreadyExistingReceipt = $( containerElement ).down( "div.miniReceipt" ); if ( alreadyExistingReceipt ) { alreadyExistingReceipt.hide( ); } var receiptHtml = '<div class="miniReceipt adding" style="display: none; top:' + top + 'px; left:'+ left + 'px" role="alert" aria-live="assertive">' + message + '</div>'; var receiptElement = $( containerElement ).insert( { top:receiptHtml } ).firstDescendant( ); receiptElement.show( ); setTimeout( function() { Element.fade( receiptElement, {duration:0.3, afterFinish: function() { receiptElement.remove() } } ); }, visibleDuration ); } }; page.extendedHelp = function( helpattributes, windowName ) { window.helpwin = window.open('/webapps/blackboard/execute/viewExtendedHelp?' + helpattributes,windowName,'menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); window.helpwin.focus(); }; page.decoratePageBanner = function() { var bannerDiv = $('pageBanner'); var containerDiv = $('contentPanel') || $('contentPane'); if ( bannerDiv && containerDiv ) { // append hasTopBanner class to container div to hide topRound containerDiv.addClassName('hasTopBanner'); // hide empty title bar if ( !$('pageTitleText') && $('pageTitleDiv') ) { $('pageTitleDiv').hide(); } } }; page.initializeSinglePopupPage = function( pageId ) { // Initialize the single popup page, make sure the window will be closed by clicking submit or cancel, and the parent // window will be refreshed after submit. var items = document.forms; for ( var i = 0; i < items.length; i++ ) { var formItem = items[ i ]; formItem.observe( 'submit', function() { (function() { window.close(); if( window.opener.refreshConfirm ) { window.opener.refreshConfirm(pageId); } }.defer()); } ); if ( formItem.top_Cancel ) { Event.observe( formItem.top_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } if ( formItem.bottom_Cancel ) { Event.observe( formItem.bottom_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } } }; page.openLightbox = function( link, title, url, width, height ) { var lightboxParam = { defaultDimensions : { w : width ? width : 1000, h : height ? height : 800 }, contents : '<iframe src="' + url + '" width="100%" height="100%"/>', title : title, closeOnBodyClick : false, showCloseLink : true, useDefaultDimensionsAsMinimumSize : true }; var lightboxInstance = new lightbox.Lightbox( lightboxParam ); lightboxInstance.open(); }; page.printAndClose = function() { (function() { window.print(); window.close(); }.defer()); }; /** * Utility for data collection step manipulation */ page.steps = {}; page.steps.HIDE = "hide"; page.steps.SHOW = "show"; /** * Hide or show an array of steps given the step ids and * renumber all visible steps on the page. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepIdArr - string array of step ids */ page.steps.hideShowAndRenumber = function ( action, stepIdArr ) { // hide or show each of the step ids given ($A(stepIdArr)).each( function( stepId ) { page.steps.hideShow( action, stepId ); }); // get all H3 elements that contain css class of "steptitle" var stepTitleTags = []; $A(document.getElementsByTagName('h3')).each( function( tag ) { if ( page.util.hasClassName( tag, 'steptitle' ) ) { stepTitleTags.push( $(tag) ); } }); // starting at number 1, renumber all of the visible steps var number = 1; stepTitleTags.each(function( stepTitleTag ) { if ( stepTitleTag.up('div').visible() ) { stepTitleTag.down('span').update(number); number++; } }); }; /** * Hide or show a single step given the step id. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepId - string identifier to a single step */ page.steps.hideShow = function ( action, stepId ) { if ( action == page.steps.SHOW ) { $(stepId).show(); } else if ( action == page.steps.HIDE ) { $(stepId).hide(); } }; page.showChangeTextSizeHelp = function( ) { page.extendedHelp('internalhandle=change_text_size&helpkey=change_text_size','change_text_size' ); return false; }; page.showAccessibilityOptions = function() { var win = window.open('/webapps/portal/execute/changePersonalStyle?cmd=showAccessibilityOptions', 'accessibilityOptions','menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); win.focus(); }; page.toggleContrast = function( ) { new Ajax.Request('/webapps/portal/execute/changePersonalStyle?cmd=toggleContrast', { onSuccess: function(transport, json) { var fsWin; if (window.top.nav) { fsWin = window.top; } else if (window.opener && window.opener.top.nav) { fsWin = window.opener.top; window.close(); } if (fsWin) { fsWin.nav.location.reload(); fsWin.content.location.reload(); } else { window.top.location.reload(); } } }); return false; }; /** * IFrame-based shim used with popups so they render on top of all other page elements (including applets) */ page.popupShim = Class.create(); page.popupShim.prototype = { initialize: function( popup ) { this.popup = popup; }, close: function( ) { this.toggleOverlappingEmbeds( false ); }, open: function( ) { this.toggleOverlappingEmbeds( true ); }, toggleOverlappingEmbeds: function( turnOff ) { ['embed','object','applet','select'].each( function( tag ) { var elems = document.getElementsByTagName( tag ); for ( var i = 0, l = elems.length; i < l; i++ ) { var e = $(elems[i]); if ( !turnOff || ( page.util.elementsOverlap( this.popup, e ) && !e.descendantOf( this.popup ) ) ) { elems[i].style.visibility = ( turnOff ? 'hidden' : '' ); } } }.bind( this ) ); } }; /** * Class for controlling the vtbe enable toggle. */ page.VTBEToggle = Class.create(); page.VTBEToggle.prototype = { initialize: function( vtbeDiv, vtbeOnOffToolKey ) { var toggleFunc = this.toggleVTBE.bindAsEventListener( this ); this.vtbeOnOffToolKey = ( vtbeOnOffToolKey ) ? vtbeOnOffToolKey : "textbox.wysiwyg"; var vtbeDivs = null; if ( vtbeDiv ) { // autowire the specified vtbe vtbeDivs = [ vtbeDiv ]; } else { // autowire all vtbe divs on the page vtbeDivs = document.getElementsByTagName('div'); } $A(vtbeDivs).each( function( div ) { // add toggle listener for each vtbe switch if ( page.util.hasClassName(div, 'vtbeSwitch') ) { div = $(div); if ( div.up('form') ) { var anchor = div.down('a'); page.VTBEToggle.form = div.up('form'); Event.observe( anchor, 'click', toggleFunc ); // save original form data so we can detect unsaved data when toggling VTBE if ( page.VTBEToggle.form && !page.VTBEToggle.origFormData ) { page.VTBEToggle.origFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); } } } }); }, toggleVTBE: function( event ) { // Stop the event to handle firefox behavior when posting into a page. Event.stop(event); // check & warn user of modified form data if ( page.VTBEToggle.form && page.VTBEToggle.origFormData ) { var origFormData = page.VTBEToggle.origFormData; if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var currentFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); for(var i in origFormData) { if ( origFormData.hasOwnProperty( i ) ) { var origVal = origFormData[i]; var currVal = currentFormData[i]; if ( currVal && typeof currVal != 'object' && ( ( typeof currVal != 'string' && origVal != currVal ) || ( typeof currVal == 'string' && origVal.trim() != currVal.trim().replace("&nbsp;","") ) ) ) { if (!confirm( page.bundle.getString("wysiwyg.visual.editor.confirm.unsaved.changes") )) { return; } break; } } } } // get current state of vtbe, toggle it, then reload page UserDataDWRFacade.getStringPermScope( this.vtbeOnOffToolKey, function( wysiwyg ) { UserDataDWRFacade.setStringPermScope( this.vtbeOnOffToolKey, (wysiwyg == 'Y') ? 'N' : 'Y', function() { // If there's a lightbox open, give it a chance to update itself instead of reloading the window if (!window.lightbox || !lightbox.deferUpdateLightboxContent()) { window.location.reload(); } }); }.bind( this )); } }; /** * Looks through the children of the specified element for links with the specified * class name, and if it finds any, autowires lightboxes to them. If lightbox.js/effects.js * hasn't already been loaded, load it. */ page.LightboxInitializer = Class.create( { initialize: function( className, parentElement ) { this.className = className; var links = parentElement.getElementsByTagName('a'); for ( var i = 0, l = links.length; i < l; i++ ) { if ( page.util.hasClassName( links[i], className ) ) { if ( window.lightbox && window.Effect) { this._autowire(); } else { this._load(); } break; } } }, _autowire: function() { lightbox.autowireLightboxes( this.className ); }, _load: function() { var h = $$('head')[0]; var scs = ( !window.lightbox ? ['/javascript/ngui/lightbox.js'] : []).concat( !window.Effect ? ['/javascript/scriptaculous/effects.js'] : [] ); scs.each( function( sc ) { var s = new Element('script', { type: 'text/javascript', src: sc } ); h.appendChild( s ); }); this._wait(); }, _wait: function() { var count = 0; new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( window.lightbox && window.Effect ) { pe.stop(); this._autowire(); } } else // give up if it takes longer than 5s to load lightbox.js/effects.js { pe.stop(); } }.bind(this), 0.05 ); } }); page.YouTubeControls = { toggleAXControls : function( playerid, openYtControlsId, event ) { if( $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display != 'block' ) { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'block'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'block'; $( openYtControlsId ).addClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } else { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'none'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'none'; $( openYtControlsId ).removeClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } Event.stop( event ); }, formatTime : function ( sec ) { var duration = parseInt( sec, 10 ); var totalMinutes = Math.floor( duration / 60 ); var hours = Math.floor( totalMinutes / 60 ); var seconds = duration % 60; var minutes = totalMinutes % 60; if ( hours > 0 ) { return hours + ':' + this.padZero( minutes ) + ':' + this.padZero( seconds ); } else { return this.padZero( minutes ) + ':' + this.padZero( seconds ); } }, padZero : function ( number ) { if (number < 10) { return "0" + number; } else { return number; } }, updateButtonLabels : function ( ytplayer, muteBtnId, playBtnId, status ) { if( ytplayer.isMuted() ) { $( muteBtnId ).update( page.bundle.getString( 'yt.unmute' ) ); } else { $( muteBtnId ).update( page.bundle.getString( 'yt.mute' ) ); } if( status == 1 ) { $( playBtnId ).update( page.bundle.getString( 'yt.pause' ) ); } else { $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); } } }; function onYouTubePlayerReady( playerid ) { var ytplayer = $( playerid ); if( !ytplayer ) { //ie fix: grab object tag instead of embed tag var objTagId = playerid.sub( 'ytEmbed', 'ytObject' ); ytplayer = $( objTagId ); } var playBtnId = playerid.sub( 'ytEmbed', 'playVideo' ); Event.observe( $( playBtnId ), 'click', function( event ) { if( ytplayer.getPlayerState() == 1 ) { ytplayer.pauseVideo(); } else { ytplayer.playVideo(); } Event.stop( event ); } ); var stopBtnId = playerid.sub( 'ytEmbed', 'stopVideo' ); Event.observe( $( stopBtnId ), 'click', function( event ) { ytplayer.pauseVideo(); ytplayer.seekTo( "0" ); $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); Event.stop( event ); } ); var volUpBtnId = playerid.sub( 'ytEmbed', 'volUp' ); Event.observe( $( volUpBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol > 89 ) { ytplayer.setVolume( 100 ); } else { ytplayer.setVolume( currVol + 10 ); } Event.stop( event ); } ); var volDownBtnId = playerid.sub( 'ytEmbed', 'volDown' ); Event.observe( $( volDownBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol < 11 ) { ytplayer.setVolume( 0 ); } else { ytplayer.setVolume( currVol - 10 ); } Event.stop( event ); } ); var muteBtnId = playerid.sub( 'ytEmbed', 'mute' ); Event.observe( $( muteBtnId ), 'click', function( event ) { if( ytplayer.isMuted() ) { ytplayer.unMute(); } else { ytplayer.mute(); } Event.stop( event ); } ); var timeDivId = playerid.sub( 'ytEmbed', 'currentTime' ); var statusDivId = playerid.sub( 'ytEmbed', 'currentStatus'); var dtTime = new Date(); new PeriodicalExecuter( function( pe ) { //lightbox closed, so stop this PeriodicalExecuter if( !$( timeDivId ) ) { pe.stop(); return; } //update the current time $( timeDivId ).update( page.YouTubeControls.formatTime( ytplayer.getCurrentTime() ) ); //update the current status var status = ytplayer.getPlayerState(); var statusStr = page.bundle.getString( 'yt.stopped' ); switch( status ) { case -1 : statusStr = page.bundle.getString( 'yt.stopped' ); break; case 0 : statusStr = page.bundle.getString( 'yt.ended' ); break; case 1 : statusStr = page.bundle.getString( 'yt.playing' ); break; case 2 : statusStr = page.bundle.getString( 'yt.paused' ); break; case 3 : statusStr = page.bundle.getString( 'yt.buffering' ); break; case 5 : statusStr = page.bundle.getString( 'yt.cued' ); break; } page.YouTubeControls.updateButtonLabels( ytplayer, muteBtnId, playBtnId, status ); $( statusDivId ).update( statusStr ); }.bind(this), 0.5 ); //wire the open/close controls wrapper var openYtControlsId = playerid.sub( 'ytEmbed', 'openYtControls' ); Event.observe( $( openYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); var closeYtControlsId = playerid.sub( 'ytEmbed', 'closeYtControls' ); Event.observe( $( closeYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); } page.util.flyoutMenuMainButtonKeyboardHandler = function( event ) { var key = event.keyCode || event.which; if (key == Event.KEY_LEFT || key == Event.KEY_RIGHT) { var elem = Event.element( event ); var target = elem.up( 'li' ); while ( true ) { if ( key == Event.KEY_LEFT ) { target = target.previous(); } else if ( key == Event.KEY_RIGHT ) { target = target.next(); } if ( !target || page.util.hasClassName( target, 'sub' ) || page.util.hasClassName( target, 'mainButton' ) || page.util.hasClassName( target, 'mainButtonType' ) ) { break; } } if ( target ) { var menuLinks = $A( target.getElementsByTagName( 'a' ) ); if ( menuLinks && menuLinks.length > 0 ) { menuLinks[ 0 ].focus(); Event.stop( event ); } } } }; page.util.initFlyoutMenuBehaviourForListActionMenuItems = function( container ) { //Initialize accessible flyout menu behavior if ( !container ) { container = document; } var uls = document.getElementsByTagName('ul'); if (uls) { var numUls = uls.length; for (var i = 0; i < numUls; i++) { var ul = uls[i]; if (page.util.hasClassName(ul, 'nav')) { var lis = ul.getElementsByTagName('li'); if (lis) { var numLis = lis.length; for (var j = 0; j < numLis; j++) { var li = lis[j]; if (page.util.hasClassName(li, 'sub')) { new page.FlyoutMenu($(li)); } else if (page.util.hasClassName(li, 'mainButton') || page.util.hasClassName(li, 'mainButtonType')) { var menuLinks = $A($(li).getElementsByTagName('a')); if (menuLinks && menuLinks.length > 0) { Event.observe(menuLinks[0], 'keydown', page.util.flyoutMenuMainButtonKeyboardHandler.bindAsEventListener(menuLinks[0])); } } } } } } } }; page.subheaderCleaner = { init : function( entityKind ) { var allHidden = true; var firstUl = null; var className = 'portletList-img courseListing ' + entityKind; $A( document.getElementsByClassName( className ) ).each( function( ul ) { if ( !ul.down() ) { ul.previous( 'h3' ).hide(); ul.hide(); if ( !firstUl ) { firstUl = ul; } } else { allHidden = false; } }); if ( allHidden && firstUl ) { firstUl.previous( 'div' ).show(); } } }; /** * Set up any JavaScript that will always be run on load (that doesn't depend on * any application logic / localization) here. * * Please leave this at the bottom of the file so it's easy to find. * */ FastInit.addOnLoad( function() { Event.observe( document.body, "click", page.ContextMenu.closeAllContextMenus.bindAsEventListener( window ) ); Event.observe( document.body, "click", page.ContextMenu.alignArrowsInBreadcrumb.bindAsEventListener( window ) ); Event.observe( document.body, 'keydown', function(event) { var key = event.keyCode || event.which; if ( key == 116 ) // reload current page on F5 key press { Event.stop( event ); // prevent browser from reloading complete frameset if ( Prototype.Browser.IE ) { event.keyCode = 0; } (function() { window.location.reload( true ); }.defer()); return false; } }); page.util.initFlyoutMenuBehaviourForListActionMenuItems(); if ( $('breadcrumbs') ) { new page.BreadcrumbExpander($('breadcrumbs')); // If we're in the content wrapper, hide the content wrapper breadcrumb frame // so that we don't get stacked breadcrumbs. if ( window.name === 'contentFrame' ) { var parent = window.parent; if ( parent ) { var frameset = parent.document.getElementById( 'contentFrameset' ); if ( frameset ) { frameset.rows = "*,100%"; } } } } var contentPane = $('contentPanel') || $('portalPane'); if ( contentPane ) { new page.LightboxInitializer( 'lb', contentPane ); } // add a label for inventory table checkboxes, if needed $A(document.getElementsByTagName("table")).each( function( table ) { if ( !page.util.hasClassName( table, 'inventory' ) ) { return; } var rows = table.rows; if ( rows.length < 2 ) { return; } for (var r = 0, rlen = rows.length - 1; r < rlen; r++) { var cells = rows[r+1].cells; // skip header row for (var c = 0, clen = cells.length; c < clen; c++) { var cell = $(cells[c]); var inp = cell.down('input'); if ( !inp || ( inp.type != 'checkbox' && inp.type != 'radio' ) ) { // We're only looking for checkbox/radio cells to label, so move on continue; } var lbl = cell.down('label'); if (lbl && !lbl.innerHTML.blank()) { break; // skip cells that already have a non-blank label } if ( !lbl ) { // add new label to checkbox lbl = new Element('label', {htmlFor: inp.id} ); lbl.addClassName('hideoff'); cell.insert({bottom:lbl}); } var headerCell = $(cell.parentNode).down('th'); if ( !headerCell ) { break; // skip rows without header cell } // create a temporary clone of the header cell and remove any hidden divs I.e. context menus var tempCell = $(headerCell.cloneNode(true)); var tempCellDivs = tempCell.getElementsByTagName("div"); for ( var i = 0; i < tempCellDivs.length; i++ ) { var d = tempCellDivs[i]; if ( d && !$(d).visible() ) { d.remove(); } } var lblBody = tempCell.innerHTML.replace( /<\/?[^>]*>/g, '' ); // strip html tags from header lblBody = page.bundle.getString('inventoryList.select.item', lblBody); lbl.update( lblBody ); // set label to header contents (minus tags) break; } } }); //set default font sizes to display text. hack to fix IE7 default font size issue. var sizes = {1:'xx-small', 2:'x-small', 3:'small', 4:'medium', 5:'large', 6:'x-large', 7:'xx-large'}; var fonts = document.getElementsByTagName('font'); for ( var i = 0; i < fonts.length; i++ ) { var font = fonts[i]; if ( font.size ) { // Since some font elements may be manually created by end users we have to handle random // values in here. if (!font.size.startsWith("+") && !font.size.startsWith("-")) { var fsize = parseInt(font.size, 10); if (fsize > 0 && fsize < 8) { font.style.fontSize = sizes[fsize]; } } } } try { if ( top && top.document.getElementById( 'bbFrameset' ) && window.name != 'nav' ) { top.document.getElementsByName('content')[0].title = page.bundle.getString( "frameset.contentframe.title" ) + " : " + document.title; } } catch ( err ) { // When Content System is loaded within a Vista popup window, cross-site security will prevent // accesses to top.document. Ignore this error and continue } page.scrollToEnsureVisibleElement(); page.isLoaded = true; }); /** * Class for adding an insertion marker within a list */ page.ListInsertionMarker = Class.create(); page.ListInsertionMarker.prototype = { initialize: function( listId, position, key, text ) { var list = $(listId); var listElements = list.childElements(); // create a marker list item var marker = new Element('li',{'id':listId+':'+key, 'class':'clearfix separator' }); marker.update('<h3 class="item" id=""><span class="reorder editmode"><span><img alt="" src="/images/ci/icons/generic_updown.gif"></span></span><span class="line"></span><span class="text">'+text+'</span></h3>'); //marker.setStyle({ position: 'relative', minHeight: '10px', padding: '0px', background: '#CCCCCC' }); position = ( position > listElements.length ) ? listElements.length : position; // add marker to list if (listElements.length == 0) { list.insert({top:marker}); // add marker to top of empty list } else if (listElements.length == position) { list.insert({bottom:marker}); // add marker after last element } else { listElements[position].insert({before:marker}); // add marker before element at position } var select = $('reorderControls'+listId).down('select'); // add a option for the marker to the keyboard repostioning select, if any if (select) { var option = new Element('option',{'value':key}).update( '-- '+text+' --' ); if (listElements.length == 0) { select.insert({top:option}); } else if (listElements.length == position) { select.insert({bottom:option}); } else { $(select.options[position]).insert({before:option}); } } } }; page.scrollToEnsureVisibleElement = function( ) { var params = window.location.search.parseQuery(); var ensureVisibleId = params.ensureVisibleId; if ( !ensureVisibleId ) { return; } var ensureVisibleElement = $(ensureVisibleId); if ( !ensureVisibleElement ) { return; } var pos = ensureVisibleElement.cumulativeOffset(); var scrollY = pos.top; var bodyHeight = $( document.body ).getHeight(); if (scrollY + ensureVisibleElement.getHeight() < bodyHeight) { return; // element is already visible } var receipt = $('inlineReceipt_good'); if ( receipt && receipt.visible() ) // pin receipt to top { var offset = receipt.cumulativeOffset(); offset.top = 0; var w = parseInt(receipt.getStyle('width'), 10); if ( Prototype.Browser.IE ) // width in IE includes border & padding, need to remove it { var bw = parseInt(receipt.getStyle('borderLeftWidth'), 10) + parseInt(receipt.getStyle('borderRightWidth'), 10); var pw = parseInt(receipt.getStyle('paddingLeft'), 10) + parseInt(receipt.getStyle('paddingRight'), 10); w = w - bw - pw; } receipt.setStyle({ position:"fixed", zIndex:"1000", left: offset.left + "px", top: offset.top + "px", width: w + "px"}); scrollY = scrollY - 2 * receipt.getHeight(); } // scroll window to show ensureVisibleElement window.scrollTo(0, scrollY ); }; /** * Recursively walks up the frameset stack asking each window to change their * document.domain attribute in anticipation of making a cross-site scripting * call to an LMS integration. * * <p>This should only be called from popup windows, as changing the document.domain * value of a window that is going to be reused later could do surprising things. * * @param domain Domain name shared by the Learn and LMS servers. */ page.setLmsIntegrationDomain = function( domain ) { if ( '' == domain ) { return; } try { if ( parent.page.setLmsIntegrationDomain ) { parent.page.setLmsIntegrationDomain( domain ); } } catch ( err ) { /* Ignore */ } document.domain = domain; }; page.refreshTopFrame = function() { if ( window.top.nav ) { window.top.nav.location.reload(); } }; page.rewriteTaskStatusUntilDone = function( spanId, taskId) { var theSpan = $(spanId); if (theSpan) { new Ajax.Request("/webapps/blackboard/execute/getSystemTaskStatus?taskId=" + taskId, { method: 'post', onSuccess: function(transport, json) { var result = transport.responseText.evalJSON( true ); theSpan = $(spanId); // reload it just in case it was removed between the request and response if (theSpan) { theSpan.update(result.text); if (result.complete == "false") { setTimeout(function() {page.rewriteTaskStatusUntilDone(spanId, taskId);}, 3000); } } }, onFailure: function(transport, json) { theSpan = $(spanId); //reload the span as above if (theSpan) { theSpan.hide(); $(spanId+'error').show(); } } }); } }; /* * Clean up the task id which associated with the specified course, so that the inline warning does not show up again */ page.cleanTaskId = function( courseId ) { //we don't care about the result, at worse it will display again on the next page new Ajax.Request("/webapps/blackboard/execute/courseMain?action=cleanTaskId&course_id=" + courseId, { method: 'post' }); }; } /* ================================================================== *The JavaScript Validation objects to be used in form validation. * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ /** * General purpose DOM utility methods. There's probably a better place for this. * Private methods and properties have names prefixed with "_". */ var bbDomUtil = { _inputTypes: [ 'input', 'textarea', 'select', 'button' ], _maxRecursion: 500, /** * @param elName name of the form input element (the request parameter name). * @return an array of two or more elements, a single element, or null. */ getInputElementByName: function( elName ) { var elArray = this._getInputElementsByNameInSection( 'dataCollectionContainer', elName ); if ( elArray.length === 0 ) { elArray = this._getInputElementsByName( elName ); } return ( elArray.length === 0 ) ? null : ( elArray.length == 1 ? elArray[ 0 ] : elArray ); }, /* * @param sectionId the ID of any element inside a form * @return the enclosing form element or null */ getEnclosingForm: function( sectionId ) { var form = null; if ( sectionId ) { var count; var section = document.getElementById( sectionId ); while ( section ) { ++count; if ( count > this._maxRecursion ) { break; } if ( section.tagName && section.tagName.toLowerCase() == "form" ) { form = section; break; } section = section.parentNode; } } return ( !form ) ? ( document.forms.length === 0 ? null : document.forms[ 0 ] ) : form; }, /** * Adds some additional processing to account for an IE bug * @param id the ID of an element */ getElementById: function( id ) { var el = $( id ); try { if ( el && /msie|internet explorer/i.test( navigator.userAgent ) && el.attributes.id && el.attributes.id.value != id && document.all ) { // IE usually returns item at 0 for ( var i = 0; i < document.all[ id ].length; ++i ) { if ( document.all[ id ][ i ].attributes.id && document.all[ id ][ i ].attributes.id.value == id ) { return $( document.all[ id ][ i ] ); } } } } catch ( e ) { // Ignore all exceptions } return el; }, syncCheckboxToInput: function( checkboxElement, inputElement ) { var checkbox = $( checkboxElement ); var input = $( inputElement ); if ( checkbox && input ) { var checkIfNotEmpty = function( ) { checkbox.checked = ( input.value.strip?input.value.strip( ):input.value )?true:false; } input.observe( 'change', checkIfNotEmpty ); input.observe( 'blur', checkIfNotEmpty ); } }, /** * @param sectionId the ID of an element that restricts the scope of elements. Cannot be null. * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name in the scope of the specified parent element. */ _getInputElementsByNameInSection: function( sectionId, elName ) { var result = []; if ( sectionId ) { var section = document.getElementById( sectionId ); if ( section ) { for ( var i = 0; i < this._inputTypes.length; ++i ) { var elements = section.getElementsByTagName( this._inputTypes[ i ] ); for ( var j = 0; j < elements.length; ++j ) { if ( elements[ j ].name == elName ) { result.push( elements[ j ] ); } } } } } return result; }, /** * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name. */ _getInputElementsByName: function( elName ) { var result = []; var elArray = document.getElementsByName( elName ); var formName = null; for ( var i = 0; i < elArray.length; ++i ) { if ( elArray[ i ].tagName.match( /^(input|select|textarea|button)$/i ) ) { if ( elArray[ i ].form !== null ) { if ( !formName ) { formName = elArray[ i ].form.name; } else if ( formName != elArray[ i ] .form.name ) { // Ignore elements that don't belong to the same form as the first one found. continue; } result.push( elArray[ i ] ); } } } return result; } }; /************************************************************ * Object formCheckList. Use this object to hold form objects * to be validated and perform form validation ************************************************************/ var addElement, removeElement, removeAllElements, getElement, checkForm, CheckGroup; var formCheckList = new formCheckList(); var dblSubmit = false; var skipValidation=false; function formCheckList() { this.checkList = []; this.addElement = addElement; this.removeElement = removeElement; this.removeAllElements = removeAllElements; this.getElement = getElement; this.check = checkForm; } function addElement(element) { if ( typeof element.group != 'undefined' ) { for ( var i=0; i < this.checkList.length;i++ ) { if ( this.checkList[i].name == element.group ) { this.checkList[i].addElement(element); return; } } var grp = new CheckGroup(element); grp.addElement(element); this.checkList[this.checkList.length] = grp; return; } this.checkList[this.checkList.length] = element; } function removeElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { this.checkList.splice(i, 1); } } } function getElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { return this.checkList[i]; } } } function removeAllElements() { var valSize = this.checkList.length; this.checkList.splice(0, valSize); } function checkForm() { if ( typeof(window.invalidAnswersTmp)!='undefined' ) { window.invalidAnswersTmp=[]; } var valid =true; for ( var i=0;i<this.checkList.length;i++ ) { if ( this.checkList[i].canValidate && !this.checkList[i].canValidate() ) { // cannot validate the input so skip it and continue onto the next input continue; } if ( !this.checkList[i].check() ) { if ( this.checkList[i].answerChk ) { valid=false; } else { return false; } } } return valid; } ///////////////////End of object formCheckList//////////////// /************************************************************ * Object: inputText. Use this object to validate text input in * your form (for input type == text|password|textarea|BUT NOT FILE!!! (FILE IS READ-ONLY)) ************************************************************/ function inputText(h) { if (h.id) { this.element = bbDomUtil.getElementById( h.id ); } else { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; } this.shouldFocus = h.shouldFocus; if ( h.shouldFocus === undefined ) { this.shouldFocus = true; } if ( this.shouldFocus ) { this.formatElement = 'bbDomUtil.getInputElementByName("'+h.display_format+'")'; this.focusElement = h.focus_element; // override element for focus in case of error } this.fieldName = h.name; this.disable_script = h.disable_script; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.minlength = h.minlength; this.maxlength = h.maxlength; this.trim = h.trim; this.regex = h.regex; this.regex_msg = h.regex_msg; this.regex_match = h.regex_match; this.verify = h.verify; this.check = inputTextCheck; this.valid_number = h.valid_number; this.min_value = h.min_value; this.max_value = h.max_value; this.nonnegative = h.nonnegative; this.valid_float = h.valid_float; this.allow_negative_float = h.allow_negative_float; this.valid_percent = h.valid_percent; this.allow_negative_percent = h.allow_negative_percent; this.valid_efloat = h.valid_efloat; // float with optional exponent this.valid_email = h.valid_email; this.valid_url = h.valid_url; this.required_url = h.required_url; this.invalid_chars = h.invalid_chars; // eg: /[%&#<>=+,]/g this.cmp_element = 'bbDomUtil.getInputElementByName("'+h.cmp_field+'")'; this.cmp_ref_label = h.cmp_ref_label; this.xor = h.xor; this.cmp_required = h.cmp_required; this.activeX = h.activeX; // synch activeX to hidden field before submission this.isHtmlDoc = h.isHtmlDoc; // is portfolio with body and html this.img_check = h.img_check; this.empty_value_warn = h.empty_value_warn; this.valid_system_role_id = h.valid_system_role_id; this.required = h.required; this.canValidate = h.canValidate; // callback function to determine whether the inputtext should be validated if (h.ref_and_regex === undefined) { this.ref_and_regex = true; } else { this.ref_and_regex = h.ref_and_regex; } if ( document.all && document.getElementById(h.name+'_ax') ) { this.axobj = document.getElementById(h.name+'_ax'); } // Add here anything you need to validate } function isAnEmptyVtbe(val) { // Different browsers populate an 'empty' VTBE with a different blank line - look for any of the known combinations and ignore them. // NOTE: Changes to this method need to be reflected in AssessmentDisplayControl.isAnEmptyVtbe return ( !val || !val.replace(/<p><\/p>/gi,'').trim() || !val.replace(/<br \/>/gi,'').trim() || !val.replace(/&nbsp;/gi,'').trim()); } // Do actual check here function inputTextCheck() { if ( this.shouldFocus === undefined ) { this.shouldFocus = true; } var element = eval(this.element); var cmp_element = eval(this.cmp_element); if ( element ) { // don't validate disabled elements if (element.disabled) { return true; } var focusElement = element; if ( this.axobj ) { focusElement = this.axobj; } this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.custom_alert_cmp = (typeof this.custom_alert_cmp != 'undefined') ? this.custom_alert_cmp : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( isAnEmptyVtbe(val) ) { val=''; } var trimmedVal, numVal, isValidNum, re; if ( this.activeX && isEmptyWysiwyg(element) ) { element.value = ''; val = ''; } if ( typeof eval(this.formatElement) != "undefined" && eval(this.formatElement) !== null ) { //Check if it is a mathml where; if ( /<APPLET ID="(\d+)" NAME="(\w+)"/.test(element.value) ) { if ( getRadioValue(eval(this.formatElement)) == 'P' ) { if ( !confirm(JS_RESOURCES.getString('validation.plain_text.confirm')) ) { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } } if ( this.trim ) { val = val.trim(); element.value = val; } //Remove leading & trailing spaces if needed if ( typeof cmp_element != 'undefined' ) { if ( this.xor ) { if ( val.trim()=='' ^ cmp_element.value.trim()=='' ) { if ( val.trim()=='' ) { alert( this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } } else { alert(this.custom_alert_cmp ? this.custom_alert_cmp : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.cmp_ref_label, this.ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } } return false; } } } if ( this.disable_script ) { if ( typeof eval(this.formatElement) == "undefined" || getRadioValue(eval(this.formatElement)) != 'P' ) { re = /<\s*script/ig; var re1 = /<\s*\/\s*script\s*>/ig; val = val.replace(re,'<disabled-script'); val = val.replace(re1,'</disabled-script>'); var re2 = /href\s*=\s*(['"]*)\s*javascript\s*:/ig; val = val.replace(re2,"href=$1disabled-javascript:"); element.value = val; } } if ( this.valid_number ) { trimmedVal = val.trim(); //added this check bcoz for numeric fields which are not required, this function was not working if ( trimmedVal!="" ) { var numLocalizer = new NumberLocalizer(); if ( numLocalizer === undefined ) { numVal = parseInt(trimmedVal, 10); } else { numVal = numLocalizer.parseNumber( trimmedVal ); } isValidNum = !isNaN(numVal); if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if (this.nonnegative && numVal<0) { alert(JS_RESOURCES.getFormattedString('validation.negative', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if ( ( (this.min_value || this.min_value === 0) && numVal < this.min_value ) || ( this.max_value && ( numVal > this.max_value ) ) ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_value', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_float ) { trimmedVal = val.trim(); var numFormat; if ( this.allow_negative_float ) { numFormat = LOCALE_SETTINGS.getString('float.allow.negative.format'); } else { numFormat = LOCALE_SETTINGS.getString('float.format'); } if ( numFormat ) { //hand parse for l10n re = new RegExp( numFormat ); isValidNum = trimmedVal.search( re ) === 0; } else { //try to use platform native (non-localized) numVal = parseFloat(trimmedVal); isValidNum = !isNaN(numVal); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test(trimmedVal.substring(numVal.toString().length)); } } if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_percent ) { if ( this.allow_negative_percent ) { if ( !isValidNegativePercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.allow_negtive.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { if ( !isPercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_efloat ) { if ( !isNumeric(val) ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { focusElement = (this.focusElement ? this.focusElement : this.element); if ( focusElement.focus ) { safeFocus( focusElement ); } } return false; } } if ( this.valid_email ) { if ( val.trim() == '' ) { if ( confirm(JS_RESOURCES.getString('warning.email')) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { re = /^(['`a-zA-Z0-9_+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; if ( !re.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.email', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } // confirms via javascript pop-up if input field is empty; // user can click Ok to proceed or cancel to go back with the element focused // the message that pops up is the message passed in with ref_label if ( this.empty_value_warn ) { if ( val.trim() == '' ) { if ( confirm(this.ref_label) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } var extra = 0; if (navigator.appName=="Netscape" && parseInt(navigator.appVersion, 10 )>=5) { var index = val.indexOf('\n'); while(index != -1) { extra += 1; index = val.indexOf('\n',index+1); } } if ( this.maxlength < val.length + extra ) { var newlength = val.length + extra; if ( (newlength - this.maxlength) > 1 ) { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.plural', [this.ref_label,this.maxlength,(newlength-this.maxlength)])); } else { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.singular', [this.ref_label,this.maxlength])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } // required_url, unlike valid_url, flags empty strings as invalid URLs. if ( this.required_url ) { if ( val.trim() == '' ) { alert(JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } if ( !isValidUrl(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_url ) { if ( val.trim()=='' ) { return true; } var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; if ( !oRegExp.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( typeof(this.regex) == 'string' ) { this.regex=eval(this.regex); } if ( (typeof(this.regex) == 'object' || typeof(this.regex) == 'function') && val.trim() != '' ) { re =this.regex; if ( this.regex_match && val.search(re) == -1 ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } if ( !this.regex_match && re.test(val) ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.invalid_chars ) { // if string was passed, convert to regular expression object if( Object.isString( this.invalid_chars ) ) { var stringToParse = this.invalid_chars; var firstSlashPos = stringToParse.indexOf("/"); var lastSlashPos = stringToParse.lastIndexOf("/"); var pattern = stringToParse.substring( ++firstSlashPos, lastSlashPos ); var modifier = stringToParse.substring( ++lastSlashPos, stringToParse.length ); this.invalid_chars = new RegExp( pattern, modifier ); } var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.verify ) { var chk_field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'_chk')); var field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'')); if ( chk_field.value != val ) { alert(JS_RESOURCES.getFormattedString('validation.mismatch', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( chk_field ); } return false; } // Encode password if ( element.type == 'password' ) { element.value = element.value.trim(); if ( element.value != '' ) { element.value = field.value = chk_field.value = calcMD5(element.value); } else { alert(JS_RESOURCES.getString('validation.password')); element.value = field.value =''; if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.cmp_required && element.value.trim()!='' ) { if ( !cmp_element.value.trim().length ) { alert(JS_RESOURCES.getFormattedString('validation.cmp_field.rejected', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } return false; } } if ( this.img_check ) { return image_check(element); } //AS-102122, if a image tag without ALT properties <img src="1.jpg">, add a null ALT for it. <img src="1.jpg" alt=""> imgTag_check(element,0); // System role ids cannot begin with "BB" as of 7.2; such ids are reserved for solely for Blackboard use // Checks field to see if string begins with "BB" case-insensitive and if so, alert the user if ( this.valid_system_role_id ) { if ( element.value.indexOf('BB') === 0 || element.value.indexOf('bb') === 0 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.system_role.reserve', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } else { return true; } } } return true; } ///////////////////End of object inputText/////////////////// //check ALT propertity for <img tag, if there isn't ALT propertiry, add ALT="" for this tag function imgTag_check(element , start){ var imgStart = element.value.indexOf("<img",start); // img: <img src=... > if (imgStart > -1 ){ var end = element.value.indexOf(">",imgStart); if (end == -1 ){ return; } var imgData = element.value.substring(imgStart, end+1); // <img src=... > if(imgData.indexOf("alt") == -1){ imgData = "<img alt=\"\" " + imgData.substring(4); element.value = element.value.substring(0,imgStart) + imgData + element.value.substring(end+1); } imgTag_check(element, end); } } function image_check(element) { var ext = element.value.match(/.*\.(.*)/); ext = ext ? ext[1] :''; var re = /gif|jpeg|png|tif|bmp|jpg/i; if ( ! re.test(ext) && element.value ) { if ( ! confirm(JS_RESOURCES.getFormattedString('validation.image_type', [ext])) ) { element.focus(); return false; } } return true; } /************************************************************ * Object: inputDate. Use this object to validate that the * associated date fields are not empty ************************************************************/ var inputDateCheck; function inputDate(h) { this.element_mm = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mm")'; this.element_dd = 'bbDomUtil.getInputElementByName("'+h.name+'_0_dd")'; this.element_yyyy = 'bbDomUtil.getInputElementByName("'+h.name+'_0_yyyy")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputDateCheck; // Add here anything you need to validate } // Do actual check here function inputDateCheck() { var element_mm = eval(this.element_mm); var element_dd = eval(this.element_dd); var element_yyyy = eval(this.element_yyyy); if ( typeof element_mm != 'undefined' && element_dd !='undefined' && element_yyyy !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = ( this.ref_label ) ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_mm.name]); if ( element_mm.selectedIndex == -1 || element_dd.selectedIndex == -1 || element_yyyy == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.date.required', [this.ref_label])); if ( element_mm.selectedIndex == -1 ) { element_mm.focus(); } else if ( element_dd.selectedIndex == -1 ) { element_dd.focus(); } else { element_yyyy.focus(); } return false; } } return true; } ///////////////////End of object inputDate/////////////////// /************************************************************ * Object: inputTime. Use this object to validate that the * associated time fields are not empty ************************************************************/ var inputTimeCheck; function inputTime(h) { this.element_hh = 'bbDomUtil.getInputElementByName("'+h.name+'_0_hh")'; this.element_mi = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mi")'; this.element_am = 'bbDomUtil.getInputElementByName("'+h.name+'_0_am")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputTimeCheck; // Add here anything you need to validate } // Do actual check here function inputTimeCheck() { var element_hh = eval(this.element_hh); var element_mi = eval(this.element_mi); var element_am = eval(this.element_am); if ( typeof element_hh != 'undefined' && element_mi !='undefined' && element_am !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_hh.name]); if ( element_hh.selectedIndex == -1 || element_mi.selectedIndex == -1 || element_am == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.time.required', [this.ref_label])); if ( element_hh.selectedIndex == -1 ) { element_hh.focus(); } else if ( element_mi.selectedIndex == -1 ) { element_mi.focus(); } else { element_am.focus(); } return false; } } return true; } ///////////////////End of object inputTime/////////////////// /************************************************************ * Object: inputSelect. Use this object to validate that the * associated select field is not empty ************************************************************/ var inputSelectCheck; function inputSelect(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.minSelected = h.minSelected; this.maxSelected = h.maxSelected; this.title = h.title; this.isMultiSelect = h.isMultiSelect; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputSelectCheck; // Add here anything you need to validate } // Do actual check here function inputSelectCheck() { var element = eval(this.element); var checked = 0; if ( typeof element != 'undefined' ) { if ( this.isMultiSelect) { if( this.minSelected ) { //check that at least minSelected number of options is selected //bsomala checked = element.options.length; if(checked < this.minSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.minItems', [this.minSelected])); element.focus(); return false; } } checked = 0; if ( this.maxSelected ) { checked = element.options.length; if(checked > this.maxSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.maxItems', [this.maxSelected])); element.focus(); return false; } } } else { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); if ( (element.selectedIndex == -1) || (element.options[element.selectedIndex].value == "") ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); element.focus(); return false; } } } return true; } ///////////////////End of object inputSelect/////////////////// /************************************************************ * Object: inputFile. Use this object to validate that the file upload is not empty. IMPORTANT: file type is READ ONLY ************************************************************/ var inputFileCheck; function inputFile(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.invalid_chars = h.invalid_chars; this.minlength = h.minlength; this.img_check = h.img_check; this.check = inputFileCheck; // Add here anything you need to validate } // Do actual check here function inputFileCheck() { var element = eval(this.element); if ( typeof element != 'undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( this.invalid_chars ) { var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); shiftFocus( element, false); return false; } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } return false; } if ( this.img_check ) { return image_check(element); } } return true; } ///////////////////End of object inputFile/////////////////// /************************************************************ * Object: Check_EventTime. Use this object to make sure * that the end time is not before the start time, confirm pastdue time, * check duration of the event. *************************************************************/ var Check_EventTime_check; function Check_EventTime(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check; } function Check_EventTime_check() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( (document.forms[0].restrict_start && document.forms[0].restrict_end)|| (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end) ) { if ( (document.forms[0].restrict_start && document.forms[0].restrict_end && document.forms[0].restrict_start.checked && document.forms[0].restrict_end.checked) || (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end && document.forms[1].restrict_start.checked && document.forms[1].restrict_end.checked) ) { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } } else { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end && end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /* * SCR 17696 * This validation check should be used in the date widgets instead of the earlier one * as that has the chackboxes names hardcoded in them. The existing date wodgets * use it, but going ahead this should be the used. It helps specially when there are * multiple date widgets on the same page. */ var Check_EventTime_check_multiple; function Check_EventTime_multiple(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check_multiple; } function Check_EventTime_check_multiple() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( restr && cmp_restr ) { //This block has been aded due to SCR 17696. //Reason : if this method is directly called from a JSP page which is not a part of // the existing date widgets, and the parameters of stsrt date, end date, start checkbox and // end checkbox are passed, and additionally the page has another if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /*We always need time in our favorite format */ function sql_datetime(dat) { var year = dat.getFullYear(); var mon = dat.getMonth(); mon++; mon = (mon<10)?'0'+mon:mon; var day = dat.getDate(); day = (day<10)?'0'+day:day; var hh = dat.getHours(); hh = (hh<10)?'0'+hh:hh; var mi = dat.getMinutes(); mi = (mi<10)?'0'+mi:mi; var ss = dat.getSeconds(); ss = (ss<10)?'0'+ss:ss; return year+'-'+mon+'-'+day+' '+hh+':'+mi+':'+ss; } ///////////////////End of object Check_EventTime///////////// /******************************************************************************** * Object DoubleSubmit(): * Use this object to prevent multiple times form submission * Second argument is wait image source; first argument is image name (string) or * instance of ImageSwapper object created for submit button (if it has rollovers) *********************************************************************************/ var checkDoubleSubmit; // Prevent multiple form submission function DoubleSubmit() { this.submitted = 0; this.check = checkDoubleSubmit; } function checkDoubleSubmit() { if ( this.submitted > 0 ) { alert (JS_RESOURCES.getString('notification.submit')); return false; } else { this.submitted++; } return true; } ///////////////////End of Object DoubleSubmit()////////////////// /******************************************************************************** * Object RadioCheckBox(): * Use this object to make sure that at least one item is selected from the group of * radio/checkbox groups. Just attach this code to checkbox/radio group (refered below as 'element'): * formCheckList.addElement(new RadioCheckBox({name:'element or subgroup name',group:'group name',ref_label:"group label in alerts"})); *********************************************************************************/ var groupAddElement, checkGroupChecked, groupIsChecked; // Constructor function function RadioCheckBox(h) { return h; } function CheckGroup(h) { this.name = h.group; this.ref_label = h.ref_label; this.elements = []; this.addElement = groupAddElement; this.check = checkGroupChecked; } function groupAddElement(h) { this.elements[this.elements.length] = h.name; } function checkGroupChecked() { var list = this.elements; var chk = false; for ( var i = 0; i < list.length; i++ ) { if ( groupIsChecked(list[i]) ) { return true; } } var msg = null; var group = bbDomUtil.getInputElementByName(list[0]); group = (typeof group[0] != 'undefined') ? group[0]:group; if ( group.type == "radio" ) { msg = JS_RESOURCES.getFormattedString('validation.radio.required', [this.ref_label]); } else { msg = JS_RESOURCES.getFormattedString('validation.option.required', [this.ref_label]); } alert(msg); group.focus(); return false; } function groupIsChecked(groupName) { var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var checked = false; if ( typeof group != 'undefined' ) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( group[i].checked ) { checked = true; return checked; } } } else { if ( group.checked ) { checked = true; return checked; } } } return checked; } ///////////////////End of Object CheckGroup()//////////////////// /******************************************************************************** * Object selector(): * Use this object to make sure that at least one item is available in the Selector element (see PickerElement.java) * For use when Selector is marked Required: * formCheckList.addElement(new CheckSelector({name:'element or subgroup name',ref_label:"group label in alerts"})); *********************************************************************************/ var selectorCheck, selectorElementAvailable; // Constructor function function selector(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.required = h.required; this.check = selectorCheck; // Add here anything you need to validate } // Do actual check here function selectorCheck() { if(this.required) { var isAvailable = selectorElementAvailable(this.fieldName); this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element.name]); if ( !isAvailable ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } } return true; } function selectorElementAvailable(groupName) { // we need at least one "Remove" checkbox to be present and unchecked (one element is added but not removed) var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var available = false; if ( typeof group != 'undefined' && group !== null) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( !group[i].checked ) { available = true; return available; } } } else { if ( !group.checked ) { available = true; return available; } } } return available; } ///////////////////End of Object CheckSelector()//////////////////// //////////////// Start some useful generic functions //////////// /* Function ltrim(): Remove leading spaces in strings: Usage:trimmedString = originalString.ltrim(); */ function ltrim() { return this.replace( /^\s+/g,''); } String.prototype.ltrim = ltrim; /* Function rtrim(): Remove trailing spaces in strings: Usage:trimmedString = originalString.rtrim(); */ function rtrim() { return this.replace( /\s+$/g,''); } String.prototype.rtrim = rtrim; /* Function trim(): Remove leading and trailing spaces in strings: Usage:trimmedString = originalString.trim(); */ function trim() { return this.rtrim().ltrim(); } String.prototype.trim = trim; /* Function invalidChars(): Returns an array of illegal chars Usage: var listOfChars = myStringToSearch.invalidChars(regularExpression); regularExpression = /[illegal chars]/g; Sample re = /[! &^$#]/g */ function invalidChars (re) { var chrs = this.match(re); if ( chrs ) { for ( var j=0;j<chrs.length;j++ ) { if ( chrs[j]===' ' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.space'); } else if ( chrs[j]==',' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.comma'); } else if ( chrs[j]=='\\' ) { chrs[j]='\\\\'; } } } return chrs; } String.prototype.invalidChars = invalidChars; /** Function getRadioValue(): Returns selected value for group of radio buttons * Usage: var selectedValue = getRadioValue(radio); radio - reference to radio group */ function getRadioValue(radio) { for ( var i=0;i< radio.length;i++ ) { if ( radio[i].checked ) { return radio[i].value; } } } /** Function isEmptyWysiwyg(): Checks WYSIWYG control for value */ function isEmptyWysiwyg(field) { // first remove any HTML tags from the value, then check if it's empty (all spaces or &nbsp;s) // explicitly adding the unicode non-breaking space and line feed/break since IE and safari // don't seem to include them in \s var EMPTY_REGEXP = /^(\s|\u00A0|\u2028|\u2029|&nbsp;)*$/i; // Input is not empty if it contains one of the following tags: img/object/embed var SPECIALTAGS = /(<\s*(img)|(object)|(embed)|(hr)|(input)|(applet))/i; if ( field && typeof(field.value) == 'string' && field.value ) { var notags = field.value.replace(/<.*?>/g,''); var result = EMPTY_REGEXP.test(notags); return ( result && !SPECIALTAGS.test(field.value) ); } return true; } /** Function isValidUrl(): Checks if given string is in the general URL format */ var VALID_URL_REGEXP = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; function isValidUrl(string) { return( VALID_URL_REGEXP.test(string) ); } /** Numeric */ var EFLOAT_REGEXP = LOCALE_SETTINGS.getString('efloat.format'); var THOUSANDS_SEP = LOCALE_SETTINGS.getString('thousand.sep.format'); /*rejectThousandSep: if true then the presence of the thousands-separator is an error (non-numeric) * e.g. we don't accept it for point, since point/score is rarely in thousands range. */ function isNumeric(string, rejectThousandSep ) { string = string.trim(); if ( rejectThousandSep !== null && rejectThousandSep ) { var hasThousands = ( string.search( new RegExp( THOUSANDS_SEP ) ) !== -1 ) ; if (hasThousands) { return false; } } string = string.replace(new RegExp(THOUSANDS_SEP, 'g'), ''); if ( string.search( new RegExp(EFLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return !isNaN(floatValue); } return false; } /** Float between 0 and 100 */ var FLOAT_REGEXP = LOCALE_SETTINGS.getString('float.format'); function isPercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= 0 && floatValue <= 100 ); } return false; } /** Float between -100 and 100 */ var FLOAT_ALLOW_NEGATIVE_REGEXP = LOCALE_SETTINGS.getString('float.allow.negative.format'); function isValidNegativePercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_ALLOW_NEGATIVE_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= -100 && floatValue <= 100 ); } return false; } /*Function submitForm() Call this function to validate and submit form @param form the name of the form or the DOM object representing the form. If null or undefined, submits first form on page. */ function submitForm(form) { if ( validateForm() ) { if (form) { if ( typeof( form ) == "string" ) { document.forms[ form ].submit(); } else { form.submit(); } } else { document.forms[0].submit(); } } } /* Sort numerical array in ascending order */ function numericalArraySortAscending(a, b) { return (a-b); } /*Function validateForm() * Call this function onSubmit inside <form> tag */ function validateForm() { // Set textarea value to VTBE contents if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if ( skipValidation ) { return true; } /* Validate form */ var valid = formCheckList.check(); var i; /*Check for invalid answers if any present */ var invalidAnswersArray = []; var invAns = window.invalidAnswers; if ( typeof( invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } invAns = window.invalidAnswersTmp; if ( typeof(invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } var stringArg = ''; if ( invalidAnswersArray.length > 0 ) { invalidAnswersArray.sort(numericalArraySortAscending); var lastIndex = invalidAnswersArray.length - 1; for ( var x = 0; x < invalidAnswersArray.length; x++ ) { stringArg += invalidAnswersArray[x]; if ( x < lastIndex ) { if ( ( (x+1) % 10 ) === 0 ) { stringArg += ",\n"; } else { stringArg += ","; } } } } if ( stringArg !== '' && valid ) { var msgKey; if ( !assessment.backtrackProhibited ) { msgKey = 'assessment.incomplete.confirm'; } else { msgKey = 'assessment.incomplete.confirm.backtrackProhibited'; } if (assessment.isSurvey) { msgKey = msgKey + ".survey"; } if ( !confirm( JS_RESOURCES.getFormattedString( msgKey, [stringArg] ) ) ) { valid = false; // User decided not to submit } else { assessment.userReallyWantsToSubmit = true; } window.invalidAnswersTmp = []; // Clearing up } /* Go back to placeholders if validation failed (valid == false) */ if ( ismath && !valid ) { api.setMathmlBoxes(); } /* If everything is OK and ready to go,check that the form was not already submitted */ if ( valid && dblSubmit ) { valid = dblSubmit.check(); } return valid; } /*Function boxSelector() * Use this function to select, unselect or invert selection for specified checkbox groups * Call: boxSelector(['name1','name2',...,'namen'],action), here action is 'select', or 'unselect', or 'invert' */ function boxSelector(list,action) { action = (action == 'select') ? true : (action == 'unselect') ? false : action; for ( var i=0;i<list.length;i++ ) { var group = 'bbDomUtil.getInputElementByName("'+list[i]+'")'; if ( typeof (group = eval(group)) != 'undefined' ) { var j; if ( action == 'invert' ) { for ( j=0;j<group.length;j++ ) { group[j].checked = !group[j].checked; } } else { for ( j=0;j<group.length;j++ ) { group[j].checked = action; } } } } } function setHidden (from,to) { var hide = eval(to); hide.value = from.value; } ////////////////////////////////////////////////////////////////// /** * Check_Answer object was added by request specified in mscr 524 * to provide validation to student answers * Variable invalidAnswers has to be added to the page where assessment is submitted * It should contain the list of unfinished questions excluding question(s) on current page * Check_Answer object will perform final validation and display all unfinished questions in confirm box */ var invalidAnswers = []; // the java code will populate this array on final QbyQ page /** Object constructor for answers walidation * */ var Check_Answer_check; function Check_Answer (vobj) { if ( typeof(window.invalidAnswersTmp)=='undefined' ) { window.invalidAnswersTmp=[]; } this.form = 'document.forms[0]'; this.element = 'bbDomUtil.getInputElementByName("'+vobj.name+'")'; this.name = vobj.name; this.answerChk = true; //Check_Answer is special check, it makes a list of unfinished questions and always return true this.ref_label = vobj.ref_label; this.check = Check_Answer_check; } //Test if at least one member of radio or checkbox group is selected function isChecked(grp) { if (typeof(grp.length) != 'undefined') { for ( var i=0;i< grp.length;i++ ) { if ( grp[i].checked ) { return true; } } return false; } else { return grp.checked; } } function Check_Answer_check() { //create form element object var el = eval(this.element); //Extract question type information from element name var qtype = /^(\w+)-/.exec(this.name); if ( !qtype ) { qtype = /^([^_]+)_/.exec(this.name); } qtype = qtype[1]; if ( qtype == 'ma' ) { qtype = /-\d+$/.test(this.name) ? 'mat' : 'ma'; } // Perform actual check-up if ( qtype == 'tf' || qtype == 'mc' || qtype == 'ma' || qtype == 'eo' ) { if ( !isChecked(el) ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]=this.ref_label; } } else if ( qtype == 'ord' || qtype == 'mat' ) { if ( el.selectedIndex === 0 && this.ref_label != window.invalidAnswersTmp[window.invalidAnswersTmp.length-1] ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'fitb' || qtype == 'essay' || qtype == 'num' || qtype == 'calc' || qtype == 'hs' || qtype == 'jumbled_sentence' || qtype == 'fib_plus' || qtype == 'quiz_bowl' ) { //remove isEmptyWysiwyg for these question types, since they should allow some chars as < > var val = el.value; if ( isAnEmptyVtbe(val) ) { val=''; } if ( val.trim().length < 1 ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'file' ) { var haveFile = false; var hiddenField = eval(this.form + '.elements["' + this.name + '-override"]'); if ( hiddenField && hiddenField.value == "true" ) { haveFile = true; } el = eval(this.form + '.elements["' + this.name + '_attachmentType"]'); if ( !haveFile && el && el.value !== "" ) { haveFile = true; } if ( !haveFile ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } // eliminate duplicates // TODO: think of a better way to do this if ( window.invalidAnswersTmp.length > 0 ) { var tmpArray = []; var tmpObject = {}; for ( var i = 0; i < window.invalidAnswersTmp.length; ++i ) { if ( !tmpObject[window.invalidAnswersTmp[i]] ) { tmpObject[window.invalidAnswersTmp[i]] = true; tmpArray[tmpArray.length] = window.invalidAnswersTmp[i]; } } window.invalidAnswersTmp = tmpArray; } return true; //Always true, we can make decision later through confirm } // wrapper function for focus() calls function shiftFocus(el, isVTBE) { if ( el ) { if ( isVTBE && editors && editors[el.name] && typeof(editors[el.name].focusEditor) == 'function' ) { editors[el.name].focusEditor(); } else if ( !el.disabled && !el.readOnly && el.type != "hidden" ) { safeFocus( el ); } } return; } function safeFocus( e ) { try { if ( e && e.focus ) { e.focus(); } } catch (er) { //Ignore, element is hidden in IE and can't be focused. } } /** * A validator that checks to see that a certain radio button in a group is * selected. This is intended to be used for conditional validation -- * validators that only apply when a certain radio button selection is made. * Note that if there are no selected values, this validator will return false * when checked. * - name - radio button group to check * - value - the radio button value to check for selection */ var RadioButtonValueValidator_check; function RadioButtonValueValidator( name, value ) { this.element = bbDomUtil.getInputElementByName(name); this.value = value; this.check = RadioButtonValueValidator_check; } function RadioButtonValueValidator_check() { for ( var i = 0; i < this.element.length; i++ ) { if ( this.element[i].value == this.value ) { return this.element[i].checked; } } return false; } /** * A validator that performs a logical, short-circuit OR on its two arguments. */ var OrValidator_check; function OrValidator( first, second ) { this.first = first; this.second = second; this.check = OrValidator_check; } function OrValidator_check() { return this.first.check() || this.second.check(); } /* This is a sample code that has to be added to every corresponding form element in take assessment page, where you perform question validation for completness; ref_lablel value is used to refer to element, name is field full name: <script type="text/javascript"> formCheckList.addElement(new Check_Answer({ref_label:"Question 3",name:"tf-ans-_190_1"})); </script> */ var nonceUtil = {}; /** * Finds the form element holding the nonceId * @param formId is the id of the form the nonce element exists within */ nonceUtil.getNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce') }; nonceUtil.getAjaxNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce.ajax') }; nonceUtil.getNonceIdEx = function(formId, elName) { var nonceId = null; if(formId && $s(formId) ) { nonceId= $s(formId).elements[elName]; } if( !nonceId ) { // take a cheap shot at retreiving the first nonceId on the page nonceId = document.getElementsByName( elName )[0]; // Note : nonceId can be null if the form does not have a nonce element declared. This should be a sign of a xsrf loophole } return nonceId; }; /** * Finds the form element holding the nonceId * @param formElementId is the id of a form element on the page. It is expected that the nonceId corresponds * to the same form. */ nonceUtil.getNonceIdByFormElementId = function(formElementId) { var nonceId = null; if( formElementId && $s(formElementId) ) { var elementFormId = bbDomUtil.getEnclosingForm(formElementId); nonceId = $s(elementFormId).elements['blackboard.platform.security.NonceUtil.nonce']; } return nonceId; }; nonceUtil.getNonceIdValue = function(formId) { var nonceId = nonceUtil.getNonceId(formId); return nonceId ? nonceId.value : ""; }; /** * Copies the nonceid from one form on the page to another form. Useful when using flyout forms. */ nonceUtil.copyNonceId = function( sourceFormId, targetFormId ) { var nonceId = nonceUtil.getNonceIdValue( sourceFormId ); var targetElem = new Element( 'input', { type: 'hidden', name: 'blackboard.platform.security.NonceUtil.nonce', value: nonceId } ); $( targetFormId ).appendChild( targetElem ); }; /** * Updates the form's nonceId based on the JSON response from an AjaxSecureForm */ nonceUtil.updateFromAjaxRequest = function( headerJSON ) { if ( headerJSON ) { var nonceId = nonceUtil.getNonceId(); if( nonceId ) { nonceId.value = headerJSON.nonceId; } } }; var NumberLocalizer = Class.create(); NumberLocalizer.prototype = { initialize : function() { var thousandsSeparator = LOCALE_SETTINGS[ 'number_format.thousands_sep' ]; var decimalSeparator = LOCALE_SETTINGS[ 'number_format.decimal_point' ]; this.thousandsSeparator = ( thousandsSeparator === null ) ? ',' : thousandsSeparator; this.needToConvertThousands = ( this.thousandsSeparator !== ',' ) ? true : false; this.decimalSeparator = ( decimalSeparator === null ) ? '.' : decimalSeparator; this.needToConvertDecimal = ( this.decimalSeparator !== '.' ) ? true : false; }, // Takes a number that is unlocalized and converts it to // the current locale format. formatNumber : function( f ) { var result; result = f.toString(); // Replace and thousands delimiter with a token so we can // replace it with the final symbol after we replace the decimal symbol. if ( this.needToConvertThousands ) { result = result.replace( ',', '[comma]' ); } if ( this.needToConvertDecimal ) { result = result.replace( '.', this.decimalSeparator ); } if ( this.needToConvertThousands ) { result = result.replace( '[comma]', this.thousandsSeparator ); } return result; }, // Takes a number that is in the current locale format and // converts it back to an unlocalized number. parseNumber : function( num ) { var result; result = num.toString(); // Parsing string to return as a float, so we don't need the thousands // separator anymore. result = result.replace( this.thousandsSeparator, '' ); if ( this.needToConvertDecimal ) { result = result.replace( this.decimalSeparator, '.' ); } return parseFloat( result ); } };var AccessibleSelect = {}; /** * Wire up the accessible event listeners to any <select>s on the page that have an onchange listener already */ AccessibleSelect.initializePage = function() { var selects = document.getElementsByTagName("select"); for ( var i = 0; i < selects.length; i++ ) { var currentSelect = selects[i]; if ( currentSelect.onchange ) { currentSelect.changed = false; currentSelect.onfocus = AccessibleSelect.onfocus; currentSelect.onkeydown = AccessibleSelect.onkeydown; currentSelect.onclick = AccessibleSelect.onclick; currentSelect.onchange = AccessibleSelect.createOnchange( currentSelect.onchange ); } } }; /** * Functor that creates an onchange function which if the <select> has actually been changed, will call the * specified callback (i.e. the original onchange function ) */ AccessibleSelect.createOnchange = function( callback ) { return function( theElement ) { var theSelect; if ( theElement && theElement.value ) { theSelect = theElement; } else { theSelect = this; } if (theSelect.changed) { // bind "theSelect" as the "this" for the callback. callback.apply(theSelect); return true; } else { return false; } }; }; /** * Event listener called when the <select> is clicked */ AccessibleSelect.onclick = function() { this.changed = true; // If the select size is greater than 0, then the onchange event occurs before the onclick event // and the "changed" attribute is false when the onchange event listener method runs and the select // element's onchange method does not get called. Therefore, we are going to call it here. if( this.size > 0 ) { this.onchange(this); } }; /** * Event listener called when the <select> gains focus */ AccessibleSelect.onfocus = function() { this.initValue = this.value; return true; }; /** * Event listener called when a key is pressed in the <select>. */ AccessibleSelect.onkeydown = function(e) { var theEvent; var keyCodeTab = "9"; var keyCodeEnter = "13"; var keyCodeEsc = "27"; if (e) { theEvent = e; } else { theEvent = event; } var largeSize = (this.size > 0); if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && ( largeSize || this.value != this.initValue) ) { this.initValue = this.value; this.changed = true; this.onchange(this); // returning true logically denotes that the change has been made, but more importantly it will make sure the default // behavior (what would have happened without the onkeydown event) is honored. For example, user pressing 'tab' key will // move the focus to the next element on the page return true; } else if (theEvent.keyCode == keyCodeEsc) { this.value = this.initValue; return false; } else { this.changed = false; } return true; }; // This script does not work for Safari. See AS-110404, AS-110426 if (!/webkit|khtml/i.test(navigator.userAgent)) { //When the page is loaded, initialize the select boxes if ( window.addEventListener) { window.addEventListener('load', AccessibleSelect.initializePage, false); } else if ( window.attachEvent ) { window.attachEvent('onload', AccessibleSelect.initializePage); } }var popup = { /** * Launches a new popup window. This method is used for an random popup that * might be necessary (preview window for example). If you are launching a * "picker" window you should use launchPicker() instead. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). This is required. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param resizable whether the new window should be resizable. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @param showStatus whether the new window should be show the status bar. If * not provided a default value will be used. Do not provide unless * your specific requirements dictate it. * @param scrolling whether the new window should allow scrolling. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @return a reference to the popup window generated */ launch: function( url, name, width, height, resizable, showStatus, scrolling ) { if ( typeof( width ) == 'undefined' ) { // for RTL, the width needs to be wider, to prevent vertical line overlapping in the popup if ( page.util.isRTL() ) { width = 890; } else { width = 825; // wide enough to prevent a horizontal scrollbar in most cases } } if ( typeof( height ) == 'undefined' ) { height = 500; } if ( typeof( resizable ) == 'undefined' ) { resizable = 'yes'; } if ( typeof( showStatus ) == 'undefined' ) { showStatus = 'yes'; } if ( typeof( scrolling ) == 'undefined' ) { scrolling = 'yes'; } // figure out placement of the new window we will open. If the desired size // of the new window is bigger than the screen size then make the window // smaller and put it far left. Otherwise, center the window on screen. var screenX = 0; if ( screen.width <= width ) { width = screen.width; // new window should not be wider than the screen } else { screenX = ( screen.width - width ) / 2; // center on the screen } var popup = window.open( url, name, 'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrolling + ',status=' + showStatus + ',top=20' + ',screenY=20' + ',screenX=' + screenX + ',left=' + screenX ); if ( popup ) { popup.focus(); if ( !popup.opener ) { popup.opener = self; } window.top.name = 'bbWin'; } return popup; }, /** * Launches a new "picker" window. * <p> * At the moment the only difference between this method and launch (besides * the inability to specify some advanced and rarely used options) is that * this method will default the {@code name} value if not provided. However, * you should still use this method if you are launching a "picker" type * window as additional differences may be introduced in the future. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). If not provided a default value will be used. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @return a reference to the picker window generated */ launchPicker: function( url, name, width, height ) { if ( typeof( name ) == 'undefined' ) { name = 'picker'; } return popup.launch( url, name, width, height ); }, /** * Launches a new Content System folder "picker" window. * * @param element a reference to the form element into which the value chosen * in the picker should be set. If not provided, the value will not be * set. * @return a reference to the picker window generated */ launchCsDirectoryPicker: function( element ) { var picker = popup.launchPicker( "/webapps/cmsmain/folderpicker" ); if ( picker !== null ) { if ( ( typeof( element ) != 'undefined' ) && ( element !== null ) ) { picker.opener.inputEntryURLToSet = document.getElementById( element ); } picker.opener.returnFullURL = false; } return picker; } }; var BrowserSpecific = { registerListeners: function() { if( Prototype.Browser.IE ) { var inputs = $A(document.getElementsByTagName('input')); //Enter key submit handling added only for IE browser. if( inputs ) { inputs.each( function( input ) { if(input.type === 'text' && !page.util.hasClassName(input,'noFormSubmitIE')) { Event.observe( input, "keypress", this.checkEnterKeyToSubmit.bindAsEventListener( this, input ) ); } }.bind( this ) ); } } }, checkEnterKeyToSubmit: function(event, input) { //if generated character code is equal to ascii 13 (if enter key) if(event.keyCode == 13 && input.form) { var submitButtons = $(input.form).getInputs('submit'); if(submitButtons && submitButtons.size() > 0) { submitButtons.first().click(); } Event.stop(event); } else { return true; } }, // Fix FireFox bug which converts absolute links pasted into a VTBE into relative ones which // start with a variable number of "../". // https://bugzilla.mozilla.org/show_bug.cgi?id=613517 handleFirefoxPastedLinksBug: function( baseUrl, vtbeText ) { if ( !baseUrl || !vtbeText ) { return vtbeText; } if ( Prototype.Browser.Gecko ) { if( !$( baseUrl.empty() ) && !$( vtbeText.empty() ) ) { //e.g. extract out "http://localhost:80" from "http://localhost:80/webapps/Bb-wiki-BBLEARN/" // port is optional var absoluteUrlPrefix = baseUrl.match(/https?:[\d]*\/\/[^\/]+/); // e.g."../../../bbcswebdav/xid-2202_1" into "http://localhost:80/bbcswebdav/xid-2202_1" vtbeText = vtbeText.replace(/(\.\.\/)+(sessions|bbcswebdav|courses|@@)/g, absoluteUrlPrefix + "/" + "$2"); } } return vtbeText; }, disableEnterKeyInTextBoxes: function (document) { var inputs = $A(document.getElementsByTagName('input')); if( inputs ) { inputs.each ( function( input ) { //must add special className for IE textboxes if( Prototype.Browser.IE ) { input.addClassName( 'noFormSubmitIE' ); } Event.observe( input, 'keypress', this.disableEnterKey ); }.bind( this ) ); } }, disableEnterKey: function( event ) { if( event.keyCode != Event.KEY_RETURN ) { return; } Event.stop( event ); return; } };

/** * Inserts the given HTML content into the extra content cell of the standard * title bar. * * @param content The HTML content to place */ function insertTitlebarContent(content) { var contentCell = document.getElementById("_titlebarExtraContent"); contentCell.innerHTML = content; }

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Declare an object to which we can add real functions. */ if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; /** * Set an alternative error handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setErrorHandler = function(handler) { dwr.engine._errorHandler = handler; }; /** * Set an alternative warning handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setWarningHandler = function(handler) { dwr.engine._warningHandler = handler; }; /** * Setter for the text/html handler - what happens if a DWR request gets an HTML * reply rather than the expected Javascript. Often due to login timeout */ dwr.engine.setTextHtmlHandler = function(handler) { dwr.engine._textHtmlHandler = handler; }; /** * Set a default timeout value for all calls. 0 (the default) turns timeouts off. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setTimeout = function(timeout) { dwr.engine._timeout = timeout; }; /** * The Pre-Hook is called before any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPreHook = function(handler) { dwr.engine._preHook = handler; }; /** * The Post-Hook is called after any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPostHook = function(handler) { dwr.engine._postHook = handler; }; /** * Custom headers for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setHeaders = function(headers) { dwr.engine._headers = headers; }; /** * Custom parameters for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setParameters = function(parameters) { dwr.engine._parameters = parameters; }; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.XMLHttpRequest = 1; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.IFrame = 2; /** XHR remoting type constant. See dwr.engine.setRpcType() */ dwr.engine.ScriptTag = 3; /** * Set the preferred remoting type. * @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setRpcType = function(newType) { if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) { dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" }); return; } dwr.engine._rpcType = newType; }; /** * Which HTTP method do we use to send results? Must be one of "GET" or "POST". * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setHttpMethod = function(httpMethod) { if (httpMethod != "GET" && httpMethod != "POST") { dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" }); return; } dwr.engine._httpMethod = httpMethod; }; /** * Ensure that remote calls happen in the order in which they were sent? (Default: false) * @see getahead.org/dwr/browser/engine/ordering */ dwr.engine.setOrdered = function(ordered) { dwr.engine._ordered = ordered; }; /** * Do we ask the XHR object to be asynchronous? (Default: true) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setAsync = function(async) { dwr.engine._async = async; }; /** * Does DWR poll the server for updates? (Default: false) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setActiveReverseAjax = function(activeReverseAjax) { if (activeReverseAjax) { // Bail if we are already started if (dwr.engine._activeReverseAjax) return; dwr.engine._activeReverseAjax = true; dwr.engine._poll(); } else { // Can we cancel an existing request? if (dwr.engine._activeReverseAjax && dwr.engine._pollReq) dwr.engine._pollReq.abort(); dwr.engine._activeReverseAjax = false; } // TODO: in iframe mode, if we start, stop, start then the second start may // well kick off a second iframe while the first is still about to return // we should cope with this but we don't }; /** * The default message handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultErrorHandler = function(message, ex) { dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true); if (message == null || message == "") alert("A server error has occured."); // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message); else alert(message); }; /** * The default warning handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultWarningHandler = function(message, ex) { dwr.engine._debug(message); }; /** * For reduced latency you can group several remote calls together using a batch. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.beginBatch = function() { if (dwr.engine._batch) { dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" }); return; } dwr.engine._batch = dwr.engine._createBatch(); }; /** * Finished grouping a set of remote calls together. Go and execute them all. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.endBatch = function(options) { var batch = dwr.engine._batch; if (batch == null) { dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" }); return; } dwr.engine._batch = null; if (batch.map.callCount == 0) return; // The hooks need to be merged carefully to preserve ordering if (options) dwr.engine._mergeBatch(batch, options); // In ordered mode, we don't send unless the list of sent items is empty if (dwr.engine._ordered && dwr.engine._batchesLength != 0) { dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch; } else { dwr.engine._sendData(batch); } }; /** @deprecated */ dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); }; dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); }; dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); }; dwr.engine.setPollType = function() { dwr.engine._debug("Manually setting the Poll Type is not supported"); }; //============================================================================== // Only private stuff below here //============================================================================== /** The original page id sent from the server */ dwr.engine._origScriptSessionId = "213B65372C079E8F27D69D2F5C5885CC"; /** The session cookie name */ dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID /** Is GET enabled for the benefit of Safari? */ dwr.engine._allowGetForSafariButMakeForgeryEasier = "false"; /** The script prefix to strip in the case of scriptTagProtection. */ dwr.engine._scriptTagProtection = "throw 'allowScriptTagRemoting is false.';"; /** The default path to the DWR servlet */ dwr.engine._defaultPath = "/webapps/assessment/dwr_open"; /** Do we use XHR for reverse ajax because we are not streaming? */ dwr.engine._pollWithXhr = "false"; /** The read page id that we calculate */ dwr.engine._scriptSessionId = null; /** The function that we use to fetch/calculate a session id */ dwr.engine._getScriptSessionId = function() { if (dwr.engine._scriptSessionId == null) { dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000); } return dwr.engine._scriptSessionId; }; /** A function to call if something fails. */ dwr.engine._errorHandler = dwr.engine.defaultErrorHandler; /** For debugging when something unexplained happens. */ dwr.engine._warningHandler = dwr.engine.defaultWarningHandler; /** A function to be called before requests are marshalled. Can be null. */ dwr.engine._preHook = null; /** A function to be called after replies are received. Can be null. */ dwr.engine._postHook = null; /** An map of the batches that we have sent and are awaiting a reply on. */ dwr.engine._batches = {}; /** A count of the number of outstanding batches. Should be == to _batches.length unless prototype has messed things up */ dwr.engine._batchesLength = 0; /** In ordered mode, the array of batches waiting to be sent */ dwr.engine._batchQueue = []; /** What is the default rpc type */ dwr.engine._rpcType = dwr.engine.XMLHttpRequest; /** What is the default remoting method (ie GET or POST) */ dwr.engine._httpMethod = "POST"; /** Do we attempt to ensure that calls happen in the order in which they were sent? */ dwr.engine._ordered = false; /** Do we make the calls async? */ dwr.engine._async = true; /** The current batch (if we are in batch mode) */ dwr.engine._batch = null; /** The global timeout */ dwr.engine._timeout = 0; /** ActiveX objects to use when we want to convert an xml string into a DOM object. */ dwr.engine._DOMDocument = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; /** The ActiveX objects to use when we want to do an XMLHttpRequest call. */ dwr.engine._XMLHTTP = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; /** Are we doing comet or polling? */ dwr.engine._activeReverseAjax = false; /** The iframe that we are using to poll */ dwr.engine._outstandingIFrames = []; /** The xhr object that we are using to poll */ dwr.engine._pollReq = null; /** How many milliseconds between internal comet polls */ dwr.engine._pollCometInterval = 200; /** How many times have we re-tried to poll? */ dwr.engine._pollRetries = 0; dwr.engine._maxPollRetries = 0; /** Do we do a document.reload if we get a text/html reply? */ dwr.engine._textHtmlHandler = null; /** If you wish to send custom headers with every request */ dwr.engine._headers = null; /** If you wish to send extra custom request parameters with each request */ dwr.engine._parameters = null; /** Undocumented interceptors - do not use */ dwr.engine._postSeperator = "\n"; dwr.engine._defaultInterceptor = function(data) { return data; }; dwr.engine._urlRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._contentRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._replyRewriteHandler = dwr.engine._defaultInterceptor; /** Batch ids allow us to know which batch the server is answering */ dwr.engine._nextBatchId = 0; /** A list of the properties that need merging from calls to a batch */ dwr.engine._propnames = [ "rpcType", "httpMethod", "async", "timeout", "errorHandler", "warningHandler", "textHtmlHandler" ]; /** Do we stream, or can be hacked to do so? */ dwr.engine._partialResponseNo = 0; dwr.engine._partialResponseYes = 1; dwr.engine._partialResponseFlush = 2; /** Is this page in the process of unloading? */ dwr.engine._unloading = false; /** * @private Send a request. Called by the Javascript interface stub * @param path part of URL after the host and before the exec bit without leading or trailing /s * @param scriptName The class to execute * @param methodName The method on said class to execute * @param func The callback function to which any returned data should be passed * if this is null, any returned data will be ignored * @param vararg_params The parameters to pass to the above class */ dwr.engine._execute = function(path, scriptName, methodName, vararg_params) { var singleShot = false; if (dwr.engine._batch == null) { dwr.engine.beginBatch(); singleShot = true; } var batch = dwr.engine._batch; // To make them easy to manipulate we copy the arguments into an args array var args = []; for (var i = 0; i < arguments.length - 3; i++) { args[i] = arguments[i + 3]; } // All the paths MUST be to the same servlet if (batch.path == null) { batch.path = path; } else { if (batch.path != path) { dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." }); return; } } // From the other params, work out which is the function (or object with // call meta-data) and which is the call parameters var callData; var lastArg = args[args.length - 1]; if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() }; else callData = args.pop(); // Merge from the callData into the batch dwr.engine._mergeBatch(batch, callData); batch.handlers[batch.map.callCount] = { exceptionHandler:callData.exceptionHandler, callback:callData.callback }; // Copy to the map the things that need serializing var prefix = "c" + batch.map.callCount + "-"; batch.map[prefix + "scriptName"] = scriptName; batch.map[prefix + "methodName"] = methodName; batch.map[prefix + "id"] = batch.map.callCount; for (i = 0; i < args.length; i++) { dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i); } // Now we have finished remembering the call, we incr the call count batch.map.callCount++; if (singleShot) dwr.engine.endBatch(); }; /** @private Poll the server to see if there is any data waiting */ dwr.engine._poll = function() { if (!dwr.engine._activeReverseAjax) return; var batch = dwr.engine._createBatch(); batch.map.id = 0; // TODO: Do we need this?? batch.map.callCount = 1; batch.isPoll = true; if (dwr.engine._pollWithXhr == "true") { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } else { if (navigator.userAgent.indexOf("Gecko/") != -1) { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseYes; } else { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } } batch.httpMethod = "POST"; batch.async = true; batch.timeout = 0; batch.path = dwr.engine._defaultPath; batch.preHooks = []; batch.postHooks = []; batch.errorHandler = dwr.engine._pollErrorHandler; batch.warningHandler = dwr.engine._pollErrorHandler; batch.handlers[0] = { callback:function(pause) { dwr.engine._pollRetries = 0; setTimeout(dwr.engine._poll, pause); } }; // Send the data dwr.engine._sendData(batch); if (batch.rpcType == dwr.engine.XMLHttpRequest && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._checkCometPoll(); } }; /** Try to recover from polling errors */ dwr.engine._pollErrorHandler = function(msg, ex) { // if anything goes wrong then just silently try again (up to 3x) after 10s dwr.engine._pollRetries++; dwr.engine._debug("Reverse Ajax poll failed (pollRetries=" + dwr.engine._pollRetries + "): " + ex.name + " : " + ex.message); if (dwr.engine._pollRetries < dwr.engine._maxPollRetries) { setTimeout(dwr.engine._poll, 10000); } else { dwr.engine._activeReverseAjax = false; dwr.engine._debug("Giving up."); } }; /** @private Generate a new standard batch */ dwr.engine._createBatch = function() { var batch = { map:{ callCount:0, page:window.location.pathname + window.location.search, httpSessionId:dwr.engine._getJSessionId(), scriptSessionId:dwr.engine._getScriptSessionId() }, charsProcessed:0, paramCount:0, parameters:{}, headers:{}, isPoll:false, handlers:{}, preHooks:[], postHooks:[], rpcType:dwr.engine._rpcType, httpMethod:dwr.engine._httpMethod, async:dwr.engine._async, timeout:dwr.engine._timeout, errorHandler:dwr.engine._errorHandler, warningHandler:dwr.engine._warningHandler, textHtmlHandler:dwr.engine._textHtmlHandler }; if (dwr.engine._preHook) batch.preHooks.push(dwr.engine._preHook); if (dwr.engine._postHook) batch.postHooks.push(dwr.engine._postHook); var propname, data; if (dwr.engine._headers) { for (propname in dwr.engine._headers) { data = dwr.engine._headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (dwr.engine._parameters) { for (propname in dwr.engine._parameters) { data = dwr.engine._parameters[propname]; if (typeof data != "function") batch.parameters[propname] = data; } } return batch; }; /** @private Take further options and merge them into */ dwr.engine._mergeBatch = function(batch, overrides) { var propname, data; for (var i = 0; i < dwr.engine._propnames.length; i++) { propname = dwr.engine._propnames[i]; if (overrides[propname] != null) batch[propname] = overrides[propname]; } if (overrides.preHook != null) batch.preHooks.unshift(overrides.preHook); if (overrides.postHook != null) batch.postHooks.push(overrides.postHook); if (overrides.headers) { for (propname in overrides.headers) { data = overrides.headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (overrides.parameters) { for (propname in overrides.parameters) { data = overrides.parameters[propname]; if (typeof data != "function") batch.map["p-" + propname] = "" + data; } } }; /** @private What is our session id? */ dwr.engine._getJSessionId = function() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length); if (cookie.indexOf(dwr.engine._sessionCookieName + "=") == 0) { return cookie.substring(dwr.engine._sessionCookieName.length + 1, cookie.length); } } return ""; }; /** @private Check for reverse Ajax activity */ dwr.engine._checkCometPoll = function() { for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { var text = ""; var iframe = dwr.engine._outstandingIFrames[i]; try { text = dwr.engine._getTextFromCometIFrame(iframe); } catch (ex) { dwr.engine._handleWarning(iframe.batch, ex); } if (text != "") dwr.engine._processCometResponse(text, iframe.batch); } if (dwr.engine._pollReq) { var req = dwr.engine._pollReq; var text = req.responseText; if (text != null) dwr.engine._processCometResponse(text, req.batch); } // If the poll resources are still there, come back again if (dwr.engine._outstandingIFrames.length > 0 || dwr.engine._pollReq) { setTimeout(dwr.engine._checkCometPoll, dwr.engine._pollCometInterval); } }; /** @private Extract the whole (executed an all) text from the current iframe */ dwr.engine._getTextFromCometIFrame = function(frameEle) { var body = frameEle.contentWindow.document.body; if (body == null) return ""; var text = body.innerHTML; // We need to prevent IE from stripping line feeds if (text.indexOf("<PRE>") == 0 || text.indexOf("<pre>") == 0) { text = text.substring(5, text.length - 7); } return text; }; /** @private Some more text might have come in, test and execute the new stuff */ dwr.engine._processCometResponse = function(response, batch) { if (batch.charsProcessed == response.length) return; if (response.length == 0) { batch.charsProcessed = 0; return; } var firstStartTag = response.indexOf("//#DWR-START#", batch.charsProcessed); if (firstStartTag == -1) { // dwr.engine._debug("No start tag (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed) + "'"); batch.charsProcessed = response.length; return; } // if (firstStartTag > 0) { // dwr.engine._debug("Start tag not at start (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed, firstStartTag) + "'"); // } var lastEndTag = response.lastIndexOf("//#DWR-END#"); if (lastEndTag == -1) { // dwr.engine._debug("No end tag. unchanged charsProcessed=" + batch.charsProcessed); return; } // Skip the end tag too for next time, remembering CR and LF if (response.charCodeAt(lastEndTag + 11) == 13 && response.charCodeAt(lastEndTag + 12) == 10) { batch.charsProcessed = lastEndTag + 13; } else { batch.charsProcessed = lastEndTag + 11; } var exec = response.substring(firstStartTag + 13, lastEndTag); dwr.engine._receivedBatch = batch; dwr.engine._eval(exec); dwr.engine._receivedBatch = null; }; /** @private Actually send the block of data in the batch object. */ dwr.engine._sendData = function(batch) { batch.map.batchId = dwr.engine._nextBatchId; dwr.engine._nextBatchId++; dwr.engine._batches[batch.map.batchId] = batch; dwr.engine._batchesLength++; batch.completed = false; for (var i = 0; i < batch.preHooks.length; i++) { batch.preHooks[i](); } batch.preHooks = null; // Set a timeout if (batch.timeout && batch.timeout != 0) { batch.timeoutId = setTimeout(function() { dwr.engine._abortRequest(batch); }, batch.timeout); } // Get setup for XMLHttpRequest if possible if (batch.rpcType == dwr.engine.XMLHttpRequest) { if (window.XMLHttpRequest) { batch.req = new XMLHttpRequest(); } // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) { batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP); } } var prop, request; if (batch.req) { // Proceed using XMLHttpRequest if (batch.async) { batch.req.onreadystatechange = function() { if (typeof dwr != 'undefined') dwr.engine._stateChange(batch); }; } // If we're polling, record this for monitoring if (batch.isPoll) { dwr.engine._pollReq = batch.req; // In IE XHR is an ActiveX control so you can't augment it like this if (!(document.all && !window.opera)) batch.req.batch = batch; } // Workaround for Safari 1.x POST bug var indexSafari = navigator.userAgent.indexOf("Safari/"); if (indexSafari >= 0) { var version = navigator.userAgent.substring(indexSafari + 7); if (parseInt(version, 10) < 400) { if (dwr.engine._allowGetForSafariButMakeForgeryEasier == "true") batch.httpMethod = "GET"; else dwr.engine._handleWarning(batch, { name:"dwr.engine.oldSafari", message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier." }); } } batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); try { batch.req.open(batch.httpMethod, request.url, batch.async); try { for (prop in batch.headers) { var value = batch.headers[prop]; if (typeof value == "string") batch.req.setRequestHeader(prop, value); } if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain"); } catch (ex) { dwr.engine._handleWarning(batch, ex); } batch.req.send(request.body); if (!batch.async) dwr.engine._stateChange(batch); } catch (ex) { dwr.engine._handleError(batch, ex); } } else if (batch.rpcType != dwr.engine.ScriptTag) { var idname = batch.isPoll ? "dwr-if-poll-" + batch.map.batchId : "dwr-if-" + batch.map.batchId; // Removed htmlfile implementation. Don't expect it to return before v3 batch.div = document.createElement("div"); // Add the div to the document first, otherwise IE 6 will ignore onload handler. document.body.appendChild(batch.div); batch.div.innerHTML = "<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='" + idname + "' name='" + idname + "' onload='dwr.engine._iframeLoadingComplete (" + batch.map.batchId + ");'></iframe>"; batch.document = document; batch.iframe = batch.document.getElementById(idname); batch.iframe.batch = batch; batch.mode = batch.isPoll ? dwr.engine._ModeHtmlPoll : dwr.engine._ModeHtmlCall; if (batch.isPoll) dwr.engine._outstandingIFrames.push(batch.iframe); request = dwr.engine._constructRequest(batch); if (batch.httpMethod == "GET") { batch.iframe.setAttribute("src", request.url); } else { batch.form = batch.document.createElement("form"); batch.form.setAttribute("id", "dwr-form"); batch.form.setAttribute("action", request.url); batch.form.setAttribute("style", "display:none;"); batch.form.setAttribute("target", idname); batch.form.target = idname; batch.form.setAttribute("method", batch.httpMethod); for (prop in batch.map) { var value = batch.map[prop]; if (typeof value != "function") { var formInput = batch.document.createElement("input"); formInput.setAttribute("type", "hidden"); formInput.setAttribute("name", prop); formInput.setAttribute("value", value); batch.form.appendChild(formInput); } } batch.document.body.appendChild(batch.form); batch.form.submit(); } } else { batch.httpMethod = "GET"; // There's no such thing as ScriptTag using POST batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); batch.script = document.createElement("script"); batch.script.id = "dwr-st-" + batch.map["c0-id"]; batch.script.src = request.url; document.body.appendChild(batch.script); } }; dwr.engine._ModePlainCall = "/call/plaincall/"; dwr.engine._ModeHtmlCall = "/call/htmlcall/"; dwr.engine._ModePlainPoll = "/call/plainpoll/"; dwr.engine._ModeHtmlPoll = "/call/htmlpoll/"; /** @private Work out what the URL should look like */ dwr.engine._constructRequest = function(batch) { // A quick string to help people that use web log analysers var request = { url:batch.path + batch.mode, body:null }; if (batch.isPoll == true) { request.url += "ReverseAjax.dwr"; } else if (batch.map.callCount == 1) { request.url += batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr"; } else { request.url += "Multiple." + batch.map.callCount + ".dwr"; } // Play nice with url re-writing var sessionMatch = location.href.match(/jsessionid=([^?]+)/); if (sessionMatch != null) { request.url += ";jsessionid=" + sessionMatch[1]; } var prop; if (batch.httpMethod == "GET") { // Some browsers (Opera/Safari2) seem to fail to convert the callCount value // to a string in the loop below so we do it manually here. batch.map.callCount = "" + batch.map.callCount; request.url += "?"; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.url += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&"; } } request.url = request.url.substring(0, request.url.length - 1); } else { // PERFORMANCE: for iframe mode this is thrown away. request.body = ""; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = []; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { buf.push(prop + "=" + batch.map[prop] + dwr.engine._postSeperator); } } request.body = buf.join(""); } else { // Use string concat on other browsers (fastest) for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.body += prop + "=" + batch.map[prop] + dwr.engine._postSeperator; } } } request.body = dwr.engine._contentRewriteHandler(request.body); } request.url = dwr.engine._urlRewriteHandler(request.url); return request; }; /** @private Called by XMLHttpRequest to indicate that something has happened */ dwr.engine._stateChange = function(batch) { var toEval; if (batch.completed) { dwr.engine._debug("Error: _stateChange() with batch.completed"); return; } var req = batch.req; try { if (req.readyState != 4) return; } catch (ex) { dwr.engine._handleWarning(batch, ex); // It's broken - clear up and forget this call dwr.engine._clearUp(batch); return; } if (dwr.engine._unloading) { dwr.engine._debug("Ignoring reply from server as page is unloading."); return; } try { var reply = req.responseText; reply = dwr.engine._replyRewriteHandler(reply); var status = req.status; // causes Mozilla to except on page moves if (reply == null || reply == "") { dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data received from server" }); } else if (status != 200) { dwr.engine._handleError(batch, { name:"dwr.engine.http." + status, message:req.statusText }); } else { var contentType = req.getResponseHeader("Content-Type"); if (!contentType.match(/^text\/plain/) && !contentType.match(/^text\/javascript/)) { if (contentType.match(/^text\/html/) && typeof batch.textHtmlHandler == "function") { batch.textHtmlHandler({ status:status, responseText:reply, contentType:contentType }); } else { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidMimeType", message:"Invalid content type: '" + contentType + "'" }); } } else { // Comet replies might have already partially executed if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._processCometResponse(reply, batch); } else { if (reply.search("//#DWR") == -1) { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" }); } else { toEval = reply; } } } } } catch (ex) { dwr.engine._handleWarning(batch, ex); } dwr.engine._callPostHooks(batch); // Outside of the try/catch so errors propogate normally: dwr.engine._receivedBatch = batch; if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, ""); dwr.engine._eval(toEval); dwr.engine._receivedBatch = null; dwr.engine._validateBatch(batch); if (!batch.completed) dwr.engine._clearUp(batch); }; /** * @private This function is invoked when a batch reply is received. * It checks that there is a response for every call in the batch. Otherwise, * an error will be signaled (a call without a response indicates that the * server failed to send complete batch response). */ dwr.engine._validateBatch = function(batch) { // If some call left unreplied, report an error. if (!batch.completed) { for (var i = 0; i < batch.map.callCount; i++) { if (batch.handlers[i] != null) { dwr.engine._handleWarning(batch, { name:"dwr.engine.incompleteReply", message:"Incomplete reply from server" }); break; } } } } /** @private Called from iframe onload, check batch using batch-id */ dwr.engine._iframeLoadingComplete = function(batchId) { // dwr.engine._checkCometPoll(); var batch = dwr.engine._batches[batchId]; if (batch) dwr.engine._validateBatch(batch); } /** @private Called by the server: Execute a callback */ dwr.engine._remoteHandleCallback = function(batchId, callId, reply) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true); return; } // Error handlers inside here indicate an error that is nothing to do // with DWR so we handle them differently. try { var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (!handlers) { dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true); } else if (typeof handlers.callback == "function") handlers.callback(reply); } catch (ex) { dwr.engine._handleError(batch, ex); } }; /** @private Called by the server: Handle an exception for a call */ dwr.engine._remoteHandleException = function(batchId, callId, ex) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; } var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; } if (ex.message == undefined) ex.message = ""; if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex); else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); }; /** @private Called by the server: The whole batch is broken */ dwr.engine._remoteHandleBatchException = function(ex, batchId) { var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: Reverse ajax should not be used */ dwr.engine._remotePollCometDisabled = function(ex, batchId) { dwr.engine.setActiveReverseAjax(false); var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: An IFrame reply is about to start */ dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) { if (iframe != null) dwr.engine._receivedBatch = iframe.batch; dwr.engine._callPostHooks(dwr.engine._receivedBatch); }; /** @private Called by the server: An IFrame reply is just completing */ dwr.engine._remoteEndIFrameResponse = function(batchId) { dwr.engine._clearUp(dwr.engine._receivedBatch); dwr.engine._receivedBatch = null; }; /** @private This is a hack to make the context be this window */ dwr.engine._eval = function(script) { if (script == null) return null; if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; } // dwr.engine._debug("Exec: [" + script + "]", true); return eval(script); }; /** @private Called as a result of a request timeout */ dwr.engine._abortRequest = function(batch) { if (batch && !batch.completed) { dwr.engine._clearUp(batch); if (batch.req) batch.req.abort(); dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" }); } }; /** @private call all the post hooks for a batch */ dwr.engine._callPostHooks = function(batch) { if (batch.postHooks) { for (var i = 0; i < batch.postHooks.length; i++) { batch.postHooks[i](); } batch.postHooks = null; } }; /** @private A call has finished by whatever means and we need to shut it all down. */ dwr.engine._clearUp = function(batch) { if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; } if (batch.completed) { dwr.engine._debug("Warning: Double complete", true); return; } // IFrame tidyup if (batch.div) batch.div.parentNode.removeChild(batch.div); if (batch.iframe) { // If this is a poll frame then stop comet polling for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { if (dwr.engine._outstandingIFrames[i] == batch.iframe) { dwr.engine._outstandingIFrames.splice(i, 1); } } batch.iframe.parentNode.removeChild(batch.iframe); } if (batch.form) batch.form.parentNode.removeChild(batch.form); // XHR tidyup: avoid IE handles increase if (batch.req) { // If this is a poll frame then stop comet polling if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null; delete batch.req; } // Timeout tidyup if (batch.timeoutId) { clearTimeout(batch.timeoutId); delete batch.timeoutId; } if (batch.map && (batch.map.batchId || batch.map.batchId == 0)) { delete dwr.engine._batches[batch.map.batchId]; dwr.engine._batchesLength--; } batch.completed = true; // If there is anything on the queue waiting to go out, then send it. // We don't need to check for ordered mode, here because when ordered mode // gets turned off, we still process *waiting* batches in an ordered way. if (dwr.engine._batchQueue.length != 0) { var sendbatch = dwr.engine._batchQueue.shift(); dwr.engine._sendData(sendbatch); } }; /** @private Abort any XHRs in progress at page unload (solves zombie socket problems in IE). */ dwr.engine._unloader = function() { dwr.engine._unloading = true; // Empty queue of waiting ordered requests dwr.engine._batchQueue.length = 0; // Abort any ongoing XHRs and clear their batches for (var batchId in dwr.engine._batches) { var batch = dwr.engine._batches[batchId]; // Only process objects that look like batches (avoid prototype additions!) if (batch && batch.map) { if (batch.req) { batch.req.abort(); } dwr.engine._clearUp(batch); } } }; // Now register the unload handler if (window.addEventListener) window.addEventListener('unload', dwr.engine._unloader, false); else if (window.attachEvent) window.attachEvent('onunload', dwr.engine._unloader); /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleError = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleWarning = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex); else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** * @private Marshall a data item * @param batch A map of variables to how they have been marshalled * @param referto An array of already marshalled variables to prevent recurrsion * @param data The data to be marshalled * @param name The name of the data being marshalled */ dwr.engine._serializeAll = function(batch, referto, data, name) { if (data == null) { batch.map[name] = "null:null"; return; } switch (typeof data) { case "boolean": batch.map[name] = "boolean:" + data; break; case "number": batch.map[name] = "number:" + data; break; case "string": batch.map[name] = "string:" + encodeURIComponent(data); break; case "object": if (data instanceof String) batch.map[name] = "String:" + encodeURIComponent(data); else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data; else if (data instanceof Number) batch.map[name] = "Number:" + data; else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime(); else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name); else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name); break; case "function": // We just ignore functions. break; default: dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." }); batch.map[name] = "default:" + data; break; } }; /** @private Have we already converted this object? */ dwr.engine._lookup = function(referto, data, name) { var lookup; // Can't use a map: getahead.org/ajax/javascript-gotchas for (var i = 0; i < referto.length; i++) { if (referto[i].data == data) { lookup = referto[i]; break; } } if (lookup) return "reference:" + lookup.name; referto.push({ data:data, name:name }); return null; }; /** @private Marshall an object */ dwr.engine._serializeObject = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; // This check for an HTML is not complete, but is there a better way? // Maybe we should add: data.hasChildNodes typeof "function" == true if (data.nodeName && data.nodeType) { return dwr.engine._serializeXml(batch, referto, data, name); } // treat objects as an associative arrays var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{"; var element; for (element in data) { if (typeof data[element] != "function") { batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[element], childName); reply += encodeURIComponent(element) + ":reference:" + childName + ", "; } } if (reply.substring(reply.length - 2) == ", ") { reply = reply.substring(0, reply.length - 2); } reply += "}"; return reply; }; /** @private Returns the classname of supplied argument obj */ dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError }; dwr.engine._getObjectClassName = function(obj) { // Try to find the classname by stringifying the object's constructor // and extract <class> from "function <class>". if (obj && obj.constructor && obj.constructor.toString) { var str = obj.constructor.toString(); var regexpmatch = str.match(/function\s+(\w+)/); if (regexpmatch && regexpmatch.length == 2) { return regexpmatch[1]; } } // Now manually test against the core Error classes, as these in some // browsers successfully match to the wrong class in the // Object.toString() test we will do later if (obj && obj.constructor) { for (var errorname in dwr.engine._errorClasses) { if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname; } } // Try to find the classname by calling Object.toString() on the object // and extracting <class> from "[object <class>]" if (obj) { var str = Object.prototype.toString.call(obj); var regexpmatch = str.match(/\[object\s+(\w+)/); if (regexpmatch && regexpmatch.length==2) { return regexpmatch[1]; } } // Supplied argument was probably not an object, but what is better? return "Object"; }; /** @private Marshall an object */ dwr.engine._serializeXml = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; var output; if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data); else if (data.toXml) output = data.toXml; else output = data.innerHTML; return "XML:" + encodeURIComponent(output); }; /** @private Marshall an array */ dwr.engine._serializeArray = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = ["Array:["]; for (var i = 0; i < data.length; i++) { if (i != 0) buf.push(","); batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); buf.push("reference:"); buf.push(childName); } buf.push("]"); reply = buf.join(""); } else { // Use string concat on other browsers (fastest) var reply = "Array:["; for (var i = 0; i < data.length; i++) { if (i != 0) reply += ","; batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); reply += "reference:"; reply += childName; } reply += "]"; } return reply; }; /** @private Convert an XML string into a DOM object. */ dwr.engine._unserializeDocument = function(xml) { var dom; if (window.DOMParser) { var parser = new DOMParser(); dom = parser.parseFromString(xml, "text/xml"); if (!dom.documentElement || dom.documentElement.tagName == "parsererror") { var message = dom.documentElement.firstChild.data; message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data; throw message; } return dom; } else if (window.ActiveXObject) { dom = dwr.engine._newActiveXObject(dwr.engine._DOMDocument); dom.loadXML(xml); // What happens on parse fail with IE? return dom; } else { var div = document.createElement("div"); div.innerHTML = xml; return div; } }; /** @param axarray An array of strings to attempt to create ActiveX objects from */ dwr.engine._newActiveXObject = function(axarray) { var returnValue; for (var i = 0; i < axarray.length; i++) { try { returnValue = new ActiveXObject(axarray[i]); break; } catch (ex) { /* ignore */ } } return returnValue; }; /** @private Used internally when some message needs to get to the programmer */ dwr.engine._debug = function(message, stacktrace) { var written = false; try { if (window.console) { if (stacktrace && window.console.trace) window.console.trace(); window.console.log(message); written = true; } else if (window.opera && window.opera.postError) { window.opera.postError(message); written = true; } } catch (ex) { /* ignore */ } if (!written) { var debug = document.getElementById("dwr-debug"); if (debug) { var contents = message + "<br/>" + debug.innerHTML; if (contents.length > 2048) contents = contents.substring(0, 2048); debug.innerHTML = contents; } } };

// Provide a default path to dwr.engine if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; if (UserDataDWRFacade == null) var UserDataDWRFacade = {}; UserDataDWRFacade._path = '/webapps/assessment/dwr_open'; UserDataDWRFacade.getStringTempScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringTempScope', p0, callback); } UserDataDWRFacade.setStringTempScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringTempScope', p0, p1, callback); } UserDataDWRFacade.getStringPermScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringPermScope', p0, callback); } UserDataDWRFacade.setStringPermScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringPermScope', p0, p1, callback); }

var assessment = {}; assessment.submitDrawerUrl=""; assessment.questionVisibility = true; assessment.blockToLeaveVisible = 'null'; assessment.savingRightNow = false; // aka - might rename to (if not remove eventually): assessment.nonceHasBeenUsed assessment.submittingRightNow = false; // set to true when we're submitting the assessment as a whole - used to block other submits assessment.gotNewNonceIdFlag = false; assessment.userReallyWantsToSubmit = false; assessment.isInUse = false; assessment.safetyNetDelay = 60; // Number of seconds to wait before telling the user that it is taking too long. assessment.alreadySavedSafetyNetId = null; assessment.saveSequence = 0; // TODO: Set from the server based on time when page is loaded assessment.isOneByOne = false; /************************** methods related to pool and test canvas per question add/edit/ copy/ remove********************/ function findAssessmentForm() { var assessmentForm = null; var documentForms = document.getElementsByTagName('form'); assessmentForm = $A( documentForms ).find( function( documentForm ) { var theAction = $( documentForm ).readAttribute( "action" ); return theAction.indexOf( "webapps/assessment/" ) != -1; }); return assessmentForm; } function submit(method, theForm) { if (!validateForm()) { return false; } if ( !theForm ) { // no form specified so try to find it theForm = findAssessmentForm(); } if(method == "createNew") { theForm.elements.assessmentId.value = null; } theForm.elements.method.value = method; theForm.submit(); return false; } function getFormByInputElement( elementName ) { var element = document.getElementsByName( elementName )[0]; return element.form; } // TODO: Rewrite this file to put all these methods into a namespace like assessment.XXX function modifyAssessment() { submit('modifyAssessment'); } function setQuestionId(questionId) { getFormByInputElement("questionId").questionId.value = questionId; } function modifyContentSettings( val ) { // properties|feedback|presentation|metadata submit( val ); } function addQuestionBefore(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated var theForm = getFormByInputElement("relativeId"); assessment.checkTheCheckBox (qId); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionBefore', theForm); } function addQuestionAfter(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (qId); var theForm = getFormByInputElement("relativeId"); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionAfter', theForm); } function addNGQuestion(sectionId, qtype, position) { var theForm = getFormByInputElement("questionType"); theForm.questionType.value = qtype; theForm.sectionId.value = sectionId; theForm.position.value = position; submit('addQuestion', theForm); } function modifyAssessmentInfo() { submit('modifyAssessmentInfo'); } function modifyHelper(questionId, method) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); setQuestionId(questionId); submit(method, theForm); } function modifyQuestion(questionId) { modifyHelper(questionId, 'modifyQuestion'); } function modifyRandomBlock(questionId) { modifyHelper(questionId, 'modifyRandomBlock'); } function modifyLinkQuestion(questionId) { getFormByInputElement("isLinkedQuestion").isLinkedQuestion.value = 'true'; modifyQuestion(questionId); } function copyQuestion(sectionId, questionId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("sectionId"); theForm.sectionId.value = sectionId; setQuestionId(questionId); submit('copyQuestion', theForm); } function copyLinkQuestion(sectionId, questionId, qbId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); theForm.sectionId.value = sectionId; theForm.questionBlockId.value = qbId; setQuestionId(questionId); submit('copyLinkQuestion', theForm); } function remove(id, type ) { if ( assessment.isInUse ) { var suffix = ( assessment.type == 'Survey'?'.survey':''); if ( !type ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_question.regrade" + suffix ) ); } else if ( type == 'question_link' ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.remove_question_link.regrade" + suffix ) ); } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_item.regrade" + suffix ) ); } } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString("confirm.delete_item")); } } assessment.removeEntity= function(id, message) { if (window.confirm(message)) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (id); var theForm = getFormByInputElement("questionId"); setQuestionId(id); submit('remove', theForm); } }; function reposition(id, position) { setQuestionId(id); var theForm = getFormByInputElement("questionId"); theForm.position.value = position; submit('reposition', theForm); } assessment.submitModifyQuestion = function() { submit('modifyQuestion'); }; assessment.cancelWarning = function() { var theForm = getFormByInputElement("methodEx"); theForm.elements.methodEx.value = 'modifyAssessment'; theForm.submit(); return false; }; function isCheckbox(element) { return (element && element.type && element.type == "checkbox"); } /******************* methods related to bulk update logic on the test/pool canvas*********************/ assessment.removeAll= function(container,showCount) { var count = 0; var inputs = list.checkboxes.get(container); for(var i=0; i<inputs.length; i++){ if(isCheckbox(inputs[i]) && inputs[i].checked ) { count ++; } } if (showCount?window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count",[count])):window.confirm(ASSESSMENT_RESOURCES.getString("confirm.delete_items")) ) { submit('removeBulk'); } }; assessment.removeAllPublished= function(message) { if (window.confirm(message)) { submit('removeBulk'); } }; assessment.updatePointsForAll = function(){ var element = document.getElementsByName("points_bulk"); if ( assessment.validatePoints(element) && ( !assessment.isInUse || confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) ) { submit('updatePointsBulk'); } return false; }; assessment.updatePointsInput = function(event) { var elements = document.getElementsByName("points_bulk"); var element = Event.findElement(event); var pointsValue = element.value; if (pointsValue ) { if (elements) { elements[0].value = pointsValue; elements[1].value = pointsValue; } } }; /*************************** common js methods for assessments**********************************************/ /** validate Input Field value **/ assessment.validateMiniFlyoutInputValue = function(element){ var value = null; if($(element) ) { value = $(element).value; } if ( !value ) { return ASSESSMENT_RESOURCES.getString("update.input.value"); } if ( !isNumeric( value, true ) ) { return ASSESSMENT_RESOURCES.getString("update.input.valid.value"); } return ""; }; assessment.validatePoints = function(element){ if (element) { var pointsTextBox = element[0] || element[1]; var pointsValue = pointsTextBox.value; return assessment.validateNumericInput(pointsTextBox, pointsValue, ASSESSMENT_RESOURCES.getString("update.points.value"), ASSESSMENT_RESOURCES.getString("update.points.valid.value"),true); } return true; }; assessment.validateCount = function(element) { if (element) { var countValue = element.value; return assessment.validateNumericInput(element, countValue, ASSESSMENT_RESOURCES.getString("update.count.value"), ASSESSMENT_RESOURCES.getString("update.count.valid.value")); } return true; }; assessment.validateNumericInput = function(textBox, value, blankMsg, badMsg,isFloat) { var checkForFloats = false; var numFormat = LOCALE_SETTINGS.getString('float.format'); var isValidNum = false; var re, trimmedVal; trimmedVal = value.trim(); if(isFloat != 'null') { checkForFloats = true; } if ( !value ) { alert(blankMsg); textBox.focus(); return false; } var numVal = null; if (!checkForFloats) { numVal = parseInt( value, 10); isValidNum = (!isNaN(numVal) && numVal >= 0); } else if ( typeof ( numFormat ) != 'undefined' ) { // hand parse for l10n re = new RegExp( numFormat ); isValidNum = ( trimmedVal.search( re ) === 0 ); } else { // try to use platform native (non-localized) numVal = parseFloat( trimmedVal ); isValidNum = !isNaN( numVal ); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test( trimmedVal.substring( numVal.toString().length ) ); } } if (!isValidNum) { alert(badMsg); textBox.value=""; textBox.focus(); return false; } return true; }; function back() { submit('back'); } function persistDisplayPreference(element, value){ UserDataDWRFacade.setStringTempScope( element, value ); } assessment.refreshParent = function( url ) { if ( window.opener ) { window.opener.location.href = url; if ( window.opener.progressWindow ) { window.opener.progressWindow.close(); } window.close(); } else { // We expected to be in a new window, but aren't. Perhaps this was a link from an announcement? window.location = url; } }; assessment.checkTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = true; } }; assessment.unCheckTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = false; } }; var startX; //set x offset of bar in pixels var startY; var padding = 53; var verticalpos="fromtop"; //enter "fromtop" or "frombottom" function setPadding(pad) { padding = pad; } function iecompattest(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body; } function resetInstructionHeight() { startY = document.getElementById("instructionBlock").offsetTop +document.getElementById("instructionBlock").clientHeight + padding; startX = document.getElementById("instructionBlock").offsetLeft; document.getElementById("dataCollectionContainer").style.position = "relative"; var tbh = document.getElementById("topbar").clientHeight; document.getElementById("containerdiv").style.paddingBottom = (32 + tbh) + "px"; if (document.getElementById("topbar").offsetTop !== 0) { document.getElementById("dataCollectionContainer").style.top=tbh+"px"; } } function staticbar(){ var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera; var d = document; function ml(id){ var el=d.getElementById(id); el.style.visibility="visible"; if(d.layers) { el.style=el; } el.sP=function(x,y,r) { this.style.left=x+"px"; this.style.top=y+6+"px"; if(r>-1) {this.style.right=r+"px";}; }; el.x = startX; el.y = startY; return el; } window.stayTopLeft = function() { var right = -1; var pY = ns ? window.pageYOffset : iecompattest().scrollTop; if (pY < startY) { window.ftlObj.y = startY - pY; document.getElementById("dataCollectionContainer").style.top=document.getElementById("topbar").clientHeight+4+"px"; } else { window.ftlObj.y = 0; } window.ftlObj.x = document.getElementById("instructionBlock").offsetLeft; if(page.util.isRTL()) { right = document.documentElement.clientWidth - (ftlObj.x + document.getElementById("instructionBlock").offsetWidth); } window.ftlObj.sP( window.ftlObj.x, window.ftlObj.y, right); setTimeout("stayTopLeft()", 20); }; resetInstructionHeight(); window.ftlObj = ml("topbar"); window.stayTopLeft(); } var AIM = { frame : function(c) { var n = 'f' + Math.floor(Math.random() * 99999); var d = document.createElement('DIV'); d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>'; document.body.appendChild(d); var i = document.getElementById(n); if (c && typeof(c.onComplete) == 'function') { i.onComplete = c.onComplete; } return n; }, form : function(f, name) { f.setAttribute('target', name); }, submit : function(f, c) { AIM.form(f, AIM.frame(c)); if (c && typeof(c.onStart) == 'function') { return c.onStart(); } else { return true; } }, loaded : function(id) { var i = document.getElementById(id); var d; if (i.contentDocument) { d = i.contentDocument; } else if (i.contentWindow) { d = i.contentWindow.document; } else { d = window.frames[id].document; } if (d.location.href == "about:blank") { return; } if (typeof(i.onComplete) == 'function') { i.onComplete(d.body.innerHTML); } } }; function resetContaindivHeight() { // adjust containdiv height // TODO: I don't see a reason for any of this code anymore... //if (document.getElementById('statusBlock').style.display=="" || document.getElementById('statusBlock').style.display=="inline") { // var statusHeight = document.getElementById('topbar').offsetHeight-22; // 22 is padding - be better to dynamically determine this value. //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight+statusHeight; //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} } function hideElement(element) { var msgspan=element; var msgimg=element+"img"; // TODO: I don't see a reason for any of this code anymore... //if (msgspan=="statusBlock") { // var statusHeight = document.getElementById('topbar').offsetHeight; //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight-statusHeight-22; // 22 is padding - be better to dynamically determine this value. //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} document.getElementById(msgspan).style.display="none"; document.images[msgimg].src="/images/ci/ng/more_options_dark.gif"; var alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; } function showElement(element) { var msgspan=element; var msgimg=element+"img"; document.getElementById(msgspan).style.display="inline"; document.images[msgimg].src="/images/ci/ng/less_options.gif"; var alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; if (msgspan=="statusBlock") { resetContaindivHeight(); } } function toggleElement(element){ var curStyle = document.getElementById(element).style.display; if(curStyle=="" || curStyle=="inline") { hideElement(element); persistDisplayPreference(element,'none'); } else { showElement(element); persistDisplayPreference(element,'inline'); } resetInstructionHeight(); } /********************************************* methods related to lightbox preview in pool/test canvas********************/ assessment.previewLightbox = null; assessment.copyLinkLightbox = null; assessment.showLightBox = function (event,baseContainer,numparents,previewUrl) { var e = event || window.event; // IE does not capture the event if( e && e.type == 'click') { Event.stop(e); } if ( !assessment.previewLightbox ) { assessment.previewLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 500 ,h : 375}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 125, horizontalBorder: 125 }); } assessment.previewLightbox.cfg.ajax={url:previewUrl, loadExternalScripts:true}; assessment.previewLightbox.cfg.content=null; assessment.previewLightbox.open(); }; assessment.showCopyLinkLightBox = function ( url) { var params = url.toQueryParams(); if ( !assessment.copyLinkLightbox ) { assessment.copyLinkLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 150 ,h : 200}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 50, horizontalBorder: 50 }); } assessment.copyLinkLightbox.cfg.ajax={url:'/webapps/assessment/do/authoring/questionSearch?method=copyLink&discoverUrl=' + encodeURIComponent(url) + '&course_id=' + params.course_id }; assessment.copyLinkLightbox.cfg.content=null; assessment.copyLinkLightbox.cfg.closeOnBodyClick=false; assessment.copyLinkLightbox.open(); }; assessment.showDiscover = function(url,title,width,height) { assessment.submitDrawerUrl = url; var screenX=Math.floor((screen.width)/2)-Math.floor(width/2); var screenY=Math.floor((screen.height)/2)-Math.floor(height/2)-20; var top=screenY; var left=screenX; var features="'"+'toolbar=no,scrollbars=yes,status=yes,resizable=yes,top='+ top+',left='+ left+',screenX='+ screenX+',screenY='+ screenY+',width='+ width+',height='+ height+"'"; var discover = window.open(url,title,features); if (window.focus) { if (discover) { discover.focus(); } else { alert(ASSESSMENT_RESOURCES.getString("pop.up.blocker.enabled")); } } }; assessment.discoverOptions = function(url,title,width,height,hideCopyLink){ if(!hideCopyLink) { //check if the UserPreference is set in session UserDataDWRFacade.getStringPermScope( "AssessmentUtils.DISCOVER_MODE_IS_LINKING", function( copyLinkSet ) { if (copyLinkSet == '') { assessment.showCopyLinkLightBox(url); } else{ assessment.showDiscover(url,title,width,height); } }); } else{ assessment.showDiscover(url,title,width,height); } }; assessment.onCloseCopyLinkLightbox = function ( url ) { var copyLinkId = $('copylink_link'); var copyCopyId = $('copylink_copy'); var copyLinkValueSet = false; if(copyLinkId && copyCopyId ) { copyLinkValueSet = copyLinkId.checked || copyCopyId.checked; } if ( !copyLinkValueSet ) { if (window.confirm(ASSESSMENT_RESOURCES.getString("confirm.set_copy_link"))) { assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } } else{ assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } }; /**************************** methods related to question block on the test canvas*************************************/ assessment.createQuestionBlock = function() { }; function addQuestionToBlock(questionId, assessmentType, assessmentId, courseId ) { var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=addQuestionsToQuestionBlock" + "&questionId=" +questionId + "&assessmentType=" +assessmentType + "&assessmentId=" +assessmentId + "&course_id=" +courseId; assessment.discoverOptions(url,'discover','900','675',true); } /********************** methods related to inline pool points flyout***************************/ assessment.poolFlyout = null; assessment.initPoolFlyout = function(title) { if ( !assessment.poolFlyout ) { assessment.poolFlyout = new miniFlyout.MiniFlyout({ title: title, miniFlyoutTemplate: "<label class='hideoff' for='#{inputFieldName}_id'>#{title}</label> <input id='#{inputFieldName}_id'type='text' style='width: 2em;' size='3' value='0' name='#{inputFieldName}'/> <a href='#' title='#{closeButtonName}' bb_flyout_title='Cancel' class='genericButtonImg button-3-img'><img alt='#{closeButtonName}' src='/images/ci/ng/remove_li.png'/></a> <a href='#' title='#{submitButtonName}' bb_flyout_title='Submit' class='genericButtonImg button-3-img'><img alt='#{submitButtonName}' src='/images/ci/ng/checkmark_li.png'/></a>", inputFieldName: "inline_points", errorMessage: page.bundle.getString("points.failure"), miniFlyoutDivClass: "liveArea liveArea-slim", onSubmitValidate : "return assessment.validateMiniFlyoutInputValue('inline_points_id')" }); } miniFlyout.closeCurrentMiniFlyout(); }; assessment.showPoolFlyout = function (event,title,assessmentId,id, courseId) { var e = event || window.event; // IE does not capture the event var aLink = Event.element(e); if( e && e.type == 'click') { Event.stop(e); } assessment.initPoolFlyout(title); assessment.poolFlyout.cfg.openLink = aLink ; assessment.poolFlyout.cfg.containerId = aLink.parentNode.parentNode; assessment.poolFlyout.cfg.inputFieldDefaultSource = "ipoints_" + id; assessment.poolFlyout.cfg.inputFieldName= "inline_points"; assessment.poolFlyout.cfg.onSubmit = "return assessment.saveQuestionPoints('" + assessmentId + "','" + id + "','" + courseId + "',false, false, assessment.poolFlyout.cfg.containerId);"; assessment.poolFlyout.open(); }; /*************************************************** methods related to test canvas selection by type*******************/ assessment.selectByType = function(container) { var selected = document.getElementsByName('selectbyQuestionType')[0];// either use 0 or 1, since both are updated to the same var checkboxes = list.checkboxes.get(container); for ( var i=0; i < checkboxes.length; ++i ) { checkboxes[ i ].checked = false; } var className = selected.options[selected.selectedIndex].value; checkboxes.each( function(e){ if(e.className.trim() ==className.trim()) { e.checked=true; } } ); $('selectbyQuestionType_idTop').options[selected.selectedIndex].selected=true; $('selectbyQuestionType_idBot').options[selected.selectedIndex].selected=true; }; assessment.toggleQuestionBlockDiv = function(rawId){ var ul = $('questionBlockDiv'+rawId); var a = $('questionBlockDivLink'+rawId).getElementsByTagName('a')[0]; Effect.toggle(ul, 'blind', { duration: 0.3 }); if(ul.style.display=="none"){ a.className="itemHead itemHeadOpen"; } else if(ul.style.display=="block" || ul.style.display==""){ a.className="itemHead"; } return false; }; /************************** methods related to discover drawer functionality********************************************/ assessment.inBasicDiscoverMode = function () { if (document.copyQuestionsForm.method.value == 'save') { return true; } return false; }; assessment.cancelDrawer = function() { var myDrawer = drawer.model.getCurrentInstance(); myDrawer.discard(); document.copyQuestionsForm.elements.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener ) { //close question discovery popup window.close(); } return false; }; assessment.cancelRandomBlock = function () { document.copyQuestionsForm.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener !== null) { //close question discovery popup window.close(); } return false; }; function findAndDisableInputElements(el) { if (el === null) { return; } var elems = el.getElementsByTagName('input'); for ( var i = 0; i < elems.length; i++ ) { el.addClassName('disabled'); el.disabled = true; } } /****************** Ajax method related to Test/pool canvas***************************************************/ function postAndUpdateCanvas(form) { var method = form.method.value; var assessmentId = form.assessmentId.value; var courseId = form.course_id.value; var nonceId = nonceUtil.getNonceId('bb-question-discover'); var questionId = ""; if (form.questionId ) { questionId = form.questionId.value; } var url = "/webapps/assessment/do/authoring/copyQuestions?method=" +method + "&assessmentId="+assessmentId + "&course_id=" + courseId + "&sectionId=" + form.sectionId.value + "&assessmentType=" +form.assessmentType.value + "&itemIds=" +form.itemIds.value + "&overridePoints=" +form.overridePoints.value + "&questionId=" +questionId + "&ajaxMode=true" + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (form.searchCriterion !== null) { url = url + "&searchCriterion=" + encodeURIComponent(form.searchCriterion.value); } findAndDisableInputElements( $('cartSubmit') ); var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { window.opener.location="/webapps/assessment/do/authoring/modifyAssessment?method=modifyAssessment&assessmentId="+assessmentId+"&course_id="+courseId; if (json !== null) { // capture any error message and display if (json.errorMessage ) { // exception message looks ugly for the end-user, hence use a more user-friendly message to indicate the ajax refresh failed new page.InlineConfirmation("error", json.errorMessage, false ); } else if (json.successMessage ) { // WIP // var startingEl = window.parent.document.getElementById('blockstart_' + questionId); // new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false ); } } setTimeout('window.close()', 1500); }, onFailure: function(transport, json) { new page.InlineConfirmation("error", "Failure post discover pop-up", false ); } }); } assessment.submitRandomBlock = function () { if ($('listContainer_datatable')) { var searchCriterion = activeFilter.getSearchCriteriaInstance(false).getSearchCriteriaAsXml(); document.copyQuestionsForm.searchCriterion.value = searchCriterion; if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } } else { alert(ASSESSMENT_RESOURCES.getString("cannot.submit.with.no.matching.questions")); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.submitDrawer = function () { var myDrawer = drawer.model.getCurrentInstance(); var selectedItems = myDrawer.getItems(true); var i; var allIds = ""; for (i=0;i<selectedItems.length;i++) { var qId = selectedItems[i].itemId; var mode = selectedItems[i].mode; allIds += qId + ":" + mode + ","; } document.copyQuestionsForm.itemIds.value = allIds; myDrawer.discard(); if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.OnCompleteUpdateCanvas = function(questionId, req, showNestedReceipt) { var json = req.responseText.evalJSON( true ); var pointsEl = $s('ipoints_' + questionId); var totalQuestionsCountEl = $s('totalNoQuestions' + questionId); var currentQuestionCountEl = $s('questionCount' + questionId); var totalBlockPointsEl = $s('totalPoints_' + questionId); var totalTestPointsEl =$s('totalTestPoints'); var totalQuestionsEl = $s('totalQuestions'); var startingEl = $s('blockstart_' + questionId); if( !json.errorMessage && pointsEl && json.points ) { // update per question points pointsEl.childNodes[0].nodeValue = json.points; } if( !json.errorMessage && totalQuestionsCountEl && json.totalQuestionsCount ) { // update per question points totalQuestionsCountEl.childNodes[0].nodeValue = json.totalQuestionsCount; } if( !json.errorMessage && currentQuestionCountEl && json.currentQuestionsCount ) { // update per question points currentQuestionCountEl.childNodes[0].nodeValue = json.currentQuestionsCount; } if( !json.errorMessage && totalBlockPointsEl && json.totalBlockPoints ) { // update the total points totalBlockPointsEl.childNodes[0].nodeValue = json.totalBlockPoints; } if( !json.errorMessage && totalQuestionsEl && json.totalQuestions ) { // update the total questions totalQuestionsEl.innerHTML = json.totalQuestions; } if( !json.errorMessage && totalTestPointsEl && json.totalTestPoints ) { // update total Test points, not for survey or pool totalTestPointsEl.innerHTML = json.totalTestPoints; } if (showNestedReceipt) { if (json.securityErrorMsg ) { new page.NestedInlineConfirmation("error", json.securityErrorMsg, true, startingEl, true); } else if (json.successMessage ) { if (json.successMessage.indexOf('regrading_queued_status')> 0) { // If we are displaying a confirmation including regrading status then DO NOT fade it away - let it stay and get updated. new page.NestedInlineConfirmation("success", json.successMessage, false, startingEl, true); } else { new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false); } } } assessment.result = json.errorMessage; assessment.setQuestionNumbers(); }; assessment.removeQuestionsFromBlock= function(listId, questionBlockId, courseId,assessmentId) { var allcheckBoxes = list.checkboxes.get(listId); var checkedCount = 0; var ids = ""; for (var i = 0; i < allcheckBoxes.length; i++) { var separator = (i == (allcheckBoxes.length - 1)) ? " " : ','; if (allcheckBoxes[i].checked ) { checkedCount ++; ids = ids + allcheckBoxes[i].value + separator; } } if (window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count", [checkedCount]))) { // ajax request var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + questionBlockId); var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=removeQuestionsFromQuestionBlock" + "&block_id=" + questionBlockId + "&course_id=" + courseId + "&assessment_id=" + assessmentId + "&questionIds=" + ids + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; nonceId.value = json.nonceId; inventoryList.ajaxPostOnClick(null, listId); if(json.errorMessage ) { new page.NestedInlineConfirmation("error", json.errorMessage, false, startingEl, false); } }, onSuccess: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); }, onFailure: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); } }); } }; assessment.result = ""; assessment.saveQuestionCount = function(assessmentId, blockId, courseId, forRandomBlock ) { var countEl = document.getElementsByName('question_count')[0]; var originalCountEl = document.getElementById('questionCount' + blockId); var originalCount = originalCountEl.childNodes[0].nodeValue; var newCount = countEl.value; if (newCount == originalCount) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + blockId); var url = "/webapps/assessment/do/authoring/modify"+(forRandomBlock?"Random":"Question")+"Block?method=saveQuestionCount" + "&block_id="+blockId + "&course_id=" + courseId + "&new_count=" + newCount + "&assessment_id=" + assessmentId + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(req) { var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); }, onFailure: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); } }); return assessment.result; }; assessment.updateExtraCredit = function (newExtraCreditValue, questionId) { var extraCreditDiv = $('extra_credit_' + questionId); if (extraCreditDiv) { if (newExtraCreditValue) { extraCreditDiv.removeClassName('hidden'); extraCreditDiv.addClassName('extraCredit'); } else { extraCreditDiv.addClassName('hidden'); extraCreditDiv.removeClassName('extraCredit'); } } }; assessment.updateFullCredit = function (newFullCredit, questionId) { document.getElementById('original_fullCredit_value_' + questionId).value = newFullCredit.toString(); if (newFullCredit) { document.getElementById('full_credit_' + questionId).show(); } else { document.getElementById('full_credit_' + questionId).hide(); } }; // copied or linked question assessment.saveQuestionPoints = function(assessmentId, questionId, courseId, isBlock, isInUse, containerId ) { var pointsToSave = document.getElementsByName('inline_points'); var extraCredit =$s('inline_points_extra_credit_id'); var newExtraCreditValue = false; if(extraCredit) { newExtraCreditValue = extraCredit.checked; } var newPoints = pointsToSave[0].value; var originalPointsEl = document.getElementById('ipoints_' + questionId); var originalExtraCreditValue = false; var originalExtraCreditEl = $('extra_credit_' + questionId); if(originalExtraCreditEl) { originalExtraCreditValue = !originalExtraCreditEl.hasClassName('hidden'); } var originalPoints; if( originalPointsEl.childNodes ) { originalPoints = originalPointsEl.childNodes[0].nodeValue; } var originalFullCredit; var newFullCredit; var fullCreditCheckbox = document.getElementById('inline_points_full_credit_' + questionId); if (fullCreditCheckbox !== null) { newFullCredit = fullCreditCheckbox.checked; originalFullCredit = document.getElementById('original_fullCredit_value_' + questionId).value; } if ( (newPoints == originalPoints ) && ( originalExtraCreditValue == newExtraCreditValue ) && (!fullCreditCheckbox || (originalFullCredit == newFullCredit.toString())) ) { return ""; } if ( isInUse && !confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); if( !extraCredit ) { newExtraCreditValue = ""; } if( !isBlock) { isBlock = false; } else { isBlock = true; } var url = "/webapps/assessment/do/authoring/modifyAssessment?method=updateQuestionPoints" + "&question_id=" + questionId + "&course_id=" + courseId + "&points_value=" + newPoints + "&extra_credit=" + newExtraCreditValue + "&assessment_id=" + assessmentId + "&is_Block=" + isBlock + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (fullCreditCheckbox) { url = url + "&full_credit=" + newFullCredit; } new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req){ var json = req.responseText.evalJSON( true ); var showNestedReceipt = false; if( !containerId ) { showNestedReceipt = true; } assessment.OnCompleteUpdateCanvas(questionId,req,showNestedReceipt); if(extraCredit) { assessment.updateExtraCredit(newExtraCreditValue,questionId); } if (fullCreditCheckbox) { assessment.updateFullCredit(newFullCredit,questionId); } if (!showNestedReceipt) { // show receipt in pool , table cell var status_msg = null; if (json.successMessage != "") { status_msg = $('status_msg_succ'); } var link = containerId.down(1); link.hide(); containerId.appendChild(status_msg); (status_msg).show(); setTimeout( function(){ (status_msg).fade({ duration: 0.5 }); },500); setTimeout( function(){ link.appear({duration:0.5}); },1000); link.focus(); } }, onFailure: function(req){ new page.InlineConfirmation("error", page.bundle.getString("updatePointsFailed"), false); } }); return assessment.result; }; assessment.setDefaultLinkingMode = function(isLinkingMode, courseIdStr) { var courseId = courseIdStr || document.copyQuestionsForm.course_id.value; var url = "/webapps/assessment/do/authoring/questionSearch?method=saveLinkingMode" + "&linkingMode="+isLinkingMode+ "&course_id=" +courseId ; new Ajax.Request(url, { method: 'post', onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { document.body.style.cursor = 'default'; }, onSuccess: function(transport, json) { }, onFailure: function(transport, json) { } }); }; assessment.setDisplayFullText = function(displayFull, listId) { var extras = []; // Note - Constants.DISPLAY_FULL_TEXT = "displayFullText" extras.displayFullText=displayFull; inventoryList.ajaxPostOnClick(null, listId, extras, true); }; assessment.rewriteSectionForScreenReader = function(elementName) { var element = document.getElementById(elementName); element.setAttribute("aria-live", "assertive"); element.setAttribute("aria-relevant", "all"); element.setAttribute("aria-atomic", "true"); element.setAttribute("aria-busy", "true"); var myContents = element.innerHTML; element.innerHTML = myContents; element.setAttribute("aria-busy", "false"); return false; }; assessment.clearQuestionModifiedStatuses = function() { // Called on page load to make sure we don't have any stranded questions-to-monitor kicking around. assessment.questions_to_monitor = []; assessment.questions_to_monitor_index = 0; }; assessment.QMonitor = Class.create(); assessment.QMonitor.prototype = { initialize: function( entity, index) { this.index = index; Event.observe(entity, 'change', this.onChange.bindAsEventListener(this)); }, onChange: function( event) { assessment.questions_to_monitor[this.index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[this.index].qnum); } }; assessment.getSaveButton = function(questionNum) { var myButton = document.getElementById("saveButton_" + questionNum); if (!myButton) { if (assessment.isOneByOne) { if (questionNum == document.forms.saveAttemptForm.current_question.value) { myButton = document.getElementById("saveAnswerSubmitId"); // for one-at-a-time tests } } } return myButton; }; assessment.setModifiedIcon = function(questionNum) { var saveAnswerLabel = page.bundle.getString('takeSaveAnswer'); var myButton = assessment.getSaveButton(questionNum); if (myButton) { myButton.value = saveAnswerLabel; Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); } // TODO - Either rip this out or put in appropriate image, style, and text // NOTE - can't actually enable this until on-the-fly onchange support in the VTBE is done // (as opposed to the current on-unload check for change) // Also - would need to deal with leaving this image on-page in this scenario: // Save Q1 // Modify Q1 // Save Q2 // -- at this point, we update the status icons and lose the modified icon for Q1 /* var mySpan =document.getElementById("span_"+questionNum); var myImg = document.getElementById("img_"+questionNum); mySpan.className = "qIncomplete"; myImg.src = "/images/ci/icons/needs_grading.gif"; // better icon myImg.alt = "TODO: Incomplete"; myImg.height= "10"; myImg.width= "10"; */ }; assessment.addQuestionToMonitor = function(qid,qnum, isFileUploadQuestion) { var questionBlock = $(qid); assessment.questions_to_monitor[assessment.questions_to_monitor_index] = {}; // TODO - is there a more efficient way to do this? $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, assessment.questions_to_monitor_index); }); assessment.questions_to_monitor[assessment.questions_to_monitor_index].qid = qid; assessment.questions_to_monitor[assessment.questions_to_monitor_index].qnum = qnum; // Status: 0 == not changed, 1 = changed, 2 = attempted to be auto-saved since last change assessment.questions_to_monitor[assessment.questions_to_monitor_index].status = 0; assessment.questions_to_monitor[assessment.questions_to_monitor_index].isFileUploadQuestion = isFileUploadQuestion; assessment.questions_to_monitor_index++; }; assessment.remonitorFileUpload = function(qid, qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { if (assessment.questions_to_monitor[i].isFileUploadQuestion) { var questionBlock = $(qid); $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, i); }); } else { return; } } } } }; assessment.questionBeingSaved = -1; assessment.markQuestionAsSaved = function (qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { assessment.questions_to_monitor[i].status = 0; } } } }; assessment.hasUnsavedAnswers = function() { if (assessment.questions_to_monitor_index > 0) { var i = 0; if (typeof(finalizeEditorsAnyChange) == "function") { finalizeEditorsAnyChange(assessment.vtbeChanged); } for(i=0;i<assessment.questions_to_monitor_index;i++) { //alert("Question " + assessment.questions_to_monitor[i].qid + " number " + assessment.questions_to_monitor[i].qnum + " status " + assessment.questions_to_monitor[i].status); if (assessment.questions_to_monitor[i].status >= 1) { return true; } else if (assessment.questions_to_monitor[i].isFileUploadQuestion) { // In IE, the assessment.QMonitor onchange handle disappears after the first file selection and I can't seem to add it back. // This at least gets the saving to work so it doesn't appear totally broken. The button doesn't change to 'save answer' immediately // after you attach a file a second time though, but we have to live with that for now. var actionDivName = 'file_upload_ans_' + assessment.questions_to_monitor[i].qid + '_selectedFileActions'; var actionDiv = $(actionDivName); if (actionDiv && actionDiv.visible()) { assessment.questions_to_monitor[i].status = 1; return true; } } } } return false; }; assessment.registerVTBEChange = function() { if (typeof(registerOnChangeCallback) == "function") { registerOnChangeCallback(assessment.vtbeChangedCallback, assessment.getVtbeQuestionIndex); } }; assessment.autoSaveExecutor = ''; assessment.autoSaveInterval = 10; // seconds assessment.startAutoSave = function(interval) { assessment.autoSaveInterval = interval; assessment.autoSaveExecutor = new PeriodicalExecuter(assessment.doAutoSave, assessment.autoSaveInterval); }; assessment.stopAutoSave = function() { if (assessment.autoSaveExecutor != '') { assessment.autoSaveExecutor.stop(); } }; assessment.toggleAutoSave = function(interval) { assessment.stopAutoSave(); if ($s('autoSaveCheckbox').checked) { assessment.startAutoSave(interval); } }; assessment.doAutoSave = function(pe) { if (assessment.submittingRightNow) { // Ignore if submitting right now return; } if (assessment.savingRightNow) { // If we are already saving, do nothing right now. return; } var doneOne = false; if (assessment.hasUnsavedAnswers()) { for(var i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].status == 1) // explicitly only check for status 1, skipping status==2 { if (doneOne) { // We can only submit one question per pass because otherwise the nonce fails. Switch // to a higher frequency to save all the outstanding questions faster. pe.stop(); pe.frequency = 1; pe.registerCallback(); return; } assessment.questions_to_monitor[i].status = 2; // flag to indicate we've already tied to auto-save this // Will be reset to 0 after a successful save or 1 if the user modifies their answer again. saveOneItem( assessment.questions_to_monitor[i].qid, assessment.questions_to_monitor[i].qnum, true, false ); doneOne = true; } } } if (!doneOne) { if (pe.frequency != assessment.autoSaveInterval) { pe.stop(); pe.frequency = assessment.autoSaveInterval; pe.registerCallback(); } } }; assessment.vtbeChanged = function(ifr) { var index = assessment.getVtbeQuestionIndex( ifr ); assessment.vtbeChangedCallback(ifr,index); }; assessment.vtbeChangedCallback = function(ifr,index) { if (index != -1) { assessment.questions_to_monitor[index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[index].qnum); } }; assessment.getVtbeQuestionIndex = function(ifr) { var parents = ifr.ancestors(); var num = parents.length; for ( var i = 0; i < num; i++ ) { var parent = parents[i]; if ( page.util.hasClassName(parent, 'takeQuestionDiv') ) { var divid = parent.id; for ( var j = 0; j < assessment.questions_to_monitor_index; j++ ) { if ( assessment.questions_to_monitor[j].qid == divid ) { return j; } } return -1; } } return -1; }; assessment.warnBeforeLeavingIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var prefix = "test"; if (isSurvey) { prefix = "survey"; } var timermsg = ''; if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } if (isForced) { return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.forced.beforeunload.warning"); } return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.beforeunload.warning") + timermsg; }; assessment.queueUpWarning = function(msg, oneByOneAndForceUnload) { var url = assessment.getNextActionUrl() + '&method=queueUpWarning'; var params = Object.extend({ 'msg' : msg, 'oneByOneAndForceUnload' : oneByOneAndForceUnload, 'course_assessment_id' : document.forms.saveAttemptForm.course_assessment_id.value } ); var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, asynchronous: false }); }; assessment.warnOnLeaveIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var timermsg = ''; var prefix = "test"; if (isSurvey) { prefix = "survey"; } if (assessment.hasUnsavedAnswers()) { // Since we are always auto-saving anyways, we might as well just always save unsaved answers here. saveAllQuestions(false); } if (isForced) { assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.forced.warning", assessment.currentTestName), true ); } else { if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.warning", assessment.currentTestName )+timermsg, false); } }; assessment.setDefaultQuestionDisplay = function(blockToLeaveVisible) { assessment.blockToLeaveVisible = blockToLeaveVisible; UserDataDWRFacade.getStringPermScope( "assessment.questionsExpanded", function( questionsExpanded ) { if (questionsExpanded == 'false') { assessment.toggleQuestionDisplay(); } assessment.blockToLeaveVisible = 'null'; }); }; assessment.toggleQuestionDisplay = function() { var newVis = !assessment.questionVisibility; if (newVis) { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", true ); } else { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", false ); } // Note -most of the time this will be "contentListItem:null" - that's OK var idToIgnore = "contentListItem:" + assessment.blockToLeaveVisible; $A(document.getElementsByTagName('li'))._each(function(entity) { // hide|show the given entity if it is one we care about var id = entity.id; if (id.startsWith("contentListItem:") && id != idToIgnore) { $A(entity.getElementsByTagName('div'))._each(function(adiv) { if (page.util.hasClassName(adiv,'details')) { if (newVis) { $(adiv).show(); } else { $(adiv).hide(); } } }); if (newVis) { entity.removeClassName('hideQuestionDetails'); } else { entity.addClassName('hideQuestionDetails'); } } }); var buttonText = page.bundle.getString( newVis ? "hide.question.details" : "show.question.details" ); $('content_listContainer_hideshowQuestions_top').down('a').update( buttonText ); $('content_listContainer_hideshowQuestions_bottom').down('a').update( buttonText ); assessment.questionVisibility = newVis; }; assessment.setDisableFlag = function(questionId, flag) { modifyHelper(questionId, 'setDisableFlag' + flag); }; assessment.questionLabelMap = {}; assessment.dndHooksAdded = false; assessment.setQuestionNumbers = function() { var index = 1; // loop through line items in list of questions var questions = $('content_listContainer'); if (questions) { $A(questions.childElements()).each( function( li ) { var h3 = li.down('h3'); var span = h3.down('span.questionNumber'); if ( !span ) // create & add span for questionNumber if none exists { span = new Element('span',{'class':'questionNumber autoQuestionNumber'}); h3.insert({top:span}); } var id = h3.up('div').id; var qSetSize = $('questionCount'+id); var qNumStr = ''+index; if ( qSetSize ) // show number range for question sets { var s = parseInt(qSetSize.innerHTML, 10); index += s - 1; if ( s > 1 ) { qNumStr += ' - '+index; } else if ( s === 0 ) { qNumStr = ''; } } qNumStr = qNumStr + '.'; index++; span.update(qNumStr); assessment.questionLabelMap[id] = h3.innerHTML.stripTags(); // save numbered label in map for loading accessible reorder select }); } if ( !assessment.dndHooksAdded ) { var dndCtrl = dragdrop.getControllerObjById( 'pageListReorderControls' ); if (dndCtrl) { // Set question numbers in the accessible reorder select before opening it's popup. // Setting the question numbers needs to be defered until the popup is added to the DOM, which // happens just before the popup is opened dndCtrl.extPreOpenCallback = assessment.setAccessibleReorderQuestionNumbers; // call this function to set question numbers after a dnd or accessible reorder happens dndCtrl.extPostOrderCallback = assessment.setQuestionNumbers; assessment.dndHooksAdded = true; } } }; assessment.setAccessibleReorderQuestionNumbers = function() { $A($('pageListReorderControlSelect').options).each( function( option ) { option.text = assessment.questionLabelMap[option.value]; }); }; assessment.viewReferencingCanvases = function(courseId, assessmentId) { var url = "/webapps/assessment/do/authoring/modifyAssessment?course_id=" + courseId + "&method=getReferringCanvases&assessmentId=" + assessmentId; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ document.body.style.cursor = 'default'; }, onSuccess: function(req){ $('referencingCanvasesPlaceholder').update(req.responseText); }, onFailure: function(req){ $('referencingCanvasesPlaceholder').update(ASSESSMENT_RESOURCES.getString("error.loading.referrers")); } }); }; assessment.normalizedWidth = 0; assessment.setNormalizedButtonWidth = function(myButton) { if (assessment.normalizedWidth === 0) { myButton.value = page.bundle.getString('takeSaveAnswer'); Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); assessment.normalizedWidth = myButton.clientWidth; myButton.value = page.bundle.getString('takeSaveAnswerAgain'); Element.addClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } myButton.value = page.bundle.getString('savingAnswer'); Element.addClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } } //myButton.style.width = assessment.normalizedWidth + 'px'; return; }; assessment.resetFields = function() { window.document.assessmentSubmitted = false; window.document.assessmentActuallySubmitted = true; }; assessment.getNextActionUrl = function() { var url = document.forms.saveAttemptForm.action; url = url + '?saveSequence=' + (assessment.saveSequence++); return url; }; assessment.submitAttemptForm = function() { var myForm = document.forms.saveAttemptForm; var origUrl = myForm.action; myForm.action = assessment.getNextActionUrl(); try { myForm.submit(); } catch (err) { // Make sure we get to the next line and reset the url just in case. } myForm.action = origUrl; }; // This is the final save-and-submit request for the test/survey assessment.doConfirmSubmit = function(msg) { document.forms.saveAttemptForm.save_and_submit.value='true'; try { if (confirmSubmit(msg)) { assessment.resetFields(); assessment.submitAttemptForm(); } } catch (err) { // If we had an error, continue to clear the saveandsubmit value } document.forms.saveAttemptForm.save_and_submit.value=''; return false; }; assessment.alertSaveStatus = function (status) { if (status == 'COMPLETED' ) { alert(page.bundle.getString("confirm_saveall_success")); } else if (status == 'PARTIAL' ) { alert(page.bundle.getString("confirm_save_partial")); } else if (status == 'UNANSWERED' ) { alert(page.bundle.getString("confirm_save_empty")); } else { alert(page.bundle.getString("confirm_save_error")); } }; assessment.removeFileUploadAnswer = function (fieldName, divName, questionId, questionNumber, remAnsSuffix, takeDupeSaveMsg) { document.getElementById(divName).style.display = "none"; document.forms.saveAttemptForm.elements.method.value = "fileremove"; document.forms.saveAttemptForm.elements[fieldName + '-override'].value = "false"; document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = "true"; try { if (checkAlreadySaved(takeDupeSaveMsg)) { saveOneItem( questionId, questionNumber, true, false); } } catch (err) { // Ignore - just want to make sure we do the next statement } document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = ""; return false; }; assessment.updateQuestionStatusResponse = function(originalRequest ) { var qnums = originalRequest.responseText; var lines = qnums.split("\n"); var qnum=lines[0].split(","); for (var i=0; i<qnum.length; i++) { var num = qnum[i]; if (num > 0) { setSavedIcon(num); } else { setNotSavedIcon(-num); } } for (var j=1;j<lines.length;j++) { var fileUpload = lines[j].split(":"); if (fileUpload.length == 2) { var divName = "file_upload_div_" + fileUpload[0]; var divElement = document.getElementById(divName); if (fileUpload[1] == "HIDE") { if(divElement !== null) { divElement.style.display = "none"; } } else { var spanName = "file_upload_span_" + fileUpload[0]; var cancelFileButton = "file_upload_ans_" + fileUpload[0] + "_cancelFileButton"; var cancelElement = document.getElementById(cancelFileButton); var overrideName = "file_upload_ans_" + fileUpload[0] + "-override"; var overrideElement = document.forms.saveAttemptForm.elements[overrideName]; var spanElement = document.getElementById(spanName); if(divElement !== null) //we must check if item exists for one question at a time format { divElement.style.display = "block"; } if(spanElement !== null) { spanElement.innerHTML = fileUpload[1]; } if(cancelElement !== null) { cancelElement.click(); } if (typeof overrideElement !== 'undefined' && overrideElement !== null) { overrideElement.value = "true"; } } } } }; assessment.prepareForSubmit = function(doValidation) { // MUST VALIDATE FORM TO PERSIST WYSIWYG // Set textarea value to VTBE contents: if (typeof(finalizeEditors) == "function") { finalizeEditors(); } /* Transform equations place holders into html before validation*/ var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if (doValidation) { /* Validate form TODO: Why not call validateForm()*/ var valid = formCheckList.check(); return valid; } return true; };

var widget = {}; widget.colorPickers = {}; widget.ColorPicker = Class.create(); widget.ColorPicker.prototype = { /** * Constructor * * @param name - id of the color picker * @param initialColor - initial color hex string ("#000000") * @param alertMsg - localized error msg string ("Error: A valid color value must be specified") * @param previewIdStr - optional id string of the color preview DIV container user can specify * @param allowTransparent - optional boolean whether to render an option to select transparent. Default is false. */ initialize : function( name, initialColor, alertMsg, previewIdStr, previewBackgroundIdStr, allowTransparent ) { this.theColorPickerName = name; this.allowTransparent = ( !allowTransparent ) ? false : true; this.theMenu = $( name ); this.alertMsg = alertMsg; this.userPreviewContainer = $( previewIdStr ); // may be undefined this.userPreviewBackgroundContainer = $( previewBackgroundIdStr ); // may be undefined if ( typeof this.userPreviewContainer == "undefined" ) { this.userPreviewContainer = null; } if ( typeof this.userPreviewBackgroundContainer == "undefined" ) { this.userPreviewBackgroundContainer = null; } this.colorListParent = $( name + '_colorlist_parent' ); widget.ColorPicker.registerColorPicker( this ); this.ie = document.all && navigator.userAgent.indexOf( "Opera" ) == -1; this.color_hidden_input = $( name + "_title_color_input" ); this.color_hidden_input.value = initialColor; this.color_hidden_input._defaultValue = initialColor; this.anch_link = $( name + "_link" ); this.color_link = $( name + "_img" ); this.color_name_label = $( name + "_color_name_label" ); this.title_color_input = $( name + "_title_color" ); this.setDisplay( initialColor, this.getDisplayColorInfo( initialColor, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( initialColor, true ); var backgroundStyle = initialColor; if( initialColor === "transparent" ) { backgroundStyle = 'url(/images/swatches/transparent.gif)'; } this.color_link.setStyle( { background : backgroundStyle } ); this.updateUserPreviewContainerColor( initialColor ); if ( this.anch_link ) { Event.observe( this.anch_link, "click", this.onOpen.bindAsEventListener( this ) ); } Event.observe( document.body, "click", this.closeColorPickers.bindAsEventListener( this ) ); Event.observe( this.theMenu, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_previewColorLink', 'click', this.previewListener .bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_cancelButton', 'click', this.onClose.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_submitButton', 'click', this.onApply.bindAsEventListener( this ) ); this.skip_link = $( name + "_skip_link" ); if ( this.skip_link ) { Event.observe( this.skip_link, "click", this.onSkipLinkClick.bindAsEventListener( this ) ); } // relocate color picker popup div to the bottom of the doc b/c of css display issues Element.remove( this.theMenu ); document.body.appendChild( this.theMenu ); widget.colorPickers[ this.theColorPickerName ] = this; }, onSkipLinkClick : function( event ) { $( this.theColorPickerName + '_submitButton' ).focus(); }, onKeyPress : function( event ) { var key = event.keyCode || event.which; if ( key == Event.KEY_ESC ) { this.onClose( event ); } }, closeColorPickers : function( event ) { var element = Event.element( event ); widget.ColorPicker.colorPickers.each( function( cp ) { if ( cp != this && !element.descendantOf( cp.theMenu ) ) { cp.close(); } }.bind( this ) ); }, setOnChangeHandler : function( handler ) { this.onChangeHandler = handler; }, setDefaultColor : function( colorValue ) { this.color_hidden_input.value = colorValue; this.color_hidden_input._defaultValue = colorValue; if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); }, setColor : function( colorValue ) { widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, colorValue ); if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); this.updateUserPreviewContainerColor( colorValue ); if ( this.onChangeHandler ) { this.onChangeHandler(); } }, getPaletteInstance : function() { if ( !this.paletteInstance ) { this.paletteInstance = Element.clone( widget.ColorPicker.colorPalette, true ); } return this.paletteInstance; }, deletePaletteInstance : function() { if ( this.paletteInstance ) { Event.stopObserving( this.paletteInstance, 'click' ); this.paletteInstance.remove(); delete this.paletteInstance; } }, onOpen : function( event ) { this.closeColorPickers( event ); this.colorListParent.appendChild( this.getPaletteInstance() ); this.initializeTransparent(); Event.observe( this.getPaletteInstance(), 'click', this.setColorFromSwatch.bindAsEventListener( this ) ); var offset = Position.cumulativeOffset( this.anch_link ); this.theMenu.setStyle( { display : "block", position : "absolute" } ); var width = this.theMenu.getWidth(); var bodyWidth = $( document.body ).getWidth(); var menuDims = this.theMenu.getDimensionsEx(); var anchorDims = this.anch_link.getDimensionsEx(); var menuHeight = menuDims.height; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); // Use viewport relative offsets to figure out placement within the view var offsetTop = offset[ 1 ] - scrollOffsets.top; var offsetLeft = offset[ 0 ] - scrollOffsets.left; var xpos = offsetLeft; if ( page.util.isRTL() ) { xpos = xpos + this.anch_link.getWidth() - width; } if ( xpos + width > viewportDimensions.width ) { // First try to position it on the left of the link instead of the right xpos = offsetLeft - width + anchorDims.width; if ( xpos < 0 ) { // If we go off the page though, just try our best xpos = viewportDimensions.width - width; } } if ( xpos < 0 ) { xpos = 0; } var ypos = offsetTop + anchorDims.height; if ( ( ypos + menuHeight ) > viewportDimensions.height ) { // Try to position above the color picker first ypos = offsetTop - menuHeight; if ( ypos < 0 ) { // but if it goes off the top of the page just do a best-effort. ypos = ypos - ( ypos + menuHeight - viewportDimensions.height ); if ( ypos < 0 ) { ypos = 0; } } } // The color swatch is positioned absolutely, so adjust offsets to include the scrollofset ypos = ypos + scrollOffsets.top; xpos = xpos + scrollOffsets.left; this.theMenu.setStyle( { left : xpos + "px", top : ypos + "px" } ); this.title_color_input.focus(); ( function() { if ( !this.shim ) { this.shim = new page.popupShim( this.theMenu ); } this.shim.open(); }.bind( this ).defer() ); Event.stop( event ); }, /** * Removes the transparent choice from the palette if the picker is not supposed to support transparency. */ initializeTransparent : function() { if ( !this.allowTransparent ) { var transparentLi = this.colorListParent.down( 'li#colorlist_transparent' ); if ( transparentLi ) { Element.remove( transparentLi ); } } }, /** * Hides the color picker. */ onClose : function() { this.close(); this.anch_link.focus(); }, close : function() { this.deletePaletteInstance(); this.theMenu.setStyle( { display : "none" } ); if ( this.shim ) { this.shim.close(); } }, /** * Sets the preview color and text to the color selected by the user in the palette */ setColorFromSwatch : function( event ) { var element = Event.element( event ); if ( element.hasClassName( 'transparent' ) ) { this.setDisplay( "transparent", page.bundle.getString( "colorpicker.color.transparent" ) ); } else { var text = element.childNodes[ 0 ].nodeValue; if ( text ) { this.setDisplay( text.substring( 0, 7 ), this.getDisplayColorInfo( text.substring( 0, 7 ), false ) ); } } Event.stop( event ); }, getDisplayColorInfo : function( hexValue, onlyColorName ) { var transparent = false; var localizedName; var safeColorCode; if ( hexValue === "transparent" ) { transparent = true; localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ hexValue ]; } else { safeColorCode = this.getSafeColorCode( hexValue ).toUpperCase(); //The keys in ColorPickerMap are all 6 digit safe color codes, that's we need to make sure that we're using the correct key to lookup the color. localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ safeColorCode ]; } if ( !localizedName ) { localizedName = ''; } var colorName; colorName = localizedName + ' (' + hexValue + ')'; if ( onlyColorName || transparent ) { colorName = localizedName; } return colorName; }, /** * Returns a Six digit Hexadecimal Color Code. */ getSafeColorCode : function( hexValue ) { return hexValue.replace( /#([\d0-9A-Fa-f])([\d0-9A-Fa-f])([\d0-9A-Fa-f])$/,'#$1$1$2$2$3$3'); }, /** * Handles the Preview functionality on the swatch. If an inappropriate color is choosen, a msg is displayed to the * user. Else updates the color preview with the manually entered color. */ previewListener : function( event ) { if ( !this.isValidColor( this.title_color_input.value ) ) { alert( this.alertMsg ); return; } if ( this.title_color_input.value.length != 6 ) { return; } var prevCol; if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { prevCol = "transparent"; this.setDisplay( prevCol, page.bundle.getString( 'colorpicker.color.transparent' ) ); } else { prevCol = '#' + this.title_color_input.value; this.setDisplay( prevCol, this.getDisplayColorInfo( prevCol, false ) ); } Event.stop( event ); }, /** * Updates the color preview panel in the picker pop up */ setDisplay : function( col, text ) { if ( col === "transparent" ) { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : 'url(/images/swatches/transparent_lrg.gif)' } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : '#ffffff' } ); this.title_color_input.value = 'XXXXXX'; } else { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : col } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : col } ); this.title_color_input.value = ( col.startsWith( '#' ) ) ? col.substr( 1 ) : col; } $( this.theColorPickerName + '_title_color_name' ).innerHTML = text; }, /** * Checks for a valid color value. */ isValidColor : function( color_value ) { var isValid = false; isValid = ( /^[0-9A-Fa-f]{6}/ ).test( color_value ); if ( !isValid && this.allowTransparent ) { isValid = color_value.toLowerCase() === "xxxxxx"; } return isValid; }, /** * Manages the functionality for the Apply button the swatch. */ onApply : function( event ) { var color = this.title_color_input.value; if ( !this.isValidColor( color ) ) { return; } if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); color = "transparent"; this.color_name_label.innerHTML = page.bundle.getString( "colorpicker.color.transparent" ); } else { color = '#' + color; this.color_link.setStyle( { background : color } ); this.color_name_label.innerHTML = this.getDisplayColorInfo( color, true ); } widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, color ); this.updateUserPreviewContainerColor( color ); this.onClose(); if ( this.onChangeHandler ) { this.onChangeHandler(); } Event.stop( event ); }, /** * If the user specified preview container element exists, update its color style to the color given. * * @param color - color hex string */ updateUserPreviewContainerColor : function( color ) { if ( this.userPreviewContainer ) { this.userPreviewContainer.style.color = color; } else if ( this.userPreviewBackgroundContainer ) { this.userPreviewBackgroundContainer.style.background = color; } } }; // end widget.ColorPicker.prototype widget.ColorPicker.colorPickers = []; widget.ColorPicker.colorPickerMap = {}; widget.ColorPicker.colorPickerPaletteMap = {}; widget.ColorPicker.registerColorPicker = function( cp ) { widget.ColorPicker.colorPickers.push( cp ); widget.ColorPicker.colorPickerMap[ cp.theColorPickerName ] = cp; // grab the color definition and remove it from the DOM for the time being if ( !widget.ColorPicker.colorPalette ) { var colorPalette = $( 'picker_colorlist' ); // Store the colors and their localized names so we can look them up later. widget.ColorPicker.colorPickerPaletteMap[ "default" ] = {}; var arrColors = Element.getElementsBySelector( colorPalette, "a" ); for ( var i = 0; i < arrColors.length; i++ ) { if ( !arrColors[ i ].hasClassName( "transparent" ) ) { widget.ColorPicker.colorPickerPaletteMap[ "default" ][ arrColors[ i ].innerHTML.substring( 0, 7 ).toUpperCase() ] = arrColors[ i ].innerHTML .substring( 8 ); } } widget.ColorPicker.colorPickerPaletteMap[ "default" ].transparent = page.bundle .getString( "colorpicker.color.transparent" ); widget.ColorPicker.colorPalette = colorPalette; // deferring so that the name lookup for colors can succeed during init ( function() { Element.remove( colorPalette ); }.defer() ); } }; widget.ColorPicker.closeAllColorPickers = function() { widget.ColorPicker.colorPickers.each( function( cp ) { cp.close(); } ); }; widget.MultiSelect = Class.create(); widget.MultiSelect.multiselectBoxes = []; // ---------------- "static" methods widget.MultiSelect.registerMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.push( ms ); }; widget.MultiSelect.unRegisterMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.remove( ms ); }; widget.MultiSelect.prototype = { initialize : function( multiSelectDiv, formName ) { this.multiSelectDiv = $( multiSelectDiv ); this.formName = formName; if ( this.multiSelectDiv ) { this.leftClickListeners = []; this.rightClickListeners = []; var divs = this.multiSelectDiv.getElementsByTagName( 'div' ); var leftDiv = $( divs[ 0 ] ); var buttonDiv = $( divs[ 1 ] ); var rightDiv = $( divs[ 2 ] ); var inputs = this.multiSelectDiv.getElementsByTagName( 'input' ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); var leftSelects = leftDiv.getElementsByTagName( 'select' ); var rightSelects = rightDiv.getElementsByTagName( 'select' ); this.leftSelectBox = $( leftSelects[ 0 ] ); this.rightSelectBox = $( rightSelects[ 0 ] ); var buttons = buttonDiv.getElementsByTagName( 'button' ); var moveRightButton = $( buttons[ 0 ] ); var moveLeftButton = $( buttons[ 1 ] ); var leftInputs = leftDiv.getElementsByTagName( 'input' ); var leftInvertSelectionButton = $( leftInputs[ 0 ] ); var leftSelectAllButton = $( leftInputs[ 1 ] ); var rightInputs = rightDiv.getElementsByTagName( 'input' ); var rightInvertSelectionButton = $( rightInputs[ 0 ] ); var rightSelectAllButton = $( rightInputs[ 1 ] ); widget.MultiSelect.registerMultiSelect( this ); Event.observe( moveLeftButton, "click", this.onMoveLeftClick.bindAsEventListener( this ) ); Event.observe( moveRightButton, "click", this.onMoveRightClick.bindAsEventListener( this ) ); Event.observe( leftInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, true ) ); Event.observe( rightInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, false ) ); Event.observe( leftSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, true ) ); Event.observe( rightSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, false ) ); // This for the MultiSelectAction Bean. // If actionBean list is less than 1, button is displayed and not the dropdown if ( leftSelects.length > 1 ) { this.actionBeanLeftSelect = $( leftSelects[ 1 ] ); this.actionBeanRightSelect = $( rightSelects[ 1 ] ); var actionBeanLeftGoBox = $( leftInputs[ 2 ] ); var actionBeanRightGoBox = $( leftInputs[ 2 ] ); Event.observe( actionBeanLeftGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, true ) ); Event.observe( actionBeanRightGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, false ) ); } } }, actionBeanFunc : function( event, leftSelect ) { var destination = this.actionBeanLeftSelect; var selectedBox = this.leftSelectBox; if ( !leftSelect ) { destination = this.actionBeanRightSelect; selectedBox = this.rightSelectBox; } var myindex = destination.selectedIndex; if ( myindex == -1 || myindex > destination.length - 1 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return false; } var sFunctionName = destination.options[ myindex ].value; var oFunc = window[ sFunctionName ]; oFunc( selectedBox.name, this.formName ); this.setHiddenValues(); }, /* * listener registration for leftmove and rightmove clicks */ addToLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.push( listenerFunc ); } }, addToRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.push( listenerFunc ); } }, removeFromLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.remove( listenerFunc ); } }, removeFromRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.remove( listenerFunc ); } }, removeAllLeftClickListeners : function() { this.leftClickListeners = []; }, removeAllRightClickListeners : function() { this.rightClickListeners = []; }, removeFromLeft : function( id ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var toRemoveElement = leftItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToLeft : function( id, value, sortString ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var returnItem = leftItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { this.rawAddToLeft( id, value, sortString ); this.setHiddenValues(); } } }, rawAddToLeft : function( id, value, sortString ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.leftSelectBox.appendChild( item ); }, removeFromRight : function( id ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var toRemoveElement = rightItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToRight : function( id, value, sortString ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var returnItem = rightItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.rightSelectBox.appendChild( item ); this.setHiddenValues(); } } }, resetRightBox : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); rightItems.invoke( "remove" ); this.setHiddenValues(); } }, resetLeftBox : function() { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); leftItems.invoke( "remove" ); this.setHiddenValues(); } }, getAllLeftAvailableElements : function() { if ( this.leftSelectBox ) { return this.leftSelectBox.immediateDescendants(); } else { return []; } }, getAllRightElements : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); return rightItems; } else { return []; } }, onMoveLeftClick : function( event ) { var rightItems = this.rightSelectBox.immediateDescendants(); var selectedItems = rightItems.findAll( function( item ) { return item.selected; } ); var leftItems = this.leftSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { leftItems.push( item ); } ); leftItems = leftItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); leftItems.each( function( item ) { this.leftSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.leftClickListeners ) { this.leftClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, onMoveRightClick : function( event ) { var leftItems = this.leftSelectBox.immediateDescendants(); var selectedItems = leftItems.findAll( function( item ) { return item.selected; } ); var rightItems = this.rightSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { rightItems.push( item ); } ); rightItems = rightItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); rightItems.each( function( item ) { this.rightSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.rightClickListeners ) { this.rightClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, setHiddenValues : function() { var leftString; var rightString; var temp = ""; // Populate select box values comma separated into leftString,rightString. if ( this.leftSelectBox ) { this.leftSelectBox.immediateDescendants().each( function( option ) { leftString = option.value; temp += leftString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.leftValues.value = temp; temp = ""; } if ( this.rightSelectBox ) { this.rightSelectBox.immediateDescendants().each( function( option ) { rightString = option.value; temp += rightString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.rightValues.value = temp; temp = ""; } }, onSelectAllClick : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } Event.stop( event ); }, onInvertSelection : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } } }; /** * A dynamic picker list */ widget.PickerList = Class.create(); widget.PickerList.prototype = { /** * Creates a new picker list * * @param id id of the picker list table * @param cellGenerators an array of functions to be called to generate the HTML for the cells for a new row in the * table. * @param columnAlignments an array of the alignments of the columns * @param columnStyles optional styles to applied to columns * @param reorderable whether the table is to be reorderable * @param reorderingUrl url that reordering changes will be persisted to (can be null) * @param contextParameters parameters that are passed along with the reordering action. */ initialize : function( id, cellGenerators, columnAlignments, columnStyles, reorderable, reorderingUrl, contextParameters ) { this.table = $( id ); this.reorderable = reorderable; if ( this.table ) { this.tableBody = $( this.table.getElementsByTagName( 'tbody' )[ 0 ] ); if ( reorderable ) { this.dragDrop = new dragdrop.ListReordering( this.tableBody, this.table.id + '_reorderControls', false, 'tr', 'dndHandle', 'span', reorderingUrl, contextParameters, new Date().getTime(), null ); } } this.cellGenerators = cellGenerators; this.columnAlignments = columnAlignments; this.columnStyles = columnStyles; }, /** * This function takes any number of arguments. They will be passed directly to the generator functions. If this * list is reorderable, the first two arguments must be: - id of the item added. - name of the item added. */ addRow : function() { var generatorArgs = arguments; var row = $( document.createElement( "tr" ) ); if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var id = arguments[ 0 ]; var name = arguments[ 1 ]; // Set the row id so that the drag and drop code can identify the row row.id = this.table.id + '_row:' + id; // Add the reordering handle. var cell = document.createElement( "td" ); cell.className = 'smallCell dndHandle'; cell.valign = 'top'; cell.innerHTML = '<span class="reorder"><span><img src="/images/ci/icons/generic_updown.gif" alt="" /></span></span>'; row.appendChild( cell ); // Add the item to the accessible controls. var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); accessibleSelect.options[ accessibleSelect.length ] = new Option( name, id ); dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } this.cellGenerators.each( function( generator, index ) { var alignment = this.columnAlignments[ index ]; var cell = $( document.createElement( "td" ) ); cell.setAttribute( "align", alignment ); var columnStyle = this.columnStyles[ index ]; if ( '' != columnStyle ) { cell.addClassName( columnStyle ); } cell.innerHTML = generator.apply( window, generatorArgs ); row.appendChild( cell ); }.bind( this ) ); if ( generatorArgs[ 0 ] && generatorArgs[ 0 ].incompatibleFile ) { return; } else { this.tableBody.appendChild( row ); } if ( this.reorderable ) { // Toggle drag and drop so that it picks up the new item. this.dragDrop.disableDragAndDrop(); this.dragDrop.enableDragAndDrop(); this.dragDrop.calculateItemOrder(); } return row; }, /** * Removes the row with the specified id or index * * @param idOrIndex - if the argument is a string - it is taken as the id of one of the rows in the table - if the * argument is a number - the row at the specified index will be removed. */ removeRow : function( idOrIndex ) { var rowToRemove = null; if ( Object.isString( idOrIndex ) ) { rowToRemove = $( this.table.id + "_row:" + idOrIndex ); } else { rowToRemove = this.tableBody.childElements()[ idOrIndex ]; } if ( rowToRemove ) { // Remove the row from the accessible repositioning controls if applicable if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var idToCheck = rowToRemove.id.split( ':' )[ 1 ]; var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); var options = accessibleSelect.childElements(); for ( var i = 0; i < options.length; i++ ) { if ( options[ i ].value == idToCheck ) { Element.remove( options[ i ] ); break; } } dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } Element.remove( rowToRemove ); if ( this.reorderable ) { this.dragDrop.calculateItemOrder(); } } } }; widget.PickerList.noopGenerator = function() { return '&nbsp;'; }; /** * File picker */ widget.FilePicker = Class.create(); widget.FilePicker.prototype = { /** * Creates a new file picker * * @param pickerList the javascript object representing the picker list (of currently attached files) * @param baseElementName the base name for the file picker elements * @param required whether a file is required to be chosen * @param overrideLocalBehavior whether the CS options to override local behavior should be shown * @param csPickerUrl url to the CS file picker * @param showAddMetadata whether the "submit and add metadata" content system functionality should be enabled. * @param onAttachFile Optional callback function triggered when a new file is attached */ initialize : function( pickerList, baseElementName, required, overrideLocalBehavior, csPickerUrl, showAddMetadata, showSpecialAction, allowMultipleFiles, onAttachFile ) { this.pickerList = pickerList; this.baseElementName = baseElementName; this.required = required; this.overrideLocalBehavior = overrideLocalBehavior; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.allowMultipleFiles = allowMultipleFiles; this.onAttachFile = onAttachFile; this.pickCSButton = $( this.baseElementName + '_csBrowse' ); this.pickLocalButton = $( this.baseElementName + '_localBrowse' ); this.localFilePicker = $( this.baseElementName + '_chooseLocalFile' ); this.pickURLButton = $( this.baseElementName + '_urlBrowse' ); this.selectedCSFile = $( this.baseElementName + '_selectedCSFile' ); this.selectedCSFileName = $( this.baseElementName + '_selectedCSFileName' ); this.selectedCSFilePath = $( this.baseElementName + '_selectedCSFilePath' ); this.selectedCSFileSize = $( this.baseElementName + '_selectedCSFileSize' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_selectedCSFileMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_selectedCSFileMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_selectedCSFileMetadataFormat' ); } // single file selected area this.selectedFileActionsArea = $( this.baseElementName + '_selectedFileActions' ); this.selectedFileName = $( this.baseElementName + '_selectedFileName' ); this.selectedFileSource = $( this.baseElementName + '_selectedFileSource' ); this.selectedFileLinkTitle = $( this.baseElementName + '_selectedFileLinkTitle' ); this.selectedFileSpecialAction = $( this.baseElementName + '_selectedFileSpecialAction' ); this.attachFileButton = $( this.baseElementName + '_attachFileButton' ); this.cancelFileButton = $( this.baseElementName + '_cancelFileButton' ); this.allowCS = this.pickCSButton ? true : false; this.allowLocal = this.pickLocalButton ? true : false; this.allowURL = this.pickURLButton ? true : false; // Wire up events if ( this.overrideLocalBehavior ) { this.pickTargetButton = $( this.baseElementName + '_CSTargetButton' ); this.targetCSLocation = $( this.baseElementName + '_CSTarget' ); Event.observe( this.pickTargetButton, "click", this.onPickTargetClick.bindAsEventListener( this ) ); } this.pickMDButton = $( this.baseElementName + '_CSTargetMetaButton' ); if ( this.pickMDButton ) { window.CSMetadataPickerCallBack = this.afterPickMD.bind( this ); Event.observe( this.pickMDButton, "click", this.onPickMDClick.bindAsEventListener( this ) ); } if ( $( this.baseElementName + '_permissionPickerButton0' ) ) { Event.observe( $( this.baseElementName + '_permissionPickerButton0' ), "click", widget.FilePicker.openPermPicker .bindAsEventListener( this, this.csPickerUrl, this.baseElementName + "_permissions0_manual", "", this.selectedCSFilePath, widget.FilePicker.permPickerCallback .curry( this.baseElementName, this.baseElementName + '_csPermFileList0', 0 ) ) ); } if ( this.allowCS ) { Event.observe( this.pickCSButton, "click", this.onCSBrowse.bindAsEventListener( this ) ); Event.observe( this.selectedCSFile, "change", this.onCSPick.bindAsEventListener( this ) ); } if ( this.allowLocal ) { this.localFileContainer = this.localFilePicker.up(); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } if ( this.allowURL ) { this.linkId = $( this.baseElementName + "_urlBrowse" ); this.formDivId = $( this.baseElementName + "_addUrlForm" ); this.formContainerId = $( this.baseElementName + "_urlContainerDiv" ); var flyout = new flyoutform.FlyoutForm( { linkId : this.linkId, formDivId : this.formDivId, inlineFormContainerId : this.formContainerId, customCallbackObject : this, customOnSubmitHandler : this.onURLPick } ); this.flyout = flyout; } if ( this.cancelFileButton ) { Event.observe( this.cancelFileButton, "click", this.onCancelClick.bindAsEventListener( this ) ); } Event.observe( this.allowLocal ? this.pickLocalButton.form : this.pickCSButton.form, "submit", this.onSubmit .bindAsEventListener( this ) ); this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv && this.pickerList && this.pickerList.tableBody && ( this.pickerList.tableBody .getElementsBySelector( 'input[type="hidden"]' ).length > 0 || this.pickerList.tableBody .getElementsBySelector( 'input[type="file"]' ).length > 0 ) ) { this.listHtmlDiv.show(); } if ( !this.allowMultipleFiles && this.selectedFileSource.value != '' ) { // A file is already attached, so show the selected files area and // turn off the file choosing button (and metadata button if any). this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } } widget.FilePicker.registerFilePicker( this ); }, /** * For the override local behavior: show the picker to pick the location */ onPickTargetClick : function( event ) { var remote = popop.launchPicker( '/webapps/cmsmain/folderpicker/', 'picker_browse' ); if ( remote ) { remote.opener.inputEntryURLToSet = this.targetCSLocation; remote.opener.returnFullURL = false; remote.methodCall = this.onPickMDClick.bind( this ); } }, /** * For the override local behavior: show the picker to pick the metadata */ onPickMDClick : function( event ) { var location = this.targetCSLocation; var file = this.localFilePicker; if ( file.value == '' ) { return; } var url = '/webapps/cmsmain/execute/metadatapicker/manage?action=pick&file=' + file.value; if ( location && location.value != '' ) { url += 'location=' + location.value; } popup.launchPicker( url, 'picker_browse' ); }, /** * For the override local behavior: callback from the metadata picker */ afterPickMD : function( metadata, selection, synchronised, format ) { $( this.baseElementName + '_CSTargetmetadata' ).value = metadata; $( this.baseElementName + '_CSTargetselection' ).value = selection; $( this.baseElementName + '_CSTargetSynchronised' ).value = synchronised; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = format; }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.inputEntryURLToSet = this.selectedCSFile; this.csBrowseWindow.opener.inputFileSizeToSet = this.selectedCSFileSize; this.csBrowseWindow.opener.linkName = this.selectedCSFileName; if ( this.selectedCSFilePath ) { this.csBrowseWindow.opener.filePath = this.selectedCSFilePath; } this.csBrowseWindow.opener.customHandler = this.onCSPick.bind( this ); if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, /** * Called after file has been chosen from CS file picker with metadata added. */ afterMD : function( metadata, synced, format, fileId ) { var metadataString = metadata.join( "#" ); if ( fileId ) { if ( $( this.baseElementName + '_CSMetadata_' + fileId ) ) { $( this.baseElementName + '_CSMetadata_' + fileId ).value = metadataString; } if ( $( this.baseElementName + '_CSMetadataSync_' + fileId ) ) { $( this.baseElementName + '_CSMetadataSync_' + fileId ).value = synced; } if ( $( this.baseElementName + '_CSMetadataFormat_' + fileId ) ) { $( this.baseElementName + '_CSMetadataFormat_' + fileId ).value = format; } } else { if ( this.selectedCSFileMetadata ) { this.selectedCSFileMetadata.value = metadataString; } if ( this.selectedCSFileMetadataSync ) { this.selectedCSFileMetadataSync.value = synced; } if ( this.selectedCSFileMetadataFormat ) { this.selectedCSFileMetadataFormat.value = format; } } }, /** * Callback called after a file has been chosen from the CS file picker in single file mode - updating selected * files section */ onCSPick : function( fileList ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { // picker was opened in multiple mode but one of the legacy page was hit // see how legacy pages with radio buttons submit its selection - pickmultiple.jspf // create object cell generator is expecting using hidden input if ( typeof ( fileList ) == 'string' ) { var filePath = this.selectedCSFilePath ? this.selectedCSFilePath.value : ""; var csFile = { fileName : this.selectedCSFile.value, fullUrlToFile : this.selectedCSFile.value, linkTitle : this.selectedCSFileName.value, filePath : filePath, size : this.selectedCSFileSize.value }; this.onCSPickAllowMultiple( [ csFile ] ); } else { this.onCSPickAllowMultiple( fileList ); } } else { this.csBrowseWindow = null; this.selectedFileSource.value = 'C'; this.selectedFileName.innerHTML = this.selectedCSFileName.value; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = this.selectedCSFileName.value; } this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } if ( $( this.baseElementName + '_csPermissionsLi' ) ) { var fileName = this.selectedCSFileName.value; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. if ( ( /html|htm/i ).test( ext ) ) { $( this.baseElementName + "_permissionOptionsIndex" ).value = 0; $( this.baseElementName + '_csPermissionsLi' ).show(); } } if ( this.onAttachFile ) { this.onAttachFile( this, false ); } } }, /** * Called after a file is chosen from the local file picker in single file mode - updating selected files section */ onLocalPick : function( event ) { if ( this.localFilePicker.value != '' ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { this.onLocalPickAllowMultiple( event ); } else { var localFileName = this.getFileName( this.localFilePicker.value ); this.selectedFileName.innerHTML = localFileName; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = localFileName; } this.selectedFileSource.value = 'L'; this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.show(); } if ( this.onAttachFile ) { this.onAttachFile( this, true ); } } } }, /** * Callback called after files have been chosen from the CS file picker in multiple files mode - updating table */ onCSPickAllowMultiple : function( fileList ) { this.csBrowseWindow = null; fileList.each( function( selectedFile ) { selectedFile.baseElementName = this.baseElementName; selectedFile.showAddMetadata = this.showAddMetadata; selectedFile.csPickerUrl = this.csPickerUrl; this.pickerList.addRow( selectedFile, false ); // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); if ( this.onAttachFile ) { this.onAttachFile( this, false ); } }.bind( this ) ); }, /** * Called after a file is chosen from the local file picker in multiple files mode - updating table */ onLocalPickAllowMultiple : function( event ) { var row = this.pickerList.addRow( this, true ); if ( row === null ) { return; } // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); var cell = $( row.getElementsByTagName( 'td' )[ 0 ] ); var title = this.localFilePicker.title; Element.remove( this.localFilePicker ); this.localFilePicker.removeClassName( "hiddenInput" ); this.localFilePicker.setStyle( { position : "absolute", top : '-10000px' } ); this.localFilePicker.disabled = false; cell.appendChild( this.localFilePicker ); // Set up the names of the local file fields this.pickerList.tableBody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = this.baseElementName + '_LocalFile' + index; }.bind( this ) ); // Create and insert a new local file picker for more local file attaching this.localFilePicker = new Element( 'input', { title : title, type : 'file' } ); this.localFilePicker.addClassName( 'hiddenInput' ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); if ( this.onAttachFile ) { this.onAttachFile( this, true ); } }, /** * If a) Special Actions are enabled, and b) the embed options are configure to show up: - Wires up an on change * even on the special action select box that shows the embed options when the embed action is chosen. */ registerEmbedOptionsListener : function( index ) { if ( this.showSpecialAction ) { var specialAction = $( this.baseElementName + '_specialAction' + index ); var embedOptions = $( this.baseElementName + '_embedOptions' + index ); if ( embedOptions ) { specialAction.observe( 'change', function( event ) { if ( "EMBED" == specialAction.options[ specialAction.selectedIndex ].value ) { embedOptions.show(); } else { embedOptions.hide(); } } ); } } }, /** * Called after a url is chosen from the local file picker in multiple files mode - updating table */ onURLPick : function( widget ) { var selectedURL = document.getElementById( widget.baseElementName + '_newUrlName' ); if (selectedURL.value.blank()) // TODO: More exhaustive URL validation? { alert(page.bundle.getString('filePicker.validate.invalid.url')); return false; } if ( widget.listHtmlDiv ) { widget.listHtmlDiv.show(); } if ( widget.allowMultipleFiles ) { var urlFile = { fileName : selectedURL.value, fullUrlToFile : selectedURL.value, linkTitle : selectedURL.value }; widget.onCSPickAllowMultiple( [ urlFile ] ); } else { widget.selectedFileSource.value = 'C'; widget.selectedFileName.innerHTML = selectedURL.value; if ( widget.selectedFileLinkTitle ) { widget.selectedFileLinkTitle.value = selectedURL.value; } widget.selectedFileActionsArea.show(); widget.togglePickerButtons( false ); if ( widget.pickMDButton ) { widget.pickMDButton.hide(); } if ( widget.onAttachFile ) { widget.onAttachFile( widget, false ); } } // Purge entry widget.flyout.close(); selectedURL.value = ''; return true; }, /** * Called when the "Do not attach file" button is clicked */ onCancelClick : function( event ) { this.selectedFileActionsArea.hide(); this.clearSelectedFileInfo(); this.togglePickerButtons( true ); if ( event ) { Event.stop( event ); } }, /** * Toggles the enabled state of the Local/CS picker buttons to the specified state */ togglePickerButtons : function( enabled ) { if ( this.allowLocal ) { this.pickLocalButton.disabled = !enabled; if ( enabled ) { this.pickLocalButton.className = 'browse visibleInput'; this.localFilePicker.position = 'relative'; this.localFilePicker.style.top = ''; } else { this.pickLocalButton.className = 'disabled'; this.localFilePicker.position = 'absolute'; this.localFilePicker.style.top = '-10000px'; } if ( this.allowMultiple ) { this.localFilePicker.disabled = !enabled; } } if ( this.allowCS ) { this.pickCSButton.disabled = !enabled; if ( enabled ) { this.pickCSButton.className = 'browse visibleInput'; } else { this.pickCSButton.className = 'disabled'; } } if ( this.allowURL ) { this.pickURLButton.disabled = !enabled; if ( enabled ) { this.pickURLButton.className = 'browse visibleInput'; } else { this.pickURLButton.className = 'disabled'; } } }, /** * Clears the info associated to the current attached file (if the user cancelled, or chose to attach another file ) */ clearSelectedFileInfo : function() { var isLocal = this.selectedFileSource.value == 'L'; this.selectedFileName.innerHTML = ""; this.selectedFileSource.value = ""; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = ""; } if ( this.pickMDButton ) { $( this.baseElementName + '_CSTargetmetadata' ).value = ""; $( this.baseElementName + '_CSTargetselection' ).value = ""; $( this.baseElementName + '_CSTargetSynchronised' ).value = ""; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = ""; } if ( $( this.baseElementName + "_permissionOptionsIndex" ) ) { $( this.baseElementName + '_permissionOptionsIndex' ).value = -1; $( this.baseElementName + '_permissions0_all' ).checked = true; } if ( this.selectedFileSpecialAction ) { this.selectedFileSpecialAction.selectedIndex = 0; } if ( isLocal ) { var title = ""; if ( !this.allowMultipleFiles ) { title = this.localFilePicker.title; Element.remove( this.localFilePicker ); } this.localFilePicker = $( document.createElement( "input" ) ); if ( !this.allowMultipleFiles ) { this.localFilePicker.name = this.baseElementName + '_LocalFile0'; } this.localFilePicker.title = title; this.localFilePicker.type = "file"; this.localFilePicker.addClassName( "hiddenInput" ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } else { this.selectedCSFile.value = ""; this.selectedCSFileName.value = ""; if ( this.selectedFilePath ) { this.selectedFilePath = ""; } this.selectedCSFileSize.value = ""; if ( this.showAddMetadata ) { this.selectedCSFileMetadata.value = ""; this.selectedCSFileMetadataSync.value = ""; this.selectedCSFileMetadataFormat.value = ""; } } }, /** * Gets the file name based on the full file path. */ getFileName : function( fullPath ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return result; }, setRequired : function( required ) { this.required = required; }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.allowMultipleFiles ) { if ( this.pickerList.tableBody.immediateDescendants().length === 0 ) { alert( page.bundle.getString( "filePicker.validate.atLeastOne" ) ); if ( event ) { Event.stop( event ); } return false; } } else { if ( ( this.selectedCSFile && this.selectedCSFile.value == '' ) && ( this.localFilePicker && this.localFilePicker.value == '' ) ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); if ( event ) { Event.stop( event ); } return false; } } } return true; } }; // Creates hidden input items for selected files/folders if giving access to additional files/folder // when attaching an HTML file widget.FilePicker.permPickerCallback = function( baseElementName, permFileList, index, itemList ) { if ( itemList && itemList.length > 0 ) { var i; var permFileListElem = $( permFileList ); var hiddenInputs = ""; if ( !permFileListElem ) { return; } hiddenInputs += '<input type="hidden" name="' + baseElementName + '_permittedFiles' + index + '" value="' + itemList[ 0 ].fileName; for ( i = 1; i < itemList.length; i++ ) { hiddenInputs += ':' + itemList[ i ].fileName; } hiddenInputs += '">'; permFileListElem.innerHTML = hiddenInputs; } }; /** * Toggles the "mark for removal" status of an item in the currently attached files table. Should be called from an * onclick attribute on the toggle link in the table. */ widget.FilePicker.toggleForRemove = function( event, removeLink ) { var e = event || window.event; removeLink = $( removeLink ); var tableRow = removeLink.up( "tr" ); var hiddenField = removeLink.up( "td" ).down( 'input[type="hidden"]' ); tableRow.toggleClassName( "removeCell" ); if ( hiddenField.disabled ) { hiddenField.disabled = false; removeLink.innerHTML = page.bundle.getString( "filePicker.unmarkForRemove" ); } else { hiddenField.disabled = true; removeLink.innerHTML = page.bundle.getString( "filePicker.markForRemove" ); } Event.stop( e ); }; widget.FilePicker.togglePickerButton = function( pickerButton, enabled ) { if ( enabled ) { $( pickerButton ).setAttribute( "href", "#" ); $( pickerButton ).removeClassName( "disabled" ); } else { $( pickerButton ).removeAttribute( "href" ); $( pickerButton ).addClassName( "disabled" ); } }; /** * Removes the specified pending attachment. Should be called from an onclick handler on a link in the currently * attached files table */ widget.FilePicker.removePendingAttachment = function( event, removeLink, baseElementName ) { var e = event || window.event; if ( confirm( page.bundle.getString( "filePicker.doNotAttach.confirm" ) ) ) { removeLink = $( removeLink ); var row = removeLink.up( "tr" ); var tbody = row.up( "tbody" ); // Remove the pending row Element.remove( row ); // Re-index the local file inputs. tbody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = baseElementName + '_LocalFile' + index; } ); // Hide the whole attached files table if there are no more attached files. var rowTotal = tbody.getElementsByTagName( 'tr' ).length; if ( rowTotal === 0 ) { var listHtmlDiv = $( baseElementName + "_listHtmlDiv" ); if ( listHtmlDiv ) { listHtmlDiv.hide(); } } } Event.stop( e ); }; widget.FilePicker.getPermPickerUrl = function( csPickerUrl, path, pathElement ) { // reuse current file picker's url as fall back plan var baseUrl = csPickerUrl.split( "?" )[ 0 ]; var queryParams = csPickerUrl.toQueryParams(); if ( !queryParams.multipicker ) { queryParams.multipicker = 'true'; } if ( !path && pathElement ) { path = pathElement.value; } // if we have path, construct proper full url from scratch using the provided path & extracted principalId if ( path ) { var principalId = baseUrl.match( /\/webapps\/cmsmain\/.*picker\/([^\/]*)\/?/ ); baseUrl = "/webapps/cmsmain/picker"; if ( principalId ) { baseUrl += "/" + principalId[ 1 ]; } if ( baseUrl.charAt( baseUrl.length - 1 ) === '/' ) { baseUrl = baseUrl.slice( 0, baseUrl.length - 1 ); } baseUrl += path; } return baseUrl + "?" + $H( queryParams ).toQueryString(); }; widget.FilePicker.openPermPicker = function( event, csPickerUrl, pid, path, pathElement, callback ) { if ( !( pid && $( pid ) && $( pid ).type == 'radio' && $( pid ).checked ) ) { return false; } var permPickerUrl = widget.FilePicker.getPermPickerUrl( csPickerUrl, path, pathElement ); var remote = popup.launchPicker( permPickerUrl ); if ( remote ) { if ( callback ) { remote.opener.customHandler = callback; } else { remote.opener.customHandler = null; } } var e = event || window.event; if ( e ) { var eventElement = Event.element( e ); Event.stop( e ); } return false; }; /** * A registry of defined file pickers and methods to access this registry */ widget.FilePicker.filePickers = {}; widget.FilePicker.registerFilePicker = function( filePicker ) { widget.FilePicker.filePickers[ filePicker.baseElementName ] = filePicker; }; widget.FilePicker.unRegisterFilePicker = function( filePicker ) { delete widget.FilePicker.filePickers[ filePicker.baseElementName ]; }; widget.FilePicker.getFilePicker = function( baseElementName ) { return widget.FilePicker.filePickers[ baseElementName ]; }; /** * Cell generators for the current attached files table */ widget.FilePicker.cellGenerators = { fileName : function( filePicker, isLocal ) { var result = '<input type="hidden" name="' + filePicker.baseElementName + '_attachmentType" value="' + ( isLocal ? 'L' : 'C' ) + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_fileId" value="new">'; if ( isLocal ) { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.getFileName( filePicker.localFilePicker.value ) + '</span>'; } else { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.linkTitle + '</span>'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFile" value="' + filePicker.fileName + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFileUrl" value="' + filePicker.fullUrlToFile + '">'; if ( filePicker.showAddMetadata ) { result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadata" id="' + filePicker.baseElementName + '_CSMetadata_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataSync" id="' + filePicker.baseElementName + '_CSMetadataSync_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataFormat" id="' + filePicker.baseElementName + '_CSMetadataFormat_' + filePicker.xythosId + '" value="">'; } } return result; }, fileType : function( filePicker, isLocal ) { var result = null; if ( isLocal ) { result = page.bundle.getString( "filePicker.fileType.attachment" ); } else { result = page.bundle.getString( "filePicker.fileType.content" ); } return result; }, linkTitle : function( filePicker, isLocal ) { var linkTitle = ""; if ( isLocal ) { linkTitle = filePicker.getFileName( filePicker.localFilePicker.value ); } else { if ( filePicker.linkTitle ) { linkTitle = filePicker.linkTitle; } } return '<input type="text" name="' + filePicker.baseElementName + '_linkTitle" value="' + linkTitle + '" title="' + page.bundle .getString( "filePicker.nameOfLink" ) + " " + linkTitle + '">'; }, size : function( filePicker, isLocal ) { if ( !isLocal && filePicker.size ) { return '<input type="hidden" name="' + filePicker.baseElementName + '_size" value="' + filePicker.size + '"> ' + filePicker.size; } else { return ""; } }, fileAction : function( filePicker, isLocal ) { return widget.FilePicker.cellGenerators.fileActionEmbedOptions( filePicker, isLocal, true ); }, fileActionEmbedOptions_index : 0, // used to uniquely identify embed options form elements on the page. fileActionEmbedOptions : function( filePicker, isLocal, suppressOptions ) { var index = widget.FilePicker.cellGenerators.fileActionEmbedOptions_index++; var baseName = filePicker.baseElementName; var fileName = isLocal ? filePicker.getFileName( filePicker.localFilePicker.value ) : filePicker.linkTitle; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. var isType = { image : ( /gif|jpeg|png|tif|bmp|jpg/i ).test( ext ), videoQt : ( /qt|mov|moov|movie/i ).test( ext ), videoOther : ( /avi|mpg|mpeg|wmv|asf|wma|mpe/i ).test( ext ), real : ( /ra|ram|rm/i ).test( ext ), flash : ( /swa|swf/i ).test( ext ), audio : ( /aif|aiff|au|mp3|wav/i ).test( ext ), html : ( /html|htm/i ).test( ext ) }; var isMedia = isType.image || isType.videoQt || isType.videoOther || isType.flash || isType.audio; var result = ''; if ( isMedia ) { result += '<select id="' + baseName + '_specialAction' + index + '" name="' + baseName + '_specialAction"'; result += ' title="' + page.bundle.getString( "filePicker.specialAction.for" ) + " " + fileName + '">'; result += '<option value="LINK">' + page.bundle.getString( "filePicker.specialAction.link" ) + '</option>'; result += '<option value="EMBED">' + page.bundle.getString( "filePicker.specialAction.embed" ) + '</option>'; result += '</select>'; // Render the embed options (if not suppressed) if ( !suppressOptions ) { result += '<ul style="display: none;" class="nestedList smallControls liveArea liveArea-slim" id="' + baseName + '_embedOptions' + index + '">'; // Alignment var fid = baseName + 'align' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.alignment' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_l" name="' + fid + '" value="Left" checked> <label for="' + fid + '_l">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.left' ) + '</label>' + '<input type="radio" id="' + fid + '_c" name="' + fid + '" value="Center"> <label for="' + fid + '_c">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.center' ) + '</label>' + '<input type="radio" id="' + fid + '_r" name="' + fid + '" value="Right"> <label for="' + fid + '_r">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.right' ) + '</label></fieldset></div></li>'; // Placement fid = baseName + 'placement' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.placement' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.placement' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_a" name="' + fid + '" value="Above"> <label for="' + fid + '_a">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.above' ) + '</label>' + '<input type="radio" id="' + fid + '_b" name="' + fid + '" value="Below" checked> <label for="' + fid + '_b">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.below' ) + '</label></fieldset></div></li>'; // Dimensions if ( !isType.audio ) { fid = baseName + 'width' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.width' ) + '</label></div><div class="field"><input class="width" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; fid = baseName + 'height' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.height' ) + '</label></div><div class="field"><input class="height" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; } // Autoplay if ( !isType.image ) { fid = baseName + 'autostart' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.autostart' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.autostart' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Loop if ( !isType.image && !isType.real ) { fid = baseName + 'loop' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.loop' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.loop' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + baseName + 'loop' + index + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Control (radio) if ( isType.videoQt || isType.real ) { fid = baseName + 'controls' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.controls' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="Full" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="None"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Controls (drop down) if ( isType.videoOther || isType.audio ) { fid = baseName + 'controls' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="controls">' + '<option value="None">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_none' ) + '</option>' + '<option value="Mini">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_mini' ) + '</option>' + '<option value="Full" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.controls_full' ) + '</option>' + '</select></div></li>'; } // Quality if ( isType.flash ) { fid = baseName + 'quality' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.set_quality' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="quality">' + '<option value="Low">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_low' ) + '</option>' + '<option value="Medium">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_med' ) + '</option>' + '<option value="High">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_high' ) + '</option>' + '<option value="Best" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.quality_best' ) + '</option>' + '</select></div></li>'; } if ( isType.image ) { // URL fid = baseName + 'url' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.url' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25">' + '</div></li>'; // New Window fid = baseName + 'newwin' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.new_window' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.new_window' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label>' + '</fieldset></div></li>'; // Border fid = baseName + 'border' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.border' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="border">' + '<option value="0" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.none' ) + '</option>' + '<option value="1>1</option><option value="2">2</option><option value="3">3</option>' + '<option value="4">4</option></select></div></li>'; } // Alt text fid = baseName + 'alttext' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25" value=""></div><span class="fieldHelp clearfloats">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text.instructions' ) + '</span></li>'; result += '</ul>'; } } else { result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialAction" value="LINK">'; result += page.bundle.getString( "filePicker.specialAction.link" ); } // The index is used to find the correct request parameters on the backend. result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialActionIndex" value="' + ( isMedia && !suppressOptions ? index : -1 ) + '">'; if ( filePicker.shouldManagePermission && !isLocal ) { // permission management options var permissionCsPickerUrl = filePicker.csPickerUrl; if ( permissionCsPickerUrl.indexOf( 'multipicker=true' ) != -1 ) { var xythosId = filePicker.fileName.sub( '/xid-', '' ).strip(); if ( xythosId ) { permissionCsPickerUrl = permissionCsPickerUrl + '&preselectedItemId=' + xythosId; } } result += '<ul id="' + filePicker.baseElementName + '_imgSpecOptions" class="nestedList smallControls liveArea liveArea-slim">'; result += '<li>'; var pid = baseName + "_permissions" + index; var pickerButtonId = baseName + "_permissionPickerButton" + index; var permFileListName = baseName + '_csPermFileList' + index; result += '<input type="radio" name="' + pid + '" value="A" id="' + pid + '_all" checked="checked" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.all" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="O" id="' + pid + '_this" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.this" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="S" id="' + pid + '_manual" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', true)" />' + page.bundle .getString( "fm.permission.grant.manual" ); result += '<a id="' + pickerButtonId + '" class="button-4 disabled" style="margin:0 3px" onclick="widget.FilePicker.openPermPicker( event, \'' + permissionCsPickerUrl + '\', \'' + pid + '_manual\',\'' + filePicker.filePath + '\', null, widget.FilePicker.permPickerCallback.curry( \'' + baseName + '\', \'' + permFileListName + '\', ' + index + ' ) );">' + page.bundle .getString( "filePicker.browse" ) + '</a>'; result += '</li>'; result += '</ul>'; result += '<div id="' + permFileListName + '" style="display: none;"></div>'; } result += '<input type="hidden" name="' + baseName + '_permissionOptionsIndex" value="' + ( isType.html && !isLocal ? index : -1 ) + '">'; return result; }, remove : function( filePicker, isLocal ) { var result = '<a href="#" onclick="widget.FilePicker.removePendingAttachment(event, this, '; result += "'" + filePicker.baseElementName + "'"; result += ');">' + page.bundle.getString( "filePicker.doNotAttach" ) + '</a>'; return result; }, // attach CS file alignment to course item align : function(filePicker, isLocal) { var alignOptionsName = "csAlignedResources"; var html = '<label for="csAlignedResources" style="white-space:nowrap">' + '<input type="checkbox" id="' + alignOptionsName + '"' + ' name="' + alignOptionsName + '"' + ' value="' + filePicker.filePath + '"' + '/>' + ' ' + page.bundle.getString('wysiwyg.insert_picture.csalign') + '</label>'; return html; } }; widget.InlineSingleCSFilePicker = Class.create(); widget.InlineSingleCSFilePicker.prototype = { initialize : function( baseElementName, csPickerUrl, showAddMetadata, showSpecialAction ) { this.baseElementName = baseElementName; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.browseButton = $( baseElementName + '_csBrowse' ); this.fileEntry = $( baseElementName + '_CSFile' ); this.fileId = $( baseElementName + '_fileId' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_CSMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_CSMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_CSFileMetadataFormat' ); } Event.observe( this.browseButton, 'click', this.onCSBrowse.bindAsEventListener( this ) ); }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = "picker" + new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.inputEntryURLToSet = this.fileEntry; this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.linkName = this.fileId; if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, afterMD : function( metadata, synced, format ) { var metadataString = metadata.join( "#" ); this.selectedCSFileMetadata.value = metadataString; this.selectedCSFileMetadataSync.value = synced; this.selectedCSFileMetadataFormat.value = format; } }; /** * Inline single local file picker - $baseElementName_attachmentType - 'AL' or 'L' or '' - $baseElementName_localBrowse - * $baseElementName_fileId */ widget.InlineSingleLocalFilePicker = Class.create(); widget.InlineSingleLocalFilePicker.prototype = { initialize : function( baseElementName, currentAttachedFile, required, showSpecialAction ) { this.baseElementName = baseElementName; this.fileInput = $( baseElementName + '_chooseLocalFile' ); this.fileInputWrapper = $( this.fileInput.parentNode ); this.attachmentType = $( baseElementName + '_attachmentType' ); this.fullFileName = $( baseElementName + '_fileId' ); this.attachmentNameSpan = $( baseElementName + '_attachmentName' ); this.removeLink = $( baseElementName + '_removeLink' ); this.inputArea = $( baseElementName + '_inputArea' ); this.attachedFileArea = $( baseElementName + '_attachedFileArea' ); this.required = required; this.showSpecialAction = showSpecialAction; // Wire up events Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); Event.observe( this.removeLink, "click", this.onRemoveClick.bindAsEventListener( this ) ); Event.observe( this.fileInput.form, "submit", this.onSubmit.bindAsEventListener( this ) ); // Set up initial values if ( currentAttachedFile ) { this.setDefaultCurrentAttachedFile( currentAttachedFile ); } widget.InlineSingleLocalFilePicker.pickerMap[ baseElementName ] = this; }, setCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, file ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, setDefaultCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentType._defaultValue = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } this.fullFileName.value = file; this.fullFileName._defaultValue = file; this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; this.fullFileName.value = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, onAfterChooseFile : function( event ) { this.attachmentNameSpan.innerHTML = this.getFileName( this.fileInput.value, true ); this.attachmentType.value = 'L'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fileInput.value ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); Event.stop( event ); }, onRemoveClick : function( event ) { this.clearFileInput(); if ( this.attachmentType.value == 'AL' ) { this.removeHiddenField = document.createElement( 'input' ); this.removeHiddenField.type = 'hidden'; this.removeHiddenField.name = this.baseElementName + '_remove'; this.removeHiddenField.id = this.baseElementName + '_remove'; this.removeHiddenField.value = this.fullFileName.value; this.attachedFileArea.insertBefore( this.removeHiddenField, this.attachedFileArea.firstChild ); widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fullFileName.value ); } else { this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); } this.attachmentNameSpan.innerHTML = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); Event.stop( event ); }, clearFileInput : function() { var title = this.fileInput.title; Element.remove( this.fileInput ); this.fileInput = $( document.createElement( "input" ) ); this.fileInput.title = title; this.fileInput.type = "file"; this.fileInput.addClassName( "hiddenInput" ); this.fileInput.name = this.baseElementName + '_LocalFile0'; this.fileInput._defaultValue = ''; this.fileInputWrapper.insertBefore( this.fileInput, this.fileInputWrapper.firstChild ); Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); }, /** * Gets the file name based on the full file path. * * @param fullPath Fully-qualified path of file * @param isDecodedName (optional) Indicates that the filename has already been URL decoded */ getFileName : function( fullPath, isDecodedName ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return isDecodedName ? result : decodeURI( result ); }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.fullFileName.value == '' ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); Event.stop( event ); return; } } } }; widget.InlineSingleLocalFilePicker.pickerMap = {}; /** * Read Only File picker */ widget.ReadOnlyFilePicker = Class.create(); widget.ReadOnlyFilePicker.prototype = { /** * Creates a new file picker * * @param baseElementName the base name for the file picker elements */ initialize : function( baseElementName ) { this.baseElementName = baseElementName; this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } widget.ReadOnlyFilePicker.pickerMap[ baseElementName ] = this; } }; widget.ReadOnlyFilePicker.pickerMap = {}; widget.UserRoleSelect = Class.create(); widget.UserRoleSelect.prototype = { initialize : function( userSelectRoleDivStr, moveMsgJS, noRoleMsgJs ) { this.sourceValueName = "_left_values"; this.secondaryValueName = "_right_values"; this.primaryValueName = "_primary_value"; this.userSelectRoleDiv = $( userSelectRoleDivStr ); if ( this.userSelectRoleDiv ) { var selects = this.userSelectRoleDiv.getElementsByTagName( 'select' ); var inputs = this.userSelectRoleDiv.getElementsByTagName( 'input' ); var links = this.userSelectRoleDiv.getElementsByTagName( 'a' ); this.source = $( selects[ 0 ] ); this.primary = $( inputs[ 3 ] ); this.secondary = $( selects[ 1 ] ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); this.primaryValue = $( inputs[ 2 ] ); this.toPrimaryMove = $( links[ 0 ] ); this.toSecondaryMove = $( links[ 1 ] ); this.toSourceMove = $( links[ 2 ] ); Event.observe( this.toSourceMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, false, moveMsgJS, noRoleMsgJs ) ); Event.observe( this.toPrimaryMove, "click", this.switchPrimary.bindAsEventListener( this, moveMsgJS ) ); Event.observe( this.toSecondaryMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, true, moveMsgJS, noRoleMsgJs ) ); } }, switchPrimary : function( event, msg ) { var indx; indx = 0; var sourceArray = this.source; if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } if ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.getFromPrimary(); this.primaryValue.value = sourceArray.options[ indx ].value; this.primary.value = sourceArray.options[ indx ].text; sourceArray.options[ indx ].selected = false; sourceArray.options[ indx ] = null; sourceArray.options[ sourceArray.length ] = tmpOpt; } this.writeToSelectBoxValues( this.source, this.leftValues ); return false; }, getFromPrimary : function() { var primaryRoleField = this.primaryValue; var primaryField = this.primary; return new Option( primaryField.value, primaryRoleField.value ); }, writeToSelectBoxValues : function( selectBox, hiddenName ) { var i = 0; var values = ""; while ( i < selectBox.length ) { if ( i > 0 ) { values += ","; } values += selectBox.options[ i ].value; i++; } hiddenName.value = values; return true; }, switchUserRoleColumns : function( event, isSourceDest, msg, noRoleMsg ) { var indx; indx = 0; var sourceArray = this.source; var targetArray = this.secondary; if ( !isSourceDest ) // If we are moving from Dest to Source { var temp = sourceArray; sourceArray = targetArray; targetArray = temp; } if ( sourceArray.length <= 0 ) { alert( noRoleMsg ); return false; } if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } var rightIndex = 0; var targetLength = targetArray.length; while ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.cloneMultipleRows( sourceArray.options[ indx ] ); if ( targetLength > 0 ) { var i = targetLength; while ( i > 0 ) { var tmpOpt1 = this.cloneMultipleRows( targetArray.options[ i + rightIndex - 1 ] ); targetArray.options[ i + rightIndex ] = tmpOpt1; i--; } } sourceArray.options[ indx ].selected = false; targetArray.options[ rightIndex ] = tmpOpt; // targetArray.options[rigthIndex].selected=true; rightIndex = rightIndex + 1; sourceArray.options[ indx ] = null; } // end of while this.writeToSelectBoxValues( this.source, this.leftValues ); this.writeToSelectBoxValues( this.secondary, this.rightValues ); return false; }, cloneMultipleRows : function( opt ) { return new Option( opt.text, opt.value, opt.defaultSelected, opt.selected ); } }; widget.StepGroup = {}; widget.StepGroup.toggleStepGroup = function( e, activeTabStr ) { var event = e || window.event; var target = Event.findElement( event, 'li' ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); $( 'activeTabSpanId_' + tab.id ).innerHTML = activeTabStr; } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); $( 'activeTabSpanId_' + tab.id ).innerHTML = ""; } } ); Event.stop( event ); }; /** * Show a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.showStepGroup = function( number ) { var target = $( 'stepGroupTab_' + number ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; /** * Get the content block element to a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.getStepGroupContentBlock = function( number ) { var targetTab = $( 'stepGroupTab_' + number ); return $( targetTab.getAttribute( "bb:groupId" ) ); }; widget.StepGroup.showAllStepGroupsForSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } ); }; widget.StepGroup.revertAllStepGroupsAfterSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { if ( page.util.hasClassName( tab, 'active' ) ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } else { $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; widget.ShowUnsavedChanges = Class.create(); widget.ShowUnsavedChanges.prototype = { initialize : function( dataCollectionContainer, skipTextArea ) { widget.ShowUnsavedChanges.enabled = true; widget.ShowUnsavedChanges.registerOnValueChangeCallback( widget.ShowUnsavedChanges.showIconsForUnsavedChanges ); var container = $( dataCollectionContainer ); var inputs = $A( container.getElementsByTagName( 'input' ) ); var selects = $A( container.getElementsByTagName( 'select' ) ); var textareas = $A( container.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { input = $( input ); var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { input._defaultValue = input.checked; } else if ( type == 'hidden' || type == 'text' ) { input._defaultValue = input.value; } else { input._defaultValue = ''; } if ( type != 'hidden' && type != 'button' && type != 'submit' ) { input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); } }.bind( this ) ); selects.each( function( input ) // TODO: multiselect? { input = $( input ); input._defaultValue = input.selectedIndex; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); if ( !skipTextArea || !skipTextArea ) { textareas.each( function( input ) { input = $( input ); input._defaultValue = input.value; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); } } }; widget.ShowUnsavedChanges.onValueChangeCallback = function() { }; // do nothing widget.ShowUnsavedChanges.registerOnValueChangeCallback = function( callbackFunction ) { widget.ShowUnsavedChanges.onValueChangeCallback = callbackFunction; }; widget.ShowUnsavedChanges.dataElementsByStepGroup = {}; widget.ShowUnsavedChanges.onValueChange = function( event, elem ) { if ( widget.ShowUnsavedChanges.enabled ) { var dataElement = null; if ( event ) { dataElement = Event.findElement( event, 'li' ); } else { dataElement = elem.parentNode; while ( dataElement && dataElement.tagName.toLowerCase() != 'li' ) { dataElement = dataElement.parentNode; if ( dataElement.tagName.toLowerCase() == 'body' ) { dataElement = null; } } if ( dataElement ) { dataElement = $( dataElement ); } } if ( !dataElement ) { return; } var isDefault = true; var inputs = $A( dataElement.getElementsByTagName( 'input' ) ); var selects = $A( dataElement.getElementsByTagName( 'select' ) ); var textareas = $A( dataElement.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { isDefault &= ( input.checked == input._defaultValue ); } else if ( type == 'hidden' || type == 'text' ) { isDefault &= ( input.value == input._defaultValue ); } } ); selects.each( function( input ) // TODO: multiselect? { isDefault &= ( input.selectedIndex == input._defaultValue ); } ); textareas.each( function( input ) { isDefault &= ( input.value == input._defaultValue ); } ); // trigger call back function widget.ShowUnsavedChanges.onValueChangeCallback( isDefault, dataElement ); } }; widget.ShowUnsavedChanges.showIconsForUnsavedChanges = function( isDefault, dataElement ) { var imgs = dataElement.getElementsByTagName( 'img' ); var unsavedImg = null; for ( var i = 0; i < imgs.length; i++ ) { if ( imgs[ i ].className.indexOf( 'unsavedChangeImg' ) >= 0 ) { unsavedImg = $( imgs[ i ] ); break; } } if ( unsavedImg ) { if ( isDefault ) { dataElement.removeClassName( 'dirty' ); unsavedImg.hide(); } else { dataElement.addClassName( 'dirty' ); unsavedImg.show(); } widget.ShowUnsavedChanges.updateStepGroupIndicator(); } }; widget.ShowUnsavedChanges.updateStepGroupIndicator = function() { if ( widget.ShowUnsavedChanges.enabled ) { // Loop through each step group tab, and determine if an icon that indicates // unsaved changes should be displayed in the tab itself $$( '#dataCollectionContainer ul li.stepGroupTab' ).each( function( tab ) { var stepGroup = $( tab.getAttribute( "bb:groupId" ) ); var img = $( tab.getElementsByTagName( 'img' )[ 0 ] ); var link = $( tab.getElementsByTagName( 'a' )[ 0 ] ); var dataElements = widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ]; if ( !dataElements ) { dataElements = stepGroup.getElementsByTagName( 'li' ); widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ] = dataElements; } var dirtyCount = 0; for ( var i = 0; i < dataElements.length; i++ ) { //If the data element is hidden, we do not want to include it in the count of dirty //data elements. Doing so could result in the dirty image on the step group displaying //with no child data elements that display as dirty. if ( dataElements[ i ].hasClassName( "dirty" ) && dataElements[ i ].getStyle( "display" ) !== "none" ) { dirtyCount++; } } if ( dirtyCount > 0 && !tab.isDirty ) { img.show(); link.setStyle( { 'paddingLeft' : '20px' } ); tab.isDirty = true; } else if ( dirtyCount === 0 && tab.isDirty ) { img.hide(); link.setStyle( { 'paddingLeft' : '' } ); tab.isDirty = false; } } ); } }; // Call this when the value of a hidden data element changes that you want to // show an indicator for. Otherwise changing the value of the hidden element directly will // not cause an indicator to show. widget.ShowUnsavedChanges.changeHiddenValue = function( hiddenElem, value ) { hiddenElem.value = value; if ( widget.ShowUnsavedChanges.enabled ) { widget.ShowUnsavedChanges.onValueChange( null, hiddenElem ); } }; widget.ShowUnsavedChanges.enabled = false; /** * Supports a counter widget attached to a textbox -- it keeps track of the number of characters in the text box, and * updates a counter whenever that number changes. The counter turns red, and begins counting backwards, when the max * number of charters is exceeded. */ widget.TextBoxCounter = Class.create(); widget.TextBoxCounter.prototype = { /** * Contructor * * @param textBoxId The id of the textbox we're counting from * @param counterId The id of the element that countains the count * @param maxCharCount The max number of characters supported by this textbox * @param charactersRemainingLabel The label for the character count element * @param charactersOverLimitLabel The alternate label for the character element, for when the max # of characters * has been exceeded. */ initialize : function( textBoxId, counterId, maxCharCount, charactersRemainingLabel, charactersOverLimitLabel ) { this.textBoxElement = $( textBoxId ); this.counterElement = $( counterId ); this.maxCharCount = maxCharCount; this.countLabelElement = this.counterElement.up().childNodes[ 0 ]; this.charactersRemainingLabel = charactersRemainingLabel; this.charactersOverLimitLabel = charactersOverLimitLabel; // watch all keystrokes in the text area, and update the counter accordingly this.textBoxElement.observe( 'keyup', this.updateCount.bindAsEventListener( this ) ); // update the initial count this.updateCount(); this.registerCounter( textBoxId ); }, /** * Registers the current counter with the document, so that it can be accessed from anywhere on the page. * * @param id The id with which this counter can be accessed */ registerCounter : function( id ) { if ( !widget.TextBoxCounter.counters ) { widget.TextBoxCounter.counters = []; } widget.TextBoxCounter.counters[ id ] = this; }, /** * Update the counter. * * @param event The event that prompted this update, if any. */ updateCount : function( event ) { var chars = this.textBoxElement.value.length; // max character count exceeded if ( chars > this.maxCharCount ) { this.counterElement.update( chars - this.maxCharCount ).addClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersOverLimitLabel; } // max character count not exceeded else if ( chars <= this.maxCharCount ) { this.counterElement.update( this.maxCharCount - chars ).removeClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersRemainingLabel; } } }; widget.ColorPalettePicker = Class.create(); widget.ColorPalettePicker.prototype = { initialize : function( onChange, themeChangeElementId ) { widget.ColorPalettePicker.picker = this; this.onChange = onChange; var palettes = []; $A( $( 'paletteLibraryPanel' ).getElementsByTagName( 'li' ) ).each( function( li ) { if ( page.util.hasClassName( li, 'palette' ) ) { palettes.push( $( li ) ); } } ); this.palettes = palettes; this.libraryOpen = false; this.paletteLibraryPanel = $( 'paletteLibraryPanel' ); this.paletteLibraryButton = $( 'paletteLibraryButton' ); var updateHandler = this.updateCurrentSelection.bindAsEventListener( this ); // this.paletteLibraryPanel.toggleLibrary(); if ( this.palettes ) { this.palettes.each( function( palette ) { Event.observe( palette, "click", updateHandler ); } ); } if ( this.paletteLibraryButton ) { Event.observe( 'paletteLibraryButtonLink', "click", this.toggleLibrary.bindAsEventListener( this ) ); } if ( themeChangeElementId !== "" ) { Event.observe( themeChangeElementId, "change", this.changePaletteThemeTypeStyles.bindAsEventListener( this ) ); } }, changePaletteThemeTypeStyles : function( event ) { var dropdown = event.currentTarget; var themeExtRef = $F( dropdown ); var extRefToThemeTypeJson = $F( "themeExtRefToThemeTypeJson" ); var extRefToThemeTypeMap = this.convertJsonToObject( decodeURIComponent( extRefToThemeTypeJson ) ); var themeType = extRefToThemeTypeMap[themeExtRef]; var mapKey = null; this.palettes.each( function( palette ) { if( palette.id === "currentsystemthemecolorpalette" ) { mapKey = "theme_type_" + themeExtRef; } else { if( themeType !== null ) { mapKey = "theme_type_" + themeType; } else { mapKey = "theme_type_"; } } var styleJson = $F( palette.down('input[type=hidden]') ); var styleMap = this.convertJsonToObject( decodeURIComponent( styleJson ) ); var schemePreviewStyle = styleMap[mapKey]['schemePreview']; var schemePreviewHeadStyle = styleMap[mapKey]['schemePreviewHead']; var schemePreviewBodyStyle = styleMap[mapKey]['schemePreviewBody']; var modulePreviewStyle = styleMap[mapKey]['moduleBorder']; var modulePreviewHeadStyle = styleMap[mapKey]['moduleTitle']; var modulePreviewBodyStyle = styleMap[mapKey]['moduleBody']; palette.down('.schemePreview').writeAttribute("style", schemePreviewStyle); palette.down('.schemePreviewHead').writeAttribute("style", schemePreviewHeadStyle); palette.down('.schemePreviewBody').writeAttribute("style", schemePreviewBodyStyle); palette.down('.modulePreview').writeAttribute("style", modulePreviewStyle); palette.down('.modulePreviewHead').writeAttribute("style", modulePreviewHeadStyle); palette.down('.modulePreviewBody').writeAttribute("style", modulePreviewBodyStyle); }, this ); }, convertJsonToObject : function( json ) { if ( typeof ( JSON ) === 'object' && typeof ( JSON.parse ) === 'function' ) { return JSON.parse( json ); } else { return eval( '(' + json + ')' ); } }, toggleLibrary : function( event ) { var img = this.paletteLibraryButton.getElementsByTagName( 'img' )[ 0 ]; if ( this.libraryOpen ) { // Collapse the library. img.src = "/images/db/p.gif"; img.alt = page.bundle.getString( "dynamictree.expand" ); this.paletteLibraryPanel.hide(); this.libraryOpen = false; } else { // Expand the library. img.src = "/images/db/m.gif"; img.alt = page.bundle.getString( "dynamictree.collapse" ); this.paletteLibraryPanel.show(); this.libraryOpen = true; } // stop the event if exists; there will not be an event if called on page onLoad if ( event ) { Event.stop( event ); } }, selectColorPaletteByExtRef : function( extRef ) { var eventElement = $( extRef ); this.selectColorPaletteByElement( eventElement ); }, selectColorPaletteByElement : function( eventElement ) { this.palettes.each( function( p ) { if ( p.hasClassName( "selected" ) ) { p.removeClassName( 'selected' ); } } ); var selPal = eventElement; while ( selPal && selPal.tagName != 'LI' ) { selPal = selPal.parentNode; if ( selPal.tagName == 'BODY' ) { selPal = null; } } selPal.addClassName( 'selected' ); widget.ShowUnsavedChanges.changeHiddenValue( $( 'currentPaletteExtRef' ), selPal.id == 'currentsystemthemecolorpalette' ? '' : selPal.id ); eval( this.onChange ); $( 'currentPaletteLabel' ).update( $( selPal.id + '_label' ).innerHTML ); this.copyStyles( selPal.down( '.schemePreview' ), $( 'currentPalettePreview' ) ); this.copyStyles( selPal.down( '.schemePreviewHead' ), $( 'currentPalettePreviewHead' ) ); this.copyStyles( selPal.down( '.schemePreviewBody' ), $( 'currentPalettePreviewBody' ) ); this.copyStyles( selPal.down( '.modulePreview' ), $( 'currentModulePalettePreview' ) ); this.copyStyles( selPal.down( '.modulePreviewHead' ), $( 'currentModulePalettePreviewHead' ) ); this.copyStyles( selPal.down( '.modulePreviewBody' ), $( 'currentModulePalettePreviewBody' ) ); $( 'selectedPalette' ).show(); }, updateCurrentSelection : function( event ) { var eventElement = Event.element( event ); this.selectColorPaletteByElement( eventElement ); Event.stop( event ); }, copyStyles : function( s, d ) { d.style.cssText = s.style.cssText; } }; widget.ColorPalettePicker.picker = null; /** * node picker */ widget.MINodePicker = Class.create(); /** Constants used for the picker */ widget.MINodePicker.Constants = { EXISTING_NODE_SUFFIX : "", EXISTING_NODE_DELETE_SUFFIX : "", NEW_NODE_SUFFIX : "" }; widget.MINodePicker.prototype = { initConstants : function() { widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeSuffix" ); widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeDeleteSuffix" ); widget.MINodePicker.Constants.NEW_NODE_SUFFIX = page.bundle.getString( "nodePicker.const.newNodeSuffix" ); }, /** * Creates a new node picker * * @param baseElementName the base name for the node picker elements * @param pickerList the javascript object representing the picker list (of currently attached files) * @param allowMultipleSelect boolean indicating whether the picker should allow single or multiple select * @param entitlements comma delimited list of entitlement UIDs in which to check on node search * @param popupInstructions key value pair of bundle name and bundle key for instructions to be displayed in the pop * up * @param addPrimaryEntitlement Entitlement required to display primary radio button. * @param removeNodeEntitlement Entitlement required to display remove node link. */ initialize : function( baseElementName, pickerList, allowMultipleSelect, entitlements, popupInstructions, addPrimaryEntitlement, removeNodeEntitlement ) { this.initConstants(); this.baseElementName = baseElementName; this.allowMultipleSelect = allowMultipleSelect; this.entitlements = entitlements; this.nodePickerPopupButton = $( this.baseElementName + '_nodeBrowseButton' ); this.nodePickerUrl = "/webapps/blackboard/execute/institutionalHierarchy/nodePicker?cmd=openPicker&allowMultipleSelect=" + this.allowMultipleSelect + "&instructionKey=" + popupInstructions + "&entitlements=" + this.entitlements + "&addPrimaryEntitlement=" + addPrimaryEntitlement + "&removeNodeEntitlement=" + removeNodeEntitlement; Event.observe( this.nodePickerPopupButton, "click", this.onNodeBrowse.bindAsEventListener( this ) ); this.pickerList = pickerList; this.selectedNodesListContainer = $( this.baseElementName + '_listHtml' ); // make sure that all removedNodes are hidden var removedNodes = this.selectedNodesListContainer .getElementsBySelector( 'input[name=' + this.baseElementName + widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX + ']' ); removedNodes.each( function( node ) { node.up( 'tr' ).hide(); } ); var showList; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { showList = this.selectedNodesListContainer && this.pickerList && this.pickerList.tableBody && !this.pickerList.tableBody .empty(); } // For single node picker, the attached node is contained within a span element else { showList = this.selectedNodesListContainer && this.selectedNodesListContainer.select( "input.selectedNodeData" ) && this.pickerList; } if ( this.pickerList && this.pickerList.tableBody ) { // If no visible row then hide the table label and headers. if ( !this.pickerList.tableBody.select( "tr" ).any( function( row ) { return row.visible(); } ) ) { showList = false; } } this.showHideSelectedNodesList( showList ); widget.MINodePicker.registerNodePicker( this ); }, /** * Pop up the node search window from which to pick nodes */ onNodeBrowse : function( event ) { this.nodePickerWindow = null; var windowId = new Date().getTime(); if ( $( 'primaryNodeIdStr' ) ) { this.nodePickerUrl += '&primaryNodeIdStr=' + $F( 'primaryNodeIdStr' ); } if ( $( 'objectType' ) ) { this.nodePickerUrl += '&objectType=' + $F( 'objectType' ); } this.nodePickerWindow = popup.launchPicker( this.nodePickerUrl, windowId ); if ( this.nodePickerWindow ) { this.nodePickerWindow.opener.customHandler = this.onNodePick.bind( this ); } Event.stop( event ); }, /** * Callback called after node(s) have been selected from the node picker pop up. This method updates the UI list of * currently select nodes. * * @param selectedNodesObjArr The array of currently selected nodes from the picker */ onNodePick : function( selectedNodesObjArr ) { this.showHideSelectedNodesList( true ); var existingNodes; if ( this.allowMultipleSelect ) { // Array of existing selected nodes in the node picker list existingNodes = this.selectedNodesListContainer.down( "tbody" ).select( "input.selectedNodeData" ); } else { // Existing selected node in the node picker list for single node picker existingNodes = this.selectedNodesListContainer.select( "input.selectedNodeData" ); } // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. if ( selectedNodesObjArr && selectedNodesObjArr.length !== 0 ) { // Switch the radio button selection to Create hierarchy under the specified entity (for single node pickers) if ( $( "selectedRoot" ) ) { $( "selectedRoot" ).checked = true; } } /* * For each selected node, add the node to the list if it is a newly selected node, otherwise unhide the node if * it is an existing selection that has been marked for delete. Specifically: - If node is an existing selected * node and marked for delete and hidden, then unmark and show - If node is an existing selected node and not * marked for delete and showing, then do nothing - If node is a newly selected node and is not already there, add * the row - If node is a newly selected node and is already there, then do nothing */ selectedNodesObjArr.each( function( node ) { // See if the picked node is already in the list of nodes var existingNode; existingNodes.each( function( inputEle ) { if ( node.nodeIdStr === inputEle.value ) { existingNode = inputEle; if ( existingNode.disabled && existingNode.checked ) { // If its a disabled primary node then restore the value of it in hidden param. $( this.baseElementName + '_disabledPrimaryNode' ).value = node.nodeIdStr; } throw $break; } } ); // If not, then add this newly picked node to list if ( !existingNode ) { var primaryRadioChecked; var existingPrimaryNodeRadios = this.selectedNodesListContainer .select( 'input[name=' + this.baseElementName + '_PrimaryNode]' ); if ( existingPrimaryNodeRadios.all( function( radio ) { return !radio.checked; } ) ) { primaryRadioChecked = true; } // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { // This calls the cell generator methods for each column in the "currently selected nodes" list this.pickerList.addRow( this.baseElementName, node, this.nodePickerWindow, primaryRadioChecked ); } // For single node picker, the attached node is contained within a span element else { this.selectedNodesListContainer.innerHTML = ""; this.pickerList.cellGenerators.each( function( generator, index ) { var args = []; args.push( this.baseElementName, node, this.nodePickerWindow ); this.selectedNodesListContainer.innerHTML += generator.apply( window, args ); }.bind( this ) ); } } else { /* * If picked node is already in the list AND is an existing selected node that is marked for delete and * hidden, then unmark node and show in list. */ if ( existingNode.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ) ) { existingNode.name = existingNode.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ); if ( this.allowMultipleSelect ) { existingNode.up( "tr" ).show(); } } } }.bind( this ) ); }, /** * Shows or hides the selected nodes list * * @param show boolean to indicate show or hide */ showHideSelectedNodesList : function( show ) { if ( this.selectedNodesListContainer ) { return show ? this.selectedNodesListContainer.show() : this.selectedNodesListContainer.hide(); } } }; /** * Removes the specified node selection from the list. Should be called from an onclick handler on a link in the * currently selected nodes table. */ widget.MINodePicker.removeSelectedNode = function( event, removeLink, baseElementName ) { var e = event || window.event; // Have user confirm removal of selected node if ( confirm( page.bundle.getString( "nodePicker.nodeRemoveConfirmMsg" ) ) ) { var visibleRows = []; var picker = widget.MINodePicker.getNodePicker( baseElementName ); var hiddenNodeDataEle; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( picker.allowMultipleSelect ) { // Get references to DOM elements in the list removeLink = $( removeLink ); var rowToHideRemove = removeLink.up( "tr" ); var tbodyEle = rowToHideRemove.up( "tbody" ); hiddenNodeDataEle = rowToHideRemove.down( "input.selectedNodeData" ); var primaryNodeRadioSelector = 'input[name=' + baseElementName + '_PrimaryNode]'; var primaryNodeRadioInCurrentRow = rowToHideRemove.down( primaryNodeRadioSelector ); if ( primaryNodeRadioInCurrentRow ) { // Check if removed node is selected as a primary node if ( primaryNodeRadioInCurrentRow.checked ) { if ( primaryNodeRadioInCurrentRow.disabled ) { // A disabled primary node is removed from UI then nullify the value of hidden param storing its value. $( baseElementName + '_disabledPrimaryNode' ).value = ''; } else { // Get the next node which is not checked as primary and is enabled. var nextNode = picker.selectedNodesListContainer.select( primaryNodeRadioSelector ).find( function( radio ) { return ( !radio.checked && !radio.disabled && radio.up( 'tr' ).visible() ); } ); if ( nextNode ) { nextNode.checked = true; } else { // In case there's no next node with primary node radio button, then uncheck current primary manually primaryNodeRadioInCurrentRow.checked = false; } } } } // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); // hide rowToHideRemove.hide(); } // If is a newly selected node else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { // remove the row from the DOM Element.remove( rowToHideRemove ); } tbodyEle.select( "tr" ).each( function( row ) { if ( row.visible() ) { visibleRows.push( row ); } } ); } // For single node picker, the attached node is contained within a span element else { hiddenNodeDataEle = picker.selectedNodesListContainer.down( "input.selectedNodeData" ); // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); } // If is a newly selected node, clear the span content else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { picker.selectedNodesListContainer.innerHTML = ""; } } // If there are no more selected nodes, hide some UI elements if ( visibleRows.length === 0 ) { // Hide the whole selected nodes table picker.showHideSelectedNodesList( false ); // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. // Switch the radio button selection to Create hierarchy under the top level (for single node pickers) if ( $( "topLevelRoot" ) ) { $( "topLevelRoot" ).checked = true; } } } Event.stop( e ); }; /** * A registry of defined node pickers and methods to access this registry */ widget.MINodePicker.nodePickers = {}; widget.MINodePicker.registerNodePicker = function( nodePicker ) { widget.MINodePicker.nodePickers[ nodePicker.baseElementName ] = nodePicker; }; widget.MINodePicker.unRegisterNodePicker = function( nodePicker ) { delete widget.MINodePicker.nodePickers[ nodePicker.baseElementName ]; }; widget.MINodePicker.getNodePicker = function( baseElementName ) { return widget.MINodePicker.nodePickers[ baseElementName ]; }; /** * Cell generators for the currently selected nodes table. Mostly copies what is in multiInstNodePickerListElement.vm. */ widget.MINodePicker.cellGenerators = { /** * Dynamic rendering of a cell in the node "Name" column */ nodeName : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { var result = '<input type="hidden" name="' + pickerNameStr + widget.MINodePicker.Constants.NEW_NODE_SUFFIX + '" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData">'; result += '<img src="/images/ci/ng/entity_small.png" alt="">'; result += selectedNodeObj.nodeName; return result; }, /** * Dynamic rendering of a cell in the node "Primary Node" column */ nodePrimary : function( pickerNameStr, selectedNodeObj, nodePickerWindow, primaryRadioChecked ) { var result = '<input type="radio" id="' + selectedNodeObj.nodeIdStr + '_Primary' + '" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData"'; if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' ) { result += ' disabled'; } if ( primaryRadioChecked ) { result += ' checked'; } result += ' >'; // Since values of disabled radio element doesn't go through the request, adding hidden param here to store its // value. if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' && primaryRadioChecked ) { result += '<input type="hidden" id="' + pickerNameStr + '_disabledPrimaryNode" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" />'; } return result; }, /** * Dynamic rendering of a cell in the remove node column */ nodeRemove : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_canRemoveObject' ).value == 'true' ) { var result = '<img src="/images/ci/icons/x_ia.gif" alt="">'; result += '<a href="#" onclick="widget.MINodePicker.removeSelectedNode(event, this, '; result += "'" + pickerNameStr + "');"; result += '">' + page.bundle.getString( "nodePicker.nodeRemoveLabel" ); result += '</a>'; return result; } else { return ''; } } };

Take Test MC Exercises Sentences Identifying Comma Splices.mht

Current Location

Take Test: MC Exercises: Sentences: Identifying Comma Splices

Content

Assistive Technology Tips [opens in new window]

Instructions

Description
Instructions

Read the following instructions carefully!

Select the answer that contains neither a comma splice nor a fused sentence.

Multiple Attempts This Test allows multiple attempts.
Force Completion This Test can be saved and resumed later.

Collapse Question Completion Status:

1Question Incomplete 2Question Incomplete 3Question Incomplete 4Question Incomplete 5Question Incomplete 6Question Incomplete 7Question Incomplete 8Question Incomplete 9Question Incomplete 10Question Incomplete

Question 1

  1.   Select the answer that contains neither a comma splice nor a fused sentence. Answer
    Winslow Homer (1836-1910) excelled in painting dramatic seascapes, one example is On a Lee Shore.
    Lonely streets, buildings, and interiors dominate the canvasses of Edward Hopper (1882-1967) his work has influenced a twenty-first-century photographer of street scenes.
    Robert Indiana (born 1928) produces pop paintings and sculptures, such as his Love series, that sometimes call to mind large signs.

10 points  

Question 2

  1.   Select the answer that contains neither a comma splice nor a fused sentence. Answer
    John Singleton Copley (1738-1815) was a master portraitist and painter of historical scenes, his works are considered aristocratically elegant.
    Known for glass-covered boxes filled with enigmatically arranged found objects and collages, Joseph Cornell (1903-1972) was a product of surrealism, which relied on irrational juxtaposition.
    Stuart Davis (1894-1964) borrowed cubism from European artists and made it American his paintings present bright colors.

10 points  

Question 3

  1.   Select the answer that contains neither a comma splice nor a fused sentence. Answer
    Art historians refer to Rembrandt Harmenszoon van Rijn (1606-1669) as a master of the Dutch school; he turned out approximately six hundred works.
    Vincent Van Gogh (1853-1890) is known as one of the nineteenth century’s most influential artists, much of his work was produced in a twenty-nine-month period leading up to his suicide.
    Paul Gaugin (1848-1903) was a leading postimpressionist painter at the age of thirty-five, he abandoned his family to focus on his painting career.

10 points  

Question 4

  1.   Select the answer that contains neither a comma splice nor a fused sentence. Answer
    The sculptor Alexander Calder (1898-1976) gained fame for his mobiles and wire sculptures of circuses he went on to produce large sculptures for public areas.
    The painter Mary Cassatt (1845-1926) was born in Pennsylvania but spent many years in Paris, where the Impressionists thrived, she chose women and children as her special subject.
    Feminist artist Judy Chicago (born 1939) creates multimedia projects. Her best-known work is The Dinner Party, which explores women’s history.

10 points  

Question 5

  1.   Select the answer that contains neither a comma splice nor a fused sentence. Answer
    A pop artist, Jasper Johns (born 1930) has used flags, beer cans, and targets in his sculpture and paintings; he finds meaning in everyday objects.
    Franz Kline (1910-1962) produced monumental black-and-white works these are examples of abstract expressionism.
    Roy Lichtenstein (1923-1997) was the pop artist recognized for his paintings based on comic strips, later he created pop versions of well-known nineteenth- and twentieth-century artworks.

10 points  

Question 6

  1.   Select the answer that contains neither a comma splice nor a fused sentence. Answer
    The most famous of Flemish artists and a leading baroque figure, Peter Paul Rubens created material that demonstrated his energy and enthusiasm for his work. He turned out such masterpieces as The Raising of the Cross (1610-1611) and The Judgment of Paris (1638-1639).
    James Abbott McNeil Whistler (1834-1903) created paintings that exhibit a compelling sense of design and color, his series Nocturnes was a forerunner of what came to be known as abstract art.
    Known as the leading portraitist of America’s Federal period, Gilbert Stuart (1775-1828) produced more than a thousand portraits of four presidents, diplomats, and notables he was best known for his portraits of George Washington.

10 points  

Question 7

  1.   Select the answer that contains neither a comma splice nor a fused sentence. Answer
    Georgia O’Keeffe (1887-1986) painted scenes reflecting the landscape in the southwestern part of the United States, she made her home in New Mexico.
    Renowned for his abstract works, Isamu Noguchi (1904-1988) produced materials for architectural spaces one of his most famous works is the sculpture garden of the UNESCO building in Paris.
    The paintings of Barnett Newman (1905-1971) range from abstract expressionism to the color-field movement. He developed a unique geometric style that became his trademark.

10 points  

Question 8

  1.   Select the answer that contains neither a comma splice nor a fused sentence. Answer
    A major exponent of abstract expressionism and action painting, Willem de Kooning (1904-1997) arrived in the United States as a stowaway and first supported himself here as a house painter, toward the end of his life he worked on sculptures.
    One of the best-known paintings by Thomas Eakins (1844-1916), The Gross Clinic, captures a surgical operation, a subject considered inappropriate at the time. Eakins lost an academic position because he used nude models in mixed classes.
    Jenny Holzer (born 1950) produces multimedia works electronic message boards are one of the media she uses.

10 points  

Question 9

  1.   Select the answer that contains neither a comma splice nor a fused sentence. Answer
    Henri Rousseau was a self-taught practitioner, and he produced colorful portraits, frequently of jungle scenes.
    Michelangelo Buonarroti (1475-1564) was a poet, architect, and sculptor in addition to achieving fame as a painter, he is probably best known for his frescoes on the Sistine Chapel’s ceiling.
    Michelangelo Merisi da Caravaggio (c. 1573-1610) produced bold paintings marked by light and shadow breaking with past artistic practice, he showed the saints as everyday people.

10 points  

Question 10

  1.   Select the answer that contains neither a comma splice nor a fused sentence. Answer
    The creations of Diego Rivera (1886-1957) celebrate Mexico’s history and workers, he is a founder of the Mexican mural renaissance.
    Leonardo da Vinci (1452-1519) possessed many talents; two of his most famous paintings are The Last Supper (1495-1498) and the Mona Lisa (1503-1506).
    Pablo Picasso (1881-1973) produced many important paintings including The Three Musicians (1921) and Guernica (1937) beyond his life as a painter, he was a sculptor, graphic artist, and ceramicist.

10 points  

 Save and Submit

Click Save and Submit to save and submit. Click Save All Answers to save all answers. Click Close Window to close window.

Links to Test Questions and Answers
Read question 1 Read answers for question 1 Read question 2 Read answers for question 2 Read question 3 Read answers for question 3 Read question 4 Read answers for question 4 Read question 5 Read answers for question 5 Read question 6 Read answers for question 6 Read question 7 Read answers for question 7 Read question 8 Read answers for question 8 Read question 9 Read answers for question 9 Read question 10 Read answers for question 10

@font-face { font-family: Utilicons; src:url(fonts/utilicons/utilicons-web-webfont.eot); } HTML { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } APPLET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OBJECT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IFRAME { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H1 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H2 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H5 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H6 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } P { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ABBR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ACRONYM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ADDRESS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BIG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CITE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CODE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DFN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } EM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } INS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } KBD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } Q { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } S { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SAMP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SMALL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRIKE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRONG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUB { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } VAR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FIELDSET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FORM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LABEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LEGEND { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CAPTION { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TBODY { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TFOOT { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } THEAD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TR { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TH { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } FONT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BACKGROUND: #fff } OL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } UL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } TABLE { BORDER-COLLAPSE: collapse } TH { FONT-WEIGHT: normal } CAPTION { TEXT-ALIGN: left } TH { TEXT-ALIGN: left } TD { TEXT-ALIGN: left } BLOCKQUOTE:before { CONTENT: "" } BLOCKQUOTE:after { CONTENT: "" } Q:before { CONTENT: "" } Q:after { CONTENT: "" } BLOCKQUOTE { QUOTES: "" "" } Q { QUOTES: "" "" } INPUT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } BUTTON { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } SELECT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } .field SELECT { MAX-WIDTH: 100% } .noLabelField SELECT { MAX-WIDTH: 100% } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px !important } .vtbegenerated IMG { FILTER: alpha(opacity=auto) !important; opacity: auto } .vtbegenerated UL { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated OL { LIST-STYLE-TYPE: decimal; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated LI { LIST-STYLE-POSITION: outside; DISPLAY: list-item } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL[type=circle] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type=disc] LI { LIST-STYLE-TYPE: disc } .vtbegenerated UL[type=square] LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 24px } .inlineVtbegenerated { DISPLAY: inline } .hideme { DISPLAY: none !important } .hidden { DISPLAY: none } .clearfloats { CLEAR: both } .hideoff { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; TOP: -1000px; LEFT: -10000px } .altHideoff1 { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; LEFT: -10000px } .boldme { FONT-WEIGHT: bold } .u_inlineStack { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > LI { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > DIV { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStack SELECT { MAX-WIDTH: 300px } .u_resetFont { FONT-SIZE: 100% } .u_reverseAlign { TEXT-ALIGN: right } .u_centerAlign { TEXT-ALIGN: center } .u_normalAlign { TEXT-ALIGN: left } .u_floatThis-right { FLOAT: right } .u_floatThis-left { FLOAT: left } .u_floatWrapper-right > DIV { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-right > LI { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-left > DIV { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LI { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LABEL { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_floatWrapper-right:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_controlsWrapper:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_clearFloatsWrapper > DIV { FLOAT: none !important } .u_clearFloatsWrapper > LI { FLOAT: none !important } .u_controlsWrapper { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .u_indent { MARGIN-LEFT: 24px !important } .u_scrollPanel-vertical { OVERFLOW-Y: auto } .u_panel-short { HEIGHT: 70px; MAX-HEIGHT: 100px } .u_panel-medium { HEIGHT: 70px; MAX-HEIGHT: 150px } .u_panel-long { HEIGHT: 70px; MAX-HEIGHT: 200px } HTML { HEIGHT: 100% } BODY { MIN-WIDTH: 1000px; HEIGHT: 100% } BODY.topFrame { OVERFLOW-Y: hidden; HEIGHT: 89px } BODY.filePicker { MIN-WIDTH: 400px } BODY.popup { MIN-WIDTH: 100% } .content-system-page { MIN-WIDTH: 780px } BODY.popup DIV.locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.csMenuFrame { MIN-WIDTH: 210px; WIDTH: 100% } BODY.popupMenu { MIN-WIDTH: 210px; WIDTH: 100% } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } H1 { FONT-WEIGHT: bold } H2 { FONT-WEIGHT: bold } H3 { FONT-WEIGHT: bold } H4 { FONT-WEIGHT: bold } H5 { FONT-WEIGHT: bold } H6 { FONT-WEIGHT: bold } STRONG { FONT-WEIGHT: bold } B { FONT-WEIGHT: bold } EM { FONT-STYLE: italic } TABLE.bouncer { WIDTH: 100% } TABLE.bouncer TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .brandingImgWrap { OVERFLOW: hidden } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { POSITION: relative; OVERFLOW-Y: hidden } .topTabs-compact { POSITION: relative } .topTabs .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs-compact .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs .tabWrapper-right .appTabs { FLOAT: right } .topTabs-compact .tabWrapper-right .appTabs { FLOAT: right } .breadcrumbs { POSITION: relative } .locationPane { POSITION: relative; MIN-WIDTH: 100%; ZOOM: 1; DISPLAY: inline-block; OVERFLOW: visible } .navigationPane { POSITION: absolute; WIDTH: 200px; ZOOM: 1; CLEAR: both; OVERFLOW: visible; TOP: 0px; LEFT: 0px } .menuWrap { POSITION: relative; ZOOM: 1 } .contentPane { MIN-WIDTH: auto; MARGIN: 0px 14px 0px 212px; ZOOM: 1; DISPLAY: block; OVERFLOW: visible } #puller { Z-INDEX: 3; POSITION: absolute } #puller A { WIDTH: 15px; DISPLAY: block; BACKGROUND: #ccc; HEIGHT: 30px } .contcollapsed { MARGIN-LEFT: 15px } .content { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .container { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .containerPortal { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .popup .container { MIN-HEIGHT: 400px } .container { OVERFLOW: visible } .containerOptions { OVERFLOW: visible } .column-1 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-2 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-3 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-4 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } column-5 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-1 { WIDTH: 100% } .column-2 { WIDTH: 50% } .column-3 { WIDTH: 33.3% } .column-4 { WIDTH: 25% } .column-5 { WIDTH: 20% } #lightbox .column-3 { MARGIN: 0px; MIN-HEIGHT: 200px !important } #lightbox .column-2 { MARGIN: 0px; MIN-HEIGHT: 200px !important } INPUT[type='submit'].submit { FONT-WEIGHT: bold } .mainButton A { FONT-WEIGHT: bold } .actionBarMicro .mainButton A { FONT-WEIGHT: bold } .rumble .mainButton > A { FONT-WEIGHT: bold } .rumble_top .mainButton > A { FONT-WEIGHT: bold } .button-1 { FONT-WEIGHT: bold } .button-1-img { FONT-WEIGHT: bold } .modeSwitchWrap { TOP: 6px; RIGHT: 0px; LEFT: auto } .modeSwitchWrap DIV { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .modeSwitch { POSITION: relative; DISPLAY: block; OVERFLOW: hidden } .read-on { MARGIN-RIGHT: 0px } A.read-off IMG { POSITION: absolute; BOTTOM: 0px; LEFT: 0px } A.read-on IMG { POSITION: absolute; BOTTOM: 0px; RIGHT: 0px } .switcherLabel { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .helpLink { POSITION: relative; TOP: 1px } .helpLink A.browseIcon { DISPLAY: inline-block } .vtbeSwitch { POSITION: relative; FLOAT: right } .vtbeSwitch SPAN { DISPLAY: inline-block } .fileInputWrapper { POSITION: relative; FLOAT: left; OVERFLOW: hidden } .fileInputWrapper INPUT.hiddenInput { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: right; FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 210%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px; opacity: 0 } .fileInputWrapper INPUT[type='file'] { FILTER: alpha(opacity=0) !important } .fileInputWrapper INPUT.visibleInput { Z-INDEX: 1; POSITION: relative; TOP: 0px; RIGHT: 0px } .frameResizeToggle { POSITION: absolute; BOTTOM: 0px; DISPLAY: block; OVERFLOW: hidden; LEFT: 0px; _top: 68px } A.colorChip { DISPLAY: inline-block } A.colorChip SPAN { DISPLAY: inline-block } .clearfix:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfixParent > *:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfix { DISPLAY: block } .clearfixParent > * { DISPLAY: block } INPUT[type='button'] { } INPUT[type='submit'] { } BUTTON { } FORM#content { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } .reorder { POSITION: absolute; CURSOR: move } .contextMenuContainer { ZOOM: 1 } .gbtable .contextMenuContainer { DISPLAY: inline } .gbtable_header .contextMenuContainer { DISPLAY: inline } .gbtable_header TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } .gbtable THEAD TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } A.cmimg { ZOOM: 1 } HTML { FONT: 300 0.78em "Lucida Grande", Arial, sans-serif } H1 { FONT-SIZE: 148% } H2 { FONT-SIZE: 123.1% } H3 { FONT-SIZE: 110% } H1 { MARGIN: 1em 0px } H2 { MARGIN: 1em 0px } H3 { MARGIN: 1em 0px } A { COLOR: #128fa8; TEXT-DECORATION: none } A:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } TABLE { FONT-SIZE: 100% } THEAD TH { FONT-WEIGHT: bold } #contentFrame { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } #schemePreview { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY.topFrame { BACKGROUND: #f7f7f7 } BODY.login-page { POSITION: relative; MIN-HEIGHT: 800px } BODY.popup { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } BODY.csMenuFrame { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } BODY.popupMenu { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } .csMenuFrame { FONT-SIZE: 95% } BODY.my-places-popup { MIN-WIDTH: 300px; WIDTH: auto; BACKGROUND: #fff } BODY.external-breadcrumbs { BACKGROUND-IMAGE: none } BODY.picker { MIN-WIDTH: 400px; BACKGROUND: #fff } .breadcrumbs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 9px; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .locationPane { MARGIN-TOP: 12px } BODY.picker .locationPane { MARGIN: 0px; DISPLAY: block } .csPicker .locationPane { DISPLAY: block } .navigationPane { MARGIN: 0px; WIDTH: 210px; TOP: 0px; LEFT: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .menuWrap { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .contentPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px 0px 222px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portalPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .popup .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .picker .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .course-tools-page #listContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 0px } .picker .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } .popup .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } #puller { Z-INDEX: 3; POSITION: absolute; BOTTOM: 1px; TOP: -1px; RIGHT: -8px; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A { BORDER-BOTTOM: #777 1px solid; POSITION: relative; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 8px; BACKGROUND: url(images/reorder_bg.png) #bbb repeat-y; HEIGHT: 100%; OVERFLOW: visible; BORDER-TOP: #777 1px solid; BORDER-RIGHT: #777 1px solid; opacity: 0; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0; box-shadow: 1px 0 3px rgba(0, 0, 0, 0.4) inset } .menuWrap:hover #puller A { FILTER: alpha(opacity=100); opacity: 1; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A:after { BORDER-BOTTOM: #666 1px solid; POSITION: absolute; FILTER: alpha(opacity=0) !important; BORDER-LEFT: #666 0px solid; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1; BACKGROUND-COLOR: #777; PADDING-LEFT: 1px; PADDING-RIGHT: 6px; DISPLAY: none !important; COLOR: #fff; FONT-SIZE: 180%; BORDER-TOP: #666 1px solid; CONTENT: "\2190"; TOP: 200px; RIGHT: -30px; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 3px; opacity: 0; -webkit-transition: opacity .5s ease-in-out; -moz-transition: opacity .5s ease-in-out; border-radius: 0 12px 12px 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, .5); transition: opacity .5s ease-in-out } .pullcollapsed#puller A { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #00add0; opacity: 1 } #puller A:hover { BACKGROUND-COLOR: #777 } #puller A IMG { POSITION: relative; FILTER: alpha(opacity=0)\9; PADDING-BOTTOM: 3px; PADDING-LEFT: 1px; WIDTH: 12px; PADDING-RIGHT: 6px; BACKGROUND: url(images/menu_expand_rtl.gif) no-repeat 0px 0px; HEIGHT: 24px; TOP: 200px; RIGHT: -9px; PADDING-TOP: 3px } .pullcollapsed#puller A:hover { BACKGROUND-COLOR: #777; -webkit-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller A:after { CONTENT: "\2192"; opacity: 0 } .pullcollapsed#puller A:hover:after { opacity: 1 } #puller A:hover:after { opacity: 1 } .pullcollapsed#puller A:hover IMG { FILTER: alpha(opacity=100) } #puller A:hover IMG { FILTER: alpha(opacity=100) } .pullcollapsed#puller A:hover IMG { BACKGROUND: url(images/menu_collapse_rtl.gif) no-repeat 0px 0px } .navcollapsed { MARGIN-LEFT: -210px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller { RIGHT: -10px; opacity: 1; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navcollapsed .menuWrap { DISPLAY: block !important } .contcollapsed { MARGIN-LEFT: 12px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #topFrame { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .bgBanner { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .brandingImgWrap { HEIGHT: 46px } .brandingImgWrap A { MARGIN: 8px 12px 0px; DISPLAY: inline-block } .bannerImage { MAX-HEIGHT: 35px } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #555; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 89px; PADDING-TOP: 0px; -moz-box-shadow: 0 -6px 17px #333 inset; -webkit-box-shadow: 0 -6px 17px #333 inset } .topTabs-compact { HEIGHT: 47px } .tabWrapper-left { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-center { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-right { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .appTabs { POSITION: relative; WIDTH: auto } .topTabs-compact .tabWrapper-left { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-center { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-right { PADDING-TOP: 20px } #topTab { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A SPAN { BORDER-BOTTOM: transparent 1px dotted; PADDING-BOTTOM: 1px } .topTabs-compact .appTabs A SPAN { PADDING-BOTTOM: 0px } .appTabs A:hover { COLOR: #fff } .appTabs A:focus { COLOR: #fff } .appTabs A:hover SPAN { BORDER-BOTTOM: #fff 1px double } .appTabs A:focus SPAN { BORDER-BOTTOM: #fff 1px double } #topTabActive { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:hover { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:focus { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:hover SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:focus SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .topTabs-compact .appTabs .active .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs .active A:hover .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs A { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:hover { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:focus { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .round1 A { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .round2 A { -moz-border-radius: 12px 12px 0 0; -webkit-border-radius: 12px 12px 0 0; border-radius: 12px 12px 0 0 } .topGlobalLinks { TEXT-ALIGN: right; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); FLOAT: right; FONT-SIZE: 90%; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .topGlobalLinks UL { Z-INDEX: 1001 } .topGlobalLinks UL LI { MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; COLOR: #ccc } .loggedInAs { POSITION: relative; FONT: italic 100% Georgia; COLOR: #999; BORDER-TOP: 0px } .loggedInAs IMG { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 18px !important; PADDING-RIGHT: 1px; DISPLAY: inline-block; HEIGHT: 18px !important; TOP: -2px; RIGHT: -9px; PADDING-TOP: 1px; LEFT: auto } .loggedInAs SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: inline-block; PADDING-TOP: 6px } .topGlobalLinks A { BACKGROUND-IMAGE: none !important; MIN-WIDTH: 18px; TEXT-ALIGN: left; PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline-block; COLOR: #ccc; PADDING-TOP: 6px } .topGlobalLinks UL LI:first-child A { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks UL LI:first-child { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks A .link-icon { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); WIDTH: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; FLOAT: right; HEIGHT: 16px; OVERFLOW: hidden } .topGlobalLinks .myPlaces .link-icon { BACKGROUND-POSITION: -113px 0px } .topGlobalLinks .myPlaces:hover .link-icon { BACKGROUND-POSITION: -113px -16px } .topGlobalLinks .home .link-icon { BACKGROUND-POSITION: -129px 0px } .topGlobalLinks .home:hover .link-icon { BACKGROUND-POSITION: -129px -16px } .topGlobalLinks .logout .link-icon { DISPLAY: none } .topGlobalLinks .logout { PADDING-BOTTOM: 6px; TEXT-INDENT: 0px; PADDING-LEFT: 9px; WIDTH: auto !important; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .topGlobalLinks .help .link-icon { BACKGROUND-POSITION: -145px 0px } .topGlobalLinks .help:hover .link-icon { BACKGROUND-POSITION: -145px -16px } .topGlobalLinks A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topGlobalLinks A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topTabs-compact .loggedInAs SPAN { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks A { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks .logout { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } UL.nav LI.sub UL.narrow LI A { TEXT-INDENT: -5px; FONT-SIZE: 90% } .hotItems { Z-INDEX: 10000; POSITION: relative; WIDTH: 240px; FLOAT: right; HEIGHT: 28px; COLOR: #666; MARGIN-LEFT: 6px; FONT-SIZE: 90% } .topTabs-compact .hotItems { DISPLAY: none } .hotItems .hotLinks { POSITION: absolute; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; MAX-HEIGHT: 46px; OVERFLOW: auto; RIGHT: 0px; PADDING-TOP: 4px; LEFT: 0px; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; border-radius: 0 0 0 4px } .hotItems .hotLinks LI { DISPLAY: inline } .hotItems .hotLinks A { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT: italic 100% Georgia; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; TEXT-DECORATION: none; PADDING-TOP: 3px } .hotItems .hotLinks LI:after { POSITION: relative; COLOR: #999; CONTENT: "\2022"; RIGHT: 1px } .hotItems .hotLinks LI A:hover { COLOR: #eee; TEXT-DECORATION: underline } .path { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px } .breadcrumbs .noToggle { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .simplePath LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .path .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .path .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .simplePath .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .path A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .simplePath A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .path A:hover { COLOR: #333; TEXT-DECORATION: underline } .simplePath A:hover { COLOR: #333; TEXT-DECORATION: underline } .path .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .simplePath .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .path .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .simplePath .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .path .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='course_id']:before { CONTENT: "H" } .simplePath .root A[href*='course_id']:before { CONTENT: "H" } .path .root A[href*='admin']:before { CONTENT: "S" } .simplePath .root A[href*='admin']:before { CONTENT: "S" } .path .root A[href*='tabId=']:before { CONTENT: "m" } .simplePath .root A[href*='tabId=']:before { CONTENT: "m" } .path .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .simplePath .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .simplePath .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .path .root A:hover:before { COLOR: #888 } .simplePath .root A:hover:before { COLOR: #888 } .path .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .simplePath .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .path LI.contextPath { PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contextPath > DIV { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath > DIV:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath:hover > DIV { opacity: 1 } .contextPath:hover > DIV:hover { opacity: 1 } .contextPath A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .courseArrow A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .contextPath A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .contextPath A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow { DISPLAY: inline-block } .courseArrow A { DISPLAY: inline-block } .coursePath:hover .courseArrow { opacity: 1 } .banner + .breadcrumbs { BACKGROUND-COLOR: inherit; MARGIN: 0px } .breadcrumb-controls { FLOAT: right } .content { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #contentArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } #schemePreviewBody { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .contentBox { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .popup .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .picker .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .portal .contentBox { -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15) } #contentArea { MARGIN: 0px; COLOR: #444 } .container { MARGIN: 0px; COLOR: #444 } .containerOptions { MARGIN: 0px; COLOR: #444 } .containerPortal { MARGIN: 0px; COLOR: #444 } .containerPortal { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .portal .container { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .containerOptions .searchbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } .containerOptions .liveArea { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } #addFolderForm { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } DIV.okContainer { POSITION: relative; PADDING-BOTTOM: 60px } DIV.ok DIV.container { POSITION: relative; PADDING-BOTTOM: 60px } .collabContainer { POSITION: relative; PADDING-BOTTOM: 60px } .column-1 { MARGIN: 6px 0px 0px } .column-2 { MARGIN: 6px 0px 0px } .column-3 { MARGIN: 6px 0px 0px } .column-4 { MARGIN: 6px 0px 0px } .column-5 { MARGIN: 6px 0px 0px } .leftColumn-narrow { MARGIN: -20px 0px 0px -30px; WIDTH: 22%; FLOAT: left; OVERFLOW: auto; BORDER-RIGHT: #ccc 3px double } .picker .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .picker #bb-question-discover .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .rightColumn-narrow { WIDTH: 22%; FLOAT: right; MARGIN-LEFT: 1% } .rightColumn-wide { WIDTH: 74%; FLOAT: right } .leftColumn-wide { BORDER-LEFT: #ccc 3px double; WIDTH: 76%; FLOAT: left; MARGIN-LEFT: -3px } .picker .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker #bb-question-discover .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker .leftColumn-wide H1 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #bb-question-discover .leftColumn-wide { BORDER-LEFT: #ccc 3px double; MARGIN: -20px -20px 0px -3px; WIDTH: 80% } #bb-question-discover .leftColumn-wide + .leftColumn-wide { BORDER-LEFT: medium none; MARGIN: 0px; WIDTH: auto } #bb-question-discover .leftColumn-narrow { WIDTH: 24% } .leftColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .rightColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .leftColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .rightColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .columnPalette H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .leftColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .rightColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .leftColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } .rightColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } A.itemHead:hover { TEXT-DECORATION: underline } .leftColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .rightColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .leftColumn-narrow H3.hideoff { MARGIN: 0px } .leftColumn-narrow .columnPalette:first-child { BORDER-TOP: 0px } .paletteGroup { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .columnPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .paletteGroup DIV.columnPalette { BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .paletteItems { MARGIN: 0px 0px 4px; FONT-SIZE: 95% } .paletteItems LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 16px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } .paletteItems DIV { MARGIN: 0px 0px 0px 16px } #searchForm .paletteItems LI { MARGIN: 0px 0px 0px 24px } .paletteItems LI A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 110%; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .paletteItems LI LABEL { PADDING-LEFT: 21px; DISPLAY: inline-block } .picker .paletteItems LI LABEL { FONT-SIZE: 94% } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } UL.paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI:hover { BACKGROUND: #fff } .paletteItems LI A:hover { TEXT-DECORATION: underline } .paletteItems LI.selectedItem { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.selectedItem:hover { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active:hover { BACKGROUND: #fff4bf; COLOR: #000 } .columnActions UL LI A { DISPLAY: block } #copyright { POSITION: relative; MARGIN: 16px 0px 0px 9px; DISPLAY: inline-block; FONT-SIZE: 82% } .newCopyright { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 12px; PADDING-TOP: 20px } .logo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .legal { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .additionalInfo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 0px; MIN-HEIGHT: auto; PADDING-LEFT: 9px; PADDING-RIGHT: 12px; PADDING-TOP: 9px } .logo { POSITION: absolute; MARGIN-TOP: -20px; LEFT: 0px } .logo IMG { WIDTH: 45px } .additionalInfo { FLOAT: none } .legal P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P:first-child { PADDING-BOTTOM: 0px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } .additionalInfo P:first-child:after { POSITION: relative; COLOR: #ccc; CONTENT: "\2022"; RIGHT: -1px } .additionalInfo P:first-child A { PADDING-RIGHT: 12px } .additionalInfo P:first-child A:hover { BACKGROUND: url(images/micro_popup.png) no-repeat right 2px } .productTitle A { TEXT-ALIGN: right; LINE-HEIGHT: 1.1em; DISPLAY: block; COLOR: #333; FONT-SIZE: 125%; FONT-WEIGHT: bold; TEXT-DECORATION: none } .productTitle A:hover { TEXT-DECORATION: underline } .additionalInfo A:hover { TEXT-DECORATION: underline } .copyrightDetailContents { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #777; MARGIN: 0px; MIN-HEIGHT: 5em; PADDING-LEFT: 24px; WIDTH: 740px; PADDING-RIGHT: 24px; DISPLAY: none; COLOR: #fff; CLEAR: left; BORDER-TOP: #555 1px solid; TOP: 0px; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 12px; LEFT: 0px; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); border-radius: 3px } .productImg { MARGIN-TOP: 5px; FLOAT: left } .copyrightDetailContents UL { TEXT-ALIGN: left; MARGIN: 4px 0px 0px 24px; FLOAT: left } .copyrightDetailContents UL LI SPAN { FONT-WEIGHT: bold } A.closeCopyright { POSITION: relative; FLOAT: right; TOP: -5px; RIGHT: -16px } .contentBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 1em; MARGIN: 0px 1em 0.6em; PADDING-LEFT: 1.4em; PADDING-RIGHT: 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0.6em } .contentBlock H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; MARGIN: 0px 0px 1em; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .contentBlock UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentBlock UL.threeCol { WIDTH: 30%; FLOAT: left } .contentBlock UL.threeCol LI { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px 3px; FLOAT: none; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contentBlock UL.threeCol LI A { BACKGROUND-IMAGE: none } .contentBlock UL.threeCol LI A:hover { TEXT-DECORATION: underline } .contentBlock UL.threeCol LI A:focus { TEXT-DECORATION: underline } .contentBlock H3 INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock H3 SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock OL LI INPUT[type='checkbox'] { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .contentBlock H3 A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock INPUT.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } DIV.landingListWrapper { TEXT-ALIGN: center; MARGIN: 1.6em 0px 0px } DIV.landingListWrapper UL.landingList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI { TEXT-ALIGN: left; MARGIN: 0px 0px 1.6em; WIDTH: 50% } DIV.landingListWrapper UL.landingList-2cols LI { TEXT-ALIGN: left; MARGIN: 0px 3em 1.6em 0px; WIDTH: 45%; FLOAT: left } DIV.landingListWrapper UL.landingList LI.restart { MARGIN-TOP: -13.6em } DIV.landingListWrapper UL.landingList LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList-2cols LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList LI UL { LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em } DIV.landingListWrapper UL.landingList LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; CLEAR: left; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #000; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .containerLanding { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } DIV.landing DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } BODY.landingBody DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } .inst-email DIV.landing DIV.container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } DIV.landingPageColumn { PADDING-BOTTOM: 0px; MARGIN: 1.2em 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .twoCol { MARGIN: 1.2em 0px; WIDTH: 49% } .threeCol { MARGIN: 1.2em 0px; WIDTH: 32.5% } .landingPageColumn UL { MARGIN: 0px 0px 0px 30px } .landingPageColumn .outcomesLanding { PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI { TEXT-ALIGN: left; MARGIN: 0px 0px 2.2em } .inst-email .landingPageColumn UL LI { MARGIN: 0px } .landingPageColumn .outcomesLanding LI { MARGIN: 0px 0px 1.2em } .landingPageColumn UL LI A { TEXT-DECORATION: none } .landingPageColumn UL LI A:hover { TEXT-DECORATION: underline } .landingPageColumn H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI H3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 115%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } .landingPageColumn .outcomesLanding LI P { BORDER-TOP: 0px } .landingPageColumn H3 IMG { MARGIN: 0px 0px 0px -12px } .landingPageColumn H3.hiddenlink IMG { POSITION: absolute; FILTER: alpha(opacity=40); TOP: 0px; LEFT: 1.1em; opacity: .4 } .landingPageColumn UL LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em; PADDING-LEFT: 1.6em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #555; PADDING-TOP: 1px } .landingPageColumn UL LI UL LI.more { PADDING-TOP: 3px } .landingPageColumn UL LI UL LI.more A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; COLOR: #555; PADDING-TOP: 0px } .landingPageColumn UL LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn H3.hiddenlink { POSITION: relative; PADDING-BOTTOM: 0.6em; PADDING-LEFT: 4.2em; PADDING-RIGHT: 1.2em; PADDING-TOP: 1em } .landingPageColumn H3.hiddenlink A { COLOR: #777; TEXT-DECORATION: none } .landingPageColumn H3.hiddenlink A:hover { COLOR: #777; TEXT-DECORATION: none } .subhead_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #333; FONT-SIZE: 90%; PADDING-TOP: 0px } .list_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 1.3em; PADDING-RIGHT: 2px; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .landingPageColumn .outcomesLanding .list_text A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 3px; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; HEIGHT: 360px; OVERFLOW: auto; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.datalist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.landingPageColumn UL LI UL.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 250px; OVERFLOW: auto; BORDER-TOP: medium none; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.datalistScroll LI { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: white; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.datalistScroll LI:hover { BACKGROUND-COLOR: #ffc } DIV.landingPageColumn UL LI UL.datalistScroll LI:focus { BACKGROUND-COLOR: #ffc } DIV.datalist TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } DIV.datalistScroll TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } .emptylist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: white; MARGIN: 6px 0px 0px 1.4em; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 12px } DIV.landingPageColumn UL LI UL.subcaret { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.subcaret LI { PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.complete { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_complete_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.inprogress { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_active_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } .iconLegendLabel { MARGIN: 1px 0px 1px 1.6em; FONT-SIZE: 95% } DIV.landingPageColumn UL LI UL.subcaret LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI UL.datalist LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI DIV A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI TABLE A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI P A { TEXT-DECORATION: underline } .genericButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .genericButtonImg { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browse { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browseIcon { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } INPUT[type='submit'].submit { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble_top A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paging A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .itemHeaderControl A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .actionMenuButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paletteSearch .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } H3#cs_search + UL DIV.none:first-child .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .mainButton H2 { MARGIN: 0px; FONT-SIZE: 100% } .secondaryButton H2 { MARGIN: 0px; FONT-SIZE: 100% } #primaryButton { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble_top .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1 { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1-img { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } #secondaryButton { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2 { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2-img { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } #secondaryButton { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .sub A IMG { MARGIN: -2px -4px 0px 0px } .sub .button-1 IMG { MARGIN: -2px -4px 0px 0px } .sub .button-2 IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton A IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton .button-2 IMG { MARGIN: -2px -4px 0px 0px } .mainButton A { DISPLAY: block } .secondaryButton A { DISPLAY: block } .actionBar .button-1 { DISPLAY: block } .actionBar .button-2 { DISPLAY: block } .mainButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .mainButton H2 > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .secondaryButton > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .secondaryButton H2 > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .sub.mainButton A { PADDING-RIGHT: 12px } .sub.secondaryButton A { PADDING-RIGHT: 12px } .mainButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A { FONT-WEIGHT: 600 } .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 30px } .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 30px } .popup .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .popup .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .genericButtonImg { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } INPUT[type='submit'].genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browse { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browseIcon { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .paging A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .itemHeaderControl > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .actionMenuButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } #toolsSearchBox + .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .treeContainer .tree LI A.button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .threadButtons .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .dbThreadInfo .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .containerOptions INPUT.genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-2 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-3 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-4 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'] { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'].submit { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='button'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .genericButtonImg { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-3-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .itemHeaderControl A { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .browseIcon { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .genericButtonImg { DISPLAY: inline-block !important } INPUT[type='submit'].genericButton { FONT-WEIGHT: bold } .button-3 { FONT-WEIGHT: bold } .searchbar INPUT[type='submit'].genericButton { FONT-WEIGHT: normal } .u_reverseAlign#editGradeActionList A.genericButton { DISPLAY: inline-block; MARGIN-BOTTOM: 5px } .genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .threadButtons .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .dbThreadInfo .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img.contextArrow:hover { box-shadow: none } .button-4-img.contextArrow:focus { box-shadow: none } .paletteSearch .button-4:hover { BACKGROUND-IMAGE: none !important } .paletteSearch .button-4:focus { BACKGROUND-IMAGE: none !important } .button-5 { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5-img { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5:hover { BACKGROUND: #ededed; COLOR: black } .button-5-img:hover { BACKGROUND: #ededed; COLOR: black } .button-6 { TEXT-DECORATION: none } .mainButton A.disabled { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .rumble A { DISPLAY: block } .rumble_top A { DISPLAY: block } .rumble .sub A IMG { MARGIN: -2px -1px 0px 3px } .rumble_top .sub A IMG { MARGIN: -2px -1px 0px 3px } .paging A { DISPLAY: inline-block } .rumble_top .inventory_paging .gotolink { DISPLAY: inline-block } .rumble .inventory_paging .gotolink { DISPLAY: inline-block } .listItemSelect { MARGIN: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #555 } #threadArea .listItemSelect { MARGIN: 0px } .rumble_top .listItemSelect { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 4px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .listItemSelect { PADDING-BOTTOM: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .rumble .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble_top .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble .listItemSelect A:hover { TEXT-DECORATION: none } .rumble_top .listItemSelect A:hover { TEXT-DECORATION: none } .listItemSelect LABEL { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline; PADDING-TOP: 0px } .listItemSelect SELECT { FONT-SIZE: 95% } INPUT.calcButton { MARGIN: 2px 0px; WIDTH: 2em; DISPLAY: inline-block } INPUT#width { WIDTH: 5em } INPUT#height { WIDTH: 5em } SELECT#border { WIDTH: 5em } SELECT#controls { WIDTH: 5em } .smallControls INPUT[type='text'].width { WIDTH: 5em } .smallControls INPUT[type='text'].height { WIDTH: 5em } .smallControls SELECT.quality { WIDTH: auto } .smallControls SELECT.controls { WIDTH: auto } .smallControls SELECT.border { WIDTH: auto } .actionBarMicro .mainButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .secondaryButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .mainButton A IMG { MARGIN: 0px } .actionBarMicro .secondaryButton A IMG { MARGIN: 0px } .actionBarMicro A SPAN IMG { VISIBILITY: hidden } .actionBar A SPAN IMG { VISIBILITY: hidden } .actionBarMicro .access-reorder { -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .actionBarMicro A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBar A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBarMicro #quickViewLink A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #shortcutView A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #quickViewLink A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#quickViewLink A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #shortcutView A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#shortcutView A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #addCmItem > A SPAN { BACKGROUND-POSITION: -16px 0px } .actionBarMicro #detailViewLink2 UL LI A { WIDTH: 90px } .actionBarMicro #addCmItem:hover > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro .active#addCmItem > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro #detailViewLink A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #folderView A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #detailViewLink2 A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #folderView A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#folderView A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #courseMapButton A SPAN { BACKGROUND-POSITION: -48px 0px } .actionBarMicro #courseMapButton A:hover SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro .active#courseMapButton A SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro #refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshView A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshMenuLink A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro #refreshView A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshView A SPAN { BACKGROUND-POSITION: -64px -16px } A.access-reorder SPAN { BACKGROUND-POSITION: -80px 0px } A.access-reorder:hover SPAN { BACKGROUND-POSITION: -80px -16px } A.active.access-reorder SPAN { BACKGROUND-POSITION: -80px -16px } .actionBar .sub A .chevron { BACKGROUND-POSITION: -95px 0px } .actionBar .sub:hover A .chevron { BACKGROUND-POSITION: -95px -16px } .actionBar .sub A:focus .chevron { BACKGROUND-POSITION: -95px -16px } .actionBarMicro .active > A { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:hover { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:focus { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } A.liveAreaTab:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub H2 > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .mainButton.sub:hover H2 > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang H2:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang:hover H2:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub:hover > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .actionBarMicro UL:hover + UL .active A:after { DISPLAY: none } A.liveAreaTab:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang H2:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang:hover H2:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .sub:hover > A:after { BORDER-BOTTOM-COLOR: #d1eaef } .columnActions.actionBarMicro { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 3px } .alignPanel LI.sub { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .alignPanel LI.sub A.button-4:after { CONTENT: none } .columnActions UL { MARGIN: 0px 0px 2px } .columnActions .mainButton A { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .columnActions .mainButton A:hover { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .modeSwitchWrap { DISPLAY: inline-block; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; FONT-WEIGHT: bold; BORDER-RIGHT: transparent 1px dotted } .modeSwitch { PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: #ccc; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -moz-border-radius: 16px; -webkit-border-radius: 16px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); border-radius: 16px } .modeSwitch:before { POSITION: relative; LINE-HEIGHT: 0.9; COLOR: #bbb; FONT-SIZE: 22px; VERTICAL-ALIGN: middle; CONTENT: "\2022"; TOP: -1px; FONT-WEIGHT: normal; MARGIN-RIGHT: 2px; LEFT: 0px; font-effect: outline } .read-on { BACKGROUND-COLOR: #777; MARGIN-RIGHT: 0px } .read-on:hover { BACKGROUND: #555 } .read-on { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .read-on:before { COLOR: lime; text-shadow: 0 0 4px lime } .disabled.read-on:before { COLOR: #999 } .disabled.read-on { COLOR: #999 } .read-off:before { COLOR: #999 } .read-off { COLOR: #999 } .read-off.modeSwitch { TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } A.read-off IMG { DISPLAY: none } A.read-on IMG { DISPLAY: none } A.read-on .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } A.read-off .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } .modeSwitch SPAN { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .switcherLabel { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 4px !important; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 2px !important } .vtbeSwitch { TOP: 2px } .vtbeSwitch SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .legacy .vtbeSwitch { HEIGHT: 2.2em } .vtbeSwitch DIV.modeSwitchWrap { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ccc 1px solid; TOP: 2px; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .vtbeSwitch DIV.modeSwitchWrap A SPAN#statusText { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 0px !important } .vtbeSwitch DIV.modeSwitchWrap A.read-off { BACKGROUND-COLOR: #ddd } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover { BACKGROUND-COLOR: #fff } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover SPAN#statusText { COLOR: #000 } TABLE.vtbeTable-legacy { WIDTH: 100% } .vtbeTable-legacy TEXTAREA { WIDTH: 100% } .helpLink { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .helpLink A.browseIcon { BORDER-BOTTOM: 0px; POSITION: relative; TEXT-ALIGN: center; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#777777); BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; BACKGROUND: #777; FONT-SIZE: 115%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; box-shadow: none; border-radius: 12px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .helpLink A.browseIcon IMG { DISPLAY: none } .helpLink A.browseIcon:before { Z-INDEX: 1; POSITION: relative; WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: #fff; CONTENT: "?"; RIGHT: -4px; FONT-WEIGHT: bold } .helpLink A.browseIcon:hover { box-shadow: none } .helpLink A.browseIcon:focus { box-shadow: none } .helpLink A[title*='Off'].browseIcon:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bbbbbb,endColorstr=#bbbbbb); BACKGROUND: #bbb } .helpLink A[title*='Off'] { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } TABLE.reorder { opacity: 1 } .reorder SPAN { DISPLAY: inline-block; HEIGHT: 20px } TABLE.reorder SPAN { HEIGHT: auto } .item .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } .item .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .liItem .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .subList-reorder .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .buttonCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .dndHandle .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .portlet .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder { WIDTH: 16px } .subList-reorder .reorder { WIDTH: 16px } .buttonCm .reorder { WIDTH: 16px } .portlet .reorder SPAN { DISPLAY: block; BACKGROUND-POSITION: -237px -116px; HEIGHT: 24px } .portlet .reorder { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; BOTTOM: -1px; BORDER-TOP: #555 1px solid; TOP: -1px; BORDER-RIGHT: #555 0px solid; LEFT: -19px; opacity: 0; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px } .module-dragstate.portlet .reorder { BORDER-RIGHT-WIDTH: 0px; BOTTOM: -2px; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-LEFT-WIDTH: 2px; TOP: -2px; LEFT: -20px } .reorder IMG { FILTER: alpha(opacity=0); opacity: 0 } .item .reorder IMG { MARGIN: 6px 3px } .portlet .reorder IMG { WIDTH: 18px; HEIGHT: 20px } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .liItem:focus .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .listCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buttonCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .portlet H2:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentListPlain LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentList > LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg { MARGIN: 0px; WIDTH: 16px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -125px; HEIGHT: 16px } TABLE.inventory A.cmimg { FILTER: alpha(opacity=0); opacity: 0 } TABLE.inventory TR:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg:hover { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg:focus { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg IMG { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 15px; PADDING-RIGHT: 0px; HEIGHT: 15px; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .buttonCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .portlet A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } A.cmimg-small { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .listCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .listCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .courseMenu .subhead A.cmimg { TOP: 9px } .buttonCm .courseMenu .subhead .cmimg { TOP: 2px } .portlet A.cmimg { POSITION: relative; TOP: 2px; RIGHT: 0px } .listCm .courseMenu A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .portlet A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .buildList LI .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .item .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .buildList LI .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .item .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .listCm .courseMenu LI:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 3px; BOTTOM: 0px; PADDING-RIGHT: 4px; PADDING-TOP: 4px; -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); border-radius: 0 3px 0 0 } .frameResizeToggle A { WIDTH: 16px; DISPLAY: block; BACKGROUND: url(images/utilicons_sprite_rev.png) no-repeat -158px 0px; HEIGHT: 16px; OVERFLOW: hidden } .frameResizeToggle:hover { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle A.resize-on { BACKGROUND-POSITION: -175px 0px; opacity: .5 } .frameResizeToggle A.resize-off { BACKGROUND-POSITION: -159px 0px; opacity: .8 } .frameResizeToggle A.resize-on:hover { BACKGROUND-POSITION: -159px -16px; opacity: 1 } .frameResizeToggle A.resize-off:hover { BACKGROUND-POSITION: -175px -16px; opacity: 1 } .frameResizeToggle A IMG { WIDTH: 18px; HEIGHT: 18px } A.close { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close-menu { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close { TOP: 0px; RIGHT: 20px } A.close IMG { DISPLAY: none } A.close-menu IMG { DISPLAY: none } .lbAction IMG { DISPLAY: none } A.close:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } .lbAction:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT-SIZE: 14px } A.close:hover:before { COLOR: #888 } A.close-menu:hover:before { COLOR: #888 } .lbAction:hover:before { COLOR: #888 } .builderItem A.close { FILTER: alpha(opacity:0); opacity: 0 } .builderItem:hover A.close { FILTER: alpha(opacity:100); opacity: 1 } .liveArea A.close { TOP: 6px; RIGHT: 6px } .cmdiv A.close-menu { Z-INDEX: 100; POSITION: relative; FILTER: alpha(opacity=100); TOP: 0px; RIGHT: 0px; opacity: 1 } #bb-assessment-canvas [id*='receipt_nested'].receipt A.close { TOP: 6px; RIGHT: 6px } A.colorChip { PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 1px } .pageTitle A.colorChip { PADDING-BOTTOM: 4px; PADDING-LEFT: 7px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } A.colorChip SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -123px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } A.colorChip:hover SPAN { BACKGROUND-POSITION: -320px -141px } A.colorChip SPAN IMG { FILTER: alpha(opacity=0); WIDTH: 16px; HEIGHT: 16px; opacity: 0 } A.colorChip IMG.chipSwatch { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 16px; HEIGHT: 16px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #aaa 1px solid } SPAN.colorChipName { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: inline-block !important; VERTICAL-ALIGN: middle; PADDING-TOP: 0px !important } INPUT[type='text'] { FONT-SIZE: 90% } INPUT[type='password'] { FONT-SIZE: 90% } SELECT { FONT-SIZE: 90% } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .courseMenu INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .courseMenu INPUT[type='text'] { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { MARGIN-LEFT: 0px } #calculatorValue { MARGIN: 3px 0px; WIDTH: 10em } A.microControl { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A.microControl IMG { WIDTH: 12px; HEIGHT: 12px } A.save { BACKGROUND: url(images/controls.png) no-repeat -50px -123px } A.cancel { BACKGROUND: url(images/controls.png) no-repeat -70px -123px } .fileInputWrapper { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; MARGIN-RIGHT: 9px; PADDING-TOP: 0px } .fileInputWrapper INPUT.hiddenInput { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .backLink { POSITION: absolute; MARGIN: 0px; BOTTOM: 0px; RIGHT: 0px } .tocBottom_min .backLink { BOTTOM: 48px } .tocBottom_max .backLink { BOTTOM: 348px } .tocBottom_open .backLink { BOTTOM: 178px } .shortDoc .backLink { POSITION: relative; TEXT-ALIGN: left; MARGIN-TOP: 15px; BOTTOM: 0px; RIGHT: 0px } .backLink A { BORDER-BOTTOM: #cdcdcd 0px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 18px; DISPLAY: inline-block; BACKGROUND: #eee; COLOR: #888; BORDER-TOP: #cdcdcd 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #cdcdcd 0px solid; TEXT-DECORATION: none; PADDING-TOP: 8px; -moz-box-shadow: 1px 1px 4px #DDD inset; -webkit-box-shadow: 1px 1px 4px #ddd inset; -moz-border-radius: 4px 0 4px 0; -webkit-border-radius: 4px 0 4px 0; text-shadow: 0 1px 0 #fff } .shortDoc .backLink A { BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px } .backLink A:before { LINE-HEIGHT: 1.2; COLOR: #999; FONT-SIZE: 120%; CONTENT: "\2190" } .backLink A:hover { BACKGROUND: #ddd; COLOR: #777 } .backLink A:hover:before { COLOR: #00add0 } .sliderWrapper { BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 0px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 13px; BACKGROUND: #fff; FLOAT: left; FONT-SIZE: 85%; PADDING-TOP: 14px; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0 } #sliderHandle { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: -2px 0px 0px; WIDTH: 4px; DISPLAY: block; BACKGROUND: #999; HEIGHT: 4px; BORDER-TOP: #555 1px solid; CURSOR: ew-resize; BORDER-RIGHT: #555 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } #sliderTrack { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 6px; WIDTH: 60px; DISPLAY: inline-block; BACKGROUND: #ededed; HEIGHT: 2px; BORDER-TOP: #ccc 1px solid; TOP: -2px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .itemCounter { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #cdcdcd; FONT-SIZE: 115%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #pageHeader { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitleSmall { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } #pageHeader { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #schemePreviewHead { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitle H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitleError H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #pageHeader { FONT-SIZE: 185% } .pageTitle H1 { FONT-SIZE: 185% } .pageTitleError H1 { FONT-SIZE: 185% } .picker .pageTitle H1 { FONT-SIZE: 160% } .popup .pageTitle H1 { FONT-SIZE: 160% } .pageTitle #titleicon { DISPLAY: inline-block } .pageTitle H1 { DISPLAY: inline-block } .pageTitle A.cmimg { DISPLAY: inline-block } .pageTitle H1 + .contextMenuContainer { POSITION: relative; MARGIN-LEFT: 2px; VERTICAL-ALIGN: top; TOP: 4px } .pageTitle A.cmimg { MARGIN: 0px } .pageTitle #titleicon { MARGIN: 0px 6px 0px 0px; DISPLAY: none } .pageTitle [src*='slideshare']#titleicon { BORDER-BOTTOM: #dedede 1px solid; POSITION: absolute; BORDER-LEFT: #dedede 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; WIDTH: auto; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #fff; HEIGHT: 39px; BORDER-TOP: #dedede 0px solid; TOP: 1px; RIGHT: 7px; BORDER-RIGHT: #dedede 0px solid; PADDING-TOP: 4px; border-radius: 0 4px 0 4px } .pageTitle [src*='youtube']#titleicon { POSITION: absolute; WIDTH: auto; DISPLAY: block; HEIGHT: 44px; TOP: 8px; RIGHT: 14px } .pageTitleSmall H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #fff; FONT-SIZE: 135%; PADDING-TOP: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.9) } #pageHeader { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } #schemePreviewHead { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .hierarchy-page .pageTitle + .container { MARGIN-TOP: -20px; BACKGROUND: #fff } .picker .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popup .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } #pageHeader { BACKGROUND-COLOR: #dedede } #schemePreviewHead { BACKGROUND-COLOR: #dedede } .pageTitleIcon { DISPLAY: table-row } .pageTitle .details { DISPLAY: none } .pageTitle .contextMenuContainer { DISPLAY: inline-block !important } .pageTitle .titleButtons { DISPLAY: inline-block !important } .pageTitleEdit { DISPLAY: inline-block !important } #pageTitleBar { DISPLAY: inline-block; MARGIN-RIGHT: 6px } .pageTitle H2 { MARGIN: 0px; COLOR: #333; CLEAR: both; FONT-SIZE: 100% } .pageTitle H2 SPAN { FONT-WEIGHT: normal } .contextString { COLOR: #777; FONT-WEIGHT: normal } .pageTitle .label { COLOR: #777; FONT-WEIGHT: normal } .error .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#DB0F0F,endColorstr=#FC0202); box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6) inset } .error .pageTitle H1 { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2) } .customBanner { TEXT-ALIGN: center; BACKGROUND-COLOR: transparent; MARGIN: 0px; OVERFLOW: hidden } DIV.localViewToggle + DIV.pageTitle { PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #fafafa inset; border-radius: 0 } DIV#lightboxContent H2 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; FONT-SIZE: 130%; PADDING-TOP: 18px } .helphelp { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .pageTitle P { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .label.details { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .mapTabs + .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .mapTabs ~ .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .helphelp A { BORDER-BOTTOM: #666 1px dotted; COLOR: #666; TEXT-DECORATION: none } .helphelp A:hover { BORDER-BOTTOM-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-TOP-STYLE: solid; BORDER-LEFT-STYLE: solid } DIV.helphelp UL { MARGIN: 6px 0px } .version { MARGIN-TOP: 6px; DISPLAY: inline-block; COLOR: #666; FONT-SIZE: 60%; FONT-WEIGHT: normal } .version I { FONT-STYLE: normal; FONT-WEIGHT: bold } .version SPAN { POSITION: relative; WIDTH: 13px; DISPLAY: inline-block; OVERFLOW: hidden; TOP: -2px; LEFT: -5px } .version SPAN:before { POSITION: relative; COLOR: #00add0; FONT-SIZE: 105%; CONTENT: "+"; TOP: 0px; FONT-WEIGHT: bold; LEFT: 0px } .colophon { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px 14px; PADDING-LEFT: 55px; WIDTH: 30em; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: right; FONT-SIZE: 85%; OVERFLOW: visible; RIGHT: 0px; PADDING-TOP: 0px } .colophon IMG { POSITION: absolute; LEFT: 0px } .installation { LINE-HEIGHT: 1.3em; COLOR: #666 !important } .installation SPAN { FONT-WEIGHT: bold } .actionBar { Z-INDEX: 110; BORDER-TOP: #444 1px solid; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .hierarchy-page .actionBar { MARGIN-TOP: -21px } .hierarchy-page #toolsTabForm .actionBar { MARGIN: -21px -30px 0px } .actionBar UL LI { POSITION: relative } .actionBar UL LI.mainButton { Z-INDEX: 210 } .actionBar UL LI.secondaryButton { Z-INDEX: 209 } .actionBar UL LI.mainButton:hover { Z-INDEX: 112 } .pageTitle + .actionBar { -moz-border-radius: 0; border-radius: 0 } .actionBar .mainButton { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBar .secondaryButton { MARGIN: 0px; FLOAT: right } .actionMenu { Z-INDEX: 111; POSITION: relative } .actionMenuItem { Z-INDEX: 123; POSITION: relative } .actionBarMicro { -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .csMenuFrame .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popupMenu .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .portlet .actionBarMicro { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .portlet .actionBarMicro UL { MARGIN: 2px } .actionBarMicro UL LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBarMicro .mainButton { Z-INDEX: 1000 } .actionBarMicro .secondaryButton { Z-INDEX: 10; FLOAT: right } .actionBar { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .actionBarMicro { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .searchbar { POSITION: relative } .searchbarPicker { POSITION: relative } .subActionBar { POSITION: relative } .searchbarCanvas.searchbar { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN: -24px -30px 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dfdfdf 0px 0px; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #F0F0F0 inset; -webkit-box-shadow: 1px 0 0 #F0F0F0 inset } .picker .searchbarCanvas.searchbar { MARGIN: -24px -20px 20px } .picker .leftColumn-narrow H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } .picker .leftColumn-wide H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } #bb-question-discover .searchbarCanvas.searchbar FIELDSET H2 { DISPLAY: inline-block; FONT-SIZE: 100%; FONT-WEIGHT: normal } .subActionBar { FONT-SIZE: 95% } .searchbar TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE TD TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE FIELDSET { PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 3px } .searchbar TABLE DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .searchbar FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchbarPicker { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .searchbar:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .searchbarPicker:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .receipt A.close { FILTER: alpha(opacity=70); TOP: 1px; RIGHT: 4px; opacity: .7 } .slideshowControls { TEXT-ALIGN: center; MARGIN: 8px auto 12px; FONT-SIZE: 100% } .searchbar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbarPicker FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .subActionBar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbar H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .searchbarPicker H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .picker .searchbar H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbarPicker H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbar .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbarPicker .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .liveArea FIELDSET .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbar OL LI { MARGIN: 5px; FLOAT: left } .searchbarPicker OL LI { MARGIN: 5px; FLOAT: left } .liveArea FIELDSET OL LI { MARGIN: 5px; FLOAT: left } .searchbar OL LI > DIV { MARGIN: 0px 4px 4px 0px; DISPLAY: inline-block } .searchbar OL LI.options { FLOAT: right } .searchbarPicker OL LI.options { FLOAT: right } .liveArea FIELDSET OL LI.options { FLOAT: right } .searchbarPicker SPAN { DISPLAY: inline } .searchbar SPAN.spacer { MARGIN: 0px 4px } .cmImg { TEXT-ALIGN: center; MARGIN: 0px 0px 6px 12px; WIDTH: 180px; OVERFLOW: hidden } .cmImg IMG { WIDTH: 180px } .navDivider { PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; MARGIN: 0px 0px 4px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; LETTER-SPACING: 2px; COLOR: #999; FONT-SIZE: 80%; FONT-WEIGHT: bold; PADDING-TOP: 18px; text-shadow: 0 1px 0 #f9f9f9 } .cmPreviewWrapper { WIDTH: 212px } .navPalette { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .csMenuFrame .navPalette { MARGIN: 0px 0px 18px } .navPalette H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 105%; PADDING-TOP: 0px } .navPaletteTitle { POSITION: relative } .navPaletteTitle H3 + H3 { POSITION: absolute; TOP: 0px; RIGHT: 0px } .navPaletteCol H3 { BORDER-BOTTOM: 0px } .navPalette H4 { MARGIN: 0px; FONT-SIZE: 100% } .navPaletteContent UL LI { POSITION: relative; ZOOM: 1 } .navPaletteContent { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .listCm .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .singleControl .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .tools .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } #courseMenuPalette DIV.navPaletteContent { PADDING-BOTTOM: 14px; PADDING-TOP: 14px; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset } #courseMenuPalette { MARGIN-BOTTOM: 0px } .singleControl .navPaletteContent { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .singleControl { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPalette .discover { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPaletteContent A { PADDING-BOTTOM: 3px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; WORD-BREAK: normal; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 3px } .navPaletteContent A:hover { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A:focus { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A.comboLink { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.open { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.submenuLink { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink_active { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent A.submenuLink_active IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent UL LI:first-child H4 A { BORDER-TOP: medium none } .navPaletteContent UL LI:first-child A { BORDER-TOP: medium none } .navPaletteContent UL LI H4 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPaletteContent H3 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px; text-shadow: 0 1px 0 #f9f9f9 } .navPaletteContent H3 A:hover { TEXT-DECORATION: none } .navPaletteContent H3 A:focus { TEXT-DECORATION: none } #courseMenu { BACKGROUND-COLOR: #0078cb; COLOR: #fff } .controlpanel UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .controlpanel A { BORDER-TOP: #ccc 1px dotted } .controlpanel A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .controlpanel A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { DISPLAY: inline-block } .navPaletteContent H3 A.submenuLink_active { DISPLAY: inline-block } .controlpanel A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .controlpanel A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink_active:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .navPaletteContent H3 A.submenuLink_active:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .controlpanel A.submenuLink:hover:after { COLOR: #aaa } .controlpanel A.submenuLink_active:hover:after { COLOR: #aaa } .tools A.submenuLink:hover:after { COLOR: #aaa } .tools A.submenuLink_active:hover:after { COLOR: #aaa } .navPaletteContent H3 A.submenuLink:hover:before { COLOR: #aaa } .navPaletteContent H3 A.submenuLink_active:hover:before { COLOR: #aaa } .controlpanel A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .tools A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel H4 A.open { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navPaletteContent UL LI:first-child H4 A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore H4 { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel A.comboLink_active { Z-INDEX: 1; POSITION: relative } .tools A.comboLink_active { Z-INDEX: 1; POSITION: relative } .controlpanel H4 A.open { Z-INDEX: 1; POSITION: relative } .treeViewCs .navPaletteContent { } .treeViewCs .bottomRound B { } .courseFilesPalette { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .paletteSearch { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 6px } .classFiles H4#cs_search + UL LI:first-child { BORDER-BOTTOM: #aaa 1px dotted; PADDING-BOTTOM: 6px; MARGIN: 2px 9px 2px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 95%; PADDING-TOP: 0px } .classFiles H4#cs_search + UL LI { BACKGROUND-IMAGE: none } .classFiles A#filesPaletteContentCollectionLink { BACKGROUND-IMAGE: url(images/indicators.png); PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 98% -143px; COLOR: #aaa; PADDING-TOP: 3px } .navPaletteContent .submenu .paletteSearchElement { PADDING-BOTTOM: 9px; MARGIN: 6px 0px 0px -16px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BORDER-TOP: #bbb 1px dotted; PADDING-TOP: 10px } .paletteSearchElement INPUT { WIDTH: 99px } .classFiles UL.tree > LI { BACKGROUND-IMAGE: none !important } .listCm .courseMenu { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .ineditmode DIV.listCm UL.courseMenu { MARGIN: 0px } .ineditmode DIV.listCm UL.courseMenu LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px -1px 0px 0px; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid } .ineditmode DIV.listCm UL.courseMenu LI:hover { BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff !important; -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -moz-transition: border, margin, background, -moz-box-shadow 500ms cubic-bezier(0.420, 0.000, 1.000, 1.000); box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-transition-property: background, border, -webkit-box-shadow; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000); background-clip: padding-box } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder { -webkit-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder:before { -webkit-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .listCm .courseMenu LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .buttonCm LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .buttonCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .listCm .courseMenu A:hover { TEXT-DECORATION: underline } .listCm .courseMenu A:focus { TEXT-DECORATION: underline } .buttonCm LI A:hover { TEXT-DECORATION: underline } .buttonCm LI:focus { TEXT-DECORATION: underline } .listCm .courseMenu > LI:hover A SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:hover { COLOR: #128fa8 !important } .listCm .courseMenu A:focus { COLOR: #128fa8 !important } .listCm .courseMenu A:hover SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:focus SPAN { COLOR: #128fa8 !important } .listCm .courseMenu .here A { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:hover { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:focus { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A.cmimg { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu .here A.cmimg:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .listCm .subhead H3 { PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #courseMenu_folderView H4 A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } #courseMenu_folderView .subhead { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .navPaletteContent .subhead H3 A { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .navPaletteContent .subhead H3 A:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .listCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { BACKGROUND-IMAGE: none !important } .noteditmode .listCm .courseMenu .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .noteditmode .listCm .buttonCm .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .listCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .buttonCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .listCm .courseMenu .collapsed { PADDING-BOTTOM: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; HEIGHT: 2px; PADDING-TOP: 0px } .buttonCm .navPaletteContent { BACKGROUND: none transparent scroll repeat 0% 0% } .buttonCm LI { BACKGROUND-COLOR: transparent; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 12px 0px } .buttonCm .courseMenu .here A { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .buttonCm .courseMenu .here A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .cmLink-hidden { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-empty { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-hidden IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -123px } .cmLink-hidden { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -138px } .buttonCm .invisible .cmLink-hidden { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { RIGHT: 32px } .buttonCm .bottomRound { DISPLAY: none } .pickerMenu { POSITION: absolute; MARGIN: 0px; WIDTH: 150px; TOP: 0px; LEFT: 14px } .pickerMenu UL LI A { BACKGROUND-IMAGE: none } DIV.pickerMenu A.simpleLink { BACKGROUND-IMAGE: none } .pickerMenu A.open { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:hover { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:focus { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .discover .topRound B { } .discover .bottomRound B { } .discover .navPaletteContent { } .singleControl .topRound B { } .singleControl .bottomRound B { } .singleControl .navPaletteContent { } .discover A IMG { DISPLAY: none } .discover.navPalette { MARGIN-BOTTOM: 0px } .singleControl A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .navPalette .discover A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .singleControl A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A.enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .discover A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { COLOR: #3c0; CONTENT: "+" } .discover A:before { COLOR: #eee; CONTENT: "F" } .navPaletteContent .submenu { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; FONT-SIZE: 90%; PADDING-TOP: 0px; -moz-box-shadow: 0 1px 4px #ccc; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore .submenu { BACKGROUND: #fff; FONT-SIZE: 90% } .navPaletteContent .submenu LI { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent .submenu LI UL LI { PADDING-LEFT: 12px } .navPaletteContent .submenu LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } H4#cs_search + UL DIV A { DISPLAY: block; FONT-SIZE: 90% } .controlpanel .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu .emptyMsg { COLOR: #777 } .controlpanel .submenu A:hover { TEXT-DECORATION: underline } .controlpanel .submenu A.here { TEXT-DECORATION: underline } .controlpanel .submenu A:focus { TEXT-DECORATION: underline } .explore .submenu A:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .explore .submenu A:focus { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .tools .submenu { BACKGROUND: #fff } .controlpanel .submenu { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel .submenu LI UL { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND-COLOR: transparent } .navPalette A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .controlpanel A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPalette A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPalette A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPaletteCol H3 A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol H3 A.comboLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol .navPaletteContent H3 { BACKGROUND-IMAGE: none } .navPaletteCol .actionBarMicro { DISPLAY: none } .shortcutViewCs UL LI A { TEXT-ALIGN: center; BORDER-TOP: #ededed 1px dotted } .shortcuts LI A { BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted } .shortcuts LI A:hover { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .shortcuts LI A:focus { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .treeContainer#courseMenu_folderView { OVERFLOW-X: auto } DIV.expTreeContainer { BACKGROUND: #eee } DIV.treeContainer UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.treeContainer > UL.tree { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree > UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.listCm DIV.treeContainer UL.tree { OVERFLOW-X: auto; ZOOM: 1 } DIV.treeContainer UL.tree LI H4 + UL { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; ZOOM: 1; FONT-SIZE: 90%; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .sideTOC UL.tree > LI { OVERFLOW-X: visible } DIV.treeContainer UL.tree LI.last { BACKGROUND-IMAGE: none } UL.tree LI.last { BACKGROUND-IMAGE: none } DIV.treeContainer UL.tree LI.here A { BACKGROUND-COLOR: #ededed } UL.tree LI.here A { BACKGROUND-COLOR: #ededed } DIV.treeContainer UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.open_folder { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: #ebeffa; FONT-SIZE: 95%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.exp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folder.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI A.collapse { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folderopen.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer H4.treehead { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 2px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.treeContainer H4.first { MARGIN: 0px 0px 2px } DIV#userTreeDiv { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead { BACKGROUND-IMAGE: none; MARGIN: 0px; BORDER-TOP: #ccc 1px dotted } DIV.treeContainer UL.tree LI.subhead H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.first A { BORDER-TOP: medium none } DIV.treeContainer UL.tree LI.subhead H4 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 6px } UL.tree LI.subhead:first-child { MARGIN-TOP: 0px } UL.tree LI.subhead:first-child > A { BORDER-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.treeSubhead-collapsed A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: normal } .tableOverflowControl { OVERFLOW-X: auto } .inventory { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 0px; BORDER-SPACING: 0; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-COLLAPSE: separate; BACKGROUND: #fff; COLOR: #000; CLEAR: both; PADDING-TOP: 0px } .inventory CAPTION { TEXT-ALIGN: left; COLOR: #999; FONT-SIZE: 85% } .inventory > THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .splashTable THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .inventory > THEAD TR TH:first-child { BORDER-LEFT: medium none; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .inventory > TBODY { BORDER-BOTTOM: #ccc 2px solid } .inventory > TBODY TR { BORDER-BOTTOM: #ccc 1px solid } .inventory > TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory > TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory#drawerItems TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory#drawerItems TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory > TBODY TR TH { TEXT-ALIGN: left; FONT-WEIGHT: normal } .inventory > TBODY TR TD:first-child { BORDER-LEFT: medium none } .inventory > TBODY .gray TD { BACKGROUND: #fff4bf } .inventory > TBODY .gray TH { BACKGROUND: #fff4bf } .inventory > THEAD TR TH.sorted { BACKGROUND: #ccc } TH.sorted { BACKGROUND: #ccc } .splashTable THEAD TR TH.sorted { BACKGROUND: #ccc } .inventory > TBODY TR TD.sorted { BACKGROUND: #eee } .inventory > THEAD TR TH.sorted A { COLOR: #000 !important; FONT-WEIGHT: bold } .sortable > THEAD TH A { COLOR: #666; MARGIN-RIGHT: 9px } .sortable > THEAD TH A:hover { COLOR: #333; TEXT-DECORATION: underline } .sortable A.sortheader { POSITION: relative; PADDING-RIGHT: 17px; DISPLAY: block; MARGIN-RIGHT: 0px; text-shadow: 0 1px 0 #fff } .sortable .sortarrow { COLOR: #ff0; TOP: 0px; RIGHT: 0px; TEXT-DECORATION: none; LEFT: auto } TR.high { BACKGROUND: #fff4bf } .high { BACKGROUND: #fff4bf } .disabledCell { BACKGROUND-COLOR: #f0f0f0 } .inventory .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .inventory > TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments { WIDTH: 100% } .inventory .dndHandle { POSITION: static; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 5px } .inventory .dndHandle .reorder IMG { HEIGHT: 20px } .inventory .dndHandle .reorder:hover IMG { HEIGHT: 20px } .inventory .dndHandle .reorder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory .dndHandle .reorder:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory TR:hover .dndHandle { BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px } .reorderable > TBODY TR:hover { -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset } .reorderable > TBODY TR:hover TD { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable > TBODY TR:hover TH { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable TBODY TR TD:first-child { BORDER-LEFT: transparent 1px solid } .inventory TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .inventory > TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .attachments TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .attachments TBODY TR { BORDER-TOP: #eee 1px solid } .inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } .attachments TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .attachments TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory > TBODY UL.subtabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } TABLE.inventory > TBODY UL.subtabs LI { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.status { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; BACKGROUND: #f9f9f9; COLOR: #000; FONT-SIZE: 90%; PADDING-TOP: 1px } DIV.status A IMG { VERTICAL-ALIGN: middle } DIV.status P { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left !important; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; LINE-HEIGHT: 10%; MARGIN: 2px auto 4px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } DIV.status P IMG { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #8dafaf; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 8px; PADDING-TOP: 0px } DIV.stopped P IMG { BACKGROUND: url(images/controls.png) #fff no-repeat -20px -180px } DIV.status A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.status DIV { POSITION: relative; TEXT-ALIGN: center } DIV.status A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } TABLE.inventory-simple { MARGIN: 0px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } TABLE.attachments THEAD TR.warningRow { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TABLE.inventory-simple THEAD TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } TABLE.inventory-simple TBODY TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TH { COLOR: #000 } TABLE.inventory-simple .removeCell { BACKGROUND: #ededed; COLOR: #777 } TABLE.inventory-simple .removeCell TD { COLOR: #999 } TABLE.inventory-simple .removeCell TH { COLOR: #999 } TABLE.inventory-simple .removeCell TD A IMG { FILTER: alpha(opacity=40); opacity: .4 } TABLE.inventory-simple .smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.inventory-simple TBODY TR.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TD { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TH { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.stepItems-reorder { BORDER-SPACING: 0; MARGIN-BOTTOM: 12px; FONT-SIZE: 85% } TABLE.gbColumns { ZOOM: 1; FONT-SIZE: 90% } TABLE.stepItems-reorder TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BACKGROUND: #fff; COLOR: #999 } TABLE.gbColumns THEAD TR TH { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TD { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TH.sorted { BORDER-LEFT: #777 1px solid; BACKGROUND: #999; BORDER-RIGHT: #777 1px solid } TABLE.gbColumns THEAD TR TH A { COLOR: #fff } TABLE.gbColumns THEAD TR TD A { COLOR: #fff } TABLE.stepItems-reorder THEAD TR.lowerHeader TH { BORDER-BOTTOM: #ccc 2px solid; COLOR: #333 } TABLE.stepItems-reorder TBODY TR TD.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder THEAD TR TH.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder TR TH.clearCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TD { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TH { BORDER-TOP: 0px } TABLE.stepItems-reorder THEAD TR:first-child { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; TEXT-ALIGN: right; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD SPAN.reorder { POSITION: relative; FILTER: alpha(opacity=100); WIDTH: 18px !important; DISPLAY: block; BACKGROUND: url(images/controls.png) #ededed no-repeat -177px -122px; HEIGHT: 20px; TOP: 2px; CURSOR: move; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; LEFT: auto; opacity: 1; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } TABLE.gbColumns TBODY TR TD SPAN.reorder { BACKGROUND: url(images/controls.png) #ededed no-repeat -237px -122px } TABLE.stepItems-reorder TBODY TR.frozenbar TD SPAN.reorder { TOP: 1px } TABLE.stepItems-reorder TBODY TR TD INPUT { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: 95%; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } TABLE.stepItems-reorder TBODY TR TD.points INPUT { WIDTH: 3em } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=text] { WIDTH: 90% } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=checkbox] { WIDTH: auto } TABLE.stepItems-reorder TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px 4px 0px 0px } TABLE.gbColumns TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px; WIDTH: auto } TABLE.gbColumns TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; PADDING-TOP: 6px } TABLE.gbColumns TBODY TR.frozenbar TD { BACKGROUND: #ccc; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: 0px } TABLE.gbColumns TFOOT TR.lastRow TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #999; HEIGHT: 2px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.frozen TD { BACKGROUND: #ededed } TABLE.gbColumns THEAD TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } TABLE.gbColumns TBODY TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } DIV.areaHighlight TABLE.gbColumns THEAD TR TD.clear { BACKGROUND: inherit } TD.clear { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozen TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TFOOT TR.lastRow TD.clear { BACKGROUND: inherit } TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.gbColumns TBODY TR.placeholder TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.placeholder TD.clear { BACKGROUND: inherit } UL.dragableHighlight LI TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozen TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TFOOT TR.lastRow TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TR.rowdrag { Z-INDEX: 1; BACKGROUND: #ccc } .insertImg { Z-INDEX: 20; POSITION: relative; TOP: 12px } .insertImgUp { Z-INDEX: 20; POSITION: absolute; RIGHT: -10px } TABLE.inventory > TBODY TR TD.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > THEAD TR TH.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > TBODY TR TD.hideCell { DISPLAY: none } TABLE.inventory > THEAD TR TH.hideCell { DISPLAY: none } .clickOrder { DISPLAY: none } TABLE.inventory > TBODY TR TD.clickOrder { BORDER-LEFT: medium none; BACKGROUND-COLOR: #ddd } TABLE.inventory TR TD.endCell { PADDING-BOTTOM: 0px !important; BACKGROUND-COLOR: #ddd !important; PADDING-LEFT: 0px !important; WIDTH: 1px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.inventory TR.orderRow TD.clickOrder { TEXT-ALIGN: center; BACKGROUND-COLOR: #ddd } TABLE.inventory TR.orderRow TD.clickOrder DIV { POSITION: relative } .sortedplus { BACKGROUND-IMAGE: url(images/controls.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 48% -995px } .dragCol { BACKGROUND-COLOR: #999 } TABLE.splashTable { BORDER-BOTTOM: #ccc 2px solid; MARGIN: 3px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.splashTable THEAD TR { COLOR: #999 } TABLE.splashTable THEAD TR TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } TABLE.splashTable THEAD TR TH A { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #666; TEXT-DECORATION: none } TABLE.splashTable THEAD TR TH A:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; TEXT-DECORATION: underline } TABLE.splashTable TBODY TR { BORDER-TOP: #ddd 1px solid } TABLE.splashTable TBODY TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TH { TEXT-ALIGN: left; COLOR: #000 } TABLE.splashTable TH.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.splashTable TD.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } .contentBlock A { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -450px; TEXT-DECORATION: none } .contentBlock A.collapse { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -1045px; TEXT-DECORATION: none } .contentBlock A.collapse:hover { TEXT-DECORATION: underline } .contentBlock A.hover { TEXT-DECORATION: underline } TABLE.reorderCols { MARGIN: 18px 0px 9px; WIDTH: 100%; BORDER-COLLAPSE: collapse; CLEAR: both; FONT-SIZE: 95% } TABLE.reorderCols THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #ededed; BORDER-TOP: #ccc 1px solid; CURSOR: move; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } TABLE.reorderCols THEAD TR TH.noReorderCol { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; CURSOR: default; BORDER-RIGHT: medium none } TABLE.reorderCols TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed; COLOR: #555 } TABLE.reorderCols THEAD TH SPAN.reorderToolTip { BACKGROUND: url(images/controls.png) #ddd no-repeat -347px -122px } TABLE.reorderCols THEAD TR TH.axis { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed 0px 50%; COLOR: #555 } .ghostTd { BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; FONT: 10px arial; BACKGROUND: #eee; HEIGHT: auto; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 2px } TABLE.reorderCols THEAD TH.dragging { BACKGROUND: #ccc } TABLE.reorderCols THEAD TH.hovering { BACKGROUND: #666 } TABLE.reorderCols THEAD TH.hovering IMG { DISPLAY: none } .rumble { MARGIN: 0px 0px 9px; BACKGROUND: url(images/selected_items.png) no-repeat -1974px center } .rumble_top { MARGIN: 12px 0px 0px; BACKGROUND: url(images/selected_items.png) no-repeat 12px center } #mapCanvasForm .rumble_top { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble_top { BORDER-BOTTOM: #eee 2px solid } .noBatchActions { BACKGROUND-IMAGE: none !important; PADDING-BOTTOM: 5px !important; PADDING-LEFT: 5px !important; PADDING-RIGHT: 5px !important; PADDING-TOP: 5px !important } .rumbleBuildList { MARGIN: 0px 0px 0px 18px; BORDER-TOP: #eee 2px solid } .rumbleBuildList UL LI { Z-INDEX: 1000 } .rumbleBuildListTop UL LI { Z-INDEX: 1000 } .rumble_top UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble_top UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .rumble UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .contentListPlain .rumble LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentListPlain .rumble_top LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble_top LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .selectList .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble_top LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble LI.listActionGroup A { DISPLAY: inline } .rumble_top LI.listActionGroup A { DISPLAY: inline } .paging { TEXT-ALIGN: right; FLOAT: right; CLEAR: left } .pagingprefs { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN-TOP: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 3px } .paging SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BORDER-RIGHT: #ccc 1px dotted; PADDING-TOP: 1px } .rumble_top .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .rumble .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .jumptopage INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } .jumptopage INPUT { WIDTH: 2em; FONT-WEIGHT: normal; -moz-border-radius: 0; -webkit-border-radius: 0 } .rumble_top .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .inventory_paging A { DISPLAY: inline-block } .inventory_paging IMG { DISPLAY: inline-block } .inventory_paging SPAN { DISPLAY: inline-block } .inventory_paging DIV { DISPLAY: inline-block } .jumptopage DIV { DISPLAY: inline-block } .inventory_paging A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px } .inventory_paging IMG { MARGIN: 2px 2px 3px } .inventory_paging A.inactive { FILTER: alpha(opacity=40); opacity: .4 } A.jumpToPageOpen { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } A.jumpToPageOpen:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } DIV.jumptopage INPUT#currentpage_bot { WIDTH: auto } DIV.jumptopage INPUT#currentpage_top { WIDTH: auto } INPUT#currentpage_bot { WIDTH: auto } INPUT#currentpage_top { WIDTH: auto } .jumptopage { FLOAT: right } .jumptopage DIV { MARGIN: 0px 0px 0px 3px } .jumptopage BUTTON { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; TOP: -2px; RIGHT: 0px; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .jumptopage BUTTON IMG { MARGIN: 0px } .rumble_top .secondaryControl { FLOAT: right } .rumble .secondaryControl { FLOAT: right } .key-valueTable TR { BORDER-BOTTOM: medium none } .key-valueTable TH { BORDER-BOTTOM: medium none } .key-valueTable TD { BORDER-BOTTOM: medium none } .key-valueTable TBODY { BORDER-BOTTOM: medium none } .key-valueTable TBODY TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TH { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TR:first-child TH { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TR:first-child TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TH { COLOR: #555 } .infoListWrapper .key-valueTable { MARGIN: 3px 9px 6px } TD.removeCell { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A IMG { FILTER: alpha(opacity=30); opacity: .3 } .contentList { MARGIN: -20px -30px } .buildList { MARGIN: -20px -30px } .contentListPlain { MARGIN: -20px -30px } .announcementList { MARGIN: -20px -30px } #bb-assessment-canvas .contentListPlain { MARGIN: 0px -30px } .gradingList { MARGIN: 0px -30px } .buildList#survey { MARGIN: 0px -30px } #manageFormCanvasForm .buildList { MARGIN: 0px -30px } #mapCanvasForm .buildList { MARGIN: 0px 30px } .hierarchy-page #toolSettingsForm #dataCollectionContainer { MARGIN: -10px -30px } .leftColumn-wide .contentListPlain { MARGIN: 0px } .contentList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .buildList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentListPlain > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .announcementList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPageItem { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentList > LI.read:first-child:hover { BORDER-TOP: transparent 1px solid } .buildList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentListPlain > LI:first-child { BORDER-TOP: transparent 1px solid } .announcementList > LI:first-child { BORDER-TOP: transparent 1px solid } #bb-assessment-canvas .contentListPlain > LI:first-child { BORDER-TOP-COLOR: #ccc } #bb-assessment-canvas .contentListPlain > LI { MIN-HEIGHT: 16px; PADDING-LEFT: 42px } #bb-assessment-canvas .contentListPlain > LI .item { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-assessment-canvas .contentListPlain > LI .details { PADDING-BOTTOM: 5px; PADDING-TOP: 12px } .takeQuestionDiv { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='_'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='step'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer H3.submittitle.steptitle { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } .takeQuestionDiv H3 { MARGIN: 0px } .takeQuestionDiv + H3 { PADDING-LEFT: 28px } #assessmentGradeForm #dataCollectionContainer { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .contentList > LI { MIN-HEIGHT: 50px } .buildList > LI { MIN-HEIGHT: 50px } .contentListPlain > LI { MIN-HEIGHT: 50px } .announcementList > LI { MIN-HEIGHT: 50px } .contentPageItem { MIN-HEIGHT: 50px } .liItem:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList > LI:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList LI:first-child:hover { BORDER-TOP-COLOR: #666 } .contentList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .gradingList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .liItem A[onclick*='toggleDetails'] { POSITION: relative; VISIBILITY: hidden; TOP: -6px; RIGHT: -19px } .liItem:hover A[onclick*='toggleDetails'] { VISIBILITY: visible } .liItem A[onclick*='toggleDetails'] IMG { VISIBILITY: hidden } .liItem A[title*='Hide'] { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 0px 0px } .liItem A[title*='Show'] { BACKGROUND: url(images/portlet_expand_alt_rev.png) no-repeat 0px 0px } .contentListPlain .item_icon { DISPLAY: none } .item { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; CURSOR: move; PADDING-TOP: 0px } .contentList .item { PADDING-BOTTOM: 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .gradingList .item { PADDING-RIGHT: 120px } .announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .announcementList-read .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } #announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .item:hover { CURSOR: move } .item:focus { CURSOR: move } .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .announcementList-read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .contentList-slim .read .item { PADDING-LEFT: 48px } .read .item:hover { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .read .item:focus { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .tab-groups H3.item { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 8px; MARGIN: 0px 11em 8px -12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tab-groups H3.item .reorder + SPAN { FONT-STYLE: italic; MARGIN: 0px 4px 0px 0px; FONT-FAMILY: Georgia; COLOR: #999; FONT-SIZE: 90%; FONT-WEIGHT: normal } .item_icon { POSITION: absolute; MARGIN: 0px; TOP: 12px; LEFT: 24px } .read .item_icon { MARGIN: 0px; LEFT: 18px } .item H3 { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item .contextMenuContainer { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item H3 + .contextMenuContainer { POSITION: relative; TOP: 2px } .tab-groups .item .contextMenuContainer { FLOAT: none } .item INPUT[type=checkbox] { MARGIN: 2px 6px 0px -6px; FLOAT: left } .iconsOnly { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 24px auto; WIDTH: 80% } .iconsOnly LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 0px; FLOAT: left !important; PADDING-TOP: 0px } .iconsOnly > LI:first-child { BORDER-TOP-COLOR: #ccc } .iconsOnly .read { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconsOnly .item_icon { PADDING-BOTTOM: 0px; MIN-HEIGHT: 50px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 12px; LEFT: auto } .iconsOnly .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MIN-HEIGHT: 3em; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .iconsOnly .read .item { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .iconsOnly .item H3 { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly .item .contextMenuContainer { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly LI:hover .item_icon { BACKGROUND: #ededed } .iconsOnly LI:hover .item { BACKGROUND: #ededed } .iconsOnly LI:focus .item_icon { BACKGROUND: #ededed } .iconsOnly LI:focus .item { BACKGROUND: #ededed } .iconsOnly .read .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .read .item_icon { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read:hover .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:hover .item { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item { BACKGROUND: none transparent scroll repeat 0% 0% } .buildList LI INPUT { MARGIN: 2px 8px; FLOAT: left } .buildList INPUT.browse { MARGIN: 0px 0px 6px } .buildList INPUT.genericButton { MARGIN: 0px 0px 6px } .buildList INPUT[type=button] { MARGIN: 0px 0px 6px } .contentListRight { POSITION: absolute; RIGHT: 6px; FONT-WEIGHT: normal; LEFT: auto } .pagedContentListRight { TOP: 4px } .contentListRightOffset { MARGIN-RIGHT: 12em } .contentList .details { PADDING-LEFT: 60px } .contentListPlain .contentListRight + .details { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; PADDING-LEFT: 28px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } .announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } #announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } .contentList-slim .read .details { MARGIN-LEFT: 48px } .staffInfoList .details { MARGIN-RIGHT: 160px } .staffInfoList .hasPhoto .details { MIN-HEIGHT: 135px } .details > P { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .details .note { FONT-WEIGHT: bold } .details > P.important { PADDING-BOTTOM: 0px; MARGIN: 3px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .details > P.important SPAN { COLOR: #888; FONT-WEIGHT: normal } .itemDetails { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .itemDetails P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .announcementInfo P SPAN { COLOR: #999 } .announcementInfo SPAN { COLOR: #999 } .itemDetails SPAN { COLOR: #999 } .announcementInfo P SPAN SPAN { FONT-SIZE: 95% !important } .noItems { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } .additional + P .warnFont { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } #listContainer .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .additional + P .warnFont { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { TEXT-ALIGN: center; PADDING-TOP: 100px } .hierarchy-page .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { MARGIN: 0px auto; DISPLAY: block } .additional + P .warnFont { DISPLAY: block; PADDING-TOP: 100px } .details .attachments { WORD-WRAP: break-word; MARGIN-BOTTOM: 9px; WORD-BREAK: normal } .buildList > LI.separator { Z-INDEX: 0; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; MIN-HEIGHT: 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #ededed; TOP: 0px; PADDING-TOP: 14px; LEFT: 0px } .separator H3.item { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .external-breadcrumbs .receipt { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .separator .line { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: relative; MARGIN: 0px 24px 0px 30px; TOP: 6px; LEFT: 0px } .separator .text { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .external-breadcrumbs .receipt { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .buildList .detailList .hidden { DISPLAY: none } .buildList .detailList .tagContainer { POSITION: relative } .buildList .detailList .tagContainer .hidden { DISPLAY: none } .buildList .detailList .tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer .newTagForm { BORDER-LEFT: #999 1px dotted; MARGIN-LEFT: 6px } .tagContainer .newTagForm LABEL { PADDING-LEFT: 6px } .currentTags { Z-INDEX: 100; POSITION: absolute; LINE-HEIGHT: 1.8; WIDTH: 16em; ZOOM: 1; DISPLAY: none; OVERFLOW: hidden; TOP: 1.2em; RIGHT: 0px } .currentTags SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 18px } .currentTags A { FONT-WEIGHT: bold } .currentTags A.closeCloud { POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 1px; LINE-HEIGHT: 1; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; TOP: 0px; PADDING-TOP: 0px; LEFT: 0px } .auto_complete { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; WIDTH: 12em; BACKGROUND: #e2eefe; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid } .auto_complete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .auto_complete UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3%; WIDTH: 96%; PADDING-RIGHT: 1%; OVERFLOW: hidden; CURSOR: pointer; PADDING-TOP: 2px } .auto_complete UL LI.selected { BACKGROUND-COLOR: #fff } .auto_complete UL STRONG.highlight { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .freq1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 90%; PADDING-TOP: 0px } .freq2 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 105%; PADDING-TOP: 0px } .freq3 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 120%; PADDING-TOP: 0px } .freq4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 135%; PADDING-TOP: 0px } .freq5 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 150%; PADDING-TOP: 0px } .freq6 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 165%; PADDING-TOP: 0px } .freq1:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq2:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq3:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq4:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq5:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq6:hover { BACKGROUND: white; TEXT-DECORATION: none } .currentTags A.tagDisabled { FILTER: alpha(opacity=70); FONT-WEIGHT: normal; TEXT-DECORATION: none; opacity: .7 } .currentTags A.tagDisabled:hover { BACKGROUND: none transparent scroll repeat 0% 0% } .tab-groups .tab-group-label { FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #999 } .subList { MARGIN: 3px 0px 6px } .subList-reorder { MARGIN: 3px 0px 6px } .subList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .buildList .detailList { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .subList-reorder LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 6px } .subList-reorder LI:hover { BORDER-BOTTOM-COLOR: #bbb !important; BORDER-TOP-COLOR: #bbb !important; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #bbb !important; BORDER-LEFT-COLOR: #bbb !important } .subList LI A IMG { VERTICAL-ALIGN: middle } .subList-reorder LI A IMG { VERTICAL-ALIGN: middle } .subList LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList-reorder LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList LI P { VISIBILITY: hidden } .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .buildList .detailList LI .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder .itemDetails { DISPLAY: none } .subList-reorder .details { DISPLAY: none } .subList .details { DISPLAY: none } .itemDetails + .details { OVERFLOW: visible; MARGIN-RIGHT: 13em } .subList LI P SPAN { FONT-WEIGHT: bold } .subListArtifact { CLEAR: both } .detailList .subListArtifact { CLEAR: both } .subListArtifact LI { POSITION: static } .detailList .subListArtifact LI { POSITION: static } .detailList .subListArtifact { ZOOM: 1 } .detailList .subListArtifact LI { ZOOM: 1 } .detailList .subListArtifact LI A { ZOOM: 1 } .buildList .detailList { MARGIN: 0px 0px 0.6em 0.7em } .buildList .detailList .subList { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.buildList UL.detailList OL.subList { LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: decimal } UL.buildList UL.detailList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 0.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: table-row; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } UL.buildList UL.detailList LI SPAN { WIDTH: 135px; DISPLAY: block; FLOAT: left; FONT-WEIGHT: bold } UL.buildList UL LI > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; WIDTH: 79%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: 135px; PADDING-TOP: 0px } UL.buildList UL LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } UL.noimg LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } .buildList .pageBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } .buildList .sectionBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } DIV.itemHeaderControl { POSITION: absolute; TOP: 9px; RIGHT: 14.5em } DIV.itemHeaderControl A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.cartMode { PADDING-BOTTOM: 49px } .addedRow { COLOR: #999 } TABLE.sortable TBODY TR.addedRow TH LABEL A { COLOR: #999 } .addedRow TD A { COLOR: #999 } .addedRow { } .addedRow IMG { FILTER: alpha(opacity=50); opacity: .5 } TABLE#datatable2 TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 THEAD TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .itemSelector { MARGIN: 0px auto; WIDTH: 20px; HEIGHT: 20px } .itemSelector INPUT { FILTER: alpha(opacity=0); opacity: 0 } .available { BACKGROUND: url(../../../images/ci/ng/available_ti.png) no-repeat 0px 0px } .inprogress { BACKGROUND: url(../../../images/ci/ng/progress.png) red no-repeat 0px 0px } .remove { BACKGROUND: url(../../../images/ci/ng/remove_ti.png) no-repeat 0px 0px } .itemTray { Z-INDEX: 10000; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 18px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .picker .itemTray { RIGHT: 12px; LEFT: 12px } DIV.itemTrayContentPane { LEFT: 200px } DIV.itemTrayContentPaneWide { LEFT: 0px } .itemTray H2 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H3 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H2 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H3 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H2 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H3 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H2 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray H3 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray DIV.noItems { TEXT-ALIGN: center; COLOR: #777 } .itemTray #cartList { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .itemTray #selectedItemsWrapper { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #777; PADDING-TOP: 4px } .itemTray .cartTableWrapper { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; OVERFLOW-Y: auto; BACKGROUND: #fff; MAX-HEIGHT: 130px; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .sideTOC .cartTableWrapper { OVERFLOW: auto } #count { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .itemTray #numberOfElements { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #progress { Z-INDEX: 300; POSITION: absolute; MARGIN: 300px 50%; WIDTH: 100px; DISPLAY: none } #progress DIV { MARGIN-LEFT: -100% } #cartSubmit { Z-INDEX: 200 } #cartList FIELDSET { PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #f6f6f6; PADDING-TOP: 3px } #cartList FIELDSET UL LI INPUT[type=text] { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 2.3em; PADDING-RIGHT: 0px; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 0px } .itemGallery { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .itemGallery > LI { TEXT-ALIGN: center; MARGIN: 5px 5px 20px; WIDTH: 1.2em; ZOOM: 1; VERTICAL-ALIGN: top; PADDING-TOP: 0.06em; _height: 130px } .itemGallery .stackFix { WIDTH: 100%; HEIGHT: auto } .itemIconHolder { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px auto 0.05em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 1em; PADDING-TOP: 0px } .itemIconHolder A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; ZOOM: 1; DISPLAY: block; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .itemIconHolder A:hover { BORDER-BOTTOM-COLOR: #777; BORDER-TOP-COLOR: #777; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777 } .itemIconWrapper { BORDER-BOTTOM: #f1f1f1 0.02em solid; POSITION: absolute; BORDER-LEFT: #f1f1f1 0.02em solid; MARGIN: 0px 50%; WIDTH: auto; BOTTOM: 0px; BORDER-TOP: #f1f1f1 0.02em solid; BORDER-RIGHT: #f1f1f1 0.02em solid } .x-small LI { WIDTH: 1.8em; FONT-SIZE: 70px } .small LI { FONT-SIZE: 100px } .normal LI { FONT-SIZE: 140px } .large LI { FONT-SIZE: 180px } .x-large LI { FONT-SIZE: 220px } .u_resetFont-px { FONT-SIZE: 12px } .itemIconLink-vertical A { WIDTH: 0.78em; HEIGHT: 0.9em } .itemIconLink-square A { WIDTH: 0.78em; HEIGHT: 0.78em } .itemIconLink-horizontal A { WIDTH: 1em; HEIGHT: 0.78em } .itemIconLink-vertical IMG { WIDTH: 0.8em; HEIGHT: 0.9em; VERTICAL-ALIGN: top } .itemIconLink-square IMG { WIDTH: 0.8em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-horizontal IMG { WIDTH: 1em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-vertical .itemIconWrapper { LEFT: -0.39em } .itemIconLink-square .itemIconWrapper { LEFT: -0.39em } .itemIconLink-horizontal .itemIconWrapper { LEFT: -0.5em } .itemInfo { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-SIZE: 12px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.2em } .itemInfo LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; LINE-HEIGHT: 1.25em; MARGIN: 0px; WIDTH: 100%; FONT-SIZE: 95%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .itemInfo LI SPAN { VERTICAL-ALIGN: top } .itemInfo LI .label { TEXT-ALIGN: right } .itemInfo .cmimg { WIDTH: 18px } .itemInfo .cmimg IMG { WIDTH: 18px } .itemInfo .title { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .itemInfo INPUT[type='text'] { WIDTH: 100% } .itemInfo .high { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; BACKGROUND: #fff1c5; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .lb-content .itemInfo { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 3px } .lb-content .itemInfo LI { LINE-HEIGHT: 1.45em } .lb-content .itemInfo .title { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .iconGallery > LI { MARGIN: 5px 5px 12px; WIDTH: 75px } .iconGallery .itemIconHolder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; HEIGHT: 60px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemIconHolder A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemTitle { COLOR: #666; FONT-SIZE: 85% } .iconGallery .itemIconWrapper { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: auto; PADDING-RIGHT: 4px; BACKGROUND: #fff; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px; LEFT: -30px } .sideTOC_panelMin .container { POSITION: static !important } .sideTOC_panel .container { POSITION: static !important } .sideTOC_panelMax .container { POSITION: static !important } .tocWrapper { Z-INDEX: 200; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 0px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .tocHidden { TOP: -10000px !important } .tocHead { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #333; PADDING-TOP: 10px } .tocHead H2 { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .tocActions { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .sideTOC H2 { FLOAT: none !important; FONT-SIZE: 110%; text-shadow: 0 1px 0 #f0f0f0 } .tocActions { WHITE-SPACE: nowrap } .tocActions A { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions SPAN { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions > IMG { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .actionBar .tocNavText { PADDING-BOTTOM: 13px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; COLOR: #eee; PADDING-TOP: 13px } .actionBar .tocNavText + A { MARGIN-RIGHT: 12px } .actionBar .tocNavText + IMG { MARGIN-RIGHT: 12px } .tocActions SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .tocTreeWrapper { PADDING-BOTTOM: 0px; OVERFLOW-Y: auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .sideTOC .tocTreeWrapper { OVERFLOW: auto } UL#tocTree LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL#tocTree A.itemActive { FONT-WEIGHT: bold; TEXT-DECORATION: none } UL#tocTree SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; COLOR: #555; PADDING-TOP: 0px } .treeNodeIcon { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .sideTOC { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 200px; BOTTOM: auto; PADDING-RIGHT: 0px; BACKGROUND: #ddd; BORDER-TOP: #aaa 1px solid; TOP: 0px; RIGHT: auto; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -2px 0 2px rgba(0, 0, 0, .2) inset, 0px 3px 2px #ddd inset, 0px -3px 2px #ddd inset; -webkit-box-shadow: none; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: none } .sideTOCMinimize { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 9px !important; BOTTOM: auto; PADDING-RIGHT: 0px; BORDER-TOP: medium none; TOP: 0px; RIGHT: auto; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } .sideTOCMinimize .tocActions { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 1px; LEFT: -24px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .sideTOCMinimize .tocActions A { MARGIN: -1px 0px 0px; DISPLAY: block } .tocBottom_pullExpanded { LEFT: 228px } .tocBottom_pullCollapsed { LEFT: 18px } .tocSide_pullExpanded { TOP: 4px; LEFT: 222px } .tocSide_pullCollapsed { LEFT: 13px } .sideTOC_panel { PADDING-LEFT: 201px } .sideTOC_panelMin { PADDING-LEFT: 21px } .sideTOC_panelMax { PADDING-LEFT: 351px } .tocBottom_min { PADDING-BOTTOM: 30px } .tocBottom_max { PADDING-BOTTOM: 330px } .tocBottom_open { PADDING-BOTTOM: 160px } .tocBottom_open .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_max .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_min .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panel .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMax .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMin .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .localViewToggle { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .localViewToggle UL { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .localViewToggle UL LI { FLOAT: right } .localViewToggle UL LI.active { POSITION: relative } .localViewToggle A { PADDING-BOTTOM: 7px; TEXT-TRANSFORM: inherit; MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; DISPLAY: block; FONT-SIZE: 90%; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .localViewToggle A:hover { TEXT-DECORATION: underline } .localViewToggle .active A:hover { TEXT-DECORATION: none } .localViewToggle A.active { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } DIV.localViewToggle H2 { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } .localViewToggle A.active:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } DIV.localViewToggle H2:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .localViewToggle .separator { BORDER-LEFT: #d7bb66 1px dotted; PADDING-LEFT: 6px; MARGIN-LEFT: 6px } .localViewToggle A.miniComboButton { BORDER-BOTTOM: #d7bb66 1px solid; BORDER-LEFT: #d7bb66 1px solid; PADDING-RIGHT: 16px; BACKGROUND: url(images/controls.png) #f5e7bd no-repeat -1px -500px; COLOR: #444; BORDER-TOP: #d7bb66 1px solid; BORDER-RIGHT: #d7bb66 1px solid; TEXT-DECORATION: none !important } .containerTabs { MARGIN: 6px 24px 0px; FONT-SIZE: 100% } .containerTabs LI { POSITION: relative; FLOAT: left } .containerTabs LI A { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI H3 { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs LI H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs .active A { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:hover { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:focus { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active H3 { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .active H3:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .tabhead H3 { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 18px; COLOR: #555; PADDING-TOP: 9px } .collapseTabs .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #d1eaef } .collapseTabs .containerTabs .active A:before { CONTENT: none } .portlet .containerTabs { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 8px } .portlet .containerTabs LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .containerTabs LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } .portlet .containerTabs .active A { MARGIN: 0px } .collapseTabs .containerTabs { MARGIN: 0px } .portlet .containerTabs .active A:before { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:after { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:before { BORDER-BOTTOM-COLOR: #ddd } .portlet .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #fff4bf; BOTTOM: -1px } .mapTabs { POSITION: relative; MARGIN: 20px -30px 0px; BACKGROUND: #d1eaef; CLEAR: both; BORDER-TOP: #aaa 1px solid; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .lesson-plan-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { BORDER-BOTTOM: #bbb 1px solid } .evidence-page .mapTabs LI:before { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:after { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:before { Z-INDEX: 100; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #bbb 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 1px } .evidence-page .mapTabs LI.active + LI:after { BORDER-LEFT-COLOR: #eaeaea } .evidence-page .mapTabs LI:first-child:before { DISPLAY: none } .evidence-page .mapTabs LI:first-child:after { DISPLAY: none } .evidence-page .mapTabs LI A { PADDING-LEFT: 30px } .evidence-page .mapTabs LI.active H3 { PADDING-LEFT: 30px } .mapTabs UL { MARGIN-TOP: 0px; MARGIN-LEFT: 0px } DIV.mapTabs UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mapTabs UL LI.active H3 { POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; BACKGROUND: #eaeaea; FONT-SIZE: 100%; PADDING-TOP: 14px } .mapTabs UL LI.active H3:before { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #eaeaea; BOTTOM: -1px } .mapTabs UL LI.active:first-child H3:after { MARGIN-LEFT: 0px } .mapTabs UL LI.active:first-child H3:before { MARGIN-LEFT: 0px } .lesson-plan-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .hierarchy-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .lesson-plan-page .mapTabs UL LI.active H3:before { DISPLAY: none } .hierarchy-page .mapTabs UL LI.active H3:before { DISPLAY: none } .evidence-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #fff } .mapTabs UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; COLOR: #01869e; FONT-SIZE: 100%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .mapTabs UL LI A:hover { TEXT-DECORATION: underline } .mapTabs UL LI SPAN:hover { BORDER-BOTTOM-STYLE: solid } .mapTabs A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs LI:first-child A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 54px; BACKGROUND-POSITION: 30px 50% } .mapTabs UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI:first-child H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI DIV { PADDING-BOTTOM: 7px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: none; PADDING-TOP: 7px } .mapTabs UL LI.saveTab A { DISPLAY: none } UL.containerTabs LI.saveTab IMG { DISPLAY: none } .mapTabs UL LI.saveFadeIn { FILTER: alpha(opacity=0); opacity: 0 } .mapTabs UL LI.saveTab DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/tab_receipt_back.gif) #44b10e repeat-x center bottom; COLOR: white; FONT-WEIGHT: bold; PADDING-TOP: 5px } DIV.mapHelp { PADDING-BOTTOM: 0px; MARGIN: -1px 0px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff1c5; PADDING-TOP: 4px } UL.setStatus { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 3px; LIST-STYLE-TYPE: none; MARGIN: 15px 0px 9px 30px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #eee 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 3px } UL.setStatus LI { MARGIN: 0px 6px 0px 0px; FONT-SIZE: 95% } UL.setStatus LI INPUT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.setStatus LI LABEL { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 1px 0px } UL.setStatus LI LABEL.complete { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_complete.gif) no-repeat 1px 0px } FORM.mapCanvasForm DIV.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } FORM.mapCanvasForm H3.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } .mapTabs .containerTabs { BORDER-BOTTOM: 0px } #mapCanvasForm { MARGIN: 0px -30px } #mapCanvasForm #containerDiv { MARGIN: 20px 0px } .evidence-page .infoListWrapper H3 A.itemHead { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .infoListWrapper H3 A.itemHeadOpen { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .leftColumn-narrow { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f9f9f9; MARGIN: 0px; PADDING-LEFT: 6px; WIDTH: 26%; PADDING-RIGHT: 6px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; border-radius: 3px 3px 3px 3px } .evidence-page .leftColumn-wide { WIDTH: 69% } .sessionBox { WIDTH: 95% } .sessionBox .key-valueTable { } .sessionBox .key-valueTable TBODY TD { PADDING-RIGHT: 40px } .sessionBox .key-valueTable TBODY TH { PADDING-RIGHT: 40px } .evidence-page .criteriaSummary { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; MARGIN: 0px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 12px } .evidence-page .paletteItems LI { MARGIN-LEFT: 0px } .paneTabs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: -12px 0px 12px; ZOOM: 1; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .subtabs-framed .paneTabs { -moz-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -webkit-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; border-radius: 0 } .paneTabs UL { CLEAR: both } .paneTabs UL LI { Z-INDEX: 200; POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs .active { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs A { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 12px } .paneTabs UL LI:first-child A { BORDER-LEFT: 0px } .paneTabs A:hover { TEXT-DECORATION: underline } .paneTabs .active A:hover { TEXT-DECORATION: none } .paneTabs .active A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:focus { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active H3 { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:after { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #ccc 8px solid; BOTTOM: 0px } .paneTabs .active A:after { BOTTOM: -1px } .paneTabs .activepersonal A { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .activepersonal A:hover { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .personal A { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dedede; TEXT-DECORATION: none; PADDING-TOP: 3px } .paneTabs .external A { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #dedede no-repeat 2px center } .paneTabs .external A:hover { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #fff1c5 no-repeat 2px center } .paneTabs .activepersonal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs .personal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs A.paneTabOptions { DISPLAY: none } .paneTabs .activepersonal:hover A.paneTabOptions { FILTER: alpha(opacity=100); opacity: 1 } .paneTabs A.hiddenTabsLink { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center 6px } .paneTabs A.hiddenTabsLink IMG { FILTER: alpha(opacity=0); WIDTH: 2px; HEIGHT: 2px; opacity: 0 } .panelTabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .panelTabs LI { BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FLOAT: right; TOP: 2px !important; RIGHT: -3px; PADDING-TOP: 0px !important } .panelTabs LI.active { Z-INDEX: 2 } .panelTabs LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI.active A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI A:hover { BACKGROUND-COLOR: #f6f6f6 } .panelTabs LI.active A { BORDER-BOTTOM: 0px; COLOR: #333; FONT-WEIGHT: bold } .panelTabs LI.active A.preview { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 2px solid; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .panelTabs LI.active A.edit { BORDER-BOTTOM: 0px; MARGIN: 0px } .collapseTabs { MARGIN-BOTTOM: 12px } .collapseTabsData { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; BACKGROUND: #d1eaef; PADDING-TOP: 12px; -moz-border-radius: 3px } .containerTabsCollapsed { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .collapseTabs LI A { TEXT-DECORATION: underline } .collapseTabs LI.active { Z-INDEX: 1000 } .sequenceMapHead { MARGIN: 6px 0px } .sequenceMapHead H3 { MARGIN: 12px 0px 6px } .sequenceMapHead P { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 0px } DIV.sequenceMapHead DIV.actionBar { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #fff7de; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.searchResultList-sortOptions { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: right; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; MIN-HEIGHT: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 15px; PADDING-TOP: 10px } DIV.searchResultList-sortOptionsCount { WIDTH: auto; FLOAT: left } DIV.dropzone { BORDER-BOTTOM: #aaa 2px dashed; BORDER-LEFT: #aaa 2px dashed; BORDER-TOP: #aaa 2px dashed; BORDER-RIGHT: #aaa 2px dashed; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -moz-border-radius: 3px; -webkit-border-radius: 3px } .container DIV.dropzone { TOP: 3px !important } .modalOverlay { Z-INDEX: 90; POSITION: fixed; FILTER: alpha(opacity=1); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .01 } .cmdiv { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .menumini { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.quickAddPal { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.keyboardAccess { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .nav .sub UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .gb_currView.nav .sub > UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .menumini UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .keyboardAccess { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } SPAN.currentTags { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea-slim { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .previewArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .jumptopage { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .bcContent .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI IMG + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } DIV.treeContainer UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #learningUnitToc UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #loginLang UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .actionBar .mainButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .secondaryButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBarMicro .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton:first-child .flyout { MARGIN: 0px 0px 0px -2px } DIV.calPicker.quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI IMG + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } DIV.treeContainer UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } #learningUnitToc UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.nestedList { -moz-box-shadow: none; -webkit-box-shadow: none } .liveArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } .previewArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } #addFolderForm { MARGIN: 0px -30px } UL.tree LI A + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI IMG + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } DIV.treeContainer UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #learningUnitToc UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .builderItem .liveArea { Z-INDEX: 100; POSITION: absolute; TOP: 12px; LEFT: 22px } .previewArea { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; MARGIN-TOP: 0px; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .jumptopage { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 8px } .jumptopage LABEL { FONT-SIZE: 90% } .liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.secondaryButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { OVERFLOW: hidden } .actionBar UL LI.secondaryButton A.liveAreaTab { OVERFLOW: hidden } .liveArea-slim { PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 3px } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .columnActions .nav .sub UL { MARGIN-TOP: 0px } .nav .sub UL { POSITION: absolute; DISPLAY: none } .nav .sub .flyout { POSITION: absolute; DISPLAY: none } .nav .sub UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .nav .sub UL UL { DISPLAY: block } .nav .sub .flyout UL { DISPLAY: block } .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .nav .sub:hover .flyout { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { TOP: 18px } .rumble_top .nav .sub:hover UL { TOP: 18px } .rumble .nav .sub:hover UL { TOP: 18px } .quickAddPal { WIDTH: auto } .quickAddColor { WIDTH: 311px } .quickAddColor A.genericButton { MARGIN: 2px 0px; FLOAT: left } .cmdiv { Z-INDEX: 1150 !important; BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .cmdiv UL { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; WIDTH: 180px; PADDING-RIGHT: 4px; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 3px } .cmdiv UL:first-child { BORDER-TOP: medium none } .menumini UL:first-child { BORDER-TOP: medium none } .cmdiv UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .menumini UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .nav .sub UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .menumini A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } #loginLang UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: auto; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .nav .sub UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .nav LI.sub UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .actionBarMicro .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .actionBarMicro .nav LI.sub UL LI A:focus { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:focus { BACKGROUND-IMAGE: none } .nav LI.sub UL LI A:focus { BACKGROUND-COLOR: #fff !important } .cmdiv A:focus { BACKGROUND-COLOR: #fff !important } .menumini A:focus { BACKGROUND-COLOR: #fff !important } .nav .sub UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .paneTabs .nav .sub UL LI A { TEXT-ALIGN: left } .timediv UL LI A:hover { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { BACKGROUND-COLOR: #369; COLOR: #444 } .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; LEFT: 0px } .topTabs-compact .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; RIGHT: 0px; LEFT: auto } .cmdiv LI.contextmenubar_top { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .menumini LI.contextmenubar { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-border-radius: 0; -webkit-border-radius: 0 } .quickAddPal H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .keyboardAccess H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .quickAddPalHeader { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .comText .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .e_expandArea .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess P.paletteHelp { BORDER-BOTTOM: #fc0 1px solid; BORDER-LEFT: #fc0 1px solid; PADDING-BOTTOM: 3px; MARGIN: 6px 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; WHITE-SPACE: normal; BACKGROUND: #fff1c5; FONT-SIZE: 90%; BORDER-TOP: #fc0 1px solid; BORDER-RIGHT: #fc0 1px solid; PADDING-TOP: 3px } .bcMenuDiv-1 { WIDTH: 190px } .bcMenuDiv-2 { WIDTH: 380px } .bcMenuDiv-3 { WIDTH: 570px } .bcMenuDiv-4 { WIDTH: 760px } .bcMenuDiv-5 { WIDTH: 950px } .flyout { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 12px !important; PADDING-RIGHT: 12px !important; PADDING-TOP: 9px !important } .nav .sub .flyout DIV { POSITION: static; PADDING-BOTTOM: 6px; MARGIN: 0px; MIN-HEIGHT: 1px; FLOAT: left } .flyout H3 { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 95% Georgia, serif; LETTER-SPACING: 2px; PADDING-TOP: 0px } .flyout H3 .line { HEIGHT: 1px; BORDER-TOP: #ccc 1px solid } .flyout H3 .text { BACKGROUND: #d1eaef } .nav .sub .flyout UL { Z-INDEX: 1000; BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted; BORDER-RIGHT: 0px; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .nav .sub .flyout DIV H3 + UL { BORDER-TOP: 0px } .nav .sub .flyout DIV UL:first-child { BORDER-TOP: 0px } .nav .sub .flyout A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .quickAddPal .colorlist { MARGIN: 6px 0px 9px 6px; WIDTH: 288px } .quickAddPal .stepcontent .colorlist LI { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 14px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 14px; OVERFLOW: hidden; BORDER-TOP: #333 1px solid; CURSOR: pointer; BORDER-RIGHT: #333 1px solid; PADDING-TOP: 0px } .quickAddPal .colorlist LI A { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:link { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: 12px; HEIGHT: 12px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .quickAddPal .colorlist LI A:active { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A:focus { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:active { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:focus { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorPreview { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: white; PADDING-TOP: 3px } .quickAddPal .colorPreview IMG { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #444 1px solid; MARGIN: 3px; WIDTH: 42px; DISPLAY: block; BACKGROUND: black; FLOAT: left; HEIGHT: 42px; BORDER-TOP: #444 1px solid; BORDER-RIGHT: #444 1px solid } .quickAddPal .colorPreview DIV { WIDTH: 66%; FLOAT: left; MARGIN-LEFT: 3px } .quickAddPal .colorPreview SPAN { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 0px } SPAN.title_color_name { COLOR: #666 } .receipt { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .warning { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .inlineDialog { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .contentPaneWide.tabbedPane .receipt { Z-INDEX: 201; BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; PADDING-BOTTOM: 12px; MARGIN: -12px 0px 10px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .contentPane .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .contentPaneWide .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .container .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px; box-shadow: none } .receipt ~ #editmodeWrapper { Z-INDEX: 1; POSITION: relative } .receipt ~ .contentBox { Z-INDEX: 1; POSITION: relative } .sideTOC_panel .receipt ~ #editmodeWrapper { POSITION: static } .sideTOC_panel .receipt { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .tabbedPane .receipt A.close IMG { DISPLAY: none } .contentPane .receipt A.close IMG { DISPLAY: none } .contentPaneWide .receipt A.close IMG { DISPLAY: none } A.closeCopyright IMG { DISPLAY: none } .tabbedPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPaneWide .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .receipt A.close:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { } .receipt A.close:hover:before { COLOR: #fff } A.closeCopyright:hover:before { COLOR: #fff } .inlineDialog { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .inlineReceipt { POSITION: absolute; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .miniReceipt { Z-INDEX: 300; BORDER-BOTTOM: #bbb 1px solid; POSITION: absolute; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .bad { COLOR: #fff; FONT-WEIGHT: bold } .good { COLOR: #fff; FONT-WEIGHT: bold } .removing { COLOR: #fff; FONT-WEIGHT: bold } .adding { COLOR: #fff; FONT-WEIGHT: bold } .infoReceipt { COLOR: #fff; FONT-WEIGHT: bold } .brokenFileLink { COLOR: #fff; FONT-WEIGHT: bold } .portlet SPAN.warning.due { COLOR: #fff; FONT-WEIGHT: bold } .good A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .removing { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .brokenFileLink { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .portlet SPAN.warning.due { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .container .warningReceipt { PADDING-RIGHT: 24px } .warningReceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.areceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.close:before { } .contentPane .warningReceipt A.close { TOP: 5px; RIGHT: 5px } .warningReceipt A.close:hover:before { } .good { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .adding { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .infoReceipt { BORDER-BOTTOM-COLOR: #62758f; BORDER-TOP-COLOR: #62758f; BACKGROUND: #6d8aaf; BORDER-RIGHT-COLOR: #62758f; BORDER-LEFT-COLOR: #62758f } .attention { BORDER-BOTTOM-COLOR: #fc3; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #fc3; MARGIN: 0px 0px 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff4bf; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; BORDER-LEFT-WIDTH: 2px; FONT-WEIGHT: normal; PADDING-TOP: 4px } .removing { FONT-WEIGHT: normal } .adding { FONT-WEIGHT: normal } .brokenFileLink { FONT-WEIGHT: normal } .portlet SPAN.warning.due { FONT-WEIGHT: normal } .brokenFileLink { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet SPAN.warning.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .infoBox { BORDER-BOTTOM: #afdf61 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #afdf61 1px solid; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #afdf61 1px solid; BORDER-RIGHT: #afdf61 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .infoBox > .message { DISPLAY: block; MARGIN-BOTTOM: 4px } .info-ok { BORDER-BOTTOM-COLOR: #afdf61; BORDER-TOP-COLOR: #afdf61; BACKGROUND: #d9efa4; COLOR: #360; BORDER-RIGHT-COLOR: #afdf61; BORDER-LEFT-COLOR: #afdf61 } .nestedReceipt { Z-INDEX: 1001; PADDING-BOTTOM: 12px !important; MARGIN: 0px 20% 6px 0px; PADDING-LEFT: 12px !important; PADDING-RIGHT: 30px !important; PADDING-TOP: 6px !important } [id*='receipt_nested'].receipt { PADDING-RIGHT: 28px } .columnMsgWrapper { MARGIN-LEFT: 60% } .columnMsgWrapper .column-2 { MIN-HEIGHT: 1px } .smsIssue { POSITION: relative; MARGIN: 3px 3px 9px } .t2vIssue { POSITION: relative; MARGIN: 3px 3px 9px } .bubbleStem-bottom-center { BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: transparent 10px solid; WIDTH: 0px; BOTTOM: -12px; HEIGHT: 0px; MARGIN-LEFT: -8px; BORDER-TOP: #fc3 12px solid; BORDER-RIGHT: transparent 10px solid; LEFT: 50% } .nextStepsReceipt { BACKGROUND-IMAGE: url(images/reorder_bg.png); POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4; BACKGROUND-COLOR: #eee; MARGIN: 10px -30px -20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #545454; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3) } .nextStepsText { PADDING-BOTTOM: 18px; MARGIN: 0px 0px 0px 20px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fefefe; PADDING-TOP: 18px } .nextStepsText H5 { MIN-WIDTH: 6em; LINE-HEIGHT: 2em; DISPLAY: inline-block; COLOR: #545454; text-shadow: 1px 1px 1px #fff } .receiptCollapsed { POSITION: relative; FONT-SIZE: 90% } .external-breadcrumbs .receipt { BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; BORDER-TOP: 0px; TOP: -9px; BORDER-RIGHT: 0px; box-shadow: none } .stepcontent LI.fieldError { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; BACKGROUND: #fff1c5; PADDING-TOP: 2px } .stepcontent LI.fieldError .fieldErrorText { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { DISPLAY: inline; MARGIN-LEFT: 0px } .criteriaSummary { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px -28px 0px 0px; PADDING-LEFT: 12px; BACKGROUND: #f9f9f9 } #bb-question-discover H2 { FONT-SIZE: 110% } #filterContainer H2 { MARGIN-LEFT: 14px } #filterContainer .columnActions { MARGIN-LEFT: 14px } .criteriaSummary H3 { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .criteriaSummary .hidden { DISPLAY: none; VISIBILITY: hidden } .criteriaSummary UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .criteriaSummary UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FLOAT: left; FONT-SIZE: 90%; PADDING-TOP: 3px; border-radius: 12px } .criteriaSummary UL LI:first-child { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG { MARGIN: 0px; DISPLAY: block; FLOAT: left; COLOR: #aaa; FONT-WEIGHT: normal } .receipt-highlight { BACKGROUND: #fff4bf; box-shadow: 0 0 4px #fff } .receipt-default { BACKGROUND: none transparent scroll repeat 0% 0%; box-shadow: none } .criteriaSummary UL LI STRONG:before { POSITION: relative; LINE-HEIGHT: 1; COLOR: #aaa; FONT-SIZE: 120%; CONTENT: "+"; FONT-WEIGHT: bold; LEFT: -2px } .criteriaSummary UL LI SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI A { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI SPAN { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG + SPAN { MARGIN-LEFT: 3px } .criteriaSummary UL LI A { PADDING-RIGHT: 18px; BACKGROUND: url(../../../images/ci/icons/delete_li.gif) #eee no-repeat 96% 2px; TEXT-DECORATION: none } .search-element { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 18px; PADDING-LEFT: 9px; PADDING-RIGHT: 3px; BACKGROUND: #f9f9f9; PADDING-TOP: 18px } .search-element H2 { LINE-HEIGHT: 1; MARGIN: 0px; WIDTH: 0px; DISPLAY: inline-block; HEIGHT: 22px; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; OVERFLOW: hidden; FONT-WEIGHT: normal } .search-element H2:before { POSITION: relative; MARGIN: 0px 3px 6px 0px; FONT: 17px/1 "Utilicons"; COLOR: #aaa; VERTICAL-ALIGN: middle; CONTENT: "F"; TOP: 2px } .search-element INPUT[type='text'] { WIDTH: 60%; -moz-appearance: searchfield; -webkit-appearance: searchfield } .calPicker { Z-INDEX: 1500 !important } .calPicker .calHead { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .calPicker H3 { BORDER-BOTTOM: medium none; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 40px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .calPicker .previous { POSITION: absolute; TOP: 2px; LEFT: 2px } .calPicker .next { POSITION: absolute; TOP: 2px; RIGHT: 2px } .calPicker DIV.calFoot { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; CLEAR: both; PADDING-TOP: 6px } .calPicker A.contextmenubar { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .calPicker A.contextmenubar:hover { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .timediv { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .timediv UL { WIDTH: 8em; HEIGHT: 200px; OVERFLOW: auto } .timediv UL LI.contextmenubar_top { WIDTH: 114px; TOP: -18px } .timediv UL LI A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .csPicker { MIN-WIDTH: 300px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 12px; FONT-SIZE: 95%; PADDING-TOP: 0px } .csPicker .actionBar { FONT-SIZE: 110% } .csPicker .localViewToggle { FONT-SIZE: 110% } .csPicker .contentPaneWide { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .breadcrumbs { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .itemTray { Z-INDEX: 1000 } .csPicker .itemTray .taskbuttondiv { MARGIN: 0px; FONT-SIZE: 105% } .csPicker .itemTray H3 { FONT-SIZE: 115% } .csPicker #titleicon + H1 { MARGIN-TOP: 2px } .csPicker .itemTray #numberOfElements { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.lb-overlay { Z-INDEX: 1001; POSITION: fixed; BACKGROUND-COLOR: #000; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px } DIV.lb-wrapper { Z-INDEX: 1002; POSITION: fixed; OVERFLOW: hidden } DIV.lb-wrapper DIV.lb-header { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #dedede; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } DIV.lb-wrapper DIV.lb-header H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 15px; HEIGHT: 1.23em; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-header A { POSITION: absolute; DISPLAY: block; TOP: 10px; RIGHT: 10px } DIV.lb-wrapper DIV.lb-header A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; VERTICAL-ALIGN: top; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.lb-wrapper DIV.lb-content { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: auto; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-content DIV.lb-loading { BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) no-repeat center center } DIV.lb-wrapper DIV.topRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #lightbox DIV.bottomRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } DIV.lb-wrapper DIV.topRound B { DISPLAY: block; OVERFLOW: hidden } #lightbox DIV.bottomRound B { DISPLAY: block; OVERFLOW: hidden } DIV.lb-wrapper DIV.topRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } #lightbox DIV.bottomRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } #lightbox DIV.bottomRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightbox DIV.bottomRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightboxWrapper { Z-INDEX: 1001; POSITION: absolute; TOP: 0px; RIGHT: 0px; LEFT: 0px } #lightboxWrapper-inner { Z-INDEX: 1002; POSITION: relative; TEXT-ALIGN: center; WIDTH: 100%; TOP: 0px; LEFT: 0px } #lightbox { Z-INDEX: 1003; POSITION: relative; TEXT-ALIGN: left; MARGIN: 40px 0px 0px; DISPLAY: block; TOP: auto; LEFT: auto } .my-places-popup #lightbox { MARGIN: 0px } .my-places-popup #lightboxWrapper { POSITION: relative } #lightbox #lightboxContent { BORDER-BOTTOM: #333 2px solid; POSITION: relative; BORDER-LEFT: #333 2px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff !important; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP: #333 2px solid; BORDER-RIGHT: #333 2px solid; PADDING-TOP: 1px; -moz-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -moz-border-radius: 5px; -webkit-border-radius: 5px } .my-places-popup #lightbox #lightboxContent { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .lb-container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lb-content .container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lbAction { Z-INDEX: 1005; POSITION: absolute; TOP: 9px; RIGHT: 9px } #overlay { Z-INDEX: 1000; POSITION: fixed; FILTER: alpha(opacity=30); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .30 } .done#lightbox #lbLoadMessage { DISPLAY: none } .done#lightbox #lbContent { DISPLAY: block } .loading#lightbox #lbContent { DISPLAY: none } .loading#lightbox #lbLoadMessage { DISPLAY: block } .myPlacesContent { PADDING-BOTTOM: 16px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; HEIGHT: auto !important; MAX-HEIGHT: 500px !important; FONT-SIZE: 95%; OVERFLOW: auto; PADDING-TOP: 16px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .avatar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .myavatar { MARGIN-BOTTOM: 12px; MAX-HEIGHT: 150px; OVERFLOW: hidden } #lightbox .tallPara { PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 14px } #lightbox UL { MARGIN: 4px 0px 12px } #lightbox UL LI { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } #lightbox UL LI A:hover { TEXT-DECORATION: underline } DIV.lbContainer P.taskButtonsContent { MARGIN: 12px 0px 6px } .toBeRemoved { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .toBeRemoved > TD { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .unsavedItem { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD:first-child { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD { BACKGROUND-IMAGE: none } A.selectedItem { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } A.selectedItem:focus { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } TR.inEditMode-row { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TR.inEditMode-row TD { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 6px !important } #dataCollectionContainer { MARGIN: -20px -30px 0px } .popup #dataCollectionContainer { MARGIN: -12px -20px } DIV#dataCollectionContainer DIV.contentBlock { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-question-discover .inventoryListContainerDiv { PADDING-LEFT: 12px } .picker .inventoryListContainerDiv { PADDING-LEFT: 12px } .blogContainer .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV[id*='step'] { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } .submittitle { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #infoStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #taskStatusStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #linkedContentStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } DIV[id*='stepcontent'] { PADDING-BOTTOM: 0px; PADDING-LEFT: 48px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-TOP: 0px } .steptitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { PADDING-BOTTOM: 18px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .steptitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { MARGIN-RIGHT: 3px } #toolSettingsForm .steptitle SPAN { DISPLAY: none } #toolSettingsForm .stepcontent { PADDING-LEFT: 20px } #toolSettingsForm .steptitle { PADDING-LEFT: 9px } #toolSettingsForm .submittitle.steptitle { PADDING-LEFT: 27px } H3.noNumber { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 4px } .stepcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .stepcontent LI { PADDING-BOTTOM: 6px; MARGIN-BOTTOM: 6px } .stepcontent LI LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .stepcontent LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .stepcontent .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepcontent .stepHelp:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .stepcontent .fieldHelp { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 2px } A.browse + .fieldHelp { PADDING-TOP: 9px } .stepcontent .nonHelp { COLOR: #000; FONT-SIZE: 95% } .stepcontent .nestedList LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .nestedListSmall LI { FONT-SIZE: 90% } .nestedSubList { MARGIN: 6px 6px 6px 30px } .stepLite { PADDING-BOTTOM: 12px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 6px } .columnStep .column-3 { MIN-HEIGHT: 200px } .columnStep .column-3 TABLE.attachments { FONT-SIZE: 90% } .columnStep DIV H3 { MARGIN: 6px } .columnStep DIV DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } OL.nestedList LI DIV.imgLabel { WIDTH: auto } OL.nestedList LI DIV.imgLabel SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } OL.nestedList LI DIV.imgLabel SPAN.control { DISPLAY: inline } #title_color_value { PADDING-TOP: 6px } DIV.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.gb_gridCell_inner H3.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.field { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { WIDTH: 100% } DIV.label SPAN.contextMenuContainer { DISPLAY: inline } DIV.noLabelField BR { DISPLAY: none } SPAN.stepHelp BR { DISPLAY: block } SPAN.fieldHelp BR { DISPLAY: block } DIV.field OL P { PADDING-BOTTOM: 3px } DIV.noLabelField UL P { PADDING-BOTTOM: 3px } DIV.field EM { MARGIN-TOP: 5px; DISPLAY: inline-block; FONT: italic 100% Georgia, serif; COLOR: #888 } FIELDSET.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } DIV.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } FIELDSET.info DIV.label { COLOR: #666 } .reqfield { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 40px; PADDING-RIGHT: 0px; FONT: italic 105% Georgia, serif; FLOAT: left; COLOR: #777; PADDING-TOP: 24px } .reqfield:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .required > .label > LABEL:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .reqfield IMG { DISPLAY: none } .required > .label > LABEL IMG { DISPLAY: none } .requiredField { PADDING-BOTTOM: 6px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(../../../images/ci/icons/required.gif) no-repeat 0px center; PADDING-TOP: 6px } DIV.label IMG.indicator { POSITION: absolute; TOP: 0px; LEFT: -18px } .largeText DIV.label { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText DIV.field { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 75% !important; FONT-WEIGHT: normal } .field A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 95% } DIV.editBlock { FLOAT: left; MARGIN-RIGHT: 12px } .largeText DIV.field DIV.editBlock LABEL { FONT-SIZE: 80%; FONT-WEIGHT: normal } .largeText DIV.field DIV.exemptdiv LABEL { FONT-SIZE: 65% } .largeText TEXTAREA { FONT-SIZE: 80% } LI.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; PADDING-TOP: 3px; -moz-border-radius: 6px; -webkit-border-radius: 6px } .e_expandArea { MARGIN-TOP: 21px } #e_groups_menu { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #ceeaee; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .parent-child-listing { WIDTH: 50% } .parent-child-listing .stepHelp { MARGIN-LEFT: 24px } .parent-child-listing UL { BORDER-LEFT: #ccc 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 12px 10px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .parent-child-listing LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .stepcontent .hierarchy { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .stepcontent .hierarchy LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; PADDING-TOP: 0px } OL.hierarchy LI H5 { POSITION: relative; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 11em; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 8px } OL.hierarchy LI H5 SPAN { BORDER-BOTTOM: medium none; DISPLAY: inline; COLOR: #888; FONT-SIZE: 100% } OL.hierarchy LI H5 A { POSITION: absolute; FONT-SIZE: 90%; TOP: 9px; RIGHT: 0px; FONT-WEIGHT: normal } OL.hierarchy LI DIV { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 2px; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } OL.hierarchy LI DIV.gbData SPAN { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 2px } OL.hierarchy LI DIV.gbData SPAN:first-child { BORDER-LEFT: medium none; PADDING-LEFT: 0px; MARGIN-LEFT: 0px } OL.hierarchy LI DIV INPUT.points { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT.points { WIDTH: 2em } OL.hierarchy LI DIV INPUT.name { WIDTH: 16em } LI.parent { PADDING-BOTTOM: 0px !important } OL.hierarchy LI.parent OL LI H5 { BACKGROUND-IMAGE: none } .stepPanels { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .stepPanels LI { BORDER-BOTTOM: medium none } .panelTitle { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 4px 0px 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; CURSOR: pointer; PADDING-TOP: 3px } .mdHead A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { WIDTH: 100%; DISPLAY: block } .panelTitle .date { POSITION: absolute; COLOR: #666; FONT-SIZE: 95%; TOP: 2px; RIGHT: 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none } .panelTitle A SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 2px } .mdHead A SPAN.date { FONT-WEIGHT: normal } .mdList { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel P SPAN { COLOR: #666 } .mdList H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .mdList P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanelControls { FONT-SIZE: 90% } .contentAreaBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px 24px 24px; BACKGROUND: #fff; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .contentAreaBlock #step1 { BORDER-TOP: 0px } .taskbuttondiv { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .taskButtonsContent { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .okbutton { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .picker .taskbuttondiv { PADDING-BOTTOM: 9px; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .container .taskbuttondiv:first-child { MARGIN-TOP: 0px } DIV#dataCollectionContainer .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#dataCollectionContainer .reqfield + .taskbuttondiv { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#containerdiv .mapCanvasForm .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } #customizeDataCollection .taskbuttonhelp { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px } DIV#dataCollectionContainer .taskbuttonhelp + .taskbuttondiv { PADDING-BOTTOM: 18px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 0px } SPAN.stepTitleRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } SPAN.contentListRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } .taskButtonsContent { PADDING-BOTTOM: 0px; MARGIN: 24px -12px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 9px } P.okbutton INPUT { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 100%; PADDING-TOP: 1px } .taskbuttonhelp { PADDING-BOTTOM: 0px; FONT-STYLE: italic; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } #taskbuttondiv P { BORDER-BOTTOM: red 1px solid; TEXT-ALIGN: left; BORDER-LEFT: red 1px solid; FONT-STYLE: italic; MARGIN: 6px 0px; DISPLAY: block; FONT-SIZE: 90%; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .stepTitleRight { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; TOP: -2px; RIGHT: -2px; PADDING-TOP: 6px; LEFT: auto } LEGEND { POSITION: absolute; LINE-HEIGHT: 0; HEIGHT: 0px; TOP: -10000px } FIELDSET OL LI SPAN.tagContainer INPUT { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer A.browse { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.hidden { DISPLAY: none } .contentBlock OL LI SPAN.hidden { DISPLAY: none } .selectItems { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 639px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .selectItems SELECT { MARGIN: 6px 0px 0px; WIDTH: 300px; DISPLAY: block; MAX-WIDTH: 300px; HEIGHT: 115px; FONT-SIZE: 100% } #dataCollectionContainer .noLabelField > .selectItems { POSITION: relative; PADDING-BOTTOM: 15px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 15px } #dataCollectionContainer .noLabelField > .userRoleSelect:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems.userRoleSelect:before { LEFT: 358px } #dataCollectionContainer .noLabelField > .selectItems.cumulativeSelectItems:before { LEFT: 47% } .selectItems INPUT[type=button] { MARGIN: 6px 0px 0px } .selectItems INPUT[type=text] { MARGIN: 6px 0px; WIDTH: 300px; DISPLAY: block; FONT-SIZE: 100% } .selectArrows { POSITION: relative; MARGIN-TOP: 60px } .selectArrows A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectArrows BUTTON { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectItems H4 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px 56px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .userRoleSelect { WIDTH: auto } .userSelectedRoles { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 56px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .userSelectedRoles .selectArrows { POSITION: absolute; MARGIN: 0px; TOP: 28px; LEFT: 20px } .selectItems .available-roles H4 { MARGIN-LEFT: 0px } .selectItems .available-roles SELECT { HEIGHT: 200px } .multiSelect { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .multiSelect > DIV { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; WIDTH: 46%; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } .multiSelect SELECT { WIDTH: 100% } .multiSelect .selectArrows { TEXT-ALIGN: center; MARGIN: 40px 0px; WIDTH: 5% } .widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: 6px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } .widgetControls { FONT-SIZE: 90% } TABLE .widgetControls { FONT-SIZE: 90% } .widget .spellCheck { FLOAT: right } .widget .textBoxItem { FLOAT: right } DIV.liveArea FIELDSET.stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.liveArea FIELDSET.stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.liveArea FIELDSET.stepcontent TEXTAREA { WIDTH: 100% } DIV.liveArea FIELDSET.stepcontent SPAN.inlineHelp { DISPLAY: inline } .quickAddPal .stepcontent { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; PADDING-TOP: 3px } .quickAddPal .stepcontent LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .quickAddPal .stepcontent .label { WIDTH: 30%; PADDING-RIGHT: 2px; OVERFLOW: visible } .quickAddPal .stepcontent .field { WIDTH: 65% } .quickAddPal LI.fieldError .fieldErrorText { DISPLAY: block; COLOR: red; MARGIN-LEFT: 74px; FONT-SIZE: 85%; FONT-WEIGHT: normal } DIV.quickAddPal DIV.field INPUT[type=text] { WIDTH: 100% } DIV.quickAddPal DIV.field SELECT { WIDTH: 100% } DIV.quickAddPal DIV.field TEXTAREA { WIDTH: 100% } DIV.quickAddPal LI.stepHelp { WIDTH: auto } DIV.quickAddPal LI DIV SPAN { WIDTH: auto } DIV.field SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.field SPAN.control { DISPLAY: inline } DIV.quickAddPal DIV.field INPUT.datePickerInput { WIDTH: 8em } DIV.quickAddPal DIV.field INPUT.timePickerInput { WIDTH: 8em } .dtpickerEndDiv { PADDING-TOP: 10px } DIV#texteditor { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } DIV#texteditor TEXTAREA { WIDTH: 450px; DISPLAY: block; MARGIN-LEFT: 0px } DIV#texteditor A.textBoxItem { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 80%; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 2px } SELECT.survey_question { MAX-WIDTH: 100% } .htmlarea .toolbar DIV > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FLOAT: left; HEIGHT: 22px; PADDING-TOP: 0px } .htmlarea IFRAME { MIN-WIDTH: 300px !important } .htmlarea .toolbar A.wikiButton { WIDTH: auto !important } .htmlarea .toolbar A.wikiButton IMG { WIDTH: auto !important } .vtbe_footer { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .vtbe_footer SPAN { FONT-SIZE: 100% } .vtbe_footer INPUT[type=button] { FONT-SIZE: 95% } .vtbe_footer A { MARGIN: 0px 0px 0px 3px } .resize_handle { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BACKGROUND: url(images/controls.png) #ccc no-repeat 50% -1px; HEIGHT: 12px; BORDER-TOP: #ddd 1px solid; CURSOR: n-resize } .resize_handle:hover { BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #bbb; BORDER-TOP-COLOR: #ccc } .resize_handle IMG { WIDTH: 100%; HEIGHT: 8px } .tabGroupsPreview { MARGIN: -11px -12px 24px; FONT-SIZE: 100% } .previewContent { Z-INDEX: 1; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; BACKGROUND: url(images/backgrounds_h.png) #aaa repeat-x 0px -320px; PADDING-TOP: 14px } .previewContent IFRAME { WIDTH: 100%; HEIGHT: 300px } .previewContent .appTabs { TOP: -3px } .tabGroupsPreview TABLE DIV { DISPLAY: block } .previewOverlay { POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=30); TEXT-TRANSFORM: uppercase; WIDTH: 100%; LETTER-SPACING: 10px; COLOR: #555; FONT-SIZE: 300%; TOP: 130px; FONT-WEIGHT: bold } .tabGroupsPreview .previewOverlay { TOP: 40px } .previewOverlay SPAN { FILTER: alpha(opacity=30); PADDING-BOTTOM: 6px; BACKGROUND-COLOR: white; PADDING-LEFT: 24px; PADDING-RIGHT: 12px; PADDING-TOP: 6px; opacity: .30 } P.warning { PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #cf1d19; MARGIN: 12px 0px 24px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 9px } .warning { BACKGROUND: #a7d0df } DIV.tabPreview { Z-INDEX: 1; BORDER-BOTTOM: #cdcdcd 12px solid; POSITION: relative; BORDER-LEFT: #cdcdcd 12px solid; MARGIN: 0px 6px 6px; WIDTH: auto; BACKGROUND: #cdcdcd; BORDER-TOP: #cdcdcd 12px solid; BORDER-RIGHT: #cdcdcd 12px solid } DIV.tabPreview DIV.paneTabs { MARGIN-TOP: 12px } .buttonLibrary { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 207px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .buttonLibrary LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FLOAT: left; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .buttonLibrary LI A { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 3px } .buttonLibrary LI A.selected { FONT-WEIGHT: bold; TEXT-DECORATION: none } .buttonLibrary LI A:hover { TEXT-DECORATION: underline } DIV.menuStyleStep { MARGIN: 9px 40px 0px 0px; WIDTH: 212px; FLOAT: left } DIV.menuDefaultStyleStep { MARGIN: 9px auto; WIDTH: 212px } .schemeWrapper { MARGIN: 0px 12px 0px 0px; FLOAT: left } .buttonLibrary .schemeWrapper { PADDING-BOTTOM: 10px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #fff; FLOAT: none; PADDING-TOP: 10px; -moz-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); border-radius: 4px } .buttonLibrary .selected .schemeWrapper { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #bbb; PADDING-TOP: 10px } #selectedPalette .schemePreview { BORDER-BOTTOM: #bbb 10px solid; BORDER-LEFT: #bbb 10px solid; BORDER-TOP: #bbb 10px solid; BORDER-RIGHT: #bbb 10px solid; -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); border-radius: 4px } .schemeWrapper SPAN { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: italic 100% Georgia; PADDING-TOP: 6px } UL.buttonLibrary LI.selected { POSITION: absolute; TOP: 6px; LEFT: 0px } UL.buttonLibrary LI.selected A.selected { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A.selected SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .schemePreview { PADDING-BOTTOM: 0px; PADDING-LEFT: 16px; WIDTH: 160px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .modulePreview { BORDER-BOTTOM: 0px solid; POSITION: relative; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px !important; MARGIN: 6px 0px 0px auto; PADDING-LEFT: 0px !important; WIDTH: 140px; BOTTOM: 0px; PADDING-RIGHT: 0px !important; HEIGHT: 57px; FONT-SIZE: 85%; BORDER-TOP: 1px solid; RIGHT: 0px; BORDER-RIGHT: 0px solid; PADDING-TOP: 0px !important; LEFT: auto } .schemePreviewHead { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 6px !important } .modulePreviewHead { PADDING-BOTTOM: 4px !important; MARGIN: 0px; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-WEIGHT: bold; PADDING-TOP: 4px !important } .schemePreviewBody { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 3px } .modulePreviewBody { PADDING-BOTTOM: 3px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 4px !important } .moduleList { BORDER-TOP: #ccc 1px solid } .moduleItem { BORDER-BOTTOM: #ccc 1px solid } .module { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } .moduleHeading { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 10px } .module H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 110% } .moduleDescription { WIDTH: 90% } .more { DISPLAY: none } .moduleAction { MARGIN: 10px 0px } .moduleCategory { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .moduleCategory A { FONT-WEIGHT: bold } .moduleSample { PADDING-LEFT: 10px; DISPLAY: none } .expandedModule { BACKGROUND-COLOR: #efefef } .expandedModule .moduleDetails { WIDTH: 47% } .expandedModule .moduleSample { WIDTH: 47% } .expandedModule .more { DISPLAY: inline } .expandedModule .moduleSample { DISPLAY: block } .leftColumn-wide#moduleList .contentListPlain { PADDING-LEFT: 18px } .moduleListActionBar { PADDING-LEFT: 18px } #moduleList .contentListPlain > LI.expandedModule .moduleSample > DIV { MIN-HEIGHT: 50px !important; WORD-WRAP: normal } #moduleBody { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } #moduleBorder { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .portlet { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #efede3; MARGIN: 0px 10px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #444; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 0 2px 4px rgba(0, 0, 0, .05); border-radius: 3px } .containerPortal > DIV:first-child .portlet { MARGIN: 0px 10px 20px 0px } .reorderableModule:hover { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; -webkit-transition-property: border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border, background; -moz-transition-duration: 200ms; -moz-transition-timing-function: ease-in-out } .reorderableModule:hover H2 { COLOR: #000 } .module-dragstate { BORDER-BOTTOM-COLOR: #555; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: 2px; opacity: .9; -moz-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-transition-property: border-width, border-color, background, -webkit-box-shadow; -webkit-transition-duration: 50ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border-width, border-color, background, -moz-box-shadow; -moz-transition-duration: 50ms; -moz-transition-timing-function: ease-in-out } #moduleTitle { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 .moduleTitle { WORD-WRAP: break-word } .portlet H2.dragHandle { PADDING-LEFT: 20px } .portlet H2.dragHandle:hover { CURSOR: move } .portlet H2 A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; COLOR: #fff; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .portlet H2 A:hover { TEXT-DECORATION: underline } .portlet H2 A IMG { VERTICAL-ALIGN: middle } .portlet H2.noTitle { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 1.4em; PADDING-TOP: 0px } .portlet H2.noTitle:hover { BACKGROUND: #ededed } .portlet A { WORD-WRAP: break-word; TEXT-DECORATION: none } .portlet A:hover { TEXT-DECORATION: underline } .edit_controls { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FLOAT: right; PADDING-TOP: 7px } .portlet .edit_controls { VISIBILITY: hidden } .portlet:hover .edit_controls { VISIBILITY: visible } .edit_controls A { Z-INDEX: 201; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 1px; TEXT-DECORATION: none; PADDING-TOP: 0px; verical-align: top } .portlet .edit_controls A:hover { TEXT-DECORATION: none } .portlet:hover .edit_controls A { TEXT-DECORATION: none } .edit_controls .moduleToggleLink { Z-INDEX: 201; POSITION: absolute; FILTER: alpha(opacity=50); PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 14px; PADDING-RIGHT: 3px; HEIGHT: 14px; TOP: 3px; PADDING-TOP: 3px; LEFT: -4px; opacity: .5 } .edit_controls A IMG { DISPLAY: none } .edit_controls A:before { FONT: 16px/1 "Utilicons"; COLOR: #bcbcbc; text-shadow: 0 1px 0 #fff } .edit_controls A:hover:before { COLOR: #888 } .edit_controls A.moduleToggleLink { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px } .edit_controls A[title*='Expand'].moduleToggleLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .edit_controls A.moduleCloseLink:before { CONTENT: "X" } .edit_controls A.moduleDetachLink:before { FONT: 16px/1 "Utilicons"; CONTENT: "w" } .edit_controls A[href*='edit_module']:before { CONTENT: "S" } .collapsible { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px } .collapsible TABLE { BORDER-SPACING: 3px 2px; BORDER-COLLAPSE: separate; FONT-FAMILY: Helvetica, Arial, sans-serif; COLOR: #333; FONT-SIZE: 90% } .collapsible .help { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .imgWrapper { TEXT-ALIGN: center; MARGIN: 6px auto; OVERFLOW: auto } .portlet H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } #lightbox H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.portletBlock H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.blockContents H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .flyout H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 5px } .portlet H4 { PADDING-BOTTOM: 2px; TEXT-INDENT: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 1px } .portlet .portletList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList LI:first-child { BORDER-TOP: medium none } .portlet .portletList LI IMG { DISPLAY: none } .portlet .courseListing LI > A { FONT-WEIGHT: bold } .portlet .courseRole { COLOR: #777 } .portlet .dataBlockLabel { COLOR: #777 } .portlet .eventDate { COLOR: #777 } .portlet .eventList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .eventList LI .date { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f0f0f0; COLOR: #597298; FONT-WEIGHT: bold; PADDING-TOP: 2px; -moz-border-radius: 1px; -webkit-border-radius: 1px; border-radius: 1px } .portlet .eventList LI .event { PADDING-BOTTOM: 2px; PADDING-LEFT: 18px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .portlet .eventList LI .description { FONT-SIZE: 90% } .portlet .eventDate { FONT-SIZE: 90% } .portlet .eventList LI .event A { FONT-WEIGHT: bold } .portlet SPAN.origin { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #999; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet .portletList-img > LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList-img > LI:first-child { BORDER-TOP: medium none; PADDING-TOP: 0px } .portlet .portletList-img > LI IMG { DISPLAY: none } .portlet .courseInformation { PADDING-BOTTOM: 0px; TEXT-INDENT: -16px; MARGIN: 4px 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock { PADDING-BOTTOM: 0px; TEXT-INDENT: -4px; MARGIN: 4px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock UL { MARGIN-TOP: 5px } .portlet .courseDataBlock UL LI { TEXT-INDENT: 0px } .portlet .calculatorModule { TEXT-ALIGN: center } .portlet .calculator { PADDING-BOTTOM: 6px; MARGIN: 0px auto; PADDING-LEFT: 6px; WIDTH: 10em; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .portlet .portletPath { MARGIN: 4px; BACKGROUND: #f0f0f0; FONT-SIZE: 90%; -moz-border-radius: 1px; -webkit-border-radius: 1px } .portlet .portletPath SPAN { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; DISPLAY: inline-block; BACKGROUND: #ddd; COLOR: #666; FONT-WEIGHT: bold; PADDING-TOP: 1px; -moz-border-radius: 1px 0 0 1px; -webkit-border-radius: 1px 0 0 1px } .portlet .courseDataBlock UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px -895px; PADDING-TOP: 0px } .portlet .courseDataBlock A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock LI A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock A:hover { TEXT-DECORATION: underline } .portlet .courseDataBlock LI A:hover { TEXT-DECORATION: underline } .portletHelp { PADDING-BOTTOM: 2px; MARGIN: 4px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #688ba8; FONT-SIZE: 95%; PADDING-TOP: 1px } DIV.module_actions { PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.8em; MARGIN: 4px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.module_actions A:link { BORDER-BOTTOM: #ccc 1px outset; BORDER-LEFT: #ccc 1px outset; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 5px; COLOR: #036; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px outset; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px outset; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.module_actions A:hover { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions A:active { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions IMG { MARGIN: 0px 3px; VERTICAL-ALIGN: middle } DIV.module_actions SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.module_actions LABEL { FONT-WEIGHT: bold } DIV.scroll_div { MAX-HEIGHT: 300px; OVERFLOW: auto } .portlet DIV.scroll_div { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN-BOTTOM: 3px; BACKGROUND: #fff4bf; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .submission_list { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .submission_list LI { PADDING-BOTTOM: 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; PADDING-TOP: 9px } .submission_list LI:first-child { BORDER-TOP: medium none } .submission_list LI A { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .submission_list LI A.label { MARGIN-LEFT: 0px; FONT-SIZE: 100%; FONT-WEIGHT: bold } .submission_list LI DIV.button { MARGIN: 4px 0px 0px; FLOAT: right } .submission_list LI SPAN { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .eudModule { PADDING-BOTTOM: 24px; MARGIN: 0px } .styledModule-dark { PADDING-BOTTOM: 24px; MARGIN: 0px } .portlet .noItems { TEXT-ALIGN: center; FONT-STYLE: italic } .eudModule .eudModule-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .styledModule-dark .module-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .eud-button-wrap { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } IMG.eud-avatar { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 28px; PADDING-RIGHT: 2px; BACKGROUND: #fff; HEIGHT: 28px; PADDING-TOP: 2px; -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -moz-border-radius: 2px; -webkit-border-radius: 2px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } .actionMenuButton { FILTER: none; PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: block; BACKGROUND: #eee; VERTICAL-ALIGN: middle; PADDING-TOP: 3px } DIV[id*='actionMenu_'] { Z-INDEX: 1000; MARGIN-TOP: -4px; MARGIN-LEFT: -3px } .portlet .portletBlock { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 6px } .portlet .portletBlock:first-child { BORDER-TOP: 0px } .moduleActions + .portletBlock { BORDER-TOP: 0px } .blockGroups LI:first-child { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .portlet .memberList { MARGIN: 0px 0px 5px } .itemGroups { PADDING-BOTTOM: 0px; MARGIN: 4px 9px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .itemGroups .itemGroups { MARGIN-BOTTOM: 4px; MARGIN-LEFT: 0px } .portlet .blockGroups LI { FONT-SIZE: 100% } .portlet .itemGroups LI { PADDING-BOTTOM: 7px; LINE-HEIGHT: 120%; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .memberList LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 14px !important; PADDING-TOP: 0px } .portlet .course { DISPLAY: block; FONT-SIZE: 90% } .portlet UL.memberList { DISPLAY: block; FONT-SIZE: 90% } .portlet SPAN.refresh { DISPLAY: block; FONT-SIZE: 90% } .portlet .course { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet SPAN.noIndent { MARGIN-LEFT: 0px !important } .portlet .whatsNew SPAN.course { MARGIN-LEFT: 0px !important } .portlet SPAN.course { MARGIN-LEFT: 0px !important } .portlet UL.hierarchyList { MARGIN-LEFT: 22px } .portlet UL.hierarchyList LI { OVERFLOW-X: visible; TEXT-INDENT: -18px } .portlet UL.hierarchyList LI * { TEXT-INDENT: 0px } .portlet UL.hierarchyList LI.childless { TEXT-INDENT: 0px } .portlet UL LI UL LI SPAN.warning { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.newItemCount { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .flag { BORDER-BOTTOM: #efa495 1px solid; BORDER-LEFT: #efa495 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; BACKGROUND: #ffe4df; COLOR: #c30; FONT-SIZE: 90%; BORDER-TOP: #efa495 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #efa495 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL.memberList SPAN { FONT-SIZE: 100% } .portlet UL.memberList SPAN.newItemCount { FONT-SIZE: 100% } .portletInfoFooter { POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 9px; BOTTOM: 5px; PADDING-RIGHT: 9px; COLOR: #999; FONT-SIZE: 90%; RIGHT: 0px; PADDING-TOP: 2px } .dateSelector { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .blockGroups LI SPAN.newItemCount { COLOR: #999; FONT-WEIGHT: normal } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHead A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .portlet .portletBlock H4 A:hover { BACKGROUND: #eee } .portlet .portletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .portlet .portletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .portlet .subCategories LI A { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead:hover { CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) #fff no-repeat 1px 9px; COLOR: #0099b6 } .blockGroups .itemHeadOpen:hover { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen:focus { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups LI IMG.spacer { WIDTH: 50px; HEIGHT: 0px } .blockGroups LI SPAN.headerText:hover { CURSOR: pointer; TEXT-DECORATION: underline } .viewHeader { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .viewHeader H3 { COLOR: #666; FONT-WEIGHT: bold } DIV.waitingFrame { BACKGROUND: #fff } .moduleControlWrapper { MARGIN: 6px 0px 0px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 6px } .moduleControlWrapper A { POSITION: relative; MARGIN: 0px 2px } .moduleControlWrapper A:after { POSITION: relative; COLOR: #bbb; FONT-SIZE: 14px; CONTENT: "\2192"; RIGHT: 0px; FONT-WEIGHT: bold } .moduleBlock { MARGIN: 6px } .portlet H1 { MARGIN: 6px; FONT-SIZE: 120% } .assessmentPortlet DIV.assessmentPortletBlock { BORDER-BOTTOM-COLOR: #777; PADDING-BOTTOM: 0px; BORDER-TOP-COLOR: #777; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #f9f9f9; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4 A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4 A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet UL.subCategories { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock UL.subCategories LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet UL.subCategories LI A { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead:hover { BACKGROUND-COLOR: #e3efff; TEXT-DECORATION: underline } UL.assessmentBlockGroups LI A.itemHeadOpen { BACKGROUND: #fff no-repeat 3px center } UL.assessmentBlockGroups LI A.itemHeadOpen:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .assessmentPortlet UL.subCategories LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } UL.assessmentBlockGroups LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .assessmentPortlet UL.subCategories LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } UL.assessmentBlockGroups LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } .assessmentPortlet UL.itemGroup LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.assessmentBlockGroups LI UL.itemGroups LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet UL.itemGroup LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI UL.items { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; FONT-SIZE: 110%; PADDING-TOP: 2px } UL.assessmentBlockGroups LI UL.itemGroups LI A { FONT-WEIGHT: normal } UL.itemGroups LI UL.items LI A { FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H3 { MARGIN: 0px } .assessmentPortlet DIV.assessmentPortletBlock H3 A { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f0f0f0; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet DIV.assessmentPortletBlock H3 A:hover { TEXT-DECORATION: none } .assessmentPortlet DIV.assessmentPortletBlock:first-child H3 A { BORDER-TOP: medium none } .assessmentPortlet DIV.assessmentPortletBlock H3 A.open { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/less_options.gif) #e3efff no-repeat 99% center; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet UL.objectList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortletBlock UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .blockContents UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.memberList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet .blockContents UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet .blockContents UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .portlet #loginBoxFull { PADDING-BOTTOM: 16px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull P { MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; COLOR: #444; FONT-SIZE: 0.95em } .portlet #loginBoxFull P.welcome { PADDING-BOTTOM: 0px; MARGIN: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000; FONT-SIZE: 1em; FONT-WEIGHT: bold; PADDING-TOP: 0px } .portlet #loginBoxFull UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } .portlet #loginBoxFull LI LABEL { FONT-SIZE: 100%; FONT-WEIGHT: normal } .portlet #loginBoxFull INPUT[type='text'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='password'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull A { FONT-SIZE: 0.9em } .portlet #loginBoxFull P A { FONT-SIZE: 1em } .portlet #loginBoxFull P.welcome A { FONT-SIZE: 1em } .portlet #loginBoxFull LI + LI + LI { FLOAT: left } .portlet #loginBoxFull LI + LI + LI + LI { TEXT-ALIGN: right; FLOAT: right } .portlet #loginBoxFull LI INPUT.submit { MARGIN: -14px -3px 0px 0px } #body { PADDING-BOTTOM: 60px } #loadstatus { POSITION: relative; HEIGHT: 180px } FIELDSET.highlight { BACKGROUND: #eee } FIELDSET.highlight DIV.input { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .builderItem .item { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FONT-SIZE: 100%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 12px } .builderItem:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } #lessonPlanForm #dataCollectionContainer .contentListPlain LI:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } LI.builderItem { MIN-HEIGHT: auto } .builderItem .close { POSITION: absolute; TOP: 5px; CURSOR: pointer; RIGHT: 5px } .builderItem IFRAME { WIDTH: 100% !important } DIV.subheading { FONT-WEIGHT: bold } DIV.required DIV.inputField { PADDING-LEFT: 1.5em; BACKGROUND: url(../../images/ci/icons/required.gif) no-repeat left 2px; MARGIN-LEFT: -1.5em } .inputOptions { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.5em } .offscreen { POSITION: absolute; HEIGHT: 0px; LEFT: -999em } .label A:hover { CURSOR: pointer } #lessonPlanForm #customFormBuilderDiv { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer .contentListPlain { MARGIN: 0px } .alignPanelLightbox { MIN-WIDTH: 650px; PADDING-BOTTOM: 10px; MIN-HEIGHT: 250px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .alignHeader { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .alignPanel TABLE TD { FONT-SIZE: 90% } .alignPanel TABLE TH { FONT-SIZE: 90% } .alignPanel TABLE TD.descriptionCell { MIN-WIDTH: 120px; WORD-WRAP: break-word } .alignPanel THEAD TH.smallCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .alignPanel THEAD TH { WHITE-SPACE: nowrap } .alignPanel TD.actionCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 4px } .pageBreadcrumb { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #fff; HEIGHT: 1em; PADDING-TOP: 6px } .pageBreadcrumb UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .pageBreadcrumb LI { FLOAT: left; COLOR: #999; MARGIN-LEFT: 3px; FONT-WEIGHT: bold } .pageBreadcrumb LI A { COLOR: #036; FONT-WEIGHT: bold; MARGIN-RIGHT: 3px; TEXT-DECORATION: none } .pageBreadcrumb LI A.active { COLOR: #036; FONT-WEIGHT: bold; TEXT-DECORATION: none } .sStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #063; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .sStatusI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #c00; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .panelList { PADDING-BOTTOM: 0px; MARGIN: 2px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; PADDING-TOP: 0px } .panelList > LI { MARGIN: 0px 0px 1px } .panelNested { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #fff; MARGIN: 4px 0px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; OVERFLOW: hidden; PADDING-TOP: 4px } .panelHead { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; WORD-WRAP: break-word; BACKGROUND: #efefef; PADDING-TOP: 6px } .panelHead A { COLOR: #000; TEXT-DECORATION: none } .panelItem { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 6px } .panelList_leftCol { POSITION: absolute; TOP: 6px; LEFT: 6px } .panelList_rightCol { POSITION: absolute; TOP: 6px; RIGHT: 6px } .panelList_centerCol { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 0px } UL.logMessages { LIST-STYLE-TYPE: none; TEXT-INDENT: -1em; PADDING-LEFT: 1em; MARGIN-LEFT: 0px; LIST-STYLE-IMAGE: none } LI.logError { COLOR: red } LI.logWarning { COLOR: blue } LI.logMessage { MARGIN-TOP: 0.1em } .connectionWrapper { POSITION: relative; MARGIN-TOP: 1px; PADDING-RIGHT: 30px } .connectionWrapper A { POSITION: absolute; MARGIN-TOP: -14px; TOP: 50%; RIGHT: 0px } .invertItems { POSITION: relative; DISPLAY: block !important; MARGIN-RIGHT: 26px } .invertItems A { POSITION: absolute; TOP: -14px; RIGHT: -33px } .subcategories { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 11px !important; PADDING-RIGHT: 11px !important; PADDING-TOP: 6px !important } .subcategories H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.calendarTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.announcementTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.calendarTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.announcementTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.calMonth { PADDING-BOTTOM: 6px; MARGIN: 10px 4px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; OVERFLOW: auto; PADDING-TOP: 2px } DIV.calMonth TABLE { BORDER-BOTTOM: #a8beda 2px solid; BORDER-LEFT: #a8beda 1px solid; MARGIN: 0px auto; BORDER-COLLAPSE: collapse; BORDER-TOP: #a8beda 2px solid; BORDER-RIGHT: #a8beda 2px solid } DIV.calMonth TABLE THEAD TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE TBODY TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE THEAD TD DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TBODY TH DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE THEAD TH { BORDER-BOTTOM: #a0a0a0 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 8em; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; OVERFLOW: hidden; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } DIV.calMonth TABLE TBODY TD { BORDER-BOTTOM: #a8beda 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 8em; PADDING-RIGHT: 0px; BACKGROUND: url(images/backgrounds_h.png) white repeat-x 0px -400px; HEIGHT: 8em; OVERFLOW: hidden; BORDER-RIGHT: #a8beda 1px solid; PADDING-TOP: 0px } DIV.calMonth TABLE TH:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:focus { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:active { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD A.daylink { BORDER-BOTTOM: #a8beda 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; WIDTH: 1.2em; PADDING-RIGHT: 0.2em; DISPLAY: block; BACKGROUND: #e3efff; FLOAT: left; FONT-SIZE: 110%; FONT-WEIGHT: bold; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0.2em } DIV.calMonth TABLE TD A.daylink:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD A.daylink SPAN { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TD.today { BACKGROUND-COLOR: #fff4bf } DIV.calMonth TABLE TD.today A.daylink { BACKGROUND: #fff4bf; FONT-WEIGHT: bold } DIV.calMonth TABLE TD.today A.daylink:hover { BACKGROUND: url(images/backgrounds_h.png) #fff4bf repeat-x 0px -50px } DIV.calMonth TABLE TD.offday { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:hover { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:focus { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD DIV { WIDTH: 8em; CLEAR: both; OVERFLOW: hidden } DIV.calMonth TABLE TD DIV UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.calMonth TABLE TD DIV UL LI { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FONT-SIZE: 90%; PADDING-TOP: 1px } TABLE.calYear { POSITION: relative; MIN-WIDTH: 200px; MARGIN: 6px; BORDER-COLLAPSE: collapse; FONT-SIZE: 95% } TABLE.calYearFloat { MARGIN: 6px 0.66%; WIDTH: 32%; FLOAT: left } TABLE.calYear THEAD TD { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear TBODY TH { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear CAPTION { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 108%; PADDING-TOP: 2px } TABLE.calYear CAPTION A { FONT-WEIGHT: bold; TEXT-DECORATION: none } TABLE.calYear CAPTION A:hover { TEXT-DECORATION: underline } TABLE.calYear THEAD TH { BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } TABLE.calYear TBODY TD { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; WHITE-SPACE: nowrap; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } TABLE.calYear TD A { POSITION: relative; WIDTH: 100%; DISPLAY: block; TEXT-DECORATION: none } TABLE.calYear TD A IMG { FLOAT: left } TABLE.calYear TD:hover { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:focus { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:active { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TH:hover { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:focus { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:active { BACKGROUND-COLOR: #ccc } TABLE.calYear TD.today { BACKGROUND: #999 } TABLE.calYear TD.today:hover { BACKGROUND: #999 } TABLE.calYear TD.today:focus { BACKGROUND: #999 } TABLE.calYear TD.today A { COLOR: #fff; FONT-WEIGHT: bold; text-shadow: 0 -1px 0 #555 } TABLE.calYear TD.today A:hover { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:active { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:focus { BACKGROUND-IMAGE: none } TABLE.calYear TD.offday { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:hover { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:focus { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.hasEvent { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -50px; FONT-WEIGHT: bold } TABLE.calendarDay { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; MARGIN: 10px 0px 0px; WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #cdcdcd 1px solid; BORDER-RIGHT: #cdcdcd 1px solid } TABLE.calendarDay THEAD { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay THEAD TH { POSITION: absolute; TOP: 0px; LEFT: -1000px } UL.calendarWeek LI TABLE.calendarDay { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } TABLE.calendarDay TBODY TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 3px; WIDTH: 6%; PADDING-RIGHT: 12px; BACKGROUND: #f3f3f3; COLOR: #555; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } TABLE.calendarDay TBODY TH:hover { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:focus { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:active { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #fff; VERTICAL-ALIGN: top; BORDER-TOP: #cdcdcd 1px solid; PADDING-TOP: 0px } TABLE.calendarDay TBODY TD.hasEvent { PADDING-LEFT: 6px } TABLE.calendarDay TBODY TD.hasEvent A.jumpToEvent { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay TBODY TR.halfHour TH { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.halfHour TD { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.midday TH { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TBODY TR.midday TD { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TR.notBusinessHours TH { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #f3f3f3; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TABLE.calendarDay TR.notBusinessHours TD { BACKGROUND: #fafafa } TABLE.calendarDay TBODY TR.notBusinessHours TD.hasEvent { BACKGROUND: #fafafa } TABLE.calendarDay TR TH SPAN.ampm { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #bbb; LETTER-SPACING: 0.1em; COLOR: #fff; FONT-SIZE: 75%; TOP: -1.2em; PADDING-TOP: 0px; LEFT: -4px } TABLE.calendarDay TBODY TR:hover { -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calendarDay TBODY TR:hover TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TD DIV DIV { PADDING-BOTTOM: 1px; MARGIN: 0px 4px 0px -6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: #b5ccea; FLOAT: left; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } TABLE.calendarDay TD DIV DIV.contextMenuContainer { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px -3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: none; PADDING-TOP: 0px } TABLE.calendarDay TD DIV SPAN { COLOR: #555; FONT-SIZE: 90% } UL.calendarWeek { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #cdcdcd 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #cdcdcd 1px solid; PADDING-TOP: 0px } UL.calendarWeek LI { BORDER-BOTTOM: #cdcdcd 1px solid; POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } UL.calendarWeek LI UL:first-child { BORDER-TOP: medium none } UL.calendarWeek UL LI:first-child { BORDER-TOP: medium none } UL.calendarWeek LI H3.weekDay { PADDING-BOTTOM: 0.3em; MARGIN: 0px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BACKGROUND: #e3efff; COLOR: #666; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 0.3em } UL.calendarWeek LI H3.weekDay:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.calendarWeek LI UL LI { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ededed 1px solid; PADDING-TOP: 6px } UL.calendarWeek LI UL LI:hover { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:focus { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:active { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI H4 { PADDING-BOTTOM: 1px; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 3px; WIDTH: 10em; PADDING-RIGHT: 3px; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 1px } UL.calendarWeek LI DIV { MARGIN-LEFT: 11em } UL.calendarWeek LI DIV.contextMenuContainer { MARGIN: 0px 0px 0px -3px } UL.calendarWeek LI UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } .diffbox-wrapper { MARGIN: 9px auto; WIDTH: 80% } .legendbox-wrapper { MARGIN: 9px auto; WIDTH: 90% } .legendbox-wrapper > DIV { BORDER-LEFT: #ddd 1px solid } .legendbox-wrapper > DIV:first-child { BORDER-LEFT: medium none } .diffbox-left { FLOAT: left } .diffbox-right { FLOAT: left } .diffbox-arrow { FLOAT: left } .legendbox { FLOAT: left } .diffbox-left { WIDTH: 44% } .diffbox-right { WIDTH: 44% } .legendbox-3 { WIDTH: 33% } .legendbox-2 { WIDTH: 48% } .diffbox-left > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .diffbox-right > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #fff; PADDING-TOP: 3px } .diffbox-right > DIV { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .diffbox-left UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-right UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .legendbox UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-left UL LI:first-child { BORDER-TOP: 0px } .diffbox-right UL LI:first-child { BORDER-TOP: 0px } .legendbox UL LI:first-child { BORDER-TOP: 0px } .diffbox-left .label { WIDTH: 30%; COLOR: #666 } .diffbox-right .label { WIDTH: 30%; COLOR: #666 } .legendbox .label { WIDTH: 30%; COLOR: #666 } .diffbox-left .field { WIDTH: 59% } .diffbox-right .field { WIDTH: 59% } .legendbox .label { WIDTH: 45%; FONT-SIZE: 90% } .legendbox .field { WIDTH: 55% } .diffbox-arrow { TEXT-ALIGN: center; WIDTH: 6%; PADDING-TOP: 50px } .diffLegend-sample { POSITION: static !important; WIDTH: 90px !important; HEIGHT: 17px !important } .addedImg-sample { HEIGHT: 13px !important } .removedImg-sample { HEIGHT: 13px !important } .changedImg-sample { HEIGHT: 13px !important } .diff-html-added { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-removed { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .added-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .removed-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-added { BACKGROUND-COLOR: #cfc } .added-sample { BACKGROUND-COLOR: #cfc } .diff-html-removed { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .removed-sample { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .diff-html-changed { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .changed-sample { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .diff-html-added IMG { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .addedImg-sample { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .diff-html-removed IMG { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .removedImg-sample { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .diff-html-changed IMG { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } .changedImg-sample { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } DIV.diff-removed-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-added-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } .diff-addedImg-sample { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-removed-image { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } .diff-removedImg-sample { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } DIV.diff-added-image { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } .diff-addedImg-sample { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } DIV.blogContainer DIV.wikiPage { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid } DIV.blogContainer DIV.wikiPage H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; FONT-SIZE: 120%; PADDING-TOP: 9px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryDate { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 6px } .editWiki { MARGIN: 9px } .topRound { DISPLAY: none } .bottomRound { DISPLAY: none } .playerControls { POSITION: relative; PADDING-BOTTOM: 6px !important; MARGIN-TOP: 0px; PADDING-LEFT: 6px !important; PADDING-RIGHT: 6px !important; MARGIN-BOTTOM: 2px; PADDING-TOP: 6px !important } IMG.managedPluginStatusIcon { MARGIN: 1px 7px 3px 0px } UL.metaDataList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.metaDataList LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } UL.metaDataList LI H3 { MARGIN: 0px; DISPLAY: inline } .bb-cpgbtd { FONT-SIZE: 90% } .bb-cpgbth { FONT-SIZE: 90% } .bb-cpmgtd { COLOR: #000; FONT-SIZE: 85% } .bb-cpmgth { FONT-SIZE: 85%; FONT-WEIGHT: bold } #resizeHandle { BORDER-BOTTOM: #999 1px solid; POSITION: absolute; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 0px; WIDTH: 3px; BOTTOM: 0px; BACKGROUND: #ddd; BORDER-TOP: #999 1px solid; TOP: 0px; BORDER-RIGHT: #999 1px solid; LEFT: 200px; -moz-border-radius: 1px; -webkit-border-radius: 1px } #resizeHandle:hover { BACKGROUND: #aaa; CURSOR: e-resize } #resizeHandle .collapseControl { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #resizeHandle .pullcollapsed { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .collapseControl:hover { CURSOR: pointer } .caretTitleModifier { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; COLOR: #444; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } .landingPageColumn H3.hiddenlink .linkStatus { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0.4em } TABLE.inventory .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .additional { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .additional .left { FLOAT: left } .additional .right { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: right; COLOR: #777; PADDING-TOP: 2px } .additional .right SPAN.size { COLOR: #000; FONT-WEIGHT: bold } .additional .left SPAN.suboption { DISPLAY: block } A.add { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #b3efb3; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.add:hover { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #e4ffdf; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.remove { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffc4bf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } A.remove:hover { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffd2cf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .listColumnHead { BORDER-BOTTOM: #ccc 1px dotted; MARGIN-BOTTOM: 3px; COLOR: #555; FONT-SIZE: 90%; FONT-WEIGHT: bold } .customFormBuilderLabel { WIDTH: 88%; DISPLAY: block; WORD-WRAP: break-word } .textareaWrapper TEXTAREA { WIDTH: 100% } .textareaWrapper TABLE { WIDTH: 100% } .tools.navPalette { } DIV.instructionData { MARGIN: 0px 0px 12px } DIV.instructionData UL { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } DIV.instructionData UL LI H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 100% } DIV.instructionData UL LI.instructions { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px } DIV.instructionData UL LI.saving { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.instructionData UL LI.instructions A.browse { BORDER-BOTTOM: medium none; BORDER-LEFT: #ccc 1px solid; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .assessmentInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } .assessmentInstructions H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px }

.assessmentPortlet { Z-INDEX: 1; POSITION: fixed; RIGHT: 43px } .assessmentPortlet H3 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.assessmentPortletBlock H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.blockContents H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .savingQuestion { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: none; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #c03; FONT-SIZE: 150%; PADDING-TOP: 2px } TR.dummyVTBEFooter TD { BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 2px } .qIncomplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; COLOR: #333; BORDER-TOP: #999 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } .qComplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; BACKGROUND-COLOR: #ccc; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; FLOAT: left; COLOR: #888; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } DIV.canvasHead { PADDING-BOTTOM: 12px; MARGIN: 0.6em 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #f6f6f6; PADDING-TOP: 6px } DIV.canvasHead UL LI { BORDER-TOP: #eee 1px solid } DIV.canvasHead UL LI:first-child { BORDER-TOP: medium none } DIV.canvasHead UL LI DIV.label { COLOR: #555 } .peer_instructions { MARGIN: 12px 6px } .peerHelp { COLOR: #555 } H2.evaluator { MARGIN: 1em 0px 0.3em } H2.evaluator SPAN { FONT-SIZE: 90%; FONT-WEIGHT: normal } DIV.peerCriteriaStatus { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; BACKGROUND: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 0.3em } DIV.peerCriteriaStatus A.itemHeadOpen { MARGIN: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 90%; FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV.peerCriteriaStatus A.itemHeadOpen:hover { TEXT-DECORATION: underline } DIV.peerCriteriaStatus TD.qStatus { PADDING-BOTTOM: 4px; PADDING-LEFT: 1px; WIDTH: 5%; PADDING-RIGHT: 1px; PADDING-TOP: 4px } DIV.peerCriteriaStatus TD.qStatus A SPAN { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #fff 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 1px solid; PADDING-TOP: 1px } DIV.peerCriteriaStatus TD.qStatus A SPAN.qComplete { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qComplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qIncomplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus A SPAN IMG { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 12px; PADDING-RIGHT: 2px; HEIGHT: 12px; PADDING-TOP: 2px } .questionNumber { FONT-WEIGHT: bold } .questionType { FONT-WEIGHT: bold } .questionNumber { COLOR: #aaa } .questionDiv { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: -1px 0px 6px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.6em } .questionDiv H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: 0px 0px 0.6em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv P { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv DIV.criteriaText { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .questionDiv DIV.submission_text { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; WIDTH: 100%; PADDING-RIGHT: 4px; HEIGHT: 150px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .questionDiv TABLE { WIDTH: 98% } .questionDiv TABLE TABLE { WIDTH: auto } .questionDiv TD.label { WIDTH: 150px; WHITE-SPACE: nowrap } #creceipt { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: red; FONT-WEIGHT: bold; PADDING-TOP: 4px } UL.fileData { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.fileData LI { BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FLOAT: left; PADDING-TOP: 2px } UL.listNav { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: #ddd; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.listNav LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: #ededed; FLOAT: left; COLOR: #2d2680; PADDING-TOP: 0px } UL.listNav LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.listNav LI A:hover { BACKGROUND-COLOR: #dedede; TEXT-DECORATION: underline } UL.listNav LI A.active { BORDER-BOTTOM: #000 2px solid; BORDER-LEFT: #000 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BACKGROUND: #fff; COLOR: #000; BORDER-TOP: #000 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 2px solid; PADDING-TOP: 2px } UL.evaluation { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.evaluation LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 4px } UL.evaluation LI P { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 0px; WIDTH: 79%; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } UL.evaluation H4 { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 4px; WIDTH: 20%; PADDING-RIGHT: 0px; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } UL.evaluation LI P SPAN { COLOR: #555 } DIV.stepPanel DIV.user_html { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.stepPanels H4.defaultCursor { CURSOR: default } H4.defaultCursor { CURSOR: default } .qShow { DISPLAY: block } .qHide { DISPLAY: none } .completionContainer { PADDING-BOTTOM: 6px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainerLarge { PADDING-BOTTOM: 6px; HEIGHT: 75px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainer A IMG { VERTICAL-ALIGN: baseline } .pagedRumble { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 14px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px } .pagedPointsOutsideBar { POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; TOP: 0px; RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 0px; LEFT: auto } .pagedPoints { PADDING-BOTTOM: 6px; LINE-HEIGHT: 100%; MARGIN: -5px 24px -5px -10px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 5px } .designAreaHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaFooter { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaFooter H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaHeader .headertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .designAreaFooter .footertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV#emptyText { MARGIN: 0.6em 16px } .infoListWrapper { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #assessmentGradeForm .infoListWrapper { MARGIN: 0px -12px 18px } .infoListWrapper H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .infoListWrapper H3 A { PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -443px; PADDING-TOP: 3px } .infoListWrapper H3 A.open { BACKGROUND: url(images/indicators.png) no-repeat 0px -1040px } .infoList { MARGIN: 6px 12px } .infoList > LI { PADDING-BOTTOM: 0px !important; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 3px !important } .infoListWrapper .infoList > LI { BORDER-TOP: #cdcdcd 1px dotted } .infoList LI:first-child { BORDER-TOP: medium none } .infoList LI DIV H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .details .infoList { MARGIN-TOP: 0px !important } .infoListFloat { MARGIN: 0px } .infoListFloat LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 3px !important; PADDING-LEFT: 10px !important; PADDING-RIGHT: 10px !important; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 3px !important } .copyQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .linkQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .copyQuestion { BACKGROUND: url(/images/ci/icons/file_copy_ti.png) no-repeat 1px center } .linkQuestion { BACKGROUND: url(/images/ci/icons/file_link_ti.png) no-repeat 1px center } DIV.contentListRight { Z-INDEX: 1000; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 9px; RIGHT: 9px; FONT-WEIGHT: normal; PADDING-TOP: 4px } DIV.contentListRight A { MARGIN-LEFT: 4px; FONT-WEIGHT: bold } DIV.contentListRight SPAN:first-child + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN[style*='none']:first-child + SPAN { DISPLAY: none } DIV.contentListRight SPAN[style*='none']:first-child + SPAN + SPAN { DISPLAY: none } DIV.contentListRight SPAN SPAN { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 9px } DIV.contentListRight STRONG { PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.assessmentHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } DIV.assessmentHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 3px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.assessmentHeader DIV { MARGIN: 3px; COLOR: #555 } .questionShell { WIDTH: 100% } .questionShell > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TBODY > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell > TBODY > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH.labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell .labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell TD.valueCell { WIDTH: 83% } .questionShell .correctAnswer { WIDTH: 2% } .questionShell .field { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 15px; WIDTH: 95%; PADDING-RIGHT: 15px; PADDING-TOP: 0px } .questionShell .field IMG { POSITION: absolute; TOP: 52%; LEFT: -2px } .questionShell .field .vtbegenerated IMG { POSITION: relative; TOP: auto; LEFT: auto } .questionShell .vtbegenerated { WIDTH: 95%; DISPLAY: inline !important } .questionShell TD.valueCell TABLE .vtbegenerated { DISPLAY: inline !important } .takeQuestionDiv .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } #assessmentGradeForm .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } DIV.multiAssign { MARGIN: 3px 0px 9px } DIV.multiAssign UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; LIST-STYLE-IMAGE: none; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI.read { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI P { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } DIV.multiAssign UL LI.label { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.1em; PADDING-LEFT: 0px; WIDTH: 12em; PADDING-RIGHT: 0px; WHITE-SPACE: normal; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #888; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI P SPAN { COLOR: #888 } DIV.multiAssign A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } H3 A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.multiAssign A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.simpleLink { DISPLAY: block; COLOR: #666; FONT-WEIGHT: normal } H3 SPAN.status A.buttonMicro { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } H3 SPAN.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 DIV.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 SPAN.status SPAN { COLOR: #888 } H3 DIV.status SPAN { COLOR: #888 } H3 DIV.status { DISPLAY: inline } .gbtable_header DIV.gbText { text-shadow: 0 -1px 0 #777 } .gbtable THEAD DIV.gbText { text-shadow: 0 -1px 0 #777 } .subActionBar:hover { Z-INDEX: 1000 } .subActionBar DIV.block { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar DIV.button { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar SPAN.block { FLOAT: none } .subActionBar SPAN.button { FLOAT: none } .subActionBar LI.sub { POSITION: relative } .subActionBar FIELDSET LEGEND + DIV.block { BORDER-LEFT: 0px } .subActionBar SELECT { MAX-WIDTH: 180px; VERTICAL-ALIGN: middle } .subActionBar DIV.button { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .subActionBar DIV.last { BORDER-RIGHT: medium none } .subActionBar FIELDSET { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .subActionBar OPTGROUP { FONT-STYLE: normal; MARGIN-TOP: 6px; COLOR: #777; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal } .subActionBar OPTGROUP OPTION { COLOR: #000 } .subActionBar UL LI.sortableSelector A { PADDING-LEFT: 18px } .navPageHeader { TEXT-ALIGN: center; MARGIN: 1em 0px } .navPageHeader H3 { DISPLAY: inline; MARGIN-LEFT: 12px } .navPageHeader SPAN { MARGIN: 0px 6px 0px 0px; COLOR: #888; FONT-WEIGHT: normal } FIELDSET.secondaryActions { FLOAT: right } DIV.secondaryBlock { FLOAT: right } .cellInfoPanel { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #eee 1px solid; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid } .cellStatus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #f6f6f6; FONT-SIZE: 85%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .cellStatus DIV { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 2px } .statusTitle { BACKGROUND: #eee; COLOR: #666 } .statdata { COLOR: #000; OVERFLOW: hidden } .cellStatus DIV.gbTableTimeStamp { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; FLOAT: right; COLOR: #666; PADDING-TOP: 2px } .sortImage { POSITION: absolute; TOP: 9px; LEFT: 6px } .bubble { Z-INDEX: 1000; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } .bubble UL { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #e2eefe; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; OVERFLOW: hidden; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid; PADDING-TOP: 6px } .bubble UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 4px; PADDING-LEFT: 0px; WIDTH: 174px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #666; CLEAR: left; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .bubble UL LI SPAN { WIDTH: 80px; DISPLAY: block; FLOAT: left; COLOR: #666; FONT-WEIGHT: normal; MARGIN-RIGHT: 3px } .bubble UL LI SPAN.icon { WIDTH: 20px; FLOAT: left; OVERFLOW: hidden } .bubble UL LI SPAN.label { WIDTH: 147px; FONT-SIZE: 100%; FONT-WEIGHT: normal } .bubbleStem { POSITION: relative; WIDTH: 190px; HEIGHT: 14px } .bottom .bubbleStem { BOTTOM: 4px } .top .bubbleStem { TOP: -2px } .left .bubbleStem { PADDING-LEFT: 24px } .right .bubbleStem { TEXT-ALIGN: right; RIGHT: 24px } .selectList { Z-INDEX: 100; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #viewList { Z-INDEX: 1000 !important } .selectList LI { Z-INDEX: 101; MARGIN: 0px 4px 0px 0px; FLOAT: left } .selectList .sub A { DISPLAY: block; TEXT-DECORATION: none } .selectList .sub:hover UL { TOP: 20px !important; LEFT: 0px } .selectList .sub UL LI { POSITION: static !important; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .selectList .sub UL LI H4 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #888; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .selectList .sub UL LI H4 { WIDTH: 152px } .selectList .sub UL LI A { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:hover { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:focus { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub A #currentView { BACKGROUND-IMAGE: none } .selectList .sub A #currentSortBy { BACKGROUND-IMAGE: none } .selectList .sub A #currentColSortDir { BACKGROUND-IMAGE: none } UL.selectList LI.sub UL LI.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } UL.selectList LI.sub UL LI.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } DIV.gradeDetails { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 6px } DIV.gradeDetails DIV.label { WIDTH: 15% } SPAN.unstyled { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 0px } @media Print { DIV.hideOnPrint { DISPLAY: none } } DIV.gradeDetailsStep { BORDER-BOTTOM: #ccc 2px solid; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px 0px 6px } .gradeInfoHeader { PADDING-BOTTOM: 3px; MARGIN: 0px -12px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3 { PADDING-BOTTOM: 3px; MARGIN: 0px 4px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 3px } .gradeInfoHeader H3 SPAN { COLOR: #000; FONT-WEIGHT: bold } .gradeInfoHeader H3.root { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #888; COLOR: #fff; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3.root SPAN { COLOR: #fff } UL.gb_currView LI.sub UL LI.favorite A { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } UL.gb_currView LI.sub UL LI.favorite A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } .navStatusButtons .taskbuttondiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.staticFooter DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader { MARGIN: 10px 0px 0px } DIV.staticFooter DIV.details { BORDER-BOTTOM: #ddd 1px solid } .gbColumns_rumble { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ddd 1px solid } .staticHeader { POSITION: relative; ZOOM: 1; CLEAR: both } .staticFooter { POSITION: relative; ZOOM: 1; CLEAR: both } .staticHeader DIV.itemHeaderControl { RIGHT: 0px } .staticFooter DIV.itemHeaderControl { RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { RIGHT: 0px } .staticHeader DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticFooter DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticHeader DIV.itemHeaderControl A { DISPLAY: inline-block } .staticFooter DIV.itemHeaderControl A { DISPLAY: inline-block } UL.gbCategories LI DIV.itemHeaderControl A { DISPLAY: inline-block } UL.dragableHighlight { BORDER-BOTTOM: #999 1px dashed; PADDING-BOTTOM: 3px; MARGIN: 12px -30px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; BORDER-TOP: #999 1px dashed; PADDING-TOP: 12px } UL.gbCategories LI H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticHeader H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticFooter H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } UL.gbCategories LI H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticHeader H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticFooter H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.areaHighlight DIV.container { BACKGROUND: #f9f9f9 } DIV.areaHighlight DIV.bottomRound B { BACKGROUND: #f9f9f9 } UL.dragableHighlight LI H3.item { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .dragableHighlight DIV.details { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } .dbThreadInfo DL { MARGIN: 1em } .dbThreadInfo DT { PADDING-BOTTOM: 0.1em; MARGIN: 0px; PADDING-LEFT: 0.1em; WIDTH: 8em; PADDING-RIGHT: 0.1em; FLOAT: left; COLOR: #999; CLEAR: left; FONT-WEIGHT: bold; PADDING-TOP: 0.1em } .dbThreadInfo DD { PADDING-BOTTOM: 0.1em; MARGIN: 0px 0px 0px 9em; PADDING-LEFT: 0.1em; PADDING-RIGHT: 0.1em; PADDING-TOP: 0.1em } .rating { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 80px; PADDING-RIGHT: 0px; BACKGROUND: url(images/controls.png) no-repeat 0px -20px; HEIGHT: 16px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .star0 { BACKGROUND-POSITION: 0px -20px } .star1 { BACKGROUND-POSITION: 0px -36px } .star2 { BACKGROUND-POSITION: 0px -52px } .star3 { BACKGROUND-POSITION: 0px -68px } .star4 { BACKGROUND-POSITION: 0px -84px } .star5 { BACKGROUND-POSITION: 0px -100px } UL.rating LI { TEXT-INDENT: -999em; CURSOR: pointer } UL.rating LI A { Z-INDEX: 200; POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 0px; TEXT-DECORATION: none; LEFT: 0px } UL.rating LI.one A { LEFT: 0px } UL.rating LI.two A { LEFT: 16px } UL.rating LI.three A { LEFT: 32px } UL.rating LI.four A { LEFT: 48px } UL.rating LI.five A { LEFT: 64px } UL.rating LI A:hover { Z-INDEX: 2; WIDTH: 80px; BACKGROUND: url(images/controls.png) no-repeat -90px -36px; HEIGHT: 16px; OVERFLOW: hidden; LEFT: 0px } UL.rating LI.one A:hover { BACKGROUND-POSITION: -90px -36px } UL.rating LI.two A:hover { BACKGROUND-POSITION: -90px -52px } UL.rating LI.three A:hover { BACKGROUND-POSITION: -90px -68px } UL.rating LI.four A:hover { BACKGROUND-POSITION: -90px -84px } UL.rating LI.five A:hover { BACKGROUND-POSITION: -90px -100px } DIV.collectionViewReadMessageBorder { BORDER-LEFT: #ccc 1px solid; MARGIN-LEFT: 30px } DIV.collectionViewUnreadMessageBorder { BORDER-BOTTOM: #999 3px solid; BORDER-LEFT: #999 3px solid; MARGIN-LEFT: 30px; BORDER-TOP: #999 3px solid; BORDER-RIGHT: #999 3px solid } TABLE.treeframe TR TD { VERTICAL-ALIGN: middle } TABLE.tree_view TR TD IMG { VERTICAL-ALIGN: middle } TABLE.treeframe { MARGIN: 0px } TABLE.treeframe TBODY TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe THEAD TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe TR.high { BACKGROUND-COLOR: transparent } TR.thread TD { VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid } TR.thread TD IMG { VERTICAL-ALIGN: middle } TABLE.unreadmessageborder { BORDER-BOTTOM: #666 3px solid; BORDER-LEFT: #666 3px solid; BORDER-TOP: #666 3px solid; BORDER-RIGHT: #666 3px solid } TABLE.readmessageborder { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TR.show { DISPLAY: table-row } TR.hide { DISPLAY: none } .loadingelipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #ffc; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .gradefield { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 9px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #000; FONT-SIZE: 120%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 4px } .gradefield INPUT { BORDER-BOTTOM: #666 2px solid; BORDER-LEFT: #666 2px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-FAMILY: arial, sans-serif; BACKGROUND: #fff; FONT-SIZE: 110%; VERTICAL-ALIGN: middle; BORDER-TOP: #666 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #666 2px solid; PADDING-TOP: 1px } .gradefield INPUT.inputtypebutton { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; DISPLAY: inline; BACKGROUND: #ededed; HEIGHT: auto; FONT-SIZE: 80%; OVERFLOW: visible; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .gradefield A { FONT-SIZE: 120%; FONT-WEIGHT: bold } .gradefield SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; COLOR: #555; FONT-SIZE: 80%; PADDING-TOP: 0px } .overridegrade { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 3px 0px 3px 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline; FONT-SIZE: 80%; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .overridegrade INPUT.inputtypebutton { MARGIN-TOP: -3px; FONT-SIZE: 70%; VERTICAL-ALIGN: middle; FONT-WEIGHT: normal } DIV.parentmessage { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #ededed; CLEAR: both; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .availability { PADDING-BOTTOM: 1px; FONT-STYLE: italic; MARGIN: 6px 0px; PADDING-LEFT: 3px; WIDTH: auto; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TD.tag_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.msg_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.checkbox_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } TD.prevnextpostarea { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } H3.dbheading { MARGIN-TOP: 0px; DISPLAY: inline; MARGIN-BOTTOM: 0px; FONT-WEIGHT: normal } .dbThread { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa 1px solid; MARGIN: 24px 30px; BACKGROUND: #eee; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 3px 6px #ccc; -webkit-box-shadow: 0 3px 6px #ccc; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbThreadCheckbox { POSITION: absolute } .dbThreadCheckbox INPUT { MARGIN: 10px } .dbThread .dbThreadInfo { PADDING-BOTTOM: 1em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; COLOR: #555; PADDING-TOP: 1em } .dbThreadInfo DL { MARGIN: 0px; WIDTH: 50%; FLOAT: left; FONT-SIZE: 95% } .dbThreadBody { PADDING-BOTTOM: 2em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; BACKGROUND: #fff; PADDING-TOP: 2em } P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbParentPost P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbThreadHeader { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter { PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadHeader .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadFooter .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } .dbThreadHeader .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } DIV.spacerDiv { CLEAR: both } .threadButtons .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .dbThreadInfo .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo P { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.6em } .dbThreadInfo P.detailButtons { FLOAT: right } .dbThreadTree { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MIN-HEIGHT: 80px; MAX-HEIGHT: 200px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #threadArea { PADDING-BOTTOM: 18px; MARGIN: 0px -30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } #message { MARGIN: 0px -30px -20px; BORDER-TOP: #ccc 1px solid } #message_upper { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: -20px -30px 0px } .dbParentPost { BORDER-BOTTOM: #bbb 1px dashed; BORDER-LEFT: #bbb 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -0.6em 0px 1.2em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #bbb 1px dashed; BORDER-RIGHT: #bbb 1px dashed; PADDING-TOP: 0.6em; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbParentPost H4 { MARGIN: 0px 0px 0.6em } .dbParentPost H4 A { WIDTH: 100%; DISPLAY: block } .dbParentPost P { PADDING-BOTTOM: 1.2em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .dbParentPostBody { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; MARGIN-BOTTOM: 0.6em; BACKGROUND: #fcfcfc; CLEAR: both; PADDING-TOP: 0.6em } .loadingElipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: 12px auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #fff7de; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .unreadmessage { FONT-WEIGHT: bold } H3.unreadmessage { FONT-WEIGHT: bold } .unreadmessage.dbheading { FONT-SIZE: 100% } .unread-count { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #128fa8; COLOR: #fff; PADDING-TOP: 2px; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px } #threadArea DIV.checked { BACKGROUND-COLOR: #eee } #threadArea DIV.checked_top { BACKGROUND-COLOR: #eee } #threadArea DIV.checked { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } #threadArea DIV.checked_top { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } DIV.blogContainer { WIDTH: 74%; FLOAT: left } DIV.blogContainer H3.blogHead { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer DIV.blogEntry { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogContainer DIV.blogEntry H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; WORD-WRAP: break-word; BACKGROUND: url(images/small_discussions.gif) no-repeat 8px 9px; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 9px } DIV.blogContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 3px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } DIV.blogContainer DIV.entryDate { COLOR: #444; FONT-SIZE: 95% } DIV.blogContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.blogContainer DIV.entryFooter { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #eaeaea; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.5% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px -12px; DISPLAY: none; BORDER-TOP: #999 1px solid; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.blogContainer DIV.entryFooter DIV.addBlogComment H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .addBlogComment .stepcontent OL { WIDTH: 100% } .addBlogComment .stepcontent OL LI { WIDTH: 100% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment DIV.controls { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.blogContainer UL.entryComments { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eaeaea; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.blogContainer UL.entryComments LI P { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } DIV.blogContainer UL.entryComments LI P.commentDate { Z-INDEX: 10; BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: right; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; MARGIN: 2px 0px -1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bubble_top_thin.gif) no-repeat 15px 100%; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #444; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.blogContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.blogContainer DIV.blogInstructions H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.journalNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.contentAreaNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } .messageCollectionContainer { FLOAT: left } DIV.blogNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { WORD-WRAP: break-word; OVERFLOW: hidden } DIV.blogNav UL.blogArchiveList LI A { WIDTH: 100%; WORD-WRAP: break-word } .indentedWikiList { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 22px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .indentedWikiList IMG { MARGIN: 0px 3px 0px -22px } .blogNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .journalNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .blogNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } .journalNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogNav LI.currentBlog { FONT-WEIGHT: bold } DIV.blogNav LI.currentBlog SPAN { FONT-WEIGHT: normal } DIV.blogContainer .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.blogNav .newItems { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav .gradeStatus { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.blogNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.blogNav UL UL { MARGIN-LEFT: 9px } DIV.blogNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } DIV.journalContainer { WIDTH: 74%; FLOAT: left; MARGIN-RIGHT: 1% } DIV.journalContainer H3.blogHead { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.journalContainer DIV.blogEntry { BORDER-BOTTOM: #eee 3px solid; POSITION: relative; BORDER-LEFT: #eee 0px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 36px; PADDING-RIGHT: 0px; BACKGROUND: url(images/blog_notebook_paper.gif) #fff repeat-y 0px 0px; BORDER-TOP: #eee 3px solid; BORDER-RIGHT: #eee 3px solid; PADDING-TOP: 0px } DIV.journalContainer DIV.blogEntry H4 { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 12px } DIV.journalContainer DIV.entryDate { Z-INDEX: 100; BORDER-BOTTOM: #c0dace 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; PADDING-TOP: 3px } DIV.journalContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; PADDING-TOP: 12px } DIV.journalContainer DIV.entryFooter { PADDING-BOTTOM: 12px; MARGIN: 0px 0px 0px -31px; PADDING-LEFT: 43px; PADDING-RIGHT: 12px; ZOOM: 1; BACKGROUND: url(images/blog_notebook_paper_bot.gif) repeat-x center bottom; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.35% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment { DISPLAY: none; MARGIN-BOTTOM: 6px } DIV.journalContainer UL.entryComments { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #c0dace 1px solid; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.journalContainer UL.entryComments LI P { PADDING-BOTTOM: 0px; MARGIN: 4px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI P.commentDate { COLOR: #444; MARGIN-LEFT: 19px; FONT-SIZE: 90% } DIV.journalContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: url(images/small_blog_comment.gif) no-repeat 0px 3px; COLOR: #000; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 3px } DIV.journalContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.journalContainer DIV.blogInstructions H4 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.blogInstructions P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { OVERFLOW: hidden } DIV.journalNav LI.currentBlog { FONT-WEIGHT: bold } DIV.journalNav LI.currentBlog SPAN { FONT-WEIGHT: normal } .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.journalNav .newItems { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.journalContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.journalNav UL UL { MARGIN-LEFT: 9px } DIV.journalNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } #blogNavLinks { POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 6px; RIGHT: 6px; PADDING-TOP: 0px } .contentAreaPalette UL#aboutBlog LI.currentBlogView { BORDER-BOTTOM: #0078cb 2px solid; BORDER-LEFT: #0078cb 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; MARGIN-BOTTOM: 3px; BACKGROUND: #eff6ff; BORDER-TOP: #0078cb 2px solid; BORDER-RIGHT: #0078cb 2px solid; PADDING-TOP: 2px } .currentBlogView A { COLOR: black; TEXT-DECORATION: none } UL.blogArchiveList { MARGIN-LEFT: 16px } UL.blogArchiveList LI { PADDING-BOTTOM: 4px } #gradeWidget SPAN#blogGradeValue { POSITION: relative; PADDING-LEFT: 6px } #blogGradeValue IMG { POSITION: absolute; TOP: 0px; LEFT: 0px } .contentAreaNav A.itemHead { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 6px } .contentAreaPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } DIV.blogNav .contentAreaPalette:first-child { BORDER-TOP: 0px } DIV.journalNav .contentAreaPalette:first-child { BORDER-TOP: 0px } .rightColumn-narrow .contentAreaPalette:first-child { BORDER-TOP: 0px } .contentAreaPalette UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .contentAreaPalette LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 0px } .contentAreaPalette LI LI { FONT-SIZE: 100% } DIV.iconLegendBlog { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .contentAreaNav A#blogListLink { PADDING-RIGHT: 48px } #loginPageContainer { MARGIN: 0px auto; MIN-HEIGHT: 100%; HEIGHT: auto !important } #loginHeader { POSITION: absolute; TOP: 0px; RIGHT: 0px } #loginHeader UL LI { POSITION: relative; MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; BACKGROUND: #888; VERTICAL-ALIGN: top; BORDER-TOP: 0px } #loginHeader UL LI A { PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 12px; WIDTH: 28px; PADDING-RIGHT: 12px; DISPLAY: inline-block; HEIGHT: 18px; PADDING-TOP: 6px } #loginHeader UL LI:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang H2:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang:hover H2 { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginHeader UL LI:first-child { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI:first-child A { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI IMG { DISPLAY: none } #loginHeader UL LI.font-size:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.contrast:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.font-size A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast:before { CONTENT: "c" } #loginHeader UL LI:hover:before { COLOR: #fff; CURSOR: pointer } #loginHeader UL LI.contrast { BORDER-LEFT: #777 1px solid; MARGIN-LEFT: -4px } #loginLang { POSITION: absolute; TOP: 0px; LEFT: 0px } #loginLang H2 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; BACKGROUND: #888; HEIGHT: 17px; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 4px; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0 } #loginLang H2 SPAN { TEXT-INDENT: -999px; WIDTH: 0px; DISPLAY: inline-block; OVERFLOW: hidden } #loginLang H2:before { FONT: 140%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "W"; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginLang H2:hover:before { COLOR: #fff } #loginLang UL { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 150px; PADDING-RIGHT: 6px; TOP: -1000px; PADDING-TOP: 6px; LEFT: -1000px } #loginLang:hover UL { WIDTH: 175px; TOP: 28px; LEFT: 0px; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0 } #loginLang H2:hover:after { Z-INDEX: 100 } #loginLang:hover H2:after { Z-INDEX: 100 } #loginLang UL LI A { WIDTH: auto } DIV.loginBody { PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BACKGROUND: url(images/Bb_learn_small.png) no-repeat 94px 94px; PADDING-TOP: 260px } DIV.loginBody .receipt { PADDING-BOTTOM: 14px; MARGIN: 0px auto 16px; PADDING-LEFT: 19px; WIDTH: 409px; PADDING-RIGHT: 4px; PADDING-TOP: 12px } #loginBox { TEXT-ALIGN: center } #loginBox UL { MARGIN: 0px auto; WIDTH: 415px } #loginBox LI { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #loginBox LI + LI + LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } #loginBox LI + LI + LI + LI { POSITION: relative; TEXT-ALIGN: right; DISPLAY: block } #loginBox LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #loginBox LI INPUT { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100%; PADDING-RIGHT: 10px; FONT-SIZE: 140%; PADDING-TOP: 10px; -moz-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1) } #loginBox INPUT[type='text'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='password'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='text']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox LI INPUT[type='submit'] { PADDING-BOTTOM: 7px; MARGIN: -31px -9px 0px 12px; PADDING-LEFT: 22px; WIDTH: auto; PADDING-RIGHT: 22px; FONT-SIZE: 130%; PADDING-TOP: 7px } #loginFormTitle { POSITION: absolute; DISPLAY: none } #loginFormText { POSITION: absolute; DISPLAY: none } DIV.portlet #loginFormTitle { POSITION: static; DISPLAY: block } DIV.portlet #loginFormText { POSITION: static; DISPLAY: block } #loginOptions { TEXT-ALIGN: center; MARGIN: 38px auto 26px; WIDTH: 600px } #loginOptions H2 { MARGIN: 10px } #loginOptions P { MARGIN: 10px; COLOR: #444; FONT-SIZE: 0.85em } #loginOptions UL LI { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI.subOption { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } #loginOptions UL LI.subOption A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } .forgot A { BORDER-BOTTOM: #0099b6 1px dotted } #loginOptions UL LI A:hover { BORDER-BOTTOM-STYLE: solid } #loginOptions UL LI.subOption A:hover { BORDER-BOTTOM-STYLE: solid } .forgot A:hover { BORDER-BOTTOM-STYLE: solid } #loginText { TEXT-ALIGN: center; PADDING-BOTTOM: 18px; PADDING-LEFT: 80px; PADDING-RIGHT: 80px; DISPLAY: none; BACKGROUND: #5f6062; BORDER-TOP: #777 1px solid; PADDING-TOP: 12px } #loginText P SPAN { COLOR: #fff; FONT-SIZE: 105%; FONT-WEIGHT: bold } #loginText P { MARGIN: 0px; COLOR: #ededed; FONT-SIZE: 95% } #loginImage { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } #loginImage IMG { MARGIN: 0px auto } #loginAnnouncements { PADDING-BOTTOM: 7px; MARGIN: 0px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 24px } #loginAnnouncements H3 { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 9px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: none; COLOR: #555; FONT-SIZE: 110%; PADDING-TOP: 6px } #loginAnnouncements UL { TEXT-ALIGN: center; MARGIN: 0px auto; WIDTH: 800px } #loginAnnouncements UL LI:before { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:after { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:before { LEFT: 8px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } #loginAnnouncements UL LI:after { RIGHT: 8px; -moz-transform: rotate(2deg); -webkit-transform: rotate(2deg) } #loginAnnouncements LI { POSITION: relative; TEXT-ALIGN: justify; PADDING-BOTTOM: 24px; MARGIN: 0px 0px 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; ZOOM: 1; BACKGROUND: #fff; COLOR: #666; FONT-SIZE: 95%; VERTICAL-ALIGN: top; PADDING-TOP: 18px; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15) } #loginAnnouncements UL LI STRONG:first-child { MARGIN: 0px 0px 12px; FONT-FAMILY: Georgia, serif; FLOAT: left; COLOR: #000; FONT-SIZE: 115% } #loginAnnouncements UL LI STRONG + EM { TEXT-ALIGN: right; MARGIN: 0px; DISPLAY: block; FONT-FAMILY: Georgia; FLOAT: right } #loginAnnouncements UL LI STRONG + EM + BR { DISPLAY: none } #loginAnnouncements UL LI .vtbegenerated { LINE-HEIGHT: 1.38; CLEAR: both } #loginAnnouncements UL LI:first-child { BORDER-TOP: 0px } #loginAnnouncements A { BORDER-BOTTOM: #128fa8 1px dotted } #loginAnnouncements A:hover { BORDER-BOTTOM-STYLE: solid } #loginAnnouncements A:focus { BORDER-BOTTOM-STYLE: solid } #loginHeader H1 { DISPLAY: none } #loginHeader H2 { DISPLAY: none } #loginHeader .productLogo { DISPLAY: none } #loginOptions #gatewayButtonsTitle { DISPLAY: none } #loginOptions #gatewayButtonsInstructions { DISPLAY: none } .login-page #copyright { POSITION: absolute; TEXT-ALIGN: center; MARGIN-TOP: 24px; WIDTH: 900px; BOTTOM: 24px; MARGIN-LEFT: -450px; LEFT: 50% } #loginAnnouncements + #copyright { POSITION: relative } .loginCopyright { WIDTH: 580px !important } .login-page #copyright .logo { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; PADDING-TOP: 0px } .login-page #copyright .newCopyright { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .loginCopyright .legal { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .additionalInfo { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .legal { BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; WIDTH: 24.5em; PADDING-RIGHT: 12px; PADDING-TOP: 3px } #loginPane + #copyright .legal P { MARGIN: 0px; DISPLAY: inline } #loginPane + #copyright .additionalInfo P { MARGIN: 0px; DISPLAY: inline } .login-page .copyrightDetailContents { MIN-HEIGHT: 6.5em; MARGIN-LEFT: -394px; LEFT: 50% } H1.pageTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .caliperTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .discoverTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .unitHomePageTitle { MARGIN: -60px -30px 5px } .caliperTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .unitHomePageTitle H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .discoverTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } .unitHomePageTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .caliperTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .unitHomePageTitle A.browseNoImg { PADDING-BOTTOM: 3px; PADDING-TOP: 2px } .reports { MIN-WIDTH: 810px; BACKGROUND: #f0f0f0 } .reports .navigationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .container { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports #dataCollectionContainer { MARGIN: 0px } .reports DIV[id*='step'] { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .reports UL { MARGIN: 12px } .reports .stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports UL LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; PADDING-TOP: 0px } .reports .label { COLOR: #777 } .reports .field { COLOR: #000 } .reports UL LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .reports H1 { PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 9px } .reports H2 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; PADDING-TOP: 3px } .reports H3 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .reports H3 A IMG { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .reports H3.steptitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; LETTER-SPACING: 0px; COLOR: #fff; FONT-SIZE: 110%; PADDING-TOP: 4px } .reports H4 { PADDING-BOTTOM: 3px; MARGIN: 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; COLOR: #fff; FONT-SIZE: 115%; PADDING-TOP: 3px } .reports H5 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 6px; MARGIN: 12px -12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .reports .attachments { MARGIN: 0px } .reports t.wide { MARGIN: 0px; WIDTH: 100% } #toc { LIST-STYLE-POSITION: outside; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: decimal; MARGIN: 12px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #toc UL { MARGIN: 0px 24px 24px } .toc_div { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; PADDING-BOTTOM: 4px; MARGIN: 6px 18px 18px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid; PADDING-TOP: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .toc_div OL LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports .toc_div H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .toc_div H2 A IMG { MARGIN-RIGHT: 6px } .toc_div A.toggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #f6f6f6; FLOAT: right; FONT-SIZE: 95%; TOP: -4px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .toc_div A.toggle:hover { BACKGROUND: #fff } .backtotop { FLOAT: right } .dateofreport { FLOAT: right } .dateofreport { MARGIN: 6px 18px 12px 0px } .reports .block { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 18px 24px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px 4px 0 4px; -webkit-border-radius: 4px 4px 0 4px } .backtotop { POSITION: relative; MARGIN-BOTTOM: -40px; FLOAT: right; MARGIN-RIGHT: -1px } .backtotop A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f6f6f6; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .backtotop A:hover { BACKGROUND: #fff } .backtotop A IMG { MARGIN-RIGHT: 5px } DIV.fontPreview { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 4px; MARGIN: 3px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 4px } .textareaDiv { PADDING-BOTTOM: 6px } .textareaDiv TABLE { WIDTH: 98% } .textareaDiv TABLE TABLE { WIDTH: 100% } .textareaDiv TABLE TABLE TABLE { WIDTH: 100% } .textareaDiv TEXTAREA { WIDTH: 100%; BORDER-TOP: #666 2px solid } DIV.textToolbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 97.7%; PADDING-RIGHT: 0px; BACKGROUND: #f6f6f6; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } DIV.textToolbar A { WHITE-SPACE: nowrap; FONT-SIZE: 90% } DIV.textToolbar LABEL { PADDING-LEFT: 4px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.textToolbar SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } .previewTextArea { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #999 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 459px; PADDING-RIGHT: 0px; DISPLAY: none; BACKGROUND: #fff; HEIGHT: 112px; OVERFLOW: auto; BORDER-TOP: #999 2px solid; BORDER-RIGHT: #999 2px solid; PADDING-TOP: 0px } .previewTextArea DIV.previewTitle { BORDER-BOTTOM: #eee 2px solid; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; PADDING-TOP: 2px } .previewTextArea DIV.previewTitle A { FLOAT: right } .previewTextArea DIV.previewTitle H6 { MARGIN: 0px; FLOAT: left; FONT-SIZE: 90% } .previewTextArea DIV.previewContent { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .messageContainer H6 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .messageContainer P { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .messageVariable { BORDER-BOTTOM: #ed9 1px solid; BORDER-LEFT: #ed9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; BORDER-TOP: #ed9 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ed9 1px solid; PADDING-TOP: 0px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .myPlaces .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .explore .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .myPlaces A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .myPlaces A:hover { TEXT-DECORATION: underline } .myPlaces A:focus { TEXT-DECORATION: underline } .myPlaces A.home { PADDING-RIGHT: 20px } .myPlaces SPAN.homeIconWrap { POSITION: absolute; BACKGROUND: url(/images/ci/icons/clphomepage/home_ti.gif) no-repeat 0px 0px; TOP: 3px; RIGHT: 3px } .myPlaces SPAN.homeIconWrap IMG { WIDTH: 16px; HEIGHT: 16px } .myPlaces A.unit { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.course { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.ee { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.program { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.workspace { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.unit { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.unit:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.course { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.course:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.ee { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.ee:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.program { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.program:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.workspace { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .myPlaces A.workspace:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .explore A { PADDING-LEFT: 30px; BACKGROUND: url(images/indicators.png) no-repeat 9px -1489px } .explore H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .wizardBody .locationPane { MARGIN: 0px; DISPLAY: block } .wizardBody .breadcrumbs .courseName { DISPLAY: none } .wizardBody .breadcrumbs .courseId { DISPLAY: none } .wizardBody .breadcrumbs { HEIGHT: 24px } .wizardBody .path .root A:before { POSITION: relative; FONT-FAMILY: "Pictos"; COLOR: #aaa; FONT-SIZE: 20px; CONTENT: "H"; TOP: -2px; FONT-WEIGHT: normal } .wizardBody .modeSwitchWrap { POSITION: absolute; TOP: 15px; RIGHT: 12px } .wizardBody { BACKGROUND: #fff } .wizardBody .container { POSITION: static } .wizardBody #contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 210px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 10px; PADDING-TOP: 12px } .wizardBody FORM#contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .topRound { DISPLAY: none } .wizardBody > .locationPane > .contentPaneWide > .topRound { POSITION: absolute; DISPLAY: block; TOP: 60px } .wizardBody #pageTitleDiv IMG { DISPLAY: none } .wizardBody .reqfield { MARGIN: 0px 0px 6px -6px; FLOAT: none } .wizardBody #containerdiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardHead H2 { MARGIN: 0px; FONT-SIZE: 110% } .wizardHead .helphelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .contentPaneWide > .contentBox > .pageTitle H1 { FONT-SIZE: 150% } .wizardBody .containerWizard { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .wizardBody .contentPaneWide > .contentBox > .pageTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 18px; MARGIN: -13px -12px 24px -224px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .wizardBody .contentPaneWide > .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .wizardHead { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; MARGIN-BOTTOM: 24px; BACKGROUND: #efede3; PADDING-TOP: 12px } .wizardBody #dataCollectionContainer { MARGIN: 0px } .wizardHead + .container { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px 4px 4px 4px } .wizardBody .containerWizard .container { HEIGHT: auto } .wizardBody .containerWizard .locationPane { MARGIN-TOP: 12px } .wizardBody UL.contentList LI DIV.details { OVERFLOW-X: visible } .wizardFinishText { MARGIN: 6px 0px 150px } .wizardSubmit { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px -79px -210px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #ccc 1px solid; TOP: 18px; PADDING-TOP: 18px } .wizardSubmit INPUT[name='cancel'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='Previous'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='finish'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='cancel']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='cancel']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[type=image] { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .wizardSubmit SPAN { MARGIN: 0px 18px; COLOR: #999 } .wizardSubmit SPAN STRONG { COLOR: #000 } .wizardBottomRound B.inner { BACKGROUND: #fff1c5 } .wizardBottomRound B.outer { BACKGROUND: #fff1c5 } .wizardBottomRound B.middle { BACKGROUND: #fff1c5 } .navigationPaneWizard { PADDING-BOTTOM: 0px; MARGIN-TOP: 63px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .navigationPaneWizard DIV B.inner { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.middle { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.outer { MARGIN-RIGHT: 0px !important } .navigationPaneWizard .navPalette { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .wizardBody #courseMenuPalette { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .wizardBody #courseMenuPalette DIV.navPaletteContent { -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navigationPaneWizard H2 { PADDING-BOTTOM: 6px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; LETTER-SPACING: 0.2em; COLOR: #00add0; FONT-SIZE: 90%; FONT-WEIGHT: 100; PADDING-TOP: 6px } .navigationPaneWizard .navPalette SPAN { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #ededed; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .navigationPaneWizard .navPalette LI { PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #777; FONT-SIZE: 95%; PADDING-TOP: 6px } .navigationPaneWizard .navPalette UL LI:first-child { POSITION: relative; BORDER-TOP: medium none } .navigationPaneWizard .navPalette UL LI.currentStep { COLOR: #000; FONT-WEIGHT: bold } .navigationPaneWizard .navPalette UL LI.currentStep:after { POSITION: absolute; LINE-HEIGHT: 0.5; COLOR: #999; FONT-SIZE: 18px; CONTENT: "?"; TOP: 9px; RIGHT: 0px } .containerWizard .controlPanel .navPaletteContent A { PADDING-BOTTOM: 4px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(../../../images/ci/ng/portlet_expand.gif) no-repeat 2px 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 4px } .containerWizard .navPaletteContent H2 { MARGIN: 0px; FONT-SIZE: 105% } .containerWizard .navPaletteContent H2 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px } .containerWizard .controlpanel LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #logDetail { OVERFLOW-Y: auto; HEIGHT: 300px } .totalMsgs { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 14px !important; PADDING-RIGHT: 6px !important; COLOR: #555; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 11px !important } .latestEntry { FLOAT: right !important; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal } .log-summary { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } .log-summary A { MARGIN: 0px 3px; DISPLAY: inline-block } .log-summary LI { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .sis-seperator { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .log-summary LI:first-child { BORDER-LEFT: medium none } .log-type { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; COLOR: #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .log-summary .log-type { FONT-SIZE: 120% } .log-error { BACKGROUND: #ef3e36 } .log-warning { BACKGROUND: #fcb040 } .log-message { BACKGROUND: #0b9444 } .log-debug { BACKGROUND: #00aeef } .log-header { MARGIN: 0px 0px 9px } .attachments .log-type { MIN-WIDTH: 6em; TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; LETTER-SPACING: 0.1em; FONT-SIZE: 90%; FONT-WEIGHT: normal } .table-scroll-wrapper TABLE { MARGIN: 0px } .table-scroll-wrapper TBODY { OVERFLOW-Y: auto; HEIGHT: 200px; OVERFLOW: hidden } .row-selected { BACKGROUND-COLOR: #e2eefe !important } .log-search > DIV > DIV { PADDING-BOTTOM: 0px !important; MARGIN: 6px 6px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 9px !important; DISPLAY: inline-block; BORDER-RIGHT: #bbb 1px dotted; PADDING-TOP: 0px !important } .answerSavedButton { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavingButton { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .timeUpWarning { COLOR: #cf0c0c } .thirtySecondWarning { COLOR: #cf0c0c } .oneMinuteWarning { COLOR: #cf0c0c } .fiveMinuteWarning { COLOR: #000 } .halfTimeWarning { COLOR: #000 } .headerForProgressBar { Z-INDEX: 100; POSITION: relative } DIV.assessmentPortletBlock H3.headerForProgressBar A { BACKGROUND: none transparent scroll repeat 0% 0% } .progressBar { Z-INDEX: 90; POSITION: absolute; BOTTOM: 0px; TOP: 0px; LEFT: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .progressBarStyle { BACKGROUND: #b6f796 } .progressBarStyleOneMin { BACKGROUND: #ffe79f } .progressBarStyleThirtySec { BACKGROUND: #ffafaf } .progressBarStyleOvertime { BACKGROUND: #ffafaf } .timerBar { BORDER-BOTTOM: #fff 2px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: #fff 2px solid; PADDING-BOTTOM: 3px; MARGIN: 4px 14px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; FONT-SIZE: 105%; BORDER-TOP: #fff 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 2px solid; PADDING-TOP: 3px; -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 9px; -webkit-border-radius: 9px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timer STRONG { Z-INDEX: 100; POSITION: relative } .timerText { PADDING-BOTTOM: 6px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; PADDING-TOP: 6px } .liveArea.timer { PADDING-BOTTOM: 9px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 6px } .questionStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 3px } .timedQuestionStatus { PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 2px groove; PADDING-TOP: 3px } .completionContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .questionStatus .questionStatusLabel { MARGIN: 0px; LETTER-SPACING: 0px; FONT-WEIGHT: normal } .questionStatus .questionStatusLabel A { COLOR: #666; TEXT-DECORATION: none } .questionStatus .questionStatusLabel A:hover { COLOR: #000; TEXT-DECORATION: underline } .timerMessage { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 2px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timeLabel { COLOR: #666; FONT-WEIGHT: normal } .timeValue { FONT-SIZE: 120% } .timer-collapsed.timer-toggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 0px 2px; PADDING-TOP: 0px } .timer-expanded.timer-toggle { POSITION: absolute; WIDTH: 20px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 3px 4px; HEIGHT: 20px; TOP: 5px; LEFT: 4px } .timerBar .timerLabel:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .timerMessage:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .progressBarStyleOvertime + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "t" } .progressBarStyleOneMin + .timerLabel:before { COLOR: #7f6b2f; CONTENT: "!" } .progressBarStyleThirtySec + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "!" } .timerMessage:before { CONTENT: "t" } .halfTimeWarning:before { COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } #collabRubricList .collabRubricListTypeContainer { MARGIN: 4px } .rubricGradingTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricGradingTable TH { COLOR: #45586f } .rubricTable TH { COLOR: #45586f } .rubricTable THEAD TH { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .rubricTable THEAD TH:first-child { BORDER-LEFT: medium none } .rubricGradingTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .rubricGradingTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH LABEL { FONT-WEIGHT: normal } .rubricTable TBODY TH INPUT { FONT-WEIGHT: normal } .rubricTable TBODY TH > SPAN { FONT-WEIGHT: normal } .rubricGradingTable .rubricCellHeader { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rubricGradingTable .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricSelectedValue { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricCellDescription { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingList .radioLabel { PADDING-BOTTOM: 3px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT-WEIGHT: bold; PADDING-TOP: 3px } .rubricGradingTable .rubricCellContainer { POSITION: relative; MIN-HEIGHT: 30px; OVERFLOW: hidden } .rubricCellRadio { POSITION: absolute; TOP: 6px } .rubricGradingList .rubricCellRadio { POSITION: absolute; TOP: 2px } .selectedCell .rubricCellRadio { TOP: -60px } .pointContainer { FONT-WEIGHT: bold } .rubricGradingTable .feedback { DISPLAY: none } .rubricGradingTable .selectedCell .feedback { DISPLAY: block } .rubricGradingTable .feedback TEXTAREA { WIDTH: 99% } .rubricGradingTable .selectedCell { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px; COLOR: #000; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .3); box-shadow: 0 0 6px rgba(0, 0, 0, .3) } .rubricGradingList .selectedCell { BACKGROUND: url(images/button_ok_ti.png) no-repeat 4px 3px } .rubricGradingTable TBODY TD:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #d1eaef; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .rubricTable TBODY TD:hover { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricGradingTable TBODY .selectedCell:hover { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px } .rubricCriteriaHead { WIDTH: 15% !important } .rubricInlineEdit { POSITION: relative } .rubricInlineEdit > DIV { Z-INDEX: 100; POSITION: absolute; WHITE-SPACE: nowrap } .gridActionBar { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gridActionBar .data TH { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .stepcontent .gridActionBar LI { PADDING-BOTTOM: 0px; MARGIN-BOTTOM: 0px } .rubricGradingTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricSelectedValue { DISPLAY: block; FONT-SIZE: 130%; FONT-WEIGHT: bold } .rangePercent { COLOR: #666; FONT-SIZE: 90%; FONT-WEIGHT: normal } .selectedCell .rangeValue { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #aaa 1px dashed; PADDING-TOP: 6px } .rubricControlContainer .containerTabs { MARGIN: 0px } .rubricControlContainer .contentAreaBlock { MARGIN: 0px } .rubricGradingList .rubricGradingCell { POSITION: relative; MARGIN: 1px 0px; OVERFLOW: hidden } .rubricGradingList .feedback { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .rubricGradingList .feedback TEXTAREA { WIDTH: 99% !important } .rubricGradingList H4 { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .rubricGradingList H4 SPAN { POSITION: absolute; PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 0px; RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 1px } .rubricGradingTotalPoints { MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingOverride { PADDING-BOTTOM: 6px; MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingComments .editor { MARGIN-TOP: 20px } .rubricGradingComments .rubricVtbeLabel { DISPLAY: block; MARGIN-BOTTOM: 10px } .alignmentPanel TR { COLOR: #555 } .alignmentPanel .gradingRubric { BACKGROUND-COLOR: #ffd; COLOR: #000 } .alignmentPanel .gradingRubric .title { FONT-WEIGHT: bold } .alignmentPanel UL.nav SPAN { PADDING-LEFT: 3px } .rubricPanel THEAD TR TH { WHITE-SPACE: normal !important } .rubricPopupContainer .rubricControlContainer { MARGIN: 0px 0px 10px } .rubricPopupContainer .onlyOne.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .onlyOne.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .last.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricGradingCell .pointRangeEdit { DISPLAY: none } .selectedCell.rubricGradingCell .pointRangeView { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .last.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricGradingTable .pointRangeView { DISPLAY: block; FONT-WEIGHT: bold } .selectedCell.rubricGradingCell .pointRangeEdit { DISPLAY: block; FONT-WEIGHT: bold } TD[align='right'] { TEXT-ALIGN: right !important } TD[align='left'] { TEXT-ALIGN: left !important } TR[align='right'] { TEXT-ALIGN: right !important } TR[align='left'] { TEXT-ALIGN: left !important } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: small; PADDING-TOP: 0px !important } .vtbegenerated P { MARGIN-BOTTOM: 4px } .vtbegenerated ADDRESS { FONT-STYLE: italic; DISPLAY: block } .vtbegenerated IMG { FILTER: alpha(opacity = auto) !important; opacity: auto } .vtbegenerated UL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated OL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated LI { LIST-STYLE-POSITION: inside } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated H5 { FONT-SIZE: 90% } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 35px } .vtbegenerated UL[type='circle'] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type='square'] LI { LIST-STYLE-TYPE: square } .vtbegenerated UL[type='disc'] LI { LIST-STYLE-TYPE: disc } .inlineVtbegenerated { DISPLAY: inline } .tree .treeNodeIcon { WIDTH: 16px; HEIGHT: 16px } .navPaletteContent .submenu LI.favorite { PADDING-LEFT: 10px } .navPaletteContent UL[id*='files_groupContents'] .favorite { PADDING-LEFT: 0px } .columnPalette H5 { MARGIN: 6px 0px 3px; COLOR: #555 } .blogNav .stepcontent { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .button-split-left { DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #f6f6f6 2px solid; -webkit-border-bottom-right-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -moz-border-radius-bottomright: 0 } .button-split-left:hover { BORDER-RIGHT: #555 2px solid } .button-split-right { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FLOAT: left; MARGIN-LEFT: -1px; PADDING-TOP: 4px; -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0 } .full_evaluation_view_component H3 { MARGIN: 18px 0px 3px } .full_evaluation_view_component H3:first-child { MARGIN: 9px 0px 3px } .gradeSide_panel .container { POSITION: relative; PADDING-RIGHT: 45% } .gradeSide_panel .contentListPlain { MARGIN: -20px 0px 0px -30px } .collabContainer { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .gradeSide { WIDTH: 36%; TOP: 20px; RIGHT: 20px } .gradeSide { BORDER-BOTTOM: #555 3px solid; POSITION: absolute; BORDER-LEFT: #555 3px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; BOTTOM: auto; PADDING-RIGHT: 4px; BACKGROUND: #888 0px 0px; BORDER-TOP: #555 3px solid; TOP: 20px; RIGHT: 20px; BORDER-RIGHT: #555 3px solid; PADDING-TOP: 4px; LEFT: auto; border-radius: 4px } .collapseTabsData A.close { TOP: 4px; RIGHT: 4px } .evalColumn .taskbuttondiv { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .gradeItemsWrapper { OVERFLOW: visible } .gradeSide .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .evalColumn { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 18px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2) } .evalColumn .liveArea { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .column-wrapper { POSITION: relative; OVERFLOW: visible !important } .column-nav { WIDTH: 190px; FLOAT: left } .colspan2 { POSITION: relative; MARGIN-LEFT: 190px } .colspan2#standards-column { BORDER-LEFT: #ccc 3px double; PADDING-BOTTOM: 12px; MARGIN-BOTTOM: -41px; TOP: -20px; LEFT: -3px } .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; COLOR: #555; PADDING-TOP: 18px } .column-nav .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; PADDING-TOP: 18px } .pageHead-2 H2 { MARGIN: 0px; FONT-SIZE: 120%; FONT-WEIGHT: normal } .pageHead-2 SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .pageHead-2 SPAN:first-child { BORDER-RIGHT: #aaa 1px dotted } .column-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .column-nav-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .category-column .column-nav-inner { BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee',endColorstr = '#cccccc',GradientType = 1); BORDER-LEFT: medium none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #column_lrn_std_category { BORDER-RIGHT: #ccc 3px double } .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 18px !important; BACKGROUND: #fff; PADDING-TOP: 6px !important } #standards-column .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 6px !important } .column-nav .column-inner { DISPLAY: none } .navmenu-list-item { BORDER-BOTTOM: #777 1px solid; POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 21px; DISPLAY: block; WORD-WRAP: break-word; PADDING-TOP: 12px } .navmenu-list > LI:hover { BACKGROUND: #777 } .navmenu-list > LI > A { COLOR: #f6f6f6; FONT-SIZE: 110%; FONT-WEIGHT: 200; TEXT-DECORATION: none } .navmenu-list A SPAN { DISPLAY: none } .navmenu-list .active { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active:hover { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active A { COLOR: #000 } .column2-nav .category-column .navmenu-list LI > A { PADDING-LEFT: 24px } .column-wrapper .actionBar > UL > LI > A { PADDING-BOTTOM: 8px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; COLOR: #333; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 8px } .column-wrapper .actionBar > UL > LI > A:hover { BACKGROUND: #ccc } .standards .button-2 { COLOR: #444 } .standards .button-2:hover { BORDER-BOTTOM-COLOR: #aaa; BORDER-TOP-COLOR: #aaa; BORDER-RIGHT-COLOR: #aaa; BORDER-LEFT-COLOR: #aaa } .category-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .category-column .navmenu-list-item { BORDER-BOTTOM-COLOR: #d6d6d6; BORDER-TOP-COLOR: #d6d6d6; BORDER-RIGHT-COLOR: #d6d6d6; BORDER-LEFT-COLOR: #d6d6d6 } .category-column .navmenu-list-item A { COLOR: #333 } .category-column .navmenu-list-item:hover { FILTER: alpha(opacity = 100) !important; BACKGROUND-COLOR: #e0e0e0; opacity: 1 } .category-column .navmenu-list .active { Z-INDEX: 1001; BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; RIGHT: -4px; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; -moz-box-shadow: -4px 3px 5px #DDD; -webkit-box-shadow: -4px 3px 5px #DDD; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #DDD; border-radius: 4px 0 0 4px } .navmenu-list .inactive { FILTER: alpha(opacity = 75); opacity: .75 } .standards .actionBar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 32px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .actionBar#actionbarlrn_std_doc { BORDER-BOTTOM-COLOR: #777 } .actionBar#actionbarlrn_std_doc > UL > LI > A { COLOR: #f0f0f0; -moz-border-radius: 4px 0 0 0; -webkit-border-radius: 4px 0 0 0; border-radius: 4px 0 0 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .actionBar#actionbarlrn_std_doc > UL > LI > A:hover { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_doc > UL > LI:hover > A { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_category > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std_category > UL > LI > A:hover { BACKGROUND: #ccc; COLOR: #000 } .actionBar#actionbarlrn_std { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 9px 0px 20px; BACKGROUND: #f0f0f0; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .actionBar#actionbarlrn_std > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std > UL > LI > A:hover { BACKGROUND: #ddd; COLOR: #000 } .standards .actionBar > UL { MARGIN: 0px; HEIGHT: 32px } .standards .actionBar UL LI { FLOAT: left } .standards .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .standards .searchbar .selectedItem LABEL SPAN { FONT-SIZE: 90% } .navmenu-actions-1 { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #f0f0f0; BORDER-TOP: #ccc 1px solid; TOP: 4px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px; LEFT: -4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .active .navmenu-actions-1 { LEFT: -4px } .navmenu-actions-2 { POSITION: absolute; PADDING-BOTTOM: 1px !important; PADDING-LEFT: 1px !important; PADDING-RIGHT: 1px !important; TOP: 22px; PADDING-TOP: 1px !important; LEFT: -4px } .navmenu-list-item .contextMenuContainer { POSITION: absolute; MARGIN-TOP: -8px; TOP: 50%; RIGHT: 9px; opacity: 0 } .navmenu-list .active .contextMenuContainer { opacity: 1 } .navmenu-list .active:hover .contextMenuContainer { opacity: 1 } .navmenu-list-item:hover .contextMenuContainer { opacity: .5 } .navmenu-list-item:hover .contextMenuContainer:hover { opacity: 1 } .standards .column-1 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-3 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 1%; WIDTH: 46%; PADDING-RIGHT: 1%; PADDING-TOP: 0px } .standards .column-3 { MARGIN: 0px; WIDTH: 31% } .standardForm > H3 + DIV.column-2 { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standards .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .standards .stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standardForm { POSITION: absolute !important; TOP: 38px; LEFT: 6px } .inline-form-title { MARGIN: 6px 0px } .docs-column .column-nav-inner { BORDER-BOTTOM: #777 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#999999',endColorstr = '#777777',GradientType = 1); BORDER-LEFT: #777 1px solid; MIN-HEIGHT: 400px; BACKGROUND: #999; COLOR: #fff; BORDER-TOP: #777 1px solid; BORDER-RIGHT: medium none; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px } .docs-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .iconToggleWrapper { ZOOM: 1; DISPLAY: inline-block } .iconToggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px -5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .quickAddPal .iconToggle { MARGIN: 0px 0px 0px -1px } .iconToggle:first-child { MARGIN: 0px; -moz-border-radius: 2px 0 0 2px; -webkit-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px } .iconToggle:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #e8f0fe; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .stepcontent .iconToggle .fieldHelp { Z-INDEX: 100; BORDER-BOTTOM: #555 1px solid; POSITION: absolute; MIN-WIDTH: 200px; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #fff; FONT-SIZE: 90%; BORDER-TOP: #555 1px solid; TOP: 100%; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 3px; LEFT: 0px; -moz-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .iconToggle:hover .fieldHelp { Z-INDEX: 10; DISPLAY: block } .iconToggleWrapper .selectedItem { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #cdcdcd; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset } .iconToggle LABEL SPAN { DISPLAY: none; COLOR: #555 } .selectedItem LABEL SPAN { DISPLAY: inline } .selectedItem .fieldHelp STRONG { DISPLAY: none } #lrn_std .panelHead { PADDING-BOTTOM: 9px; PADDING-LEFT: 25px; PADDING-RIGHT: 16px; PADDING-TOP: 9px } #lrn_std .sHeader { MARGIN-LEFT: -21px } #lrn_std .contextMenuContainer { } .lb-content .itemTray { POSITION: absolute } .lb-drawer { PADDING-BOTTOM: 54px } .lb-noTitleBar #pageTitleBar { DISPLAY: none } .lb-locationPane { MARGIN: 0px } .lb-locationPane #contentPanel { MARGIN: 0px } .lb-contentBox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none; border-radius: 0 } .overSoftLimit { COLOR: red } .autocomplete_pos { TOP: 15px !important; LEFT: 0px !important } .autocomplete { Z-INDEX: 5; BORDER-BOTTOM: #888 1px solid; POSITION: absolute; BORDER-LEFT: #888 1px solid; BACKGROUND-COLOR: #fff; WIDTH: 250px; BORDER-TOP: #888 1px solid; BORDER-RIGHT: #888 1px solid; box-shadow: 0 0 3px rgba(0, 0, 0, .3) } .autocomplete .selected { BACKGROUND-COLOR: #ccc } .autocomplete UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; CURSOR: pointer; PADDING-TOP: 2px } .quickAddPal .field { POSITION: relative } .quickAddPal .noLabelField { POSITION: relative } .renameCategory { Z-INDEX: 1200; POSITION: absolute; BOTTOM: 0px; DISPLAY: block; TOP: 0px; RIGHT: 0px; LEFT: 0px } .renameCategory A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } LI SPAN.labelMenuItem { COLOR: #000; FONT-WEIGHT: bold } #toolSettingsWrapper_table TBODY TR { BORDER-TOP: #ddd 1px dashed } #toolSettingsWrapper_table TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #toolSettingsWrapper_table TBODY TR.rowTitle TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle { BACKGROUND-COLOR: #ebebeb; BORDER-TOP: #ddd 1px solid } #toolSettingsWrapper_table TBODY TR.rowTitle H3 { MARGIN: 0.5em 0px } .tooltipContainer { POSITION: relative; TEXT-DECORATION: none } .tooltip { DISPLAY: none; WORD-WRAP: break-word } .tooltip-top { DISPLAY: none; WORD-WRAP: break-word } .tooltipContainer:hover .tooltip { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltipContainer:hover .tooltip-top { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltip:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip-top:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 1px; COLOR: #3b3b3b; LEFT: 1px; -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); -khtml-transform: rotate(90deg) } .tooltip-top:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: auto; COLOR: #4f4f4f; TOP: 0px; LEFT: -2px; -moz-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -o-transform: rotate(-90deg); -khtml-transform: rotate(-90deg) } .paddedMetadata { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 6px !important; PADDING-TOP: 6px !important } .quickAddPal .colorlist LI A.transparent { BACKGROUND-IMAGE: url(/images/swatches/transparent.gif); BACKGROUND-POSITION: -1px -1px; COLOR: transparent } .quickAddPal .colorlist LI A.transparent:hover { BACKGROUND-POSITION: -2px -2px } DIV.checkListActions { PADDING-BOTTOM: 10px } .quickAddPal .colorlist LI A.transparent:active { BACKGROUND-POSITION: -3px -3px } .quickAddPal .colorlist LI A.transparent:focus { BACKGROUND-POSITION: -3px -3px } .theme_scrollbar_content H2 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; FONT-STYLE: italic; MARGIN: -35px 0px 15px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; LETTER-SPACING: 0.06em; COLOR: #333; FONT-SIZE: 130%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #wizard .theme_scrollbar_content H2 { COLOR: #ccc } .theme-switch-wrapper { DISPLAY: inline-block } .theme-switch { POSITION: relative; MARGIN: -14px 9px -14px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-RIGHT: #ccc 1px solid } .theme-switch .sub > A { PADDING-BOTTOM: 14px; LINE-HEIGHT: 1; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; OVERFLOW: hidden; PADDING-TOP: 14px } .theme-switch .sub > A:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .theme-switch .sub:hover > A { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .dummy-switch.theme-switch:hover { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .theme-switch A SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch SPAN SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:after { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM-COLOR: #999; TOP: -8px } .theme-switch .nav .sub UL { WIDTH: 180px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .theme-switch .nav .sub UL LI H4 { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#999999,endColorstr=#333333); PADDING-BOTTOM: 4px; MARGIN-TOP: 5px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #fff; PADDING-TOP: 4px } .theme-switch .nav .sub UL A { PADDING-BOTTOM: 4px; PADDING-LEFT: 18px; WIDTH: 142px; PADDING-RIGHT: 4px; FONT-SIZE: 95%; PADDING-TOP: 4px } BODY DIV.lb-overlay { BACKGROUND: url(images/reorder_bg.png) #bbb -10px 0px } #wizard { Z-INDEX: 1100; BORDER-BOTTOM: #666 1px solid; POSITION: fixed; BORDER-LEFT: #666 1px solid; WIDTH: 900px; BACKGROUND: #555; MARGIN-LEFT: -450px; BORDER-TOP: #666 1px solid; TOP: 5px; BORDER-RIGHT: #666 1px solid; LEFT: 50%; box-shadow: 0 11px 20px rgba(0, 0, 0, .7); border-radius: 9px; background-clip: content-box } #wizard H1 { BORDER-BOTTOM: #666 1px solid; PADDING-BOTTOM: 10px; MARGIN: 1px 0px 0px 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #494949; COLOR: #bbb; FONT-SIZE: 110%; PADDING-TOP: 10px; box-shadow: 0 -1px 0 #363636 inset; border-radius: 9px 9px 0 0; text-shadow: 0 -1px 0 #111 } #wizard .accordion-wrapper { MARGIN: 0px 30px; BACKGROUND: none transparent scroll repeat 0% 0%; border-radius: 0 0 6px 6px } #wizard .accordion_toggle { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_content { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_toggle { POSITION: relative; TEXT-ALIGN: right; PADDING-RIGHT: 60px; COLOR: #aaa; FONT-SIZE: 90%; BORDER-TOP: #444 1px solid; CURSOR: pointer; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .accordion_toggle .accordionTabLabel { FLOAT: left; COLOR: #eee; FONT-SIZE: 125%; TEXT-DECORATION: none } #wizard .accordion_toggle SPAN#selectedStructureName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle SPAN#selectedThemeName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle_help { TEXT-ALIGN: left } #wizard .accordion_toggle A#unselectStructure { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectTheme { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectStructure:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectTheme:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectStructure:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle A#unselectTheme:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle:first-child { BORDER-TOP: 0px; box-shadow: none } #wizard .accordion_content { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #3d3b3b; HEIGHT: 245px; OVERFLOW: hidden; PADDING-TOP: 0px } #wizard .accordion_content A { COLOR: #1ec8ea } #wizard .accordion_toggle_addstructure .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-1.png) no-repeat } #wizard .accordion_toggle_choosetheme .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-2.png) no-repeat } #wizard .accordion_toggle_help .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-4.png) no-repeat } #wizard .right-image { POSITION: absolute; WIDTH: 30px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center center; HEIGHT: 30px; TOP: 6px; RIGHT: 8px; opacity: .5 } #wizard .previewArea { PADDING-BOTTOM: 5px; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #474747; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 235px; MAX-HEIGHT: 235px; FONT-SIZE: 85%; OVERFLOW: hidden; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 5px } .course_welcome_help_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } .selected.course_welcome_help_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.course_welcome_help_scrollbar_handle { } .course_welcome_help_container { POSITION: relative } #wizard .previewArea .introduction { WIDTH: 80% } #wizard .previewArea .helplink { WIDTH: 80% } #wizard .previewArea .customHelp { WIDTH: 80% } #wizard .previewArea .conclusion { POSITION: absolute; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #3d3b3c; PADDING-LEFT: 10px; WIDTH: 20%; BACKGROUND-ATTACHMENT: fixed; PADDING-RIGHT: 10px; COLOR: #bbb; FONT-SIZE: 90%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } #wizard .previewArea .customHelp { PADDING-BOTTOM: 1em; MARGIN-TOP: 0.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; COLOR: #bbb; FONT-SIZE: 90%; BORDER-TOP: #555 1px dotted; PADDING-TOP: 1em } #wizard .previewArea H3 { MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 3px; FONT-SIZE: 140%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN { TEXT-TRANSFORM: uppercase; DISPLAY: block; COLOR: #888; FONT-SIZE: 65%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN SPAN { TEXT-TRANSFORM: lowercase; FONT-STYLE: italic; DISPLAY: inline; FONT-SIZE: 95% } #wizard .helplink .easylist { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN-TOP: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 0px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } #wizard .helplink .easylist LI { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; WIDTH: 46%; PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #555 2px dotted; PADDING-TOP: 3px } #wizard .helplink .easylist LI H3 { FONT-FAMILY: Georgia, serif } #wizard .helplink .easylist LI P { PADDING-LEFT: 0px } #wizard .helplink .easylist LI P { COLOR: #ddd } #wizard .log-summary { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; box-shadow: 0; border-radius: 0 } #wizard .conclusion H3 { TEXT-TRANSFORM: uppercase; MARGIN-TOP: 10px; COLOR: #888; FONT-SIZE: 100%; FONT-WEIGHT: normal } #wizard .conclusion UL { MARGIN-BOTTOM: 15px } #wizard .conclusion UL LI { MARGIN-BOTTOM: 5px } #wizard .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #wizard .content-inner { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #3d3b3b; BORDER-TOP: 0px; BORDER-RIGHT: 0px } #wizard .introtext { PADDING-BOTTOM: 1em; LINE-HEIGHT: 1.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 2em; FLOAT: left; COLOR: #ccc; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 1em } #wizard .introtext LABEL { FONT-STYLE: italic; DISPLAY: none; MARGIN-LEFT: 15px; FONT-SIZE: 85% } #wizard .introtext INPUT { FONT-STYLE: italic; FONT-FAMILY: Georgia, serif; MARGIN-BOTTOM: 10px; FONT-SIZE: 200% } #wizard .introtext .courseNameAndDescription TABLE TABLE { WIDTH: 99%; MARGIN-LEFT: 7px } #wizard .introtext TEXTAREA { FONT-SIZE: 110% } #wizard .introtext INPUT { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext TEXTAREA { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext .courseNameAndDescription { WIDTH: 60%; PADDING-RIGHT: 0.8em; FLOAT: left; MARGIN-RIGHT: 1em; BORDER-RIGHT: #666 3px dotted } #wizard .introtext P { LINE-HEIGHT: 1.4em; FONT-STYLE: italic; MARGIN: 55px 20px 0px 0px; FONT-FAMILY: Georgia, serif; FONT-SIZE: 90% } .themes .horizontal-block { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 8px; MARGIN: 35px 10px 0px; PADDING-LEFT: 0px; WIDTH: 230px; PADDING-RIGHT: 0px; HEIGHT: 184px; BORDER-TOP: #ddd 1px solid; CURSOR: pointer; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 8px } #wizard .themes .horizontal-block { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555 } .help .horizontal-block { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 250px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .themes .horizontal-block IMG { MARGIN: 0px auto; WIDTH: 203px; HEIGHT: 152px } .theme-selector { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 26px; PADDING-RIGHT: 26px; PADDING-TOP: 10px } .structure .theme-selector { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .theme-selector SPAN { FONT-SIZE: 110%; FONT-WEIGHT: bold } #wizard .selected .theme-selector SPAN { COLOR: #333 } .selected .theme-selector SPAN { COLOR: #fff } .structure .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } .themes .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } #wizard .structure .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard .themes .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected A { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard LI.selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .themes .selected.horizontal-block:hover { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } DIV.scroller { HEIGHT: 200px; OVERFLOW: hidden } .themes DIV.scroller { HEIGHT: 245px } DIV.scroller DIV.section { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: 780px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 225px; OVERFLOW: hidden; PADDING-TOP: 0px } .horizontal-block { TEXT-ALIGN: left; PADDING-BOTTOM: 6px; MARGIN: 8px 0px 0px 7px; PADDING-LEFT: 18px; WIDTH: 167px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: none; HEIGHT: 214px; FONT-SIZE: 80%; VERTICAL-ALIGN: top; PADDING-TOP: 3px; border-radius: 5px } .horizontal-block UL { MARGIN-LEFT: 4px } .structure .horizontal-block { HEIGHT: 178px; CURSOR: pointer } #wizard .gotocourse { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; PADDING-RIGHT: 2px; COLOR: #ccc; BORDER-TOP: #444 1px solid; PADDING-TOP: 10px; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .gotocourse LABEL { WIDTH: auto; DISPLAY: inline-table } #wizard .gotocourse LABEL SPAN { DISPLAY: block; COLOR: #999; FONT-SIZE: 10px } #wizard .gotocourse .button-2 { BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 8px; BORDER-TOP-COLOR: #333; MARGIN-BOTTOM: 7px; BORDER-RIGHT-COLOR: #333; FONT-SIZE: 115%; BORDER-LEFT-COLOR: #333; MARGIN-RIGHT: 25px; PADDING-TOP: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 1px 1px 0 #fefefe inset, -1px -1px 0 #888 inset; text-shadow: 0 1px 0 #BBB } #wizard .gotocourse .button-2:hover { BORDER-BOTTOM-COLOR: #222; BORDER-TOP-COLOR: #222; BORDER-RIGHT-COLOR: #222; BORDER-LEFT-COLOR: #222 } #wizard .number { POSITION: relative; LINE-HEIGHT: 1; FLOAT: left; COLOR: #999; FONT-SIZE: 150%; VERTICAL-ALIGN: middle; TOP: -1px; FONT-WEIGHT: bold; MARGIN-RIGHT: 18px } #wizard .accordion_toggle_help .number { TEXT-INDENT: -9999px; WIDTH: 20px; BACKGROUND: url(/images/ci/icons/step_star_light.png) no-repeat; HEIGHT: 20px; MARGIN-RIGHT: 14px; opacity: .4; background-size: 100% 100% } #wizard .gotocourse .secondary.button-2 { COLOR: #555; FONT-WEIGHT: normal; text-shadow: none } #wizard .gotocourse #welcomePageCancelButton { MARGIN-RIGHT: 10px } #wizard A.wizard-close:before { FONT: 150% "Utilicons"; CONTENT: "X" } #wizard A.wizard-close { POSITION: absolute; COLOR: #888; TOP: 8px; RIGHT: 13px } .theme_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 2px } #wizard .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { } .theme_scrollbar_content { TEXT-ALIGN: center; HEIGHT: 245px; OVERFLOW: hidden } .structure_scrollbar_container { POSITION: relative } .structure_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } DIV.courseStructureDescriptions .structure_scrollbar_track { MARGIN: 1px 3% 1px 0px; TOP: 10px } #wizard .structure_scrollbar_track { MARGIN: 1px 0px; TOP: 0px } #wizard .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } #wizard .selected.structure_scrollbar_handle:hover { BACKGROUND-COLOR: #777 } .selected.structure_scrollbar_handle { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle { } .selected.structure_scrollbar_handle:hover { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle:hover { } .structure_scrollbar_content { MARGIN-TOP: 30px; HEIGHT: 370px; OVERFLOW: hidden } #wizard .structure_scrollbar_content { MARGIN-TOP: 22px; HEIGHT: 200px } .courseStructureOuterDiv { MIN-WIDTH: 800px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 10px; PADDING-TOP: 0px } #wizard .courseStructureOuterDiv { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #3d3b3b; MIN-HEIGHT: 250px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .courseStructureNameScroller { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #fff; MARGIN: 10px 0px 0px; WIDTH: 170px; FLOAT: left; HEIGHT: 400px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; box-shadow: -1px 0 4px #CCC; border-top-left-radius: 4px; border-bottom-left-radius: 4px } #wizard .courseStructureNameScroller { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0px; HEIGHT: 220px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none; border-radius: 0 } .courseStructureNameScroller OL LI { MARGIN-BOTTOM: 3px; CURSOR: pointer } .courseStructureNameScroller OL LI:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .courseStructureNameScroller OL LI.courseStructureChoiceLink:focus { OUTLINE-COLOR: #fff; -moz-box-shadow: inset 0 0 6px #128FA8; -webkit-box-shadow: inset 0 0 6px #128FA8; box-shadow: inset 0 0 6px #128FA8 } #wizard .courseStructureNameScroller OL LI { MARGIN-LEFT: 13px } .courseStructureHeader { PADDING-BOTTOM: 5px; FONT-STYLE: italic; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #999; FONT-SIZE: 85%; CURSOR: default !important; PADDING-TOP: 15px } #structureDescription H3 { TEXT-ALIGN: center; MARGIN-TOP: 110px; FONT: italic 100% Georgia, serif } #wizard .courseStructureHeader { PADDING-LEFT: 0px; COLOR: #aaa; PADDING-TOP: 0px; text-shadow: 0 0 1px #222 } .courseStructureChoiceLink { PADDING-BOTTOM: 5px; PADDING-LEFT: 33px; PADDING-RIGHT: 5px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 5px } #wizard .courseStructureChoiceLink { PADDING-LEFT: 20px } .courseStructureChoiceSelected { BACKGROUND-COLOR: #f5f4ef; COLOR: #3d3b3b; border-top-left-radius: 4px; border-bottom-left-radius: 4px } .courseStructureChoiceSelected A { COLOR: #333 } #wizard .courseStructureChoiceSelected A { COLOR: #333 } .courseStructureDescriptions { POSITION: relative; HEIGHT: 400px; MARGIN-LEFT: 170px } #wizard .courseStructureDescriptions { POSITION: relative; MARGIN: 10px 0px 10px 170px; HEIGHT: 225px } .courseStructureDescriptionAndMenu { BORDER-BOTTOM: #ccc 1px solid; POSITION: static; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; BACKGROUND-COLOR: #f5f4ef; MARGIN: 10px 0px 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 20px; WIDTH: 95%; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 400px; COLOR: #333; FONT-SIZE: 12px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px } #wizard .courseStructureDescriptionAndMenu { BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; MARGIN-TOP: 0px; MIN-HEIGHT: 225px; WIDTH: 635px; HEIGHT: 225px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .courseStructureDescriptions P { MARGIN-BOTTOM: 15px } .courseStructureDescriptions H3 { TEXT-ALIGN: center; MARGIN-TOP: 30px; MARGIN-BOTTOM: 0px; COLOR: #666; FONT-SIZE: 120% } .courseStructureDescriptions BR { DISPLAY: none } .structureIncludeSampleContentCheck { BACKGROUND-COLOR: #f4f1e3; PADDING-LEFT: 15px; WIDTH: 100%; DISPLAY: block; HEIGHT: 40px; MARGIN-LEFT: -20px; PADDING-TOP: 10px; box-shadow: -10px 0 6px #CCC inset } #wizard .structureIncludeSampleContentCheck { Z-INDEX: 1; POSITION: absolute; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 7px; WIDTH: 630px; PADDING-RIGHT: 0px; HEIGHT: 25px; MARGIN-LEFT: -12px; BORDER-TOP: #ccc 1px solid; TOP: 185px; PADDING-TOP: 7px; box-shadow: 0 0 2px #999; border-radius: 5px 5px 0 0 } #wizard .accordion_content .useSelectedStructure { MARGIN-RIGHT: 15px } #wizard .accordion_content .useSelectedStructure { COLOR: #333 } #wizard .accordion_content .useExistingMenu { COLOR: #333 } #wizard .courseStructureDescriptions .structure_scrollbar_track { RIGHT: 15px } .courseStructureMenu { POSITION: relative; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; MARGIN: 0px 0px 0px 20px; MIN-HEIGHT: 400px; PADDING-LEFT: 10px; WIDTH: 200px; PADDING-RIGHT: 10px; FLOAT: right; OVERFLOW: hidden; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-top-right-radius: 5px; border-bottom-right-radius: 5px } #wizard .courseStructureMenu { PADDING-BOTTOM: 35px; MIN-HEIGHT: 265px } .courseStructureMenu .listCm .courseMenu A { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .courseStructureMenu .listCm .courseMenu .divider { PADDING-BOTTOM: 6px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 6px } .courseStructureMenu .topRound { DISPLAY: none } .courseStructureMenu .actionBarMicro { DISPLAY: none } .courseStructureMenu .bottomRound { DISPLAY: none } .courseStructureMenu #courseMenuPalette DIV.navPaletteContent { PADDING-TOP: 0px } .arrow_guide { POSITION: absolute; WIDTH: 156px; BACKGROUND: url(/images/ci/icons/left-arrow-point.png) no-repeat; HEIGHT: 34px; LEFT: 3% } #wizard .arrow_guide { TOP: 81% } .courseStructureDescription IMG { TEXT-ALIGN: center; MARGIN: 10px 0px 5px } .courseStructureDescription P.existing_text { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription P.existing_icon { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription A.button-3 { COLOR: #333; MARGIN-RIGHT: 15px } .courseStructureDescription A.existingstructure.unselectStructureButton { MARGIN-TOP: 5px; MARGIN-RIGHT: 37% } .courseStructureNameScroller .current-value { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png); BORDER-BOTTOM: #555 1px solid; POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 17px; WIDTH: 130px; BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-POSITION: 0px 20%; FONT-SIZE: 85%; TOP: 5px; FONT-WEIGHT: normal; LEFT: 15px; box-shadow: 0 -1px 0 #333 inset } #wizard .courseStructureNameScroller .current-value { TOP: 0px } .noSectionDivider { BORDER-TOP: medium none } .dividerRow { PADDING-BOTTOM: 0px !important; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 5px !important } .keyboardAccess .selectArrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .selectArrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess LABEL { DISPLAY: inline-block; FONT: italic 100% Georgia, serif; MARGIN-BOTTOM: 3px; COLOR: #777 } .keyboardAccess .selectArrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .keyboardAccess .y-arrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .access-reorder-block { MIN-WIDTH: 200px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 0px } .access-reorder-block SELECT { MIN-WIDTH: 200px } .y-arrows { TEXT-ALIGN: center; CLEAR: both } .brandingImgWrap IMG[src*='header_institution'] { POSITION: absolute; MAX-HEIGHT: 60px; TOP: 0px; LEFT: 12px } .sample-content { FONT: 113% Georgia, serif; BACKGROUND: url(images/bg_chalk_dark_s.png) 0px 0px } .sample-content .item H3 SPAN { FONT: bold 120% Georgia, serif; COLOR: #25bfcb !important } .sample-content TABLE { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated UL { MARGIN: 4px 0px } .sample-content .vtbegenerated P { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sample-content .vtbegenerated BR { HEIGHT: 1px } .sample-content.liItem:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } .buildList > LI.sample-content:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } DIV.loading-overwrite { Z-INDEX: 10000; POSITION: absolute; TEXT-ALIGN: center; WIDTH: 100%; BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) white no-repeat center 100px; HEIGHT: 100%; TOP: 0px; LEFT: 0px; opacity: 100 } DIV.loading-overwrite SPAN { POSITION: relative; FONT-SIZE: 200%; TOP: 10px } .sample-content DL { MARGIN: 0px } .sample-content DT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 9em; PADDING-RIGHT: 0px; FLOAT: left; FONT-WEIGHT: bold; PADDING-TOP: 0px } .sample-content DD { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 10em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .dueDate { COLOR: #063 } .dueDatePassed { COLOR: #900 } .inventory_paging A.inactive { opacity: .4 } .inactive { opacity: .4 } .linkLeftSpacesp { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .codeFragment { FONT-FAMILY: "Courier New" } .filteredTextHeader { BORDER-BOTTOM: 1px dotted; TEXT-ALIGN: center; BORDER-LEFT: 1px dotted; PADDING-BOTTOM: 5px; LINE-HEIGHT: 150%; BACKGROUND-COLOR: lightyellow; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline-block; BORDER-TOP: 1px dotted; BORDER-RIGHT: 1px dotted; PADDING-TOP: 5px } .filteredText { BACKGROUND-COLOR: lightyellow; COLOR: red } .floatedReceipt { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 10px !important; LINE-HEIGHT: 1.3em; BACKGROUND-COLOR: #fcfbd1 !important; MARGIN: 0px 0px 6px; PADDING-LEFT: 10px !important; WIDTH: 300px; PADDING-RIGHT: 22px !important; FONT-FAMILY: Helvetica, serif; COLOR: #333 !important; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal !important; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 10px !important; box-shadow: 1px 1px 5px #666; border-radius: 4px } .floatedReceipt A.close:before { } .floatedReceipt A.close:hover:before { } .floatedReceipt EM { FONT-WEIGHT: bold } .floatedReceipt A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: url(none); COLOR: #333 !important; BORDER-TOP: 0px; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important } .floatedReceipt A:hover { TEXT-DECORATION: none !important } .floatedReceipt#receipt_floated_theme { Z-INDEX: 1001; POSITION: absolute; TOP: 50px; RIGHT: 45px } .floatedReceipt#receipt_floated_courseMenu { Z-INDEX: 1201; POSITION: absolute; LEFT: 180px } .floatedReceipt .arrow { BORDER-BOTTOM: transparent 15px dashed; POSITION: absolute; BORDER-LEFT: transparent 15px dashed; HEIGHT: 0px; FONT-SIZE: 0px; BORDER-TOP: transparent 15px dashed; BORDER-RIGHT: transparent 15px dashed } .pointTop.floatedReceipt .arrow { BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #fcfbd1; TOP: -30px; LEFT: 58% } .pointLeft.floatedReceipt .arrow { BORDER-RIGHT-STYLE: solid; BORDER-RIGHT-COLOR: #fcfbd1; TOP: 10px; LEFT: -30px } .nav .sub .flyout .slideoutLink { FONT-WEIGHT: bold } .nav .sub .slideoutLink IMG { WIDTH: 16px; BACKGROUND: url(images/utilicons_arrows_dark.png) 16px 16px; FLOAT: right; HEIGHT: 16px } .nav .sub .slideoutLink-active { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; box-shadow: -3px 0 3px rgba(0, 0, 0, .3); border-radius: 0 } .nav .sub .slideoutLink-active IMG { BACKGROUND: url(images/utilicons_arrows_dark.png) 0px 16px } .slideoutOpen { MARGIN-LEFT: -1px !important; BORDER-RIGHT: #ccc 1px solid } .statusFilter { POSITION: relative; PADDING-LEFT: 8px; FONT-SIZE: 13px } LABEL.statusFilter { TOP: 0px } SPAN.statusFilter { TOP: 1px } .collapsible TABLE.reportcard TR TD:first-child { DISPLAY: block !important } #loginRedirectProviders H3 { MARGIN: 10px } #loginRedirectProviderList LI { MARGIN: 0px 10px 5px 0px; DISPLAY: inline-block } #loginRedirectProviderList LI IMG { WIDTH: 16px; HEIGHT: 16px } .paletteItems LABEL { MAX-WIDTH: 90%; WORD-WRAP: break-word } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems .inactive { MARGIN: 0px; opacity: .4 } DIV.comments DIV DIV.collabComments { BACKGROUND-COLOR: white; MAX-HEIGHT: 100px; OVERFLOW: auto !important } DIV.studentGradesCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetEditTabCommentPreview { WIDTH: 110px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetHistTabCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } .tooltip_show:focus { POSITION: static; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible } .radio-list { PADDING-LEFT: 20px } .radio-list LI { PADDING-BOTTOM: 4px !important; TEXT-INDENT: -26px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .radio-list LI INPUT[type=radio] { VERTICAL-ALIGN: bottom; MARGIN-RIGHT: 6px } .radio-list LI .button-4 { MARGIN-LEFT: 4px } .cartMode.csPicker #copyright { DISPLAY: none } .details .key-valueTable + .vtbegenerated { MARGIN-TOP: 12px !important } .ondemand-module { POSITION: relative; MARGIN: 14px 3px } .ondemand-module DIV { MARGIN-BOTTOM: 12px } .ondemand-module DIV A { PADDING-BOTTOM: 10px; PADDING-LEFT: 4%; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 10px; border-radius: 5px } .ondemand-module DIV A:hover { BACKGROUND: #00b3be; TEXT-DECORATION: none; box-shadow: 0 0 12px #2cb673; text-shadow: 0 -1px 0 rgba(0, 0, 0, .4) } .ondemand-module DIV A > SPAN { DISPLAY: block; MARGIN-BOTTOM: 3px; FONT-SIZE: 80%; FONT-WEIGHT: normal } .ondemand-module SPAN.release { BORDER-BOTTOM: #00add0 1px solid; POSITION: absolute; BORDER-LEFT: #00add0 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 13px; PADDING-RIGHT: 10px; BACKGROUND: #9dddea; COLOR: #000; FONT-SIZE: 85%; BORDER-TOP: #00add0 1px solid; TOP: -7px; RIGHT: -4px; BORDER-RIGHT: #00add0 1px solid; PADDING-TOP: 3px; border-radius: 12px 12px 12px 12px; text-shadow: 0 1px 0 rgba(255, 255, 255, .3) } .ondemand-module P { MARGIN: 0px 13px; FONT: italic 93%/1.45 Georgia, serif; COLOR: #666 }

@import url( theme1.css?v=9.1.90132.0 ); @import url( theme2.css?v=9.1.90132.0 );

BODY { HEIGHT: auto } HTML { HEIGHT: auto } BODY { MIN-WIDTH: 0px } DIV.topGlobalLinks { MIN-WIDTH: 0px } .navigationPane { DISPLAY: none } .contentPane { MARGIN: 0px 14px } .questionDiv .submission_text { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainerLarge { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry H4 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry .entryText { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogContainer .entryComments LI P { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .journalNav UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE THEAD TH { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TBODY TD { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TD DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .modeSwitch { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } A.cmimg-small { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .fileInputWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .field { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .noLabelField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .liveArea .stepcontent TEXTAREA { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonLibrary { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .previewTextArea { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .rating LI A:hover { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .dbThreadTree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .nav .sub UL LI A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmdiv A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .menumini A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .timediv UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentTags { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .auto_complete UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-header H2 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-content { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myPlacesContent { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myavatar { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble .detailComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeDetailsStep { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tableOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .inventory { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .brandingImgWrap { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList-read .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentListPlain .contentListRight + .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .landingPageColumn UL LI UL.datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .panelNested { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .module { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .moduleHeading { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .collapsible { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .imgWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .scroll_div { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .eudModule .eudModule-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .styledModule-dark .module-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet .itemGroups LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet UL.hierarchyList LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .customBanner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .loggedInAs { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #loggedInUserName { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .topTabs .hotItems UL.hotLinks { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmImg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemTray .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemIconHolder A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .title { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .high { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .navPaletteContent A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu H3 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .expTreeContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeContainer .tree LI H4 + UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #pickerPalette .tree > LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeScrollable { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #logDetail { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .table-scroll-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gridOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeItemsWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeSide .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV UL LI DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.comments DIV DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.studentGradesCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetEditTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetHistTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .u_scrollPanel-vertical { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentScore { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable_header DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gc_info UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI SPAN { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cumulativeSelectItems .selected_items .itemList { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .flynav UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .overrow DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .weightField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .criteriaItem { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important }

/* ================================================================== * General i18n functions * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ // internal methods function _escape(string) { // ?= does not seem to work return (''+string).replace(/^'|([^\\])'/g, "$1\\'").replace(/\n/g, "&crlf;"); } function _unescape(string) { return string.replace(/&crlf;/g, "\n"); } function _substitute(string, parameters) { for ( var key in parameters) { if ( parameters.hasOwnProperty( key ) ) { string = eval( "string.replace(/\\{" + key + "\\}/g, '" + _escape(parameters[key]) + "')" ); } } return _unescape(string); } // Public methods: these methods are instance methods of dynamically generated // Javascript bundle objects. See Java class blackboard.platform.intl.JsResource // and Perl module CI::L10n::JsResource. // Get a string from a resource bundle function i18n_get_string(key) { return this[key]; } // Get string and perform substitution using positions (arrays) or names (object) function i18n_get_formatted_string(key, parameters) { var string = this.getString(key); if (string && parameters) { // Convert to object keyed by string representation of array index if ( parameters.constructor.toString() == [].constructor.toString() ) { var array = parameters; parameters = {}; for (var i = 0; i < array.length; ++i) { parameters[''+i] = array[i]; } } string = _substitute(string, parameters); } return string; }

/* Prototype JavaScript framework, version 1.7 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key], type = typeof value; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError(); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (object.hasOwnProperty(property)) { results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toJSONEx: toJSON, // Leaving this in here to assist in debugging odd stringify issues in IE if we see them again in other contexts. toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); } function unescapeHTML() { return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#<Enumerable:' + this.toArray().inspect() + '>'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); }, hasResponder: function( callback ) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { return true; } }); return false; } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState]; // quite a high number of Interactive events can be generated on some browsers // triggering a memory issue in FF3 when building the response object. So if there is no // registered listener, quick return // see https://bugzilla.mozilla.org/show_bug.cgi?id=453709 if ( state == 'Interactive' ) { if ( this.notListeningToInteractive ) { if ( this.notListeningToInteractive.value ) return; } else { this.notListeningToInteractive = new Object(); this.notListeningToInteractive.value = ( !this.options['onInteractive'] && !Ajax.Responders.hasResponder( state ) ); if ( this.notListeningToInteractive.value ) return; } } var response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $s(element) { if (Object.isString(element)) { return document.getElementById(element); } return element; } function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { function shouldUseCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement('<input name="x">'); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCache(tagName, attributes) ? cache[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.idCounter = 1; Element.cache = { }; Element._purgeElement = function(element) { var uid = element._prototypeUID; if (uid) { Element.stopObserving(element); element._prototypeUID = void 0; delete Element.Storage[uid]; } } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, // only extend the element if it is a string - otherwise we don't need to extend the element remove: function(element) { if (Object.isString(element)) { element = $(element); } if (element.parentNode) { element.parentNode.removeChild(element); } return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = "<option value=\"test\">test</option>"; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = "<link>"; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var purgeElement = Element._purgeElement; var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) { while (element.firstChild) { element.removeChild(element.firstChild); } var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); nodes.each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(), value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType == 1) elements.push(Element.extend(element)); if (elements.length == maximumLength) break; } return elements; }, // Collect items without extending them all: rawRecursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) { elements.push(element); } return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === 1) { results.push(Element.extend(child)); } child = child.nextSibling; } return results; }, // Find the immediate descendents of the given element without extending them all rawImmediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).rawNextSiblings()); return []; }, previousSiblings: function(element, maximumLength) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, // Find the next siblings without actually extending them all rawNextSiblings: function(element) { return $(element).rawRecursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Prototype.Selector.find(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.previousSiblings(), expression, index); } else { return element.recursivelyCollect("previousSibling", index + 1)[index]; } }, next: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.nextSiblings(), expression, index); } else { var maximumLength = Object.isNumber(index) ? index + 1 : 1; return element.recursivelyCollect("nextSibling", index + 1)[index]; } }, select: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); }, adjacent: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element.parentNode).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $s(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, makePositioned: function(element) { element = $s(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source), delta = [0, 0], parent = null; element = $(element); if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className', forProp = 'for', el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'), f; el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if (element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(), fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html, force) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; var workaround = false; if (t) workaround = true; else if (force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = '&nbsp;' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) { div = div.firstChild; } } else { div.innerHTML = html; } return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')); Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); if (document.documentElement.hasAttribute) { Element.hasAttribute = function(element, attribute) { return element.hasAttribute(attribute); }; } else { Element.hasAttribute = Element.Methods.Simulated.hasAttribute; } Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = Element.Storage.UID++; uid = element._prototypeUID; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); }, purge: function(element) { if (!(element = $(element))) return; var purgeElement = Element._purgeElement; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } }); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = element.getStyle(property); } if (value === null) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value); var whole = null; var position = element.getStyle('position'); var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) { return number; } return number + 'px'; } function isDisplayed(element) { var originalElement = element; while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._prepared) return; var element = this.element; if (isDisplayed(element)) { this._prepared = true; return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = element.getStyle('position'), width = element.getStyle('width'); if (width === "0px" || width === null) { element.style.display = 'block'; width = element.getStyle('width'); } var context = (position === 'fixed') ? document.viewport : element.parentNode; element.setStyle({ position: 'absolute', visibility: 'hidden', display: 'block' }); var positionedWidth = element.getStyle('width'); var newWidth; if (width && (positionedWidth === width)) { newWidth = getPixelValue(element, 'width', context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getPixelValue(element, 'width', context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._prepared = true; }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._prepared = false; }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#<Element.Layout>"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } // Implementing a new method to avoid retesting the entire application with clientHeight function getDimensionsEx(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display != 'none') { // Safari bug return {width: element.clientWidth, height: element.clientHeight}; } return getDimensions(element); } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { element = $(element); var valueT = 0, valueL = 0, docBody = document.body; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getDimensions: getDimensions, getDimensionsEx: getDimensionsEx, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); Prototype._original_property = window.Sizzle; /*! * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; var origContext = context = context || document; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), soFar = selector; while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) selector += parts.shift(); set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { var ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { var ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { var cur = parts.pop(), pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { throw "Syntax error, unrecognized expression: " + (cur || selector); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set, match; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.match[ type ].exec( expr )) != null ) { var filter = Expr.filter[ type ], found, item; anyFound = false; if ( curLoop == result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr == old ) { if ( anyFound == null ) { throw "Syntax error, unrecognized expression: " + expr; } else { break; } } old = expr; } return curLoop; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part, isXML){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag && !isXML ) { part = part.toUpperCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part, isXML){ var isPartStr = typeof part === "string"; if ( isPartStr && !/\W/.test(part) ) { part = isXML ? part : part.toUpperCase(); for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName === part ? parent : false; } } } else { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context, isXML){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { if ( !inplace ) result.push( elem ); } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ for ( var i = 0; curLoop[i] === false; i++ ){} return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); }, CHILD: function(match){ if ( match[1] == "nth" ) { var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return /h\d/i.test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 == i; }, eq: function(elem, i, match){ return match[3] - 0 == i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } } return true; } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; case 'nth': var first = match[2], last = match[3]; if ( first == 1 && last == 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first == 0 ) { return diff == 0; } else { return ( diff % first == 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value != check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 ); } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return 0; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } (function(){ var form = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = "<a name='" + id + "'/>"; var root = document.documentElement; root.insertBefore( form, root.firstChild ); if ( !!document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = "<a href='#'></a>"; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "<p class='TEST'></p>"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; if ( !seed && context.nodeType === 9 && !isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ var div = document.createElement("div"); div.innerHTML = "<div class='test e'></div><div class='test'></div>"; if ( div.getElementsByClassName("e").length === 0 ) return; div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) return; Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ){ elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ) { elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } var contains = document.compareDocumentPosition ? function(a, b){ return a.compareDocumentPosition(b) & 16; } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; var isXML = function(elem){ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; while (element) { if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { return Element.extend(element); } element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { if (eventName === "beforeunload") { responder = function(event) { Event.extend(event, element); return handler.call(element, event); }; } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K, translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { return (translations[eventName] || eventName); }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (!registry) return element; if (!eventName) { registry.each( function(pair) { var eventName = pair.key; stopObserving(element, eventName); }); return element; } var responders = registry.get(eventName); if (!responders) return element; if (!handler) { responders.each(function(r) { stopObserving(element, eventName, r.handler); }); return element; } var i = responders.length, responder; while (i--) { if (responders[i].handler === handler) { responder = responders[i]; break; } } if (!responder) return element; if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } var _getElementsByClassName = instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return _getElementsByClassName( parentElement || document.body, className ); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#<Selector: " + this.expression + ">"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); /* * * Copyright (c) 2007 Andrew Tetlaw * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * * * * FastInit * http://tetlaw.id.au/view/javascript/fastinit * Andrew Tetlaw * Version 1.4.1 (2007-03-15) * Based on: * http://dean.edwards.name/weblog/2006/03/faster * http://dean.edwards.name/weblog/2006/06/again/ * Help from: * http://www.cherny.com/webdev/26/domloaded-object-literal-updated * */ var FastInit = { onload : function() { if (FastInit.done) { return; } FastInit.done = true; for(var x = 0, al = FastInit.f.length; x < al; x++) { FastInit.f[x](); } }, addOnLoad : function() { var a = arguments; for(var x = 0, al = a.length; x < al; x++) { if(typeof a[x] === 'function') { if (FastInit.done ) { a[x](); } else { FastInit.f.push(a[x]); } } } }, listen : function() { if (/WebKit|khtml/i.test(navigator.userAgent)) { FastInit.timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(FastInit.timer); delete FastInit.timer; FastInit.onload(); }}, 10); } else if (document.addEventListener) { document.addEventListener('DOMContentLoaded', FastInit.onload, false); } else if(!FastInit.iew32) { if(window.addEventListener) { window.addEventListener('load', FastInit.onload, false); } else if (window.attachEvent) { return window.attachEvent('onload', FastInit.onload); } } }, f:[],done:false,timer:null,iew32:false }; /*@cc_on @*/ /*@if (@_win32) FastInit.iew32 = true; document.write('<script id="__ie_onload" defer src="' + ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); document.getElementById('__ie_onload').onreadystatechange = function(){if (this.readyState == 'complete') { FastInit.onload(); }}; /*@end @*/ FastInit.listen(); /** * Only include the contents of this file once - for example, if this is included in a lightbox we don't want to re-run * all of this - just use the loaded version. (i.e. rerunning would clear page.bundle which would remove all the * language strings for the current page) */ if (!window.page) { var page = {}; page.isLoaded = false; /** * Utility for adding and using localized messages on the page. */ page.bundle = {}; page.bundle.messages = {}; page.bundle.addKey = function( key, value ) { page.bundle.messages[key] = value; }; page.bundle.getString = function( key /*, arg1, arg2, ..., argN */ ) { var result = page.bundle.messages[key]; if ( !result ) { return "!!!!" + key + "!!!!!"; } else { if ( arguments.length > 1 ) { for ( var i = 1; i < arguments.length; i++ ) { result = result.replace( new RegExp("\\{"+(i-1)+"\\}","g"), arguments[i] ); } } return result; } }; /** * Provides support for lazy initialization of javascript behavior when a certain * event happens to a certain item. */ page.LazyInit = function( event, eventTypes, initCode ) { var e = event || window.event; var target = Event.element( event ); // This is because events bubble and we want a reference // to the element we registered the handlers on. target = page.util.upToClass(target, "jsInit"); for (var i = 0; i < eventTypes.length; i++ ) { target['on'+eventTypes[i]] = null; } eval( initCode ); //initCode can reference "target" }; /** * Evaluates any <script> tags in the provided string in the global scope. * Useful for evaluating scripts that come back in text from an Ajax call. * If signalObject is passed then signalObject.evaluatingScripts will be set to false when done. */ page.globalEvalScripts = function(str, evalExternalScripts, signalObject) { //Get any external scripts var waitForVars = []; var scriptVars = [ { script: 'bb_htmlarea', variable: ['HTMLArea'] }, { script: 'w_editor', variable: ['WebeqEditors'] }, { script: 'wysiwyg.js', variable: ['vtbe_attchfiles'] }, { script: 'gradebook_utils.js', variable: ['gradebook_utils'] }, { script: 'rubric.js', variable: ['rubricModule'] }, { script: 'gridmgmt.js', variable: ['gridMgmt'] }, { script: 'calendar-time.js', variable: ['calendar'] }, { script: 'widget.js', variable: ['widget'] }, { script: 'vtbeTinymce.js', variable: ['tinyMceWrapper'] }, { script: 'WhatsNewView.js', variable: ['WhatsNewView'] }, { script: 'tiny_mce.js', variable: ['tinymce','tinyMCE'] } ]; if (evalExternalScripts) { var externalScriptRE = '<script[^>]*src=["\']([^>"\']*)["\'][^>]*>([\\S\\s]*?)<\/script>'; var scriptMatches = str.match(new RegExp(externalScriptRE, 'img')); if (scriptMatches && scriptMatches.length > 0) { $A(scriptMatches).each(function(scriptTag) { var matches = scriptTag.match(new RegExp(externalScriptRE, 'im')); if (matches && matches.length > 0 && matches[1] != '') { var scriptSrc = matches[1]; if (scriptSrc.indexOf('/dwr_open/') != -1) { // dwr_open calls will ONLY work if the current page's webapp == the caller's webapp, // otherwise we'll get a session error. THis will happen if a lightbox is loaded with // dynamic content from a different webapp (say /webapps/blackboard) while the main page // is loaded from /webapps/discussionboard. To avoid this, rewrite the url to use the // webapp associated with the current page. var newparts = scriptSrc.split('/'); var oldparts = window.location.pathname.split('/'); newparts[1] = oldparts[1]; newparts[2] = oldparts[2]; scriptSrc = newparts.join('/'); } var scriptElem = new Element('script', { type: 'text/javascript', src: scriptSrc }); var head = $$('head')[0]; head.appendChild(scriptElem); for ( var i = 0; i < scriptVars.length; i++ ) { if ( scriptSrc.indexOf( scriptVars[i].script ) != -1 ) { scriptVars[ i ].variable.each( function( s ) { waitForVars.push( s ); } ); break; } } } }); } } page.delayAddExtractedScripts(str.extractScripts(), waitForVars, signalObject); }; // Evaluate any inline script - delay a bit to give the scripts above time to load // NOTE that this is not guaranteed to work - if there are delays loading and initializing // the scripts required then code in these scripts might fail to find the required variables // If it is for our code then updating waitForVars appropriately per script will work page.delayAddExtractedScripts = function (scripts, waitForVars, signalObject) { var count = 0; if (waitForVars.length === 0) { page.actuallyAddExtractedScripts(scripts, signalObject); } else { new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( page.allVariablesDefined(waitForVars) ) { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } } else // give up if it takes longer than 5s to load { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } }.bind(this), 0.05 ); } }; page.allVariablesDefined = function(vars) { var result = true; for ( var i = 0; i < vars.length; i++ ) { if ( !window[vars[i]] ) { result = false; break; } } return result; }; page.actuallyAddExtractedScripts = function (scripts, signalObject) { var scriptExecutionDelay = 0; if( signalObject ) { scriptExecutionDelay = signalObject.delayScriptExecution; } scripts.each(function(script) { if ( script != '' ) { if ( Prototype.Browser.IE && window.execScript ) { ( function() { window.execScript( script ); }.delay( scriptExecutionDelay ) ); } else { ( function() { var scriptElem = new Element( 'script', { type : 'text/javascript' } ); var head = $$( 'head' )[ 0 ]; script = document.createTextNode( script ); scriptElem.appendChild( script ); head.appendChild( scriptElem ); head.removeChild( scriptElem ); }.delay( scriptExecutionDelay ) ); } } } ); if (signalObject) { signalObject.evaluatingScripts = false; } }; page.setIframeHeight = function () { try { var iframeElements = $$('iframe.cleanSlate'); iframeElements.each( function( iframeElement ) { if ( iframeElement.contentWindow && iframeElement.contentWindow.document && iframeElement.contentWindow.document.body ) { iframeElement.style.height = iframeElement.contentWindow.document.body.scrollHeight + 50 + 'px'; } }); } catch( e ){} }; page.onResizeChannelIframe = function( channelExtRef ) { var frameId = 'iframe' + channelExtRef; var listId = 'list_channel' + channelExtRef; var f = $( frameId ); f.style.height = f.contentWindow.document.getElementById( listId ).scrollHeight + 15 + "px"; }; /** * Contains page-wide utility methods */ page.util = {}; /** * Returns whether the specific element has the specified class name. * Same as prototype's Element.hasClassName, except it doesn't extend the element (which is faster in IE). */ page.util.hasClassName = function ( element, className ) { var elementClassName = element.className; if (elementClassName.length === 0) { return false; } if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) { return true; } return false; }; page.util.fireClick = function ( elem ) { if (Prototype.Browser.IE) { elem.fireEvent("onclick"); } else { var evt = document.createEvent("HTMLEvents"); evt.initEvent("click", true, true); elem.dispatchEvent(evt); } }; page.util.useARIA = function () { if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); var ffversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ffversion >= 1.9) { return true; } } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; var ieversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ieversion>=8) { return true; } } return false; }; // Find an element with the given className, starting with the element passed in page.util.upToClass = function ( element, className ) { while (element && !page.util.hasClassName(element, className)) { element = element.parentNode; } return $(element); }; page.util.isRTL = function () { var els = document.getElementsByTagName("html"); var is_rtl = (typeof(els) != 'undefined' && els && els.length == 1 && els[0].dir == 'rtl' ); return is_rtl ; }; page.util.allImagesLoaded = function (imgList) { var allDone = true; if (imgList) { for ( var i = 0, c = imgList.length; i < c; i++ ) { var animg = imgList[i]; // TODO - this doesn't appear to work on IE. if ( !animg.complete ) { allDone = false; break; } } } return allDone; }; // Exposes (display but keep invisible) an invisible element for measurement // recursively traverses up the DOM looking for // a parent node of element whose display == 'none' // If found, sets its style to: display:block, position:absolute, and visibility:hidden // and saves it as element.hiddenNode so it can be easily unexposed page.util.exposeElementForMeasurement = function ( element ) { element = $(element); var e = element; var hiddenNode; // find parent node that is hidden while ( !hiddenNode && e && e.parentNode) { if ( $(e).getStyle('display') === 'none') { hiddenNode = $(e); } e = $(e.parentNode); } if ( hiddenNode ) { // save original style attributes: visibility, position, & display element.hiddenNode = hiddenNode; var style = hiddenNode.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') { newStyles.position = 'absolute'; } hiddenNode.originalStyles = originalStyles; // set new style for: visibility, position, & display hiddenNode.setStyle( newStyles ); } }; // undo previous call to exposeElementForMeasurement page.util.unExposeElementForMeasurement = function ( element ) { element = $(element); if ( element && element.hiddenNode && element.hiddenNode.originalStyles ) { Element.setStyle( element.hiddenNode, element.hiddenNode.originalStyles ); element.hiddenNode.originalStyles = null; element.hiddenNode = null; } }; /** * Returns whether any part of the two elements overlap each other. */ page.util.elementsOverlap = function ( e1, e2 ) { var pos1 = $(e1).cumulativeOffset(); var a = { x1: pos1.left, y1: pos1.top, x2: pos1.left + e1.getWidth(), y2: pos1.top + e1.getHeight() }; var pos2 = $(e2).cumulativeOffset(); var b = { x1: pos2.left, y1: pos2.top, x2: pos2.left + e2.getWidth(), y2: pos2.top + e2.getHeight() }; return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; }; /** * To handle the case where the focus is visible but too close to the bottom of the page, scroll the page up a bit. */ page.util.focusAndScroll= function(elem) { elem.focus(); return page.util.ensureVisible(elem); }; page.util.ensureVisible= function(elem) { var scrolltop = document.viewport.getScrollOffsets().top; var mytop = elem.cumulativeOffset()[1]; var height = document.viewport.getDimensions().height; var realtop = mytop - scrolltop; var thirty = height * 0.3; if (realtop > (height-thirty)) { window.scrollBy(0,thirty); } return false; }; page.util.processJSProtoString = function (string, checkToken) { // This value must match the value passed as the 2nd parameter to this string. // The goal is to pass a known value, as a constant, through the javascript: pseudo-protocol // handler. We can then examine the result to determine the decoding method used by the current // browser. var sniffToken = '%C3%A9'; // There are three known decoding cases, non-translated, UTF8, and unescape if (checkToken === unescape(sniffToken)) { // Unescape decoded return decodeURIComponent(escape(string)); } else if (checkToken === sniffToken) { // Non-translated return decodeURIComponent(string); } else { // UTF8 Decoded/Unknown return string; } }; /** * Find the first action bar that precedes sourceElement * Returns the action bar div element if found, null otherwise * * @param sourceElement */ page.util.findPrecedingActionBar = function( sourceElement ) { var actionBar = null; // Loop through each ancestor of sourceElement, // starting with parent, until an action bar is found sourceElement.ancestors().each( function( item ) { actionBar = item.previous('div.tabActionBar') || item.previous('div.actionBarMicro') || item.previous('div.actionBar'); if (actionBar) { throw $break; } }); return actionBar; }; page.util.getLargestDimensions = function (element) { var width = 0; var height = 0; var dim; while (element != document) { dim = $(element).getDimensions(); if (dim.width > width) { width = dim.width; } if (dim.height > height) { height = dim.height; } element = element.up(); } return { width: width, height: height }; }; /* * Resize the current window so that it will fit the largest dimensions found for the given element. * Will also reposition on the screen if required to fit. Will not size larger than the screen. * NOTE that this will only work for popup windows - main windows are typically in a tabset in * the browser and they don't allow resizing like this. That's OK because the main use case * for this method is to make sure popup windows are resized appropriately for their content. */ page.util.resizeToContent = function (startElement) { var dim = page.util.getLargestDimensions(startElement); var newWidth = dim.width; newWidth += 25; // TODO: Haven't figured out why I need this extra space yet... if (window.innerWidth > newWidth) { newWidth = window.innerWidth; } if (newWidth > screen.width) { newWidth = screen.width; } var newHeight = dim.height; newHeight += 100; // TODO: Haven't figured out why I need this extra space yet if (window.innerHeight > newHeight) { newHeight = window.innerHeight; } if (newHeight > screen.height) { newHeight = screen.height; } var left = 0; var top = 0; if ( window.screenLeft ) { left = window.screenLeft; top = window.screenTop; } else if ( window.screenX ) { left = window.screenX; top = window.screenY; } if (left + newWidth > screen.width) { left = screen.width - newWidth; if (left < 0) { left = 0; } } if (top + newHeight > screen.height) { top = screen.height - newHeight; if (top < 0) { top = 0; } } window.moveTo(left,top); window.resizeTo(newWidth,newHeight); }; /** * Sets the css position of all li elements that are contained in action bars on the page. * Since z-index only works on positioned elements, this function can be used to ensure that * divs with a higher z-index will always appear on top of any action bars on the page. * * @param cssPosition */ page.util.setActionBarPosition = function( cssPosition ) { $$( 'div.actionBar', 'div.tabActionBar', 'div.actionBarMicro' ).each( function( actionbar ) { actionbar.select( 'li' ).each( function( li ) { li.setStyle( {position: cssPosition} ); }); }); }; /** * Class for controlling the course menu-collapser. Also ensures the menu is * the right height */ page.PageMenuToggler = Class.create(); page.PageMenuToggler.prototype = { /** * initialize */ initialize: function( isMenuOpen,key,temporaryScope ) { page.PageMenuToggler.toggler = this; this.key = key; if (temporaryScope) { this.temporaryScope = temporaryScope; } else { this.temporaryScope = false; } this.isMenuOpen = isMenuOpen; this.puller = $('puller'); this.menuPullerLink = $(this.puller.getElementsByTagName('a')[0]); this.menuContainerDiv = $('menuWrap'); this.navigationPane = $('navigationPane'); this.contentPane = $('contentPanel') || $('contentPane'); this.navigationPane = $('navigationPane'); this.locationPane = $(this.navigationPane.parentNode); this.breadcrumbBar = $('breadcrumbs'); this.menu_pTop = parseInt(this.menuContainerDiv.getStyle('paddingTop'), 10); this.menu_pBottom = parseInt(this.menuContainerDiv.getStyle('paddingBottom'), 10); this.loc_pTop = parseInt(this.locationPane.getStyle('paddingTop'), 10); if ( this.breadcrumbBar ) { this.bc_pTop = parseInt(this.breadcrumbBar.getStyle('paddingTop'), 10); this.bc_pBottom = parseInt(this.breadcrumbBar.getStyle('paddingBottom'), 10); } else { this.bc_pTop = 0; this.bc_pBottom = 0; } this.toggleListeners = []; this.onResize( null ); // fix the menu size // Doesn't work in IE or Safari.. //Event.observe( window, 'resize', this.onResize.bindAsEventListener( this ) ); Event.observe( this.menuPullerLink, 'click', this.onToggleClick.bindAsEventListener( this ) ); }, /** * Adds a listener for course menu toggle events */ addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, /** * Notifies all registered toggle event listeners that a toggle has occurred. */ _notifyToggleListeners: function( isOpen ) { this.toggleListeners.each( function( listener ) { listener( isOpen ); }); }, notifyToggleListeners: function( isOpen ) { // we call once the toggle is complete and the DOM in its new state. 2012 themes add transition, which seems // to collide with the logic to get dimensions of dom element, so the delay is a 1 sec to let time for those // transitions to be done. this._notifyToggleListeners.bind( this, isOpen ).delay( 1 ); }, /** * getAvailableResponse */ getAvailableResponse : function ( req ) { var originalMenuOpen = this.isMenuOpen ; if ( req.responseText.length > 0 ) { if ( req.responseText == 'true' ) { this.isMenuOpen = true; } else { this.isMenuOpen = false; } } if ( originalMenuOpen != this.isMenuOpen ) { this.notifyToggleListeners( this.isMenuOpen ); this.menuContainerDiv.toggle(); this.puller.toggleClassName("pullcollapsed"); this.contentPane.toggleClassName("contcollapsed"); this.navigationPane.toggleClassName("navcollapsed"); } }, /** * Expands the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ expand : function () { this.menuContainerDiv.show(); this.puller.removeClassName("pullcollapsed"); this.contentPane.removeClassName("contcollapsed"); this.navigationPane.removeClassName("navcollapsed"); this.isMenuOpen = true; var msg = page.bundle.messages[ "coursemenu.hide" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( true ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, true ); } else { UserDataDWRFacade.setStringPermScope( this.key, true ); } }, /** * Collapses the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ collapse : function () { this.menuContainerDiv.hide(); this.puller.addClassName("pullcollapsed"); this.contentPane.addClassName("contcollapsed"); this.navigationPane.addClassName("navcollapsed"); this.isMenuOpen = false; var msg = page.bundle.messages[ "coursemenu.show" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( false ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, false ); } else { UserDataDWRFacade.setStringPermScope( this.key, false ); } }, /** * Event triggered when the puller toggle control is clicked. Changes the * menu from open to closed or closed to open depending on existing state. */ onToggleClick: function( event ) { if ( this.isMenuOpen ) { this.collapse(); } else { this.expand(); } Event.stop( event ); }, /** * onResize */ onResize: function( event ) { var menuHeight = this.menuContainerDiv.getHeight(); var contentHeight = this.contentPane.getHeight(); var maxHeight = ( menuHeight > contentHeight ) ? menuHeight : contentHeight; this.contentPane.setStyle({height: maxHeight + 'px'}); this.navigationPane.setStyle({height: maxHeight + 'px'}); } }; page.PageMenuToggler.toggler = null; /** * Class for controlling the page help toggler in the view toggle area */ page.PageHelpToggler = Class.create(); page.PageHelpToggler.prototype = { initialize: function( isHelpEnabled, showHelpText, hideHelpText, assumeThereIsHelp ) { page.PageHelpToggler.toggler = this; this.toggleListeners = []; this.isHelpEnabled = isHelpEnabled; this.showText = showHelpText; this.hideText = hideHelpText; this.contentPanel = $('contentPanel') || $('contentPane'); var helperList = []; if ( this.contentPanel && !assumeThereIsHelp) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { helperList.push( $(el) ); } } } var helpTextToggleLink = $('helpTextToggleLink'); if ( ( !helperList || helperList.length === 0) && !assumeThereIsHelp ) { if ( helpTextToggleLink ) { helpTextToggleLink.remove(); } } else { if ( !isHelpEnabled ) { helperList.invoke( "toggle" ); } if ( !this.showText ) { this.showText = page.bundle.getString("viewtoggle.editmode.showHelp"); } if ( !this.hideText ) { this.hideText = page.bundle.getString("viewtoggle.editmode.hideHelp"); } this.toggleLink = helpTextToggleLink; this.toggleImage = $(this.toggleLink.getElementsByTagName('img')[0]); Event.observe( this.toggleLink, "click", this.onToggleClick.bindAsEventListener( this ) ); $(this.toggleLink.parentNode).removeClassName('hidden'); this.updateUI(); } }, addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, _notifyToggleListeners: function() { this.toggleListeners.each( function( listener ) { listener( this.isHelpEnabled ); }); }, notifyToggleListeners: function() { // we notify once the whole menu collapse/expand is done, so the DOM is in final state this._notifyToggleListeners.bind( this ).delay( ); }, updateUI: function( ) { if ( this.isHelpEnabled ) { $("showHelperSetting").value = 'true'; this.toggleImage.src = "/images/ci/ng/small_help_on2.gif"; this.toggleLink.setAttribute( "title", this.showText ); this.toggleImage.setAttribute( "alt", this.showText ); } else { $("showHelperSetting").value = 'false'; this.toggleImage.src = "/images/ci/ng/small_help_off2.gif"; this.toggleLink.setAttribute( "title", this.hideText ); this.toggleImage.setAttribute( "alt", this.hideText ); } }, onToggleClick: function( event ) { // Toggle all elements that have the css class "helphelp" var helperList = []; if ( this.contentPanel ) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { $(el).toggle(); } } } if ( this.isHelpEnabled ) { this.isHelpEnabled = false; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "false" ); } else { this.isHelpEnabled = true; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "true" ); } this.updateUI(); this.notifyToggleListeners(); Event.stop( event ); } }; /** * Class for controlling the display of a context menu. */ page.ContextMenu = Class.create(); page.ContextMenu.prototype = { initialize: function( contextMenuContainer, divId, forceMenuRefresh ) { this.displayContextMenuLink = contextMenuContainer.down("a"); this.contextMenuContainer = contextMenuContainer; this.forceMenuRefresh = forceMenuRefresh; this.uniqueId = this.displayContextMenuLink.id.split('_')[1]; this.contextMenuDiv = this.displayContextMenuLink.savedDiv; if ( !this.contextMenuDiv ) { this.contextMenuDiv = contextMenuContainer.down("div");//$('cmdiv_' + this.uniqueId); this.displayContextMenuLink.savedDiv = this.contextMenuDiv; page.ContextMenu.hiddenDivs.set(divId,this.contextMenuDiv); } this.originalContextMenuDiv = this.contextMenuDiv.cloneNode(true); $(this.contextMenuDiv).setStyle({zIndex: 200}); this.displayContextMenuLink.appendChild( this.contextMenuDiv ); // Temporarily add the menu back where it started this.closeContextMenuLink = contextMenuContainer.down(".contextmenubar_top").down(0); this.contextParameters = contextMenuContainer.readAttribute("bb:contextParameters"); this.menuGeneratorURL = contextMenuContainer.readAttribute("bb:menuGeneratorURL"); this.nav = contextMenuContainer.readAttribute("bb:navItem"); this.enclosingTableCell = contextMenuContainer.up("td"); this.menuOrder = contextMenuContainer.readAttribute("bb:menuOrder"); this.overwriteNavItems = contextMenuContainer.readAttribute("bb:overwriteNavItems"); this.beforeShowFunc = contextMenuContainer.readAttribute("bb:beforeShowFunc"); if (this.beforeShowFunc) { this.beforeShowFunc = eval(this.beforeShowFunc); } if ( this.menuOrder ) { this.menuOrder = this.menuOrder.split(','); } if ( !this.contextParameters ) { this.contextParameters = ""; } if ( !this.menuGeneratorURL ) { this.menuGeneratorURL = ""; } if ( !this.nav ) { this.nav = ""; } this.dynamicMenu = false; if ( this.menuGeneratorURL ) { this.dynamicMenu = true; } if (this.dynamicMenu) { Event.observe( this.displayContextMenuLink, "click", this.generateDynamicMenu.bindAsEventListener( this ) ); } else { Event.observe( this.displayContextMenuLink, "click", this.onDisplayLinkClick.bindAsEventListener( this ) ); } Event.observe( this.closeContextMenuLink, "click", this.onCloseLinkClick.bindAsEventListener( this ) ); Event.observe( this.contextMenuDiv, "keydown", this.onKeyPress.bindAsEventListener( this ) ); // adding nowrap to table cell containing context menu // If no enclosing td is found, try th if ( !this.enclosingTableCell ) { this.enclosingTableCell = contextMenuContainer.up("th"); } if ( this.enclosingTableCell ) { if ( !this.enclosingTableCell.hasClassName("nowrapCell") ) { this.enclosingTableCell.addClassName("nowrapCell"); } // if label tag is an immediate parent of context menu span tag, it needs nowrap as well if ( this.enclosingTableCell.down("label") && !this.enclosingTableCell.down("label").hasClassName("nowrapLabel")) { this.enclosingTableCell.down("label").addClassName("nowrapLabel"); } } if ( !this.dynamicMenu ) { var contexMenuItems = contextMenuContainer.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; // remove the context menu div from the page for performance reasons - add it back when we need to show it Element.remove( this.contextMenuDiv ); }, onKeyPress: function( event ) { var elem, children, index; var key = event.keyCode || event.which; if ( key == Event.KEY_UP ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_ESC ) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_TAB ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( (!event.shiftKey && index == children.length - 1) || (event.shiftKey && index === 0)) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } } else if ( key == Event.KEY_RETURN ) { if ( this.useARIA ) { elem = Event.element ( event ); (function() { page.util.fireClick( elem ); }.bind(this).defer()); Event.stop( event ); } } }, onAnchorFocus: function ( event ) { Event.element( event ).setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { Event.element( event ).setStyle({ backgroundColor: '' }); }, afterMenuGeneration: function( req ) { if ( this.dynamicMenu ) { var result; this.dynamicMenu = this.forceMenuRefresh; try { result = req.responseText.evalJSON( true ); if ( result.success == "true" ) { // append uniqueId to each li var menuHTML = result.contentMenuHTMLList.replace(/(<li.*?id=")(.*?)(".*?>)/g,"$1$2_"+this.uniqueId+"$3"); if ( this.forceMenuRefresh ) { this.contextMenuDiv.innerHTML = this.originalContextMenuDiv.innerHTML; } this.contextMenuDiv.insert({bottom:menuHTML}); $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); var contexMenuItems = this.contextMenuDiv.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } else { new page.InlineConfirmation("error", result.errorMessage, false ); } } catch ( e ) { new page.InlineConfirmation("error", result.errorMessage, false ); } } this.showMenu(); //focus on the first menu item (function() { this.contextMenuDiv.down("a").focus(); }.bind(this).defer()); }, appendItems: function( items, menuItemContainer ) { if (!menuItemContainer) { var uls = this.contextMenuDiv.getElementsBySelector("ul"); menuItemContainer = uls[uls.length-1]; } items.each( function ( item ) { if ( item.type == "seperator" ) { if (menuItemContainer.getElementsBySelector("li").length === 0) { return; } var ul = new Element('ul'); menuItemContainer.parentNode.appendChild( ul ); menuItemContainer = ul; return; } if ( !this.menuItemTempate ) { var menuItems = this.contextMenuDiv.getElementsBySelector("li"); this.menuItemTempate = menuItems[menuItems.length-1]; } var mi = this.menuItemTempate.cloneNode( true ); var a = mi.down('a'); var name = item.key ? page.bundle.getString( item.key ) : item.name ? item.name : "?"; a.update( name ); a.title = item.title ? item.title : name; a.href = "#"; menuItemContainer.appendChild( mi ); Event.observe( a, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( a, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( a, 'click', this.onItemClick.bindAsEventListener( this, item.onclick ) ); }.bind( this ) ); }, onItemClick: function( evt, func ) { this.onCloseLinkClick(); func(); Event.stop( evt ); }, setItems: function( items ) { // rather than try to match up new items with existing items, it's easier to delete the existing items // (except for the close item) and then add the new items // remove existing menu items, except close menu var menuItems = this.contextMenuDiv.getElementsBySelector("li").each( function (li ) { if ( !li.hasClassName("contextmenubar_top") ) { if (!this.menuItemTempate) { this.menuItemTempate = li; } li.stopObserving(); li.remove(); } }.bind( this ) ); // should only be one menuItemContainer var menuItemContainers = this.contextMenuDiv.getElementsBySelector("ul").each( function (ul) { if ( !ul.down("li") ) { ul.remove(); } }.bind( this ) ); this.appendItems(items, menuItems[0].parentNode); }, showMenu : function() { if (this.beforeShowFunc) { this.beforeShowFunc(this); } page.ContextMenu.registerContextMenu( this ); this.reorderMenuItems(); if ( this.useARIA ) { this.initARIA(); } var offset = this.displayContextMenuLink.cumulativeOffset(); var scrollOffset = this.displayContextMenuLink.cumulativeScrollOffset(); var viewportScrollOffset = document.viewport.getScrollOffsets(); if ( this.displayContextMenuLink.up( 'div.lb-content' ) ) { // Fix offset for context menu link inside a lightbox offset[0] = offset[0] + viewportScrollOffset[0]; offset[1] = offset[1] + viewportScrollOffset[1]; } else { // Fix the offset if the item is in a scrolled container offset[0] = offset[0] - scrollOffset[0] + viewportScrollOffset[0]; offset[1] = offset[1] - scrollOffset[1] + viewportScrollOffset[1]; } document.body.appendChild( this.contextMenuDiv ); this.contextMenuDiv.setStyle({display: "block"}); var width = this.contextMenuDiv.getWidth(); var bodyWidth = $(document.body).getWidth(); if ( page.util.isRTL() ) { offset[0] = offset[0] + this.displayContextMenuLink.getWidth() - width; } if ( offset[0] + width > bodyWidth ) { offset[0] = offset[0] - width + 30; } if ( this.keepMenuToRight ) { // In case the link is very wide (i.e. gradecenter accessible mode cell link for really wide cell) // make sure the menu renders to the right side of the link var linkWidth = this.displayContextMenuLink.getDimensions().width; if (linkWidth > width) { // Only worry if the link is actually wider than the menu offset[0] += (linkWidth-width); } } // Don't start the menu off the left side of the window if ( offset[0] < 0 ) { offset[0] = 0; } var height = this.contextMenuDiv.getHeight(); var bodyHeight = $(document.body).getHeight(); var ypos = offset[1] + this.displayContextMenuLink.getHeight() + 17; if ( ( height + ypos ) > bodyHeight ) { ypos -= height; ypos -= 34; } // Don't start the menu off the top of the screen if (ypos < 0 ) { ypos = 0; } if (height > bodyHeight) { // If the menu is too big to fit on the screen, set it to the height of the screen and allow scrollbars inside the menu this.contextMenuDiv.setStyle({ height: bodyHeight + "px", overflowY: "auto", overflowX: "hidden", left: offset[0] + "px", top: ypos + "px" }); } else { this.contextMenuDiv.setStyle({ left: offset[0] + "px", top: ypos + "px"}); } if ( !this.shim ) { this.shim = new page.popupShim( this.contextMenuDiv ); } this.shim.open(); }, initARIA: function() { if ( !this.initializedARIA ) { this.displayContextMenuLink.setAttribute( "aria-haspopup", "true" ); this.displayContextMenuLink.setAttribute( "role", "menubutton" ); this.contextMenuDiv.setAttribute( "role", "menu" ); this.contextMenuDiv.down( "ul" ).setAttribute( "role", "presentation" ); $A( this.contextMenuDiv.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval( decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "0"; link.setStyle( {cursor: 'pointer'} ); // make it look like a link. } }); this.initializedARIA = true; // Only initialize once. } }, reorderMenuItems : function() { if ( !this.menuOrder || this.menuOrder.length < 2 ) { return; } var orderMap = {}; var closeItem = null; var extraItems = []; // items not in order // Gather up all of the <li> tags in the menu and stick them in a map/object of id to the li object $A(this.contextMenuDiv.getElementsByTagName("li")).each( function( listItem ) { if (listItem.hasClassName("contextmenubar_top")) { closeItem = listItem; } else { if (this.menuOrder.indexOf(listItem.id) > -1) { orderMap[listItem.id] = listItem; // add item to map } else { extraItems.push(listItem); // listItem id not specified in menuOrder, so add listItem to extraItems } } }.bind(this) ); // Remove all the content from the context menu div $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list ) { Element.remove(list); }.bind(this) ); // Re-add the special "close" item as the first item. var ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); ulElement.insert({bottom:closeItem}); // Loop through the order, adding a <ul> at the start, and starting a new <ul> whenever a "*separator*" // is encountered, and adding the corresponding <li> for each of the ids in the order using the map/object this.menuOrder.each( function( id ) { if (id == "*separator*") { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); } else { ulElement.insert({bottom:orderMap[id]}); } }.bind(this) ); // Add any extraItems to thier own ul if (extraItems.length > 0) { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); extraItems.each( function( lineItem ) { ulElement.insert({bottom:lineItem}); }.bind(this) ); } // Remove any empty ULs and ensure that the added <ul>s have id of form "cmul${num}_${uniqueId}" $A(this.contextMenuDiv.getElementsByTagName("ul")).findAll( function( list ) { if ( list.childElements().length === 0 ) { list.remove(); return false; } else { return true; } }).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); this.menuOrder = null; // only re-order once }, generateDynamicMenu : function(event) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { var context_parameters = this.contextParameters; var menu_generator_url = this.menuGeneratorURL; var nav = this.nav; var overwriteNavItems = this.overwriteNavItems; if ( context_parameters ) { context_parameters = context_parameters.toQueryParams(); } else { context_parameters = {}; } var params = Object.extend({nav_item: nav }, context_parameters ); params = Object.extend( params, { overwriteNavItems : overwriteNavItems } ); new Ajax.Request(menu_generator_url, { method: 'post', parameters: params, onSuccess: this.afterMenuGeneration.bind( this ) }); } else { this.afterMenuGeneration(this); } $(event).preventDefault(); }, onDisplayLinkClick: function( event ) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { this.generateDynamicMenu(event); this.dynamicMenu = false; } else { this.showMenu(); //focus on the first menu item (function() { if (this.contextMenuDiv.style.display != 'none') { this.contextMenuDiv.down("a").focus(); } }.bind(this).defer()); $(event).preventDefault(); } }, onCloseLinkClick: function( event ) { this.close(); // grade center hides displayContextMenuLink onMouseOut, so we need to check if it is visible // before setting focus or IE will complain. Need to do funky visibility check because IE8 // sets display to empty string when removing parent container class (bug?) var disp = this.displayContextMenuLink.style.display; if ( disp != 'none' && disp != '' ) { this.displayContextMenuLink.focus(); } if (event) { Event.stop( event ); } }, close: function() { this.contextMenuDiv.style.display = "none"; // Delay the removal of the element from the page so firefox will continue to process // the click on the menu item chosen (otherwise it stops processing as soon as we remove the // element resulting in the menu not actually working) (function() { Element.remove( this.contextMenuDiv ); }.bind(this).delay(0.1)); if ( this.shim ) { this.shim.close(); } }, closeNow: function() { if (this.contextMenuDiv.style.display != "none") { this.contextMenuDiv.style.display = "none"; Element.remove( this.contextMenuDiv ); if ( this.shim ) { this.shim.close(); } } } }; /** * Function called to change the 'arrow' of a breadcrumb to face downward when they are clicked for the * contextual menu. * @param uniqId - unique number which identifies the crumb which was clicked * @param size - the size of the breadcrumb * @return */ page.ContextMenu.changeArrowInBreadcrumb = function (uniqId, event) { page.ContextMenu.alignArrowsInBreadcrumb(event); $('arrowContext_'+uniqId).addClassName('contextArrowDown').removeClassName('contextArrow'); //Stop the click event to propagate anymore -else all arrows will be aligned again Event.stop( event ); return false; }; //To align all breadcrumb arrows in one direction page.ContextMenu.alignArrowsInBreadcrumb = function (event) { if ($('breadcrumbs') !== null){ var bList = $($('breadcrumbs').getElementsByTagName('ol')[0]); var bs = bList.immediateDescendants(); if (bs.length !== null && bs.length >1){ for (var i = 2; i <= bs.length; i++) { var arrowSpan = $('arrowContext_'+i); if (arrowSpan !== null ){ $('arrowContext_'+i).addClassName('contextArrow').removeClassName('contextArrowDown'); } } } } return false; }; // "static" methods page.ContextMenu.LI = function(event, divId, forceMenuRefresh) { page.LazyInit(event,['focus','mouseover'],'new page.ContextMenu(page.util.upToClass(target,\'contextMenuContainer\'), \'' + divId + '\',' + forceMenuRefresh + ');'); }; page.ContextMenu.contextMenus = []; // _Open_ context menus page.ContextMenu.registerContextMenu = function( menu ) { page.ContextMenu.contextMenus.push( menu ); }; page.ContextMenu.hiddenDivs = $H(); // All the menu divs on the page - only needed for cases such as view_spreadsheet2.js where we try to modify the menus outside this framework page.ContextMenu.hideMenuDiv = function( uniqueId) { var linkId = 'cmlink_' + uniqueId; var link = document.getElementById(linkId); if (link && !link.savedDiv ) { var elementId = 'cmdiv_' + uniqueId; var element = link.nextSibling; // Should be the text between the link and div but check anyways if ( !element || element.id != elementId) { element = element.nextSibling; if ( !element || element.id != elementId) { element = document.getElementById(elementId); } } if (element) { link.savedDiv = element; page.ContextMenu.hiddenDivs.set(uniqueId,element); Element.remove( element ); } } }; page.ContextMenu.addDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { document.body.appendChild(ele); }); }; page.ContextMenu.removeDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { Element.remove(ele); }); }; page.ContextMenu.closeAllContextMenus = function( event ) { var deferClose = false; if ( event ) { var e = Event.findElement( event, 'a' ); if ( e && e.href.indexOf("#contextMenu") >= 0 ) { Event.stop( event ); return; } deferClose = true; } page.ContextMenu.contextMenus.each( function( menu ) { if ( menu != this ) { if (deferClose) { menu.close(); } else { menu.closeNow(); } } }); page.ContextMenu.contextMenus = []; }; /** * Enables flyout menus to be opened using a keyboard or mouse. Enables * them to be viewed properly in IE as well. */ page.FlyoutMenu = Class.create(); page.FlyoutMenu.prototype = { initialize: function( subMenuListItem ) { this.subMenuListItem = $(subMenuListItem); this.menuLink = $(subMenuListItem.getElementsByTagName('a')[0]); //special case to render iframe shim under new course content build menu if (this.subMenuListItem.hasClassName('bcContent')) { var buildContentDiv = this.subMenuListItem.down("div.flyout"); if ( !buildContentDiv ) { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } else { this.subMenu = buildContentDiv; } } else { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } this.menuLink.flyoutMenu = this; // calculate the next/previous tab stops this.previousSibling = this.subMenuListItem.previous(); while ( this.previousSibling && (!this.previousSibling.down('a') || !this.previousSibling.visible()) ) { this.previousSibling = this.previousSibling.previous(); } this.nextSibling = this.subMenuListItem.next(); while ( this.nextSibling && (!this.nextSibling.down('a') || !this.nextSibling.visible()) ) { this.nextSibling = this.nextSibling.next(); } var rumble = $(this.subMenuListItem.parentNode.parentNode); this.inListActionBar = rumble && ( rumble.hasClassName("rumble_top") || rumble.hasClassName("rumble") ); Event.observe( this.menuLink, 'mouseover', this.onOpen.bindAsEventListener( this ) ); Event.observe( subMenuListItem, 'mouseout', this.onClose.bindAsEventListener( this ) ); Event.observe( this.menuLink, 'click', this.onLinkOpen.bindAsEventListener( this ) ); Event.observe( this.subMenuListItem, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); $A( this.subMenu.getElementsByTagName('li') ).each ( function( li ) { $A(li.getElementsByTagName('a')).each( function( link ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( link, 'click', this.onLinkClick.bindAsEventListener( this, link ) ); }.bind( this ) ); }.bind( this ) ); // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; if ( this.useARIA ) { this.initARIA(); } this.enabled = true; }, initARIA: function() { var inListActionBar = this.inListActionBar; if ( inListActionBar ) { this.subMenuListItem.up('ul').setAttribute( "role", "menubar" ); } this.subMenuListItem.setAttribute( "role", "menuitem" ); this.subMenu.setAttribute( "role", "menu" ); if ( !this.menuLink.hasClassName("notMenuLabel") ) { this.subMenu.setAttribute( "aria-labelledby", this.menuLink.id ); } $A( this.subMenu.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); // List action bars have onclick handlers that prevent submission of the page // if no items are selected, so we can't register new onclicks here because // otherwise we can't stop them from executing. if ( !inListActionBar ) { if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval(decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "-1"; link.style.cursor = 'pointer'; // make it look like a link. } } }); }, setEnabled: function( enabled ) { this.enabled = enabled; if ( !enabled ) { this.subMenu.setStyle({ display: '' }); } }, onKeyPress: function( event ) { if (!this.enabled) { return; } var key = event.keyCode || event.which; var elem = Event.element ( event ); var children, index, link; if ( key == Event.KEY_UP ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } else if ( index === 0 ) { children[children.length - 1].focus(); // wrap to bottom } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index == -1 ) { this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); } else if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } else if ( index == ( children.length - 1 ) ) { children[0].focus(); // wrap to top } Event.stop( event ); } else if ( key == Event.KEY_LEFT ) { if ( !this.previousSibling || ( this.previousSibling.hasClassName("mainButton") || this.previousSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, true ); } else if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( !link || !this.previousSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_RIGHT ) { if ( !this.nextSibling || ( this.nextSibling.hasClassName("mainButton") || this.nextSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, false ); } else if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( !link || !this.nextSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_ESC ) { this.close(); this.menuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_RETURN && this.useARIA && !this.inListActionBar ) { page.util.fireClick( elem ); Event.stop( event ); } else if ( key == Event.KEY_TAB && this.useARIA ) { this.executeTab( event, false, event.shiftKey ); } }, executeTab: function( event, forceMenuLinkTab, shift ) { var elem = Event.element ( event ); var link; if ( ( elem != this.menuLink ) || forceMenuLinkTab ) { if ( shift ) { // Go to previous menu if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } else { // Go to next menu if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } this.close(); Event.stop( event ); } }, onOpen: function( event ) { if (!this.enabled) { return; } this.open(); }, onClose: function( event ) { var to = $(event.relatedTarget || event.toElement); if ( !to || to.up('li.sub') != this.subMenuListItem ) { this.close(); } }, onLinkOpen: function( event ) { if (!this.enabled) { return; } this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); Event.stop( event ); }, resizeAfterShowHide: function() { // TODO - ideally this would just resize the outer div, but closing and opening 'works' this.close(); this.open(); }, open: function() { var alreadyShown = this.subMenu.getStyle('display') === 'block'; // If the menu is already showing (i.e. as_ce4 theme, we don't need to position it) if ( !alreadyShown ) { // Set position of action bar elements to static to enable z-index stack order page.util.setActionBarPosition( 'static' ); var menuTop = this.subMenuListItem.getHeight(); if ( this.subMenu.hasClassName( 'narrow' ) ) { menuTop = 0; } this.subMenuListItem.setStyle( {position: 'relative'} ); this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: menuTop+'px', left: '0px', width: '', height: '', overflowY: '' }); var offset = Position.cumulativeOffset( this.subMenuListItem ); var menuDims = this.subMenu.getDimensionsEx(); var menuHeight = menuDims.height; var popupWidth = this.subMenu.getWidth(); var subListItemDims = this.subMenuListItem.getDimensions(); var menuWidth = subListItemDims.width; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); var offsetTop = offset[1] - scrollOffsets.top; this.subMenu.flyoutMenu = this; if ( (offsetTop + menuHeight + subListItemDims.height) > viewportDimensions.height) { if ( (offsetTop - menuHeight) > 0 ) { // if menu goes below viewport but still fits on-page, show it above button this.subMenu.setStyle({ top: '-'+menuHeight+'px' }); } else { // we need to create scrollbars var newWidth = this.subMenu.getWidth() + 15; popupWidth = newWidth + 5; var newMenuHeight = viewportDimensions.height - (offsetTop + subListItemDims.height) - 20; var newMenuTop = menuTop; if (newMenuHeight < offsetTop) { // More space above than below newMenuHeight = offsetTop; newMenuTop = -offsetTop; } this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: newMenuTop+'px', left: '0px', width: newWidth + 'px', height: newMenuHeight + 'px', overflowY: 'auto' }); } } var offsetLeft = offset[0] - scrollOffsets.left; if ( (offsetLeft + popupWidth) > viewportDimensions.width ) { var subMenuWidth = this.subMenuListItem.getWidth(); var newLeft = popupWidth - (viewportDimensions.width-offsetLeft); if ((newLeft > 0) && (newLeft < offsetLeft)) { newLeft = -newLeft; } else { newLeft = -offsetLeft; } this.subMenu.setStyle({ left: newLeft+'px' }); } if ( page.util.isRTL() ) { var newRight = 0; if ( (offsetLeft + menuWidth) - popupWidth < 0 ) { newRight = (offsetLeft + menuWidth) - popupWidth; } this.subMenu.setStyle({ left: '', right: newRight+'px'}); } if (!this.shim) { this.shim = new page.popupShim( this.subMenu); } this.shim.open(); } }, close: function() { // Reset position of action bar elements to relative page.util.setActionBarPosition( 'relative' ); this.subMenuListItem.setStyle({position: ''}); this.subMenu.setStyle({ display: '', top: '', left: '', width: '', height: '', overflowY: '' }); if ( this.shim ) { this.shim.close(); } }, onLinkClick: function( event, link ) { if (!this.enabled) { return; } setTimeout( this.blurLink.bind( this, link), 100); }, blurLink: function( link ) { link.blur(); if (page.util.hasClassName( link, "donotclose" )) { link.focus(); } else { this.close(); } }, onAnchorFocus: function ( event ) { if (!this.enabled) { return; } var link = Event.element( event ); link.setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { var link = Event.element( event ); link.setStyle({ backgroundColor: '' }); } }; /** * Class for providing functionality to menu palettes */ page.PaletteController = Class.create(); page.PaletteController.prototype = { /** * Constructor * * @param paletteIdStr Unique string identifier for a palette * @param expandCollapseIdStr Id value of anchor tag to be assigned * the palette expand/collapse functionality * @param closeOtherPalettesWhenOpen Whether to close all other palettes when this one is open */ initialize: function( paletteIdStr, expandCollapseIdStr, closeOtherPalettesWhenOpen, collapsed ) { // palette id string this.paletteItemStr = paletteIdStr; // palette element this.paletteItem = $(this.paletteItemStr); // default id string to palette contents container element this.defaultContentsContainerId = page.PaletteController.getDefaultContentsContainerId(this.paletteItemStr); // the currently active palette contents container element this.activeContentsContainer = $(this.defaultContentsContainerId); // expand/collapse palette toggle element this.paletteToggle = $(expandCollapseIdStr); if (this.paletteToggle) { Event.observe(this.paletteToggle, 'click', this.toggleExpandCollapsePalette.bindAsEventListener(this)); } this.closeOtherPalettesWhenOpen = closeOtherPalettesWhenOpen; page.PaletteController.registerPaletteBox(this); if (collapsed) { this.collapsePalette(true); } }, /** * Set the currently active palette contents container element * * @param container palette contents container element */ setActiveContentsContainer: function ( container ) { this.activeContentsContainer = container; }, /** * Get the currently active palette contents container element * * @return palette contents container element */ getActiveContentsContainer: function () { return this.activeContentsContainer; }, /** * Expands the palette if it's not already expanded. * * @return palette contents container element */ expandPalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display == "none" ) { itemList.style.display = "block"; itemPalClass.length = itemPalClass.length - 1; this.paletteItem.className = itemPalClass.join(" "); lastDiv.className = "bottomRound"; firstDiv.className = "topRound"; h2.className = ""; var itemTitle = expandCollapseLink.innerHTML.stripTags().trim(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_collapse.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.collapse.section.param', itemTitle); } if ( doNotPersist ) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Collapses the palette if it's not already collapsed. * * @return palette contents container element */ collapsePalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display != "none" ) { itemList.style.display = "none"; itemPalClass[itemPalClass.length] = 'navPaletteCol'; this.paletteItem.className = itemPalClass.join(" "); if (itemPalClass.indexOf('controlpanel') != -1) { lastDiv.className = "bottomRound controlpanelCol"; // colors the bottomRound to match the h2 background } if (itemPalClass.indexOf('listCm')!=-1) { lastDiv.className = "bottomRound listCmCol"; // colors the bottomRound to match the h2 background firstDiv.className = "topRound listCmCol"; // colors the topRound to match the h2 background h2.className = "listCmCol"; // colors h2 background (removes background image) } if (itemPalClass.indexOf('tools') != -1) { lastDiv.className = "bottomRound toolsCol"; firstDiv.className = "topRound listCmCol"; h2.className = "toolsCol"; } var itemTitle = expandCollapseLink.innerHTML.stripTags(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags().trim(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_expand.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.expand.section.param', itemTitle); } if (doNotPersist) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Takes in a key value pair to save to the session as sticky data. * * @param key The key that will have the current course id appended to it to be saved to the session. * @param value The value to the key. */ saveSessionStickyInfo: function( key, value ) { /* Get the course id off of the global variable if exists, so that data is saved per * user session per course. If course doesn't exist, use empty string. */ var current_course_id = window.course_id ? window.course_id : ""; UserDataDWRFacade.setStringTempScope( key + current_course_id, value ); }, /** * Whether the first tag has js onclick event binding on it for palette collapse/expand * * @param h2 */ useFirstTagForExpandCollapse: function ( h2 ) { return h2.getElementsByTagName('a')[0].id.indexOf( "noneExpandCollapseTag" ) > -1 ? false : true; }, /** * Toggles a palette from expand to collapse and vice versa. * * @param event Optional event object if this method was bound to event. */ toggleExpandCollapsePalette: function ( event, doNotPersist ) { // To prevent default event behavior if ( event ) { Event.stop( event ); } if ( this.activeContentsContainer.style.display == "none" ) { // palette is currently closed, so we will be expanding it if ( this.closeOtherPalettesWhenOpen ) { // if closeOtherPalettesWhenOpen is set to true for this palette, close all other palettes page.PaletteController.closeAllOtherPalettes(this.paletteItemStr, doNotPersist); } this.expandPalette( doNotPersist ); } else { // palette is currently expanded, so we will be collapsing it this.collapsePalette( doNotPersist ); } } }; // "static" methods page.PaletteController.paletteBoxes = []; page.PaletteController.registerPaletteBox = function( paletteBox ) { page.PaletteController.paletteBoxes.push( paletteBox ); }; /** * Get the palette controller js object by palette id * * @param paletteId */ page.PaletteController.getPaletteControllerObjById = function( paletteId ) { return page.PaletteController.paletteBoxes.find( function( pb ) { return ( pb.paletteItemStr == paletteId ); } ); }; /** * Closes all palettes except the specified one * * @param paletteToKeepOpen */ page.PaletteController.closeAllOtherPalettes = function( paletteToKeepOpen, doNotPersist ) { for(var i = 0; i < page.PaletteController.paletteBoxes.length; i++) { var paletteItem = page.PaletteController.paletteBoxes[i]; if (paletteToKeepOpen !== paletteItem.paletteItemStr) { paletteItem.collapsePalette( doNotPersist ); } } }; /** * Toggles (expand/collapse) the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.toggleExpandCollapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.toggleExpandCollapsePalette( null, doNotPersist); }; /** * Collapses the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.collapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.collapsePalette( doNotPersist); }; /** * Expand the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.expandPalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.expandPalette( doNotPersist); }; /** * Set the active palette contents container (element containing the body * contents of a palette). The active contents container is used to toggle * visibility when expanding and collapsing menu palettes. * * @param paletteId * @param paletteContentsContainer Optional container to set. * If not given, the palette's active * container will not be changed. * @return The new active palette contents container element. * If no paletteContentsContainer element was passed, * The current active palette contents container element * will be returned. */ page.PaletteController.setActivePaletteContentsContainer = function( paletteId, paletteContentsContainer ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); if ( paletteContentsContainer ) { paletteObj.setActiveContentsContainer( paletteContentsContainer ); } return paletteObj.getActiveContentsContainer(); }; /* * Get the default palette contents container id string * * @param paletteId */ page.PaletteController.getDefaultContentsContainerId = function( paletteId ) { return paletteId + "_contents"; }; /** * Class for providing expand/collapse functionality (with dynamic loading) */ page.ItemExpander = Class.create(); page.ItemExpander.prototype = { /** * Constructor * - expandLink - the link that when clicked will expand/collapse the item * - expandArea - the actual area that will get expanded/collapsed (if the item is dynamically loaded, this area will be populated dynamically) * - expandText - the text to show as a tooltip on the link for expanding * - collapseText - the text to show as a tooltip on the link for collapsing * - expandTitleText - the customized text for link title afer expanding the item; if null/undefined, use expandText * - collapseTitleText - the customized text for link title after collapsing the item;if null/undefined, use collapseText * - dynamic - whether the contents are dynamically loaded * - dynamicUrl - the URL to get the contents of the item from * - contextParameters - additional URL parameters to add when calling the dynamicUrl * - sticky - load/save expand state from UserData; true if null/undefined * - expanded - initially expanded; false if null/undefined */ initialize: function( expandLink, expandArea, expandText, collapseText, dynamic, dynamicUrl, contextParameters, expandTitleText, collapseTitleText, sticky, expanded ) { this.expandLink = $(expandLink); this.expandLinkImage = this.expandLink.down('img'); this.expandArea = $s(expandArea); // Register the expander so it can be found page.ItemExpander.itemExpanderMap[this.expandLink.id] = this; this.expandText = expandText.unescapeHTML(); this.collapseText = collapseText.unescapeHTML(); if ( expandTitleText !== null && expandTitleText !== undefined ) { this.expandTitleText = expandTitleText.unescapeHTML(); } else { this.expandTitleText = this.expandText; } if ( collapseTitleText !== null && collapseTitleText !== undefined ) { this.collapseTitleText = collapseTitleText.unescapeHTML(); } else { this.collapseTitleText = this.collapseText; } this.dynamic = dynamic; this.dynamicUrl = dynamicUrl; if ( contextParameters !== null && contextParameters !== undefined ) { this.contextParameters = contextParameters.toQueryParams(); } else { this.contextParameters = {}; } this.sticky = ( sticky !== null && sticky !== undefined ) ? sticky : true; this.expanded = ( expanded !== null && expanded !== undefined ) ? expanded : false; this.hasContents = !this.dynamic; if ( this.sticky ) { // get the course id off of the global variable if exists, because data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.getStringTempScope( this.expandLink.id + current_course_id, this.getAvailableResponse.bind( this ) ); } this.expandCollapse( !this.expanded ); Event.observe( this.expandLink, "click", this.onToggleClick.bindAsEventListener( this ) ); }, getAvailableResponse : function ( response ) { var originalExpanded = this.expanded ; var cachedExpanded = false; if ( response.length > 0 ) { if ( response == 'true' ) { cachedExpanded = true; } else { cachedExpanded = false; } } if ( originalExpanded != cachedExpanded ) { //because we want the menu to be in the cached state, //we pass in the opposite so that expandCollapse changes the menu state. this.expandCollapse(originalExpanded); } }, onToggleClick: function( event ) { if ( event ) { Event.stop( event ); } this.expandCollapse(this.expanded); if ( this.sticky ) { // get the course id off of the global variable if exists, so that data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.setStringTempScope( this.expandLink.id + current_course_id, this.expanded ); } }, expandCollapse: function(shouldCollapse) { var combo; if ( shouldCollapse ) //Collapse the item { $(this.expandArea).hide(); this.expandLink.title = this.expandTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.expandText; this.expandLinkImage.src = "/images/ci/icons/generic_expand.gif"; } if ( this.expandLink.hasClassName("comboLink_active") ) { combo = this.expandLink.up("li").down(".submenuLink_active"); this.expandLink.removeClassName("comboLink_active"); this.expandLink.addClassName("comboLink"); if ( combo ) { combo.removeClassName("submenuLink_active"); combo.addClassName("submenuLink"); } } else { this.expandLink.removeClassName("open"); } this.expanded = false; } else //Expand the item { if ( this.hasContents ) { $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.collapseText; this.expandLinkImage.src = "/images/ci/icons/generic_collapse.gif"; } if ( this.expandLink.hasClassName("comboLink") ) { combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } } else if ( this.dynamic ) { this.loadData(); } this.expanded = true; } }, loadData: function() { new Ajax.Request( this.dynamicUrl, { method: "post", parameters: this.contextParameters, requestHeaders: { cookie: document.cookie }, onSuccess: this.afterLoadData.bind( this ) }); }, afterLoadData: function( req ) { try { var result = req.responseText.evalJSON( true ); if ( result.success != "true" ) { new page.InlineConfirmation("error", result.errorMessage, false ); } else { this.hasContents = true; this.expandArea.innerHTML = result.itemContents; $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; this.expandLinkImage.alt = this.collapseText; if ( this.expandLink.hasClassName("comboLink") ) { var combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } this.expanded = true; } } catch ( e ) { //Invalid response } } }; page.ItemExpander.itemExpanderMap = {}; /** * Class for controlling the "breadcrumb expansion" (i.e. the "..." hiding the inner * breadcrumbs) */ page.BreadcrumbExpander = Class.create(); page.BreadcrumbExpander.prototype = { initialize: function( breadcrumbBar ) { var breadcrumbListElement = $(breadcrumbBar.getElementsByTagName('ol')[0]); var breadcrumbs = breadcrumbListElement.immediateDescendants(); if ( breadcrumbs.length > 4 ) { this.ellipsis = document.createElement("li"); var ellipsisLink = document.createElement("a"); ellipsisLink.setAttribute("href", "#"); ellipsisLink.setAttribute("title", page.bundle.getString('breadcrumbs.expand') ); ellipsisLink.innerHTML = "..."; this.ellipsis.appendChild( ellipsisLink ); this.ellipsis = Element.extend( this.ellipsis ); Event.observe( ellipsisLink, "click", this.onEllipsisClick.bindAsEventListener( this ) ); this.hiddenItems = $A(breadcrumbs.slice(2,breadcrumbs.length - 2)); breadcrumbListElement.insertBefore( this.ellipsis, this.hiddenItems[0] ); this.hiddenItems.invoke( "hide" ); } // Make sure the breadcrumbs don't run into the mode switcher var breadcrumbContainer = $(breadcrumbListElement.parentNode); var modeSwitcher = breadcrumbBar.down('.modeSwitchWrap'); if ( modeSwitcher ) { var containerWidth = breadcrumbContainer.getWidth(); var containerOffset = breadcrumbContainer.cumulativeOffset(); var modeSwitcherOffset = modeSwitcher.cumulativeOffset(); var modeSwitcherWidth = modeSwitcher.getWidth(); if ( page.util.isRTL() ) { if ( modeSwitcherOffset[0] + modeSwitcherWidth > containerOffset[0] ) { breadcrumbContainer.setStyle({ paddingLeft: ( modeSwitcherOffset[0] + modeSwitcherWidth ) + 'px'} ); } } // else //{ // breadcrumbContainer.setStyle({ paddingRight: ( containerWidth - ( modeSwitcherOffset[0] - containerOffset[0] ) ) + 'px'} ); //} } }, onEllipsisClick: function( event ) { this.hiddenItems.invoke( "show" ); this.ellipsis.hide(); Event.stop( event ); } }; /** * Dynamically creates an inline confirmation. */ page.InlineConfirmation = Class.create(); page.InlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, oneReceiptPerPage ) { var receiptId = $s('receipt_id'); // do not insert a duplicate receipt, if one already exists if(receiptId && oneReceiptPerPage) { return; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if ( type == "warning" ) { cssClass = "warningReceipt"; } var contentPane = $('contentPanel') || $('portalPane'); var receiptHtml = '<div id="receipt_id" class="receipt '+ cssClass +'">'+ '<a name="inlineReceipt" tabindex="-1" style="color:#FFFFFF">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } receiptHtml += '<a class="close" href="#close" title="'+ page.bundle.getString("inlineconfirmation.close") +'" onClick="Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="'+ page.bundle.getString("inlineconfirmation.close") +'" src="/images/ci/ng/close_mini.gif"></a></div>'; contentPane.insert({top:receiptHtml}); // use aria live region to announce this confirmation message rather than setting focus to it. (Too many things are fighting over setting focus) // Note: if this confirmation is invoked from a menu handler, it may not announce if focus is lost when the menu closes. See how courseTheme.js sets focus before invoking. var insertedA = contentPane.down('a[name="inlineReceipt"]'); insertedA.setAttribute("aria-live","assertive"); insertedA.parentNode.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced } }; page.NestedInlineConfirmationIdCounter = 0; page.NestedInlineConfirmation = Class.create(); page.NestedInlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, previousElement,showCloseLink, extracss, insertBefore, oneReceiptPerPage, fadeAway, focusDiv, fadingTime, insertTop, receiptDivId, focusOnRender ) { if ( Object.isUndefined( focusOnRender ) ) { focusOnRender = true; } var receiptId = $s('receipt_nested_id'); // do not insert a duplicate receipt, if one already exists var newDivId = 'receipt_nested_id'; if(receiptId) { if (oneReceiptPerPage) { return; } newDivId = newDivId + (page.NestedInlineConfirmationIdCounter++); } if (receiptDivId) { // Remove the old message with the same receiptDivId if there is one before adding a new one if ( $( receiptDivId ) != null ) $( receiptDivId ).remove(); newDivId = receiptDivId; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if (type == "warning") { cssClass = "warningReceipt"; } if (!extracss) { extracss = ""; } var arrowSpan = ''; if (extracss.indexOf( "point", 0 ) != -1) { arrowSpan = '<span class="arrow"></span>'; } var contentPane = $(previousElement); if (!contentPane) { // TODO - if we can't find the element we wanted to insert before, is it OK to just drop the notification? return; } var receiptHtml = '<div id="'+newDivId+'" style="display:none" class="receipt '+ cssClass +' '+extracss +'">'+arrowSpan+ '<a name="inlineReceipt" class="areceipt" tabindex="-1">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } if (showCloseLink) { // either this is a JS Snippet to execute on close or a simple true in which case we do nothing extra var onCloseFunction = ""; if ( typeof showCloseLink === "string" || showCloseLink instanceof String ) { if ( !page.closeReceiptLinkCounter ) { page.closeReceiptLinkCounter = 0; } else { ++page.closeReceiptLinkCounter; } onCloseFunction = "onReceiptClosed" + page.closeReceiptLinkCounter; receiptHtml += "<script type='text/javascript'>window." + onCloseFunction + " = function( ) { " + showCloseLink + " ; }; </script>"; onCloseFunction += "( );" } receiptHtml += '<a class="close" href="#close" style="z-index:1000" title="' + page.bundle.getString("inlineconfirmation.close") + '" onClick="' + onCloseFunction + 'Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="' + page.bundle.getString("inlineconfirmation.close") + '" src="/images/ci/ng/close_mini.gif"></a></div>'; } if ( insertBefore ) { contentPane.insert({before:receiptHtml}); } else if (insertTop) { contentPane.insert({top:receiptHtml}); } else { contentPane.insert({after:receiptHtml}); } this.insertedDiv = insertBefore?contentPane.previousSibling:(insertTop?contentPane.firstChild:contentPane.nextSibling); $(this.insertedDiv).show(); var insertedA = $(this.insertedDiv).down('a[name="inlineReceipt"]'); var fadingDuration = fadingTime ? fadingTime : 5000; if ( focusOnRender ) { try { ( function() { try { if ( focusDiv ) { page.util.focusAndScroll( $( focusDiv ) ); } else { page.util.focusAndScroll( insertedA ); } } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } }.defer() ); } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } } else { // not setting focus to this confirmation, so we make it an aria live region so it will be announced to the screen reader if ( focusDiv ) { page.util.ensureVisible( $( focusDiv ) ); } else { page.util.ensureVisible( insertedA ); } insertedA.setAttribute("aria-live","assertive"); this.insertedDiv.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced (needed for jaws 12) } if ( fadeAway ) { setTimeout( function() { Element.fade( contentPane.nextSibling, { duration : 0.3 } ); }, fadingDuration ); } }, close: function() { if ( this.insertedDiv ) { this.insertedDiv.remove(); } } }; page.NestedInlineFadeAwayConfirmation = Class.create(); page.NestedInlineFadeAwayConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; page.NestedInlineFadeAwaySingleConfirmation = Class.create(); page.NestedInlineFadeAwaySingleConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time, newDivId ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore, false /*only one instance*/, null, null, null, null, newDivId ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; /** * Make sure the container as position: relative so that the offset can work */ page.MiniReceipt = Class.create(); page.MiniReceipt.prototype = { initialize: function( message, containerElement, top, left, time ) { var visibleDuration = time ? time : 2000; var top = top?top:-22; // usually show receipt above var left = left?left:0; var alreadyExistingReceipt = $( containerElement ).down( "div.miniReceipt" ); if ( alreadyExistingReceipt ) { alreadyExistingReceipt.hide( ); } var receiptHtml = '<div class="miniReceipt adding" style="display: none; top:' + top + 'px; left:'+ left + 'px" role="alert" aria-live="assertive">' + message + '</div>'; var receiptElement = $( containerElement ).insert( { top:receiptHtml } ).firstDescendant( ); receiptElement.show( ); setTimeout( function() { Element.fade( receiptElement, {duration:0.3, afterFinish: function() { receiptElement.remove() } } ); }, visibleDuration ); } }; page.extendedHelp = function( helpattributes, windowName ) { window.helpwin = window.open('/webapps/blackboard/execute/viewExtendedHelp?' + helpattributes,windowName,'menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); window.helpwin.focus(); }; page.decoratePageBanner = function() { var bannerDiv = $('pageBanner'); var containerDiv = $('contentPanel') || $('contentPane'); if ( bannerDiv && containerDiv ) { // append hasTopBanner class to container div to hide topRound containerDiv.addClassName('hasTopBanner'); // hide empty title bar if ( !$('pageTitleText') && $('pageTitleDiv') ) { $('pageTitleDiv').hide(); } } }; page.initializeSinglePopupPage = function( pageId ) { // Initialize the single popup page, make sure the window will be closed by clicking submit or cancel, and the parent // window will be refreshed after submit. var items = document.forms; for ( var i = 0; i < items.length; i++ ) { var formItem = items[ i ]; formItem.observe( 'submit', function() { (function() { window.close(); if( window.opener.refreshConfirm ) { window.opener.refreshConfirm(pageId); } }.defer()); } ); if ( formItem.top_Cancel ) { Event.observe( formItem.top_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } if ( formItem.bottom_Cancel ) { Event.observe( formItem.bottom_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } } }; page.openLightbox = function( link, title, url, width, height ) { var lightboxParam = { defaultDimensions : { w : width ? width : 1000, h : height ? height : 800 }, contents : '<iframe src="' + url + '" width="100%" height="100%"/>', title : title, closeOnBodyClick : false, showCloseLink : true, useDefaultDimensionsAsMinimumSize : true }; var lightboxInstance = new lightbox.Lightbox( lightboxParam ); lightboxInstance.open(); }; page.printAndClose = function() { (function() { window.print(); window.close(); }.defer()); }; /** * Utility for data collection step manipulation */ page.steps = {}; page.steps.HIDE = "hide"; page.steps.SHOW = "show"; /** * Hide or show an array of steps given the step ids and * renumber all visible steps on the page. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepIdArr - string array of step ids */ page.steps.hideShowAndRenumber = function ( action, stepIdArr ) { // hide or show each of the step ids given ($A(stepIdArr)).each( function( stepId ) { page.steps.hideShow( action, stepId ); }); // get all H3 elements that contain css class of "steptitle" var stepTitleTags = []; $A(document.getElementsByTagName('h3')).each( function( tag ) { if ( page.util.hasClassName( tag, 'steptitle' ) ) { stepTitleTags.push( $(tag) ); } }); // starting at number 1, renumber all of the visible steps var number = 1; stepTitleTags.each(function( stepTitleTag ) { if ( stepTitleTag.up('div').visible() ) { stepTitleTag.down('span').update(number); number++; } }); }; /** * Hide or show a single step given the step id. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepId - string identifier to a single step */ page.steps.hideShow = function ( action, stepId ) { if ( action == page.steps.SHOW ) { $(stepId).show(); } else if ( action == page.steps.HIDE ) { $(stepId).hide(); } }; page.showChangeTextSizeHelp = function( ) { page.extendedHelp('internalhandle=change_text_size&helpkey=change_text_size','change_text_size' ); return false; }; page.showAccessibilityOptions = function() { var win = window.open('/webapps/portal/execute/changePersonalStyle?cmd=showAccessibilityOptions', 'accessibilityOptions','menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); win.focus(); }; page.toggleContrast = function( ) { new Ajax.Request('/webapps/portal/execute/changePersonalStyle?cmd=toggleContrast', { onSuccess: function(transport, json) { var fsWin; if (window.top.nav) { fsWin = window.top; } else if (window.opener && window.opener.top.nav) { fsWin = window.opener.top; window.close(); } if (fsWin) { fsWin.nav.location.reload(); fsWin.content.location.reload(); } else { window.top.location.reload(); } } }); return false; }; /** * IFrame-based shim used with popups so they render on top of all other page elements (including applets) */ page.popupShim = Class.create(); page.popupShim.prototype = { initialize: function( popup ) { this.popup = popup; }, close: function( ) { this.toggleOverlappingEmbeds( false ); }, open: function( ) { this.toggleOverlappingEmbeds( true ); }, toggleOverlappingEmbeds: function( turnOff ) { ['embed','object','applet','select'].each( function( tag ) { var elems = document.getElementsByTagName( tag ); for ( var i = 0, l = elems.length; i < l; i++ ) { var e = $(elems[i]); if ( !turnOff || ( page.util.elementsOverlap( this.popup, e ) && !e.descendantOf( this.popup ) ) ) { elems[i].style.visibility = ( turnOff ? 'hidden' : '' ); } } }.bind( this ) ); } }; /** * Class for controlling the vtbe enable toggle. */ page.VTBEToggle = Class.create(); page.VTBEToggle.prototype = { initialize: function( vtbeDiv, vtbeOnOffToolKey ) { var toggleFunc = this.toggleVTBE.bindAsEventListener( this ); this.vtbeOnOffToolKey = ( vtbeOnOffToolKey ) ? vtbeOnOffToolKey : "textbox.wysiwyg"; var vtbeDivs = null; if ( vtbeDiv ) { // autowire the specified vtbe vtbeDivs = [ vtbeDiv ]; } else { // autowire all vtbe divs on the page vtbeDivs = document.getElementsByTagName('div'); } $A(vtbeDivs).each( function( div ) { // add toggle listener for each vtbe switch if ( page.util.hasClassName(div, 'vtbeSwitch') ) { div = $(div); if ( div.up('form') ) { var anchor = div.down('a'); page.VTBEToggle.form = div.up('form'); Event.observe( anchor, 'click', toggleFunc ); // save original form data so we can detect unsaved data when toggling VTBE if ( page.VTBEToggle.form && !page.VTBEToggle.origFormData ) { page.VTBEToggle.origFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); } } } }); }, toggleVTBE: function( event ) { // Stop the event to handle firefox behavior when posting into a page. Event.stop(event); // check & warn user of modified form data if ( page.VTBEToggle.form && page.VTBEToggle.origFormData ) { var origFormData = page.VTBEToggle.origFormData; if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var currentFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); for(var i in origFormData) { if ( origFormData.hasOwnProperty( i ) ) { var origVal = origFormData[i]; var currVal = currentFormData[i]; if ( currVal && typeof currVal != 'object' && ( ( typeof currVal != 'string' && origVal != currVal ) || ( typeof currVal == 'string' && origVal.trim() != currVal.trim().replace("&nbsp;","") ) ) ) { if (!confirm( page.bundle.getString("wysiwyg.visual.editor.confirm.unsaved.changes") )) { return; } break; } } } } // get current state of vtbe, toggle it, then reload page UserDataDWRFacade.getStringPermScope( this.vtbeOnOffToolKey, function( wysiwyg ) { UserDataDWRFacade.setStringPermScope( this.vtbeOnOffToolKey, (wysiwyg == 'Y') ? 'N' : 'Y', function() { // If there's a lightbox open, give it a chance to update itself instead of reloading the window if (!window.lightbox || !lightbox.deferUpdateLightboxContent()) { window.location.reload(); } }); }.bind( this )); } }; /** * Looks through the children of the specified element for links with the specified * class name, and if it finds any, autowires lightboxes to them. If lightbox.js/effects.js * hasn't already been loaded, load it. */ page.LightboxInitializer = Class.create( { initialize: function( className, parentElement ) { this.className = className; var links = parentElement.getElementsByTagName('a'); for ( var i = 0, l = links.length; i < l; i++ ) { if ( page.util.hasClassName( links[i], className ) ) { if ( window.lightbox && window.Effect) { this._autowire(); } else { this._load(); } break; } } }, _autowire: function() { lightbox.autowireLightboxes( this.className ); }, _load: function() { var h = $$('head')[0]; var scs = ( !window.lightbox ? ['/javascript/ngui/lightbox.js'] : []).concat( !window.Effect ? ['/javascript/scriptaculous/effects.js'] : [] ); scs.each( function( sc ) { var s = new Element('script', { type: 'text/javascript', src: sc } ); h.appendChild( s ); }); this._wait(); }, _wait: function() { var count = 0; new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( window.lightbox && window.Effect ) { pe.stop(); this._autowire(); } } else // give up if it takes longer than 5s to load lightbox.js/effects.js { pe.stop(); } }.bind(this), 0.05 ); } }); page.YouTubeControls = { toggleAXControls : function( playerid, openYtControlsId, event ) { if( $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display != 'block' ) { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'block'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'block'; $( openYtControlsId ).addClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } else { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'none'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'none'; $( openYtControlsId ).removeClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } Event.stop( event ); }, formatTime : function ( sec ) { var duration = parseInt( sec, 10 ); var totalMinutes = Math.floor( duration / 60 ); var hours = Math.floor( totalMinutes / 60 ); var seconds = duration % 60; var minutes = totalMinutes % 60; if ( hours > 0 ) { return hours + ':' + this.padZero( minutes ) + ':' + this.padZero( seconds ); } else { return this.padZero( minutes ) + ':' + this.padZero( seconds ); } }, padZero : function ( number ) { if (number < 10) { return "0" + number; } else { return number; } }, updateButtonLabels : function ( ytplayer, muteBtnId, playBtnId, status ) { if( ytplayer.isMuted() ) { $( muteBtnId ).update( page.bundle.getString( 'yt.unmute' ) ); } else { $( muteBtnId ).update( page.bundle.getString( 'yt.mute' ) ); } if( status == 1 ) { $( playBtnId ).update( page.bundle.getString( 'yt.pause' ) ); } else { $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); } } }; function onYouTubePlayerReady( playerid ) { var ytplayer = $( playerid ); if( !ytplayer ) { //ie fix: grab object tag instead of embed tag var objTagId = playerid.sub( 'ytEmbed', 'ytObject' ); ytplayer = $( objTagId ); } var playBtnId = playerid.sub( 'ytEmbed', 'playVideo' ); Event.observe( $( playBtnId ), 'click', function( event ) { if( ytplayer.getPlayerState() == 1 ) { ytplayer.pauseVideo(); } else { ytplayer.playVideo(); } Event.stop( event ); } ); var stopBtnId = playerid.sub( 'ytEmbed', 'stopVideo' ); Event.observe( $( stopBtnId ), 'click', function( event ) { ytplayer.pauseVideo(); ytplayer.seekTo( "0" ); $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); Event.stop( event ); } ); var volUpBtnId = playerid.sub( 'ytEmbed', 'volUp' ); Event.observe( $( volUpBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol > 89 ) { ytplayer.setVolume( 100 ); } else { ytplayer.setVolume( currVol + 10 ); } Event.stop( event ); } ); var volDownBtnId = playerid.sub( 'ytEmbed', 'volDown' ); Event.observe( $( volDownBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol < 11 ) { ytplayer.setVolume( 0 ); } else { ytplayer.setVolume( currVol - 10 ); } Event.stop( event ); } ); var muteBtnId = playerid.sub( 'ytEmbed', 'mute' ); Event.observe( $( muteBtnId ), 'click', function( event ) { if( ytplayer.isMuted() ) { ytplayer.unMute(); } else { ytplayer.mute(); } Event.stop( event ); } ); var timeDivId = playerid.sub( 'ytEmbed', 'currentTime' ); var statusDivId = playerid.sub( 'ytEmbed', 'currentStatus'); var dtTime = new Date(); new PeriodicalExecuter( function( pe ) { //lightbox closed, so stop this PeriodicalExecuter if( !$( timeDivId ) ) { pe.stop(); return; } //update the current time $( timeDivId ).update( page.YouTubeControls.formatTime( ytplayer.getCurrentTime() ) ); //update the current status var status = ytplayer.getPlayerState(); var statusStr = page.bundle.getString( 'yt.stopped' ); switch( status ) { case -1 : statusStr = page.bundle.getString( 'yt.stopped' ); break; case 0 : statusStr = page.bundle.getString( 'yt.ended' ); break; case 1 : statusStr = page.bundle.getString( 'yt.playing' ); break; case 2 : statusStr = page.bundle.getString( 'yt.paused' ); break; case 3 : statusStr = page.bundle.getString( 'yt.buffering' ); break; case 5 : statusStr = page.bundle.getString( 'yt.cued' ); break; } page.YouTubeControls.updateButtonLabels( ytplayer, muteBtnId, playBtnId, status ); $( statusDivId ).update( statusStr ); }.bind(this), 0.5 ); //wire the open/close controls wrapper var openYtControlsId = playerid.sub( 'ytEmbed', 'openYtControls' ); Event.observe( $( openYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); var closeYtControlsId = playerid.sub( 'ytEmbed', 'closeYtControls' ); Event.observe( $( closeYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); } page.util.flyoutMenuMainButtonKeyboardHandler = function( event ) { var key = event.keyCode || event.which; if (key == Event.KEY_LEFT || key == Event.KEY_RIGHT) { var elem = Event.element( event ); var target = elem.up( 'li' ); while ( true ) { if ( key == Event.KEY_LEFT ) { target = target.previous(); } else if ( key == Event.KEY_RIGHT ) { target = target.next(); } if ( !target || page.util.hasClassName( target, 'sub' ) || page.util.hasClassName( target, 'mainButton' ) || page.util.hasClassName( target, 'mainButtonType' ) ) { break; } } if ( target ) { var menuLinks = $A( target.getElementsByTagName( 'a' ) ); if ( menuLinks && menuLinks.length > 0 ) { menuLinks[ 0 ].focus(); Event.stop( event ); } } } }; page.util.initFlyoutMenuBehaviourForListActionMenuItems = function( container ) { //Initialize accessible flyout menu behavior if ( !container ) { container = document; } var uls = document.getElementsByTagName('ul'); if (uls) { var numUls = uls.length; for (var i = 0; i < numUls; i++) { var ul = uls[i]; if (page.util.hasClassName(ul, 'nav')) { var lis = ul.getElementsByTagName('li'); if (lis) { var numLis = lis.length; for (var j = 0; j < numLis; j++) { var li = lis[j]; if (page.util.hasClassName(li, 'sub')) { new page.FlyoutMenu($(li)); } else if (page.util.hasClassName(li, 'mainButton') || page.util.hasClassName(li, 'mainButtonType')) { var menuLinks = $A($(li).getElementsByTagName('a')); if (menuLinks && menuLinks.length > 0) { Event.observe(menuLinks[0], 'keydown', page.util.flyoutMenuMainButtonKeyboardHandler.bindAsEventListener(menuLinks[0])); } } } } } } } }; page.subheaderCleaner = { init : function( entityKind ) { var allHidden = true; var firstUl = null; var className = 'portletList-img courseListing ' + entityKind; $A( document.getElementsByClassName( className ) ).each( function( ul ) { if ( !ul.down() ) { ul.previous( 'h3' ).hide(); ul.hide(); if ( !firstUl ) { firstUl = ul; } } else { allHidden = false; } }); if ( allHidden && firstUl ) { firstUl.previous( 'div' ).show(); } } }; /** * Set up any JavaScript that will always be run on load (that doesn't depend on * any application logic / localization) here. * * Please leave this at the bottom of the file so it's easy to find. * */ FastInit.addOnLoad( function() { Event.observe( document.body, "click", page.ContextMenu.closeAllContextMenus.bindAsEventListener( window ) ); Event.observe( document.body, "click", page.ContextMenu.alignArrowsInBreadcrumb.bindAsEventListener( window ) ); Event.observe( document.body, 'keydown', function(event) { var key = event.keyCode || event.which; if ( key == 116 ) // reload current page on F5 key press { Event.stop( event ); // prevent browser from reloading complete frameset if ( Prototype.Browser.IE ) { event.keyCode = 0; } (function() { window.location.reload( true ); }.defer()); return false; } }); page.util.initFlyoutMenuBehaviourForListActionMenuItems(); if ( $('breadcrumbs') ) { new page.BreadcrumbExpander($('breadcrumbs')); // If we're in the content wrapper, hide the content wrapper breadcrumb frame // so that we don't get stacked breadcrumbs. if ( window.name === 'contentFrame' ) { var parent = window.parent; if ( parent ) { var frameset = parent.document.getElementById( 'contentFrameset' ); if ( frameset ) { frameset.rows = "*,100%"; } } } } var contentPane = $('contentPanel') || $('portalPane'); if ( contentPane ) { new page.LightboxInitializer( 'lb', contentPane ); } // add a label for inventory table checkboxes, if needed $A(document.getElementsByTagName("table")).each( function( table ) { if ( !page.util.hasClassName( table, 'inventory' ) ) { return; } var rows = table.rows; if ( rows.length < 2 ) { return; } for (var r = 0, rlen = rows.length - 1; r < rlen; r++) { var cells = rows[r+1].cells; // skip header row for (var c = 0, clen = cells.length; c < clen; c++) { var cell = $(cells[c]); var inp = cell.down('input'); if ( !inp || ( inp.type != 'checkbox' && inp.type != 'radio' ) ) { // We're only looking for checkbox/radio cells to label, so move on continue; } var lbl = cell.down('label'); if (lbl && !lbl.innerHTML.blank()) { break; // skip cells that already have a non-blank label } if ( !lbl ) { // add new label to checkbox lbl = new Element('label', {htmlFor: inp.id} ); lbl.addClassName('hideoff'); cell.insert({bottom:lbl}); } var headerCell = $(cell.parentNode).down('th'); if ( !headerCell ) { break; // skip rows without header cell } // create a temporary clone of the header cell and remove any hidden divs I.e. context menus var tempCell = $(headerCell.cloneNode(true)); var tempCellDivs = tempCell.getElementsByTagName("div"); for ( var i = 0; i < tempCellDivs.length; i++ ) { var d = tempCellDivs[i]; if ( d && !$(d).visible() ) { d.remove(); } } var lblBody = tempCell.innerHTML.replace( /<\/?[^>]*>/g, '' ); // strip html tags from header lblBody = page.bundle.getString('inventoryList.select.item', lblBody); lbl.update( lblBody ); // set label to header contents (minus tags) break; } } }); //set default font sizes to display text. hack to fix IE7 default font size issue. var sizes = {1:'xx-small', 2:'x-small', 3:'small', 4:'medium', 5:'large', 6:'x-large', 7:'xx-large'}; var fonts = document.getElementsByTagName('font'); for ( var i = 0; i < fonts.length; i++ ) { var font = fonts[i]; if ( font.size ) { // Since some font elements may be manually created by end users we have to handle random // values in here. if (!font.size.startsWith("+") && !font.size.startsWith("-")) { var fsize = parseInt(font.size, 10); if (fsize > 0 && fsize < 8) { font.style.fontSize = sizes[fsize]; } } } } try { if ( top && top.document.getElementById( 'bbFrameset' ) && window.name != 'nav' ) { top.document.getElementsByName('content')[0].title = page.bundle.getString( "frameset.contentframe.title" ) + " : " + document.title; } } catch ( err ) { // When Content System is loaded within a Vista popup window, cross-site security will prevent // accesses to top.document. Ignore this error and continue } page.scrollToEnsureVisibleElement(); page.isLoaded = true; }); /** * Class for adding an insertion marker within a list */ page.ListInsertionMarker = Class.create(); page.ListInsertionMarker.prototype = { initialize: function( listId, position, key, text ) { var list = $(listId); var listElements = list.childElements(); // create a marker list item var marker = new Element('li',{'id':listId+':'+key, 'class':'clearfix separator' }); marker.update('<h3 class="item" id=""><span class="reorder editmode"><span><img alt="" src="/images/ci/icons/generic_updown.gif"></span></span><span class="line"></span><span class="text">'+text+'</span></h3>'); //marker.setStyle({ position: 'relative', minHeight: '10px', padding: '0px', background: '#CCCCCC' }); position = ( position > listElements.length ) ? listElements.length : position; // add marker to list if (listElements.length == 0) { list.insert({top:marker}); // add marker to top of empty list } else if (listElements.length == position) { list.insert({bottom:marker}); // add marker after last element } else { listElements[position].insert({before:marker}); // add marker before element at position } var select = $('reorderControls'+listId).down('select'); // add a option for the marker to the keyboard repostioning select, if any if (select) { var option = new Element('option',{'value':key}).update( '-- '+text+' --' ); if (listElements.length == 0) { select.insert({top:option}); } else if (listElements.length == position) { select.insert({bottom:option}); } else { $(select.options[position]).insert({before:option}); } } } }; page.scrollToEnsureVisibleElement = function( ) { var params = window.location.search.parseQuery(); var ensureVisibleId = params.ensureVisibleId; if ( !ensureVisibleId ) { return; } var ensureVisibleElement = $(ensureVisibleId); if ( !ensureVisibleElement ) { return; } var pos = ensureVisibleElement.cumulativeOffset(); var scrollY = pos.top; var bodyHeight = $( document.body ).getHeight(); if (scrollY + ensureVisibleElement.getHeight() < bodyHeight) { return; // element is already visible } var receipt = $('inlineReceipt_good'); if ( receipt && receipt.visible() ) // pin receipt to top { var offset = receipt.cumulativeOffset(); offset.top = 0; var w = parseInt(receipt.getStyle('width'), 10); if ( Prototype.Browser.IE ) // width in IE includes border & padding, need to remove it { var bw = parseInt(receipt.getStyle('borderLeftWidth'), 10) + parseInt(receipt.getStyle('borderRightWidth'), 10); var pw = parseInt(receipt.getStyle('paddingLeft'), 10) + parseInt(receipt.getStyle('paddingRight'), 10); w = w - bw - pw; } receipt.setStyle({ position:"fixed", zIndex:"1000", left: offset.left + "px", top: offset.top + "px", width: w + "px"}); scrollY = scrollY - 2 * receipt.getHeight(); } // scroll window to show ensureVisibleElement window.scrollTo(0, scrollY ); }; /** * Recursively walks up the frameset stack asking each window to change their * document.domain attribute in anticipation of making a cross-site scripting * call to an LMS integration. * * <p>This should only be called from popup windows, as changing the document.domain * value of a window that is going to be reused later could do surprising things. * * @param domain Domain name shared by the Learn and LMS servers. */ page.setLmsIntegrationDomain = function( domain ) { if ( '' == domain ) { return; } try { if ( parent.page.setLmsIntegrationDomain ) { parent.page.setLmsIntegrationDomain( domain ); } } catch ( err ) { /* Ignore */ } document.domain = domain; }; page.refreshTopFrame = function() { if ( window.top.nav ) { window.top.nav.location.reload(); } }; page.rewriteTaskStatusUntilDone = function( spanId, taskId) { var theSpan = $(spanId); if (theSpan) { new Ajax.Request("/webapps/blackboard/execute/getSystemTaskStatus?taskId=" + taskId, { method: 'post', onSuccess: function(transport, json) { var result = transport.responseText.evalJSON( true ); theSpan = $(spanId); // reload it just in case it was removed between the request and response if (theSpan) { theSpan.update(result.text); if (result.complete == "false") { setTimeout(function() {page.rewriteTaskStatusUntilDone(spanId, taskId);}, 3000); } } }, onFailure: function(transport, json) { theSpan = $(spanId); //reload the span as above if (theSpan) { theSpan.hide(); $(spanId+'error').show(); } } }); } }; /* * Clean up the task id which associated with the specified course, so that the inline warning does not show up again */ page.cleanTaskId = function( courseId ) { //we don't care about the result, at worse it will display again on the next page new Ajax.Request("/webapps/blackboard/execute/courseMain?action=cleanTaskId&course_id=" + courseId, { method: 'post' }); }; } /* ================================================================== *The JavaScript Validation objects to be used in form validation. * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ /** * General purpose DOM utility methods. There's probably a better place for this. * Private methods and properties have names prefixed with "_". */ var bbDomUtil = { _inputTypes: [ 'input', 'textarea', 'select', 'button' ], _maxRecursion: 500, /** * @param elName name of the form input element (the request parameter name). * @return an array of two or more elements, a single element, or null. */ getInputElementByName: function( elName ) { var elArray = this._getInputElementsByNameInSection( 'dataCollectionContainer', elName ); if ( elArray.length === 0 ) { elArray = this._getInputElementsByName( elName ); } return ( elArray.length === 0 ) ? null : ( elArray.length == 1 ? elArray[ 0 ] : elArray ); }, /* * @param sectionId the ID of any element inside a form * @return the enclosing form element or null */ getEnclosingForm: function( sectionId ) { var form = null; if ( sectionId ) { var count; var section = document.getElementById( sectionId ); while ( section ) { ++count; if ( count > this._maxRecursion ) { break; } if ( section.tagName && section.tagName.toLowerCase() == "form" ) { form = section; break; } section = section.parentNode; } } return ( !form ) ? ( document.forms.length === 0 ? null : document.forms[ 0 ] ) : form; }, /** * Adds some additional processing to account for an IE bug * @param id the ID of an element */ getElementById: function( id ) { var el = $( id ); try { if ( el && /msie|internet explorer/i.test( navigator.userAgent ) && el.attributes.id && el.attributes.id.value != id && document.all ) { // IE usually returns item at 0 for ( var i = 0; i < document.all[ id ].length; ++i ) { if ( document.all[ id ][ i ].attributes.id && document.all[ id ][ i ].attributes.id.value == id ) { return $( document.all[ id ][ i ] ); } } } } catch ( e ) { // Ignore all exceptions } return el; }, syncCheckboxToInput: function( checkboxElement, inputElement ) { var checkbox = $( checkboxElement ); var input = $( inputElement ); if ( checkbox && input ) { var checkIfNotEmpty = function( ) { checkbox.checked = ( input.value.strip?input.value.strip( ):input.value )?true:false; } input.observe( 'change', checkIfNotEmpty ); input.observe( 'blur', checkIfNotEmpty ); } }, /** * @param sectionId the ID of an element that restricts the scope of elements. Cannot be null. * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name in the scope of the specified parent element. */ _getInputElementsByNameInSection: function( sectionId, elName ) { var result = []; if ( sectionId ) { var section = document.getElementById( sectionId ); if ( section ) { for ( var i = 0; i < this._inputTypes.length; ++i ) { var elements = section.getElementsByTagName( this._inputTypes[ i ] ); for ( var j = 0; j < elements.length; ++j ) { if ( elements[ j ].name == elName ) { result.push( elements[ j ] ); } } } } } return result; }, /** * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name. */ _getInputElementsByName: function( elName ) { var result = []; var elArray = document.getElementsByName( elName ); var formName = null; for ( var i = 0; i < elArray.length; ++i ) { if ( elArray[ i ].tagName.match( /^(input|select|textarea|button)$/i ) ) { if ( elArray[ i ].form !== null ) { if ( !formName ) { formName = elArray[ i ].form.name; } else if ( formName != elArray[ i ] .form.name ) { // Ignore elements that don't belong to the same form as the first one found. continue; } result.push( elArray[ i ] ); } } } return result; } }; /************************************************************ * Object formCheckList. Use this object to hold form objects * to be validated and perform form validation ************************************************************/ var addElement, removeElement, removeAllElements, getElement, checkForm, CheckGroup; var formCheckList = new formCheckList(); var dblSubmit = false; var skipValidation=false; function formCheckList() { this.checkList = []; this.addElement = addElement; this.removeElement = removeElement; this.removeAllElements = removeAllElements; this.getElement = getElement; this.check = checkForm; } function addElement(element) { if ( typeof element.group != 'undefined' ) { for ( var i=0; i < this.checkList.length;i++ ) { if ( this.checkList[i].name == element.group ) { this.checkList[i].addElement(element); return; } } var grp = new CheckGroup(element); grp.addElement(element); this.checkList[this.checkList.length] = grp; return; } this.checkList[this.checkList.length] = element; } function removeElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { this.checkList.splice(i, 1); } } } function getElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { return this.checkList[i]; } } } function removeAllElements() { var valSize = this.checkList.length; this.checkList.splice(0, valSize); } function checkForm() { if ( typeof(window.invalidAnswersTmp)!='undefined' ) { window.invalidAnswersTmp=[]; } var valid =true; for ( var i=0;i<this.checkList.length;i++ ) { if ( this.checkList[i].canValidate && !this.checkList[i].canValidate() ) { // cannot validate the input so skip it and continue onto the next input continue; } if ( !this.checkList[i].check() ) { if ( this.checkList[i].answerChk ) { valid=false; } else { return false; } } } return valid; } ///////////////////End of object formCheckList//////////////// /************************************************************ * Object: inputText. Use this object to validate text input in * your form (for input type == text|password|textarea|BUT NOT FILE!!! (FILE IS READ-ONLY)) ************************************************************/ function inputText(h) { if (h.id) { this.element = bbDomUtil.getElementById( h.id ); } else { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; } this.shouldFocus = h.shouldFocus; if ( h.shouldFocus === undefined ) { this.shouldFocus = true; } if ( this.shouldFocus ) { this.formatElement = 'bbDomUtil.getInputElementByName("'+h.display_format+'")'; this.focusElement = h.focus_element; // override element for focus in case of error } this.fieldName = h.name; this.disable_script = h.disable_script; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.minlength = h.minlength; this.maxlength = h.maxlength; this.trim = h.trim; this.regex = h.regex; this.regex_msg = h.regex_msg; this.regex_match = h.regex_match; this.verify = h.verify; this.check = inputTextCheck; this.valid_number = h.valid_number; this.min_value = h.min_value; this.max_value = h.max_value; this.nonnegative = h.nonnegative; this.valid_float = h.valid_float; this.allow_negative_float = h.allow_negative_float; this.valid_percent = h.valid_percent; this.allow_negative_percent = h.allow_negative_percent; this.valid_efloat = h.valid_efloat; // float with optional exponent this.valid_email = h.valid_email; this.valid_url = h.valid_url; this.required_url = h.required_url; this.invalid_chars = h.invalid_chars; // eg: /[%&#<>=+,]/g this.cmp_element = 'bbDomUtil.getInputElementByName("'+h.cmp_field+'")'; this.cmp_ref_label = h.cmp_ref_label; this.xor = h.xor; this.cmp_required = h.cmp_required; this.activeX = h.activeX; // synch activeX to hidden field before submission this.isHtmlDoc = h.isHtmlDoc; // is portfolio with body and html this.img_check = h.img_check; this.empty_value_warn = h.empty_value_warn; this.valid_system_role_id = h.valid_system_role_id; this.required = h.required; this.canValidate = h.canValidate; // callback function to determine whether the inputtext should be validated if (h.ref_and_regex === undefined) { this.ref_and_regex = true; } else { this.ref_and_regex = h.ref_and_regex; } if ( document.all && document.getElementById(h.name+'_ax') ) { this.axobj = document.getElementById(h.name+'_ax'); } // Add here anything you need to validate } function isAnEmptyVtbe(val) { // Different browsers populate an 'empty' VTBE with a different blank line - look for any of the known combinations and ignore them. // NOTE: Changes to this method need to be reflected in AssessmentDisplayControl.isAnEmptyVtbe return ( !val || !val.replace(/<p><\/p>/gi,'').trim() || !val.replace(/<br \/>/gi,'').trim() || !val.replace(/&nbsp;/gi,'').trim()); } // Do actual check here function inputTextCheck() { if ( this.shouldFocus === undefined ) { this.shouldFocus = true; } var element = eval(this.element); var cmp_element = eval(this.cmp_element); if ( element ) { // don't validate disabled elements if (element.disabled) { return true; } var focusElement = element; if ( this.axobj ) { focusElement = this.axobj; } this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.custom_alert_cmp = (typeof this.custom_alert_cmp != 'undefined') ? this.custom_alert_cmp : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( isAnEmptyVtbe(val) ) { val=''; } var trimmedVal, numVal, isValidNum, re; if ( this.activeX && isEmptyWysiwyg(element) ) { element.value = ''; val = ''; } if ( typeof eval(this.formatElement) != "undefined" && eval(this.formatElement) !== null ) { //Check if it is a mathml where; if ( /<APPLET ID="(\d+)" NAME="(\w+)"/.test(element.value) ) { if ( getRadioValue(eval(this.formatElement)) == 'P' ) { if ( !confirm(JS_RESOURCES.getString('validation.plain_text.confirm')) ) { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } } if ( this.trim ) { val = val.trim(); element.value = val; } //Remove leading & trailing spaces if needed if ( typeof cmp_element != 'undefined' ) { if ( this.xor ) { if ( val.trim()=='' ^ cmp_element.value.trim()=='' ) { if ( val.trim()=='' ) { alert( this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } } else { alert(this.custom_alert_cmp ? this.custom_alert_cmp : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.cmp_ref_label, this.ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } } return false; } } } if ( this.disable_script ) { if ( typeof eval(this.formatElement) == "undefined" || getRadioValue(eval(this.formatElement)) != 'P' ) { re = /<\s*script/ig; var re1 = /<\s*\/\s*script\s*>/ig; val = val.replace(re,'<disabled-script'); val = val.replace(re1,'</disabled-script>'); var re2 = /href\s*=\s*(['"]*)\s*javascript\s*:/ig; val = val.replace(re2,"href=$1disabled-javascript:"); element.value = val; } } if ( this.valid_number ) { trimmedVal = val.trim(); //added this check bcoz for numeric fields which are not required, this function was not working if ( trimmedVal!="" ) { var numLocalizer = new NumberLocalizer(); if ( numLocalizer === undefined ) { numVal = parseInt(trimmedVal, 10); } else { numVal = numLocalizer.parseNumber( trimmedVal ); } isValidNum = !isNaN(numVal); if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if (this.nonnegative && numVal<0) { alert(JS_RESOURCES.getFormattedString('validation.negative', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if ( ( (this.min_value || this.min_value === 0) && numVal < this.min_value ) || ( this.max_value && ( numVal > this.max_value ) ) ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_value', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_float ) { trimmedVal = val.trim(); var numFormat; if ( this.allow_negative_float ) { numFormat = LOCALE_SETTINGS.getString('float.allow.negative.format'); } else { numFormat = LOCALE_SETTINGS.getString('float.format'); } if ( numFormat ) { //hand parse for l10n re = new RegExp( numFormat ); isValidNum = trimmedVal.search( re ) === 0; } else { //try to use platform native (non-localized) numVal = parseFloat(trimmedVal); isValidNum = !isNaN(numVal); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test(trimmedVal.substring(numVal.toString().length)); } } if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_percent ) { if ( this.allow_negative_percent ) { if ( !isValidNegativePercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.allow_negtive.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { if ( !isPercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_efloat ) { if ( !isNumeric(val) ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { focusElement = (this.focusElement ? this.focusElement : this.element); if ( focusElement.focus ) { safeFocus( focusElement ); } } return false; } } if ( this.valid_email ) { if ( val.trim() == '' ) { if ( confirm(JS_RESOURCES.getString('warning.email')) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { re = /^(['`a-zA-Z0-9_+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; if ( !re.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.email', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } // confirms via javascript pop-up if input field is empty; // user can click Ok to proceed or cancel to go back with the element focused // the message that pops up is the message passed in with ref_label if ( this.empty_value_warn ) { if ( val.trim() == '' ) { if ( confirm(this.ref_label) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } var extra = 0; if (navigator.appName=="Netscape" && parseInt(navigator.appVersion, 10 )>=5) { var index = val.indexOf('\n'); while(index != -1) { extra += 1; index = val.indexOf('\n',index+1); } } if ( this.maxlength < val.length + extra ) { var newlength = val.length + extra; if ( (newlength - this.maxlength) > 1 ) { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.plural', [this.ref_label,this.maxlength,(newlength-this.maxlength)])); } else { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.singular', [this.ref_label,this.maxlength])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } // required_url, unlike valid_url, flags empty strings as invalid URLs. if ( this.required_url ) { if ( val.trim() == '' ) { alert(JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } if ( !isValidUrl(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_url ) { if ( val.trim()=='' ) { return true; } var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; if ( !oRegExp.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( typeof(this.regex) == 'string' ) { this.regex=eval(this.regex); } if ( (typeof(this.regex) == 'object' || typeof(this.regex) == 'function') && val.trim() != '' ) { re =this.regex; if ( this.regex_match && val.search(re) == -1 ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } if ( !this.regex_match && re.test(val) ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.invalid_chars ) { // if string was passed, convert to regular expression object if( Object.isString( this.invalid_chars ) ) { var stringToParse = this.invalid_chars; var firstSlashPos = stringToParse.indexOf("/"); var lastSlashPos = stringToParse.lastIndexOf("/"); var pattern = stringToParse.substring( ++firstSlashPos, lastSlashPos ); var modifier = stringToParse.substring( ++lastSlashPos, stringToParse.length ); this.invalid_chars = new RegExp( pattern, modifier ); } var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.verify ) { var chk_field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'_chk')); var field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'')); if ( chk_field.value != val ) { alert(JS_RESOURCES.getFormattedString('validation.mismatch', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( chk_field ); } return false; } // Encode password if ( element.type == 'password' ) { element.value = element.value.trim(); if ( element.value != '' ) { element.value = field.value = chk_field.value = calcMD5(element.value); } else { alert(JS_RESOURCES.getString('validation.password')); element.value = field.value =''; if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.cmp_required && element.value.trim()!='' ) { if ( !cmp_element.value.trim().length ) { alert(JS_RESOURCES.getFormattedString('validation.cmp_field.rejected', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } return false; } } if ( this.img_check ) { return image_check(element); } //AS-102122, if a image tag without ALT properties <img src="1.jpg">, add a null ALT for it. <img src="1.jpg" alt=""> imgTag_check(element,0); // System role ids cannot begin with "BB" as of 7.2; such ids are reserved for solely for Blackboard use // Checks field to see if string begins with "BB" case-insensitive and if so, alert the user if ( this.valid_system_role_id ) { if ( element.value.indexOf('BB') === 0 || element.value.indexOf('bb') === 0 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.system_role.reserve', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } else { return true; } } } return true; } ///////////////////End of object inputText/////////////////// //check ALT propertity for <img tag, if there isn't ALT propertiry, add ALT="" for this tag function imgTag_check(element , start){ var imgStart = element.value.indexOf("<img",start); // img: <img src=... > if (imgStart > -1 ){ var end = element.value.indexOf(">",imgStart); if (end == -1 ){ return; } var imgData = element.value.substring(imgStart, end+1); // <img src=... > if(imgData.indexOf("alt") == -1){ imgData = "<img alt=\"\" " + imgData.substring(4); element.value = element.value.substring(0,imgStart) + imgData + element.value.substring(end+1); } imgTag_check(element, end); } } function image_check(element) { var ext = element.value.match(/.*\.(.*)/); ext = ext ? ext[1] :''; var re = /gif|jpeg|png|tif|bmp|jpg/i; if ( ! re.test(ext) && element.value ) { if ( ! confirm(JS_RESOURCES.getFormattedString('validation.image_type', [ext])) ) { element.focus(); return false; } } return true; } /************************************************************ * Object: inputDate. Use this object to validate that the * associated date fields are not empty ************************************************************/ var inputDateCheck; function inputDate(h) { this.element_mm = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mm")'; this.element_dd = 'bbDomUtil.getInputElementByName("'+h.name+'_0_dd")'; this.element_yyyy = 'bbDomUtil.getInputElementByName("'+h.name+'_0_yyyy")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputDateCheck; // Add here anything you need to validate } // Do actual check here function inputDateCheck() { var element_mm = eval(this.element_mm); var element_dd = eval(this.element_dd); var element_yyyy = eval(this.element_yyyy); if ( typeof element_mm != 'undefined' && element_dd !='undefined' && element_yyyy !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = ( this.ref_label ) ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_mm.name]); if ( element_mm.selectedIndex == -1 || element_dd.selectedIndex == -1 || element_yyyy == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.date.required', [this.ref_label])); if ( element_mm.selectedIndex == -1 ) { element_mm.focus(); } else if ( element_dd.selectedIndex == -1 ) { element_dd.focus(); } else { element_yyyy.focus(); } return false; } } return true; } ///////////////////End of object inputDate/////////////////// /************************************************************ * Object: inputTime. Use this object to validate that the * associated time fields are not empty ************************************************************/ var inputTimeCheck; function inputTime(h) { this.element_hh = 'bbDomUtil.getInputElementByName("'+h.name+'_0_hh")'; this.element_mi = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mi")'; this.element_am = 'bbDomUtil.getInputElementByName("'+h.name+'_0_am")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputTimeCheck; // Add here anything you need to validate } // Do actual check here function inputTimeCheck() { var element_hh = eval(this.element_hh); var element_mi = eval(this.element_mi); var element_am = eval(this.element_am); if ( typeof element_hh != 'undefined' && element_mi !='undefined' && element_am !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_hh.name]); if ( element_hh.selectedIndex == -1 || element_mi.selectedIndex == -1 || element_am == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.time.required', [this.ref_label])); if ( element_hh.selectedIndex == -1 ) { element_hh.focus(); } else if ( element_mi.selectedIndex == -1 ) { element_mi.focus(); } else { element_am.focus(); } return false; } } return true; } ///////////////////End of object inputTime/////////////////// /************************************************************ * Object: inputSelect. Use this object to validate that the * associated select field is not empty ************************************************************/ var inputSelectCheck; function inputSelect(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.minSelected = h.minSelected; this.maxSelected = h.maxSelected; this.title = h.title; this.isMultiSelect = h.isMultiSelect; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputSelectCheck; // Add here anything you need to validate } // Do actual check here function inputSelectCheck() { var element = eval(this.element); var checked = 0; if ( typeof element != 'undefined' ) { if ( this.isMultiSelect) { if( this.minSelected ) { //check that at least minSelected number of options is selected //bsomala checked = element.options.length; if(checked < this.minSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.minItems', [this.minSelected])); element.focus(); return false; } } checked = 0; if ( this.maxSelected ) { checked = element.options.length; if(checked > this.maxSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.maxItems', [this.maxSelected])); element.focus(); return false; } } } else { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); if ( (element.selectedIndex == -1) || (element.options[element.selectedIndex].value == "") ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); element.focus(); return false; } } } return true; } ///////////////////End of object inputSelect/////////////////// /************************************************************ * Object: inputFile. Use this object to validate that the file upload is not empty. IMPORTANT: file type is READ ONLY ************************************************************/ var inputFileCheck; function inputFile(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.invalid_chars = h.invalid_chars; this.minlength = h.minlength; this.img_check = h.img_check; this.check = inputFileCheck; // Add here anything you need to validate } // Do actual check here function inputFileCheck() { var element = eval(this.element); if ( typeof element != 'undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( this.invalid_chars ) { var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); shiftFocus( element, false); return false; } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } return false; } if ( this.img_check ) { return image_check(element); } } return true; } ///////////////////End of object inputFile/////////////////// /************************************************************ * Object: Check_EventTime. Use this object to make sure * that the end time is not before the start time, confirm pastdue time, * check duration of the event. *************************************************************/ var Check_EventTime_check; function Check_EventTime(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check; } function Check_EventTime_check() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( (document.forms[0].restrict_start && document.forms[0].restrict_end)|| (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end) ) { if ( (document.forms[0].restrict_start && document.forms[0].restrict_end && document.forms[0].restrict_start.checked && document.forms[0].restrict_end.checked) || (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end && document.forms[1].restrict_start.checked && document.forms[1].restrict_end.checked) ) { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } } else { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end && end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /* * SCR 17696 * This validation check should be used in the date widgets instead of the earlier one * as that has the chackboxes names hardcoded in them. The existing date wodgets * use it, but going ahead this should be the used. It helps specially when there are * multiple date widgets on the same page. */ var Check_EventTime_check_multiple; function Check_EventTime_multiple(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check_multiple; } function Check_EventTime_check_multiple() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( restr && cmp_restr ) { //This block has been aded due to SCR 17696. //Reason : if this method is directly called from a JSP page which is not a part of // the existing date widgets, and the parameters of stsrt date, end date, start checkbox and // end checkbox are passed, and additionally the page has another if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /*We always need time in our favorite format */ function sql_datetime(dat) { var year = dat.getFullYear(); var mon = dat.getMonth(); mon++; mon = (mon<10)?'0'+mon:mon; var day = dat.getDate(); day = (day<10)?'0'+day:day; var hh = dat.getHours(); hh = (hh<10)?'0'+hh:hh; var mi = dat.getMinutes(); mi = (mi<10)?'0'+mi:mi; var ss = dat.getSeconds(); ss = (ss<10)?'0'+ss:ss; return year+'-'+mon+'-'+day+' '+hh+':'+mi+':'+ss; } ///////////////////End of object Check_EventTime///////////// /******************************************************************************** * Object DoubleSubmit(): * Use this object to prevent multiple times form submission * Second argument is wait image source; first argument is image name (string) or * instance of ImageSwapper object created for submit button (if it has rollovers) *********************************************************************************/ var checkDoubleSubmit; // Prevent multiple form submission function DoubleSubmit() { this.submitted = 0; this.check = checkDoubleSubmit; } function checkDoubleSubmit() { if ( this.submitted > 0 ) { alert (JS_RESOURCES.getString('notification.submit')); return false; } else { this.submitted++; } return true; } ///////////////////End of Object DoubleSubmit()////////////////// /******************************************************************************** * Object RadioCheckBox(): * Use this object to make sure that at least one item is selected from the group of * radio/checkbox groups. Just attach this code to checkbox/radio group (refered below as 'element'): * formCheckList.addElement(new RadioCheckBox({name:'element or subgroup name',group:'group name',ref_label:"group label in alerts"})); *********************************************************************************/ var groupAddElement, checkGroupChecked, groupIsChecked; // Constructor function function RadioCheckBox(h) { return h; } function CheckGroup(h) { this.name = h.group; this.ref_label = h.ref_label; this.elements = []; this.addElement = groupAddElement; this.check = checkGroupChecked; } function groupAddElement(h) { this.elements[this.elements.length] = h.name; } function checkGroupChecked() { var list = this.elements; var chk = false; for ( var i = 0; i < list.length; i++ ) { if ( groupIsChecked(list[i]) ) { return true; } } var msg = null; var group = bbDomUtil.getInputElementByName(list[0]); group = (typeof group[0] != 'undefined') ? group[0]:group; if ( group.type == "radio" ) { msg = JS_RESOURCES.getFormattedString('validation.radio.required', [this.ref_label]); } else { msg = JS_RESOURCES.getFormattedString('validation.option.required', [this.ref_label]); } alert(msg); group.focus(); return false; } function groupIsChecked(groupName) { var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var checked = false; if ( typeof group != 'undefined' ) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( group[i].checked ) { checked = true; return checked; } } } else { if ( group.checked ) { checked = true; return checked; } } } return checked; } ///////////////////End of Object CheckGroup()//////////////////// /******************************************************************************** * Object selector(): * Use this object to make sure that at least one item is available in the Selector element (see PickerElement.java) * For use when Selector is marked Required: * formCheckList.addElement(new CheckSelector({name:'element or subgroup name',ref_label:"group label in alerts"})); *********************************************************************************/ var selectorCheck, selectorElementAvailable; // Constructor function function selector(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.required = h.required; this.check = selectorCheck; // Add here anything you need to validate } // Do actual check here function selectorCheck() { if(this.required) { var isAvailable = selectorElementAvailable(this.fieldName); this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element.name]); if ( !isAvailable ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } } return true; } function selectorElementAvailable(groupName) { // we need at least one "Remove" checkbox to be present and unchecked (one element is added but not removed) var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var available = false; if ( typeof group != 'undefined' && group !== null) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( !group[i].checked ) { available = true; return available; } } } else { if ( !group.checked ) { available = true; return available; } } } return available; } ///////////////////End of Object CheckSelector()//////////////////// //////////////// Start some useful generic functions //////////// /* Function ltrim(): Remove leading spaces in strings: Usage:trimmedString = originalString.ltrim(); */ function ltrim() { return this.replace( /^\s+/g,''); } String.prototype.ltrim = ltrim; /* Function rtrim(): Remove trailing spaces in strings: Usage:trimmedString = originalString.rtrim(); */ function rtrim() { return this.replace( /\s+$/g,''); } String.prototype.rtrim = rtrim; /* Function trim(): Remove leading and trailing spaces in strings: Usage:trimmedString = originalString.trim(); */ function trim() { return this.rtrim().ltrim(); } String.prototype.trim = trim; /* Function invalidChars(): Returns an array of illegal chars Usage: var listOfChars = myStringToSearch.invalidChars(regularExpression); regularExpression = /[illegal chars]/g; Sample re = /[! &^$#]/g */ function invalidChars (re) { var chrs = this.match(re); if ( chrs ) { for ( var j=0;j<chrs.length;j++ ) { if ( chrs[j]===' ' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.space'); } else if ( chrs[j]==',' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.comma'); } else if ( chrs[j]=='\\' ) { chrs[j]='\\\\'; } } } return chrs; } String.prototype.invalidChars = invalidChars; /** Function getRadioValue(): Returns selected value for group of radio buttons * Usage: var selectedValue = getRadioValue(radio); radio - reference to radio group */ function getRadioValue(radio) { for ( var i=0;i< radio.length;i++ ) { if ( radio[i].checked ) { return radio[i].value; } } } /** Function isEmptyWysiwyg(): Checks WYSIWYG control for value */ function isEmptyWysiwyg(field) { // first remove any HTML tags from the value, then check if it's empty (all spaces or &nbsp;s) // explicitly adding the unicode non-breaking space and line feed/break since IE and safari // don't seem to include them in \s var EMPTY_REGEXP = /^(\s|\u00A0|\u2028|\u2029|&nbsp;)*$/i; // Input is not empty if it contains one of the following tags: img/object/embed var SPECIALTAGS = /(<\s*(img)|(object)|(embed)|(hr)|(input)|(applet))/i; if ( field && typeof(field.value) == 'string' && field.value ) { var notags = field.value.replace(/<.*?>/g,''); var result = EMPTY_REGEXP.test(notags); return ( result && !SPECIALTAGS.test(field.value) ); } return true; } /** Function isValidUrl(): Checks if given string is in the general URL format */ var VALID_URL_REGEXP = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; function isValidUrl(string) { return( VALID_URL_REGEXP.test(string) ); } /** Numeric */ var EFLOAT_REGEXP = LOCALE_SETTINGS.getString('efloat.format'); var THOUSANDS_SEP = LOCALE_SETTINGS.getString('thousand.sep.format'); /*rejectThousandSep: if true then the presence of the thousands-separator is an error (non-numeric) * e.g. we don't accept it for point, since point/score is rarely in thousands range. */ function isNumeric(string, rejectThousandSep ) { string = string.trim(); if ( rejectThousandSep !== null && rejectThousandSep ) { var hasThousands = ( string.search( new RegExp( THOUSANDS_SEP ) ) !== -1 ) ; if (hasThousands) { return false; } } string = string.replace(new RegExp(THOUSANDS_SEP, 'g'), ''); if ( string.search( new RegExp(EFLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return !isNaN(floatValue); } return false; } /** Float between 0 and 100 */ var FLOAT_REGEXP = LOCALE_SETTINGS.getString('float.format'); function isPercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= 0 && floatValue <= 100 ); } return false; } /** Float between -100 and 100 */ var FLOAT_ALLOW_NEGATIVE_REGEXP = LOCALE_SETTINGS.getString('float.allow.negative.format'); function isValidNegativePercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_ALLOW_NEGATIVE_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= -100 && floatValue <= 100 ); } return false; } /*Function submitForm() Call this function to validate and submit form @param form the name of the form or the DOM object representing the form. If null or undefined, submits first form on page. */ function submitForm(form) { if ( validateForm() ) { if (form) { if ( typeof( form ) == "string" ) { document.forms[ form ].submit(); } else { form.submit(); } } else { document.forms[0].submit(); } } } /* Sort numerical array in ascending order */ function numericalArraySortAscending(a, b) { return (a-b); } /*Function validateForm() * Call this function onSubmit inside <form> tag */ function validateForm() { // Set textarea value to VTBE contents if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if ( skipValidation ) { return true; } /* Validate form */ var valid = formCheckList.check(); var i; /*Check for invalid answers if any present */ var invalidAnswersArray = []; var invAns = window.invalidAnswers; if ( typeof( invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } invAns = window.invalidAnswersTmp; if ( typeof(invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } var stringArg = ''; if ( invalidAnswersArray.length > 0 ) { invalidAnswersArray.sort(numericalArraySortAscending); var lastIndex = invalidAnswersArray.length - 1; for ( var x = 0; x < invalidAnswersArray.length; x++ ) { stringArg += invalidAnswersArray[x]; if ( x < lastIndex ) { if ( ( (x+1) % 10 ) === 0 ) { stringArg += ",\n"; } else { stringArg += ","; } } } } if ( stringArg !== '' && valid ) { var msgKey; if ( !assessment.backtrackProhibited ) { msgKey = 'assessment.incomplete.confirm'; } else { msgKey = 'assessment.incomplete.confirm.backtrackProhibited'; } if (assessment.isSurvey) { msgKey = msgKey + ".survey"; } if ( !confirm( JS_RESOURCES.getFormattedString( msgKey, [stringArg] ) ) ) { valid = false; // User decided not to submit } else { assessment.userReallyWantsToSubmit = true; } window.invalidAnswersTmp = []; // Clearing up } /* Go back to placeholders if validation failed (valid == false) */ if ( ismath && !valid ) { api.setMathmlBoxes(); } /* If everything is OK and ready to go,check that the form was not already submitted */ if ( valid && dblSubmit ) { valid = dblSubmit.check(); } return valid; } /*Function boxSelector() * Use this function to select, unselect or invert selection for specified checkbox groups * Call: boxSelector(['name1','name2',...,'namen'],action), here action is 'select', or 'unselect', or 'invert' */ function boxSelector(list,action) { action = (action == 'select') ? true : (action == 'unselect') ? false : action; for ( var i=0;i<list.length;i++ ) { var group = 'bbDomUtil.getInputElementByName("'+list[i]+'")'; if ( typeof (group = eval(group)) != 'undefined' ) { var j; if ( action == 'invert' ) { for ( j=0;j<group.length;j++ ) { group[j].checked = !group[j].checked; } } else { for ( j=0;j<group.length;j++ ) { group[j].checked = action; } } } } } function setHidden (from,to) { var hide = eval(to); hide.value = from.value; } ////////////////////////////////////////////////////////////////// /** * Check_Answer object was added by request specified in mscr 524 * to provide validation to student answers * Variable invalidAnswers has to be added to the page where assessment is submitted * It should contain the list of unfinished questions excluding question(s) on current page * Check_Answer object will perform final validation and display all unfinished questions in confirm box */ var invalidAnswers = []; // the java code will populate this array on final QbyQ page /** Object constructor for answers walidation * */ var Check_Answer_check; function Check_Answer (vobj) { if ( typeof(window.invalidAnswersTmp)=='undefined' ) { window.invalidAnswersTmp=[]; } this.form = 'document.forms[0]'; this.element = 'bbDomUtil.getInputElementByName("'+vobj.name+'")'; this.name = vobj.name; this.answerChk = true; //Check_Answer is special check, it makes a list of unfinished questions and always return true this.ref_label = vobj.ref_label; this.check = Check_Answer_check; } //Test if at least one member of radio or checkbox group is selected function isChecked(grp) { if (typeof(grp.length) != 'undefined') { for ( var i=0;i< grp.length;i++ ) { if ( grp[i].checked ) { return true; } } return false; } else { return grp.checked; } } function Check_Answer_check() { //create form element object var el = eval(this.element); //Extract question type information from element name var qtype = /^(\w+)-/.exec(this.name); if ( !qtype ) { qtype = /^([^_]+)_/.exec(this.name); } qtype = qtype[1]; if ( qtype == 'ma' ) { qtype = /-\d+$/.test(this.name) ? 'mat' : 'ma'; } // Perform actual check-up if ( qtype == 'tf' || qtype == 'mc' || qtype == 'ma' || qtype == 'eo' ) { if ( !isChecked(el) ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]=this.ref_label; } } else if ( qtype == 'ord' || qtype == 'mat' ) { if ( el.selectedIndex === 0 && this.ref_label != window.invalidAnswersTmp[window.invalidAnswersTmp.length-1] ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'fitb' || qtype == 'essay' || qtype == 'num' || qtype == 'calc' || qtype == 'hs' || qtype == 'jumbled_sentence' || qtype == 'fib_plus' || qtype == 'quiz_bowl' ) { //remove isEmptyWysiwyg for these question types, since they should allow some chars as < > var val = el.value; if ( isAnEmptyVtbe(val) ) { val=''; } if ( val.trim().length < 1 ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'file' ) { var haveFile = false; var hiddenField = eval(this.form + '.elements["' + this.name + '-override"]'); if ( hiddenField && hiddenField.value == "true" ) { haveFile = true; } el = eval(this.form + '.elements["' + this.name + '_attachmentType"]'); if ( !haveFile && el && el.value !== "" ) { haveFile = true; } if ( !haveFile ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } // eliminate duplicates // TODO: think of a better way to do this if ( window.invalidAnswersTmp.length > 0 ) { var tmpArray = []; var tmpObject = {}; for ( var i = 0; i < window.invalidAnswersTmp.length; ++i ) { if ( !tmpObject[window.invalidAnswersTmp[i]] ) { tmpObject[window.invalidAnswersTmp[i]] = true; tmpArray[tmpArray.length] = window.invalidAnswersTmp[i]; } } window.invalidAnswersTmp = tmpArray; } return true; //Always true, we can make decision later through confirm } // wrapper function for focus() calls function shiftFocus(el, isVTBE) { if ( el ) { if ( isVTBE && editors && editors[el.name] && typeof(editors[el.name].focusEditor) == 'function' ) { editors[el.name].focusEditor(); } else if ( !el.disabled && !el.readOnly && el.type != "hidden" ) { safeFocus( el ); } } return; } function safeFocus( e ) { try { if ( e && e.focus ) { e.focus(); } } catch (er) { //Ignore, element is hidden in IE and can't be focused. } } /** * A validator that checks to see that a certain radio button in a group is * selected. This is intended to be used for conditional validation -- * validators that only apply when a certain radio button selection is made. * Note that if there are no selected values, this validator will return false * when checked. * - name - radio button group to check * - value - the radio button value to check for selection */ var RadioButtonValueValidator_check; function RadioButtonValueValidator( name, value ) { this.element = bbDomUtil.getInputElementByName(name); this.value = value; this.check = RadioButtonValueValidator_check; } function RadioButtonValueValidator_check() { for ( var i = 0; i < this.element.length; i++ ) { if ( this.element[i].value == this.value ) { return this.element[i].checked; } } return false; } /** * A validator that performs a logical, short-circuit OR on its two arguments. */ var OrValidator_check; function OrValidator( first, second ) { this.first = first; this.second = second; this.check = OrValidator_check; } function OrValidator_check() { return this.first.check() || this.second.check(); } /* This is a sample code that has to be added to every corresponding form element in take assessment page, where you perform question validation for completness; ref_lablel value is used to refer to element, name is field full name: <script type="text/javascript"> formCheckList.addElement(new Check_Answer({ref_label:"Question 3",name:"tf-ans-_190_1"})); </script> */ var nonceUtil = {}; /** * Finds the form element holding the nonceId * @param formId is the id of the form the nonce element exists within */ nonceUtil.getNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce') }; nonceUtil.getAjaxNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce.ajax') }; nonceUtil.getNonceIdEx = function(formId, elName) { var nonceId = null; if(formId && $s(formId) ) { nonceId= $s(formId).elements[elName]; } if( !nonceId ) { // take a cheap shot at retreiving the first nonceId on the page nonceId = document.getElementsByName( elName )[0]; // Note : nonceId can be null if the form does not have a nonce element declared. This should be a sign of a xsrf loophole } return nonceId; }; /** * Finds the form element holding the nonceId * @param formElementId is the id of a form element on the page. It is expected that the nonceId corresponds * to the same form. */ nonceUtil.getNonceIdByFormElementId = function(formElementId) { var nonceId = null; if( formElementId && $s(formElementId) ) { var elementFormId = bbDomUtil.getEnclosingForm(formElementId); nonceId = $s(elementFormId).elements['blackboard.platform.security.NonceUtil.nonce']; } return nonceId; }; nonceUtil.getNonceIdValue = function(formId) { var nonceId = nonceUtil.getNonceId(formId); return nonceId ? nonceId.value : ""; }; /** * Copies the nonceid from one form on the page to another form. Useful when using flyout forms. */ nonceUtil.copyNonceId = function( sourceFormId, targetFormId ) { var nonceId = nonceUtil.getNonceIdValue( sourceFormId ); var targetElem = new Element( 'input', { type: 'hidden', name: 'blackboard.platform.security.NonceUtil.nonce', value: nonceId } ); $( targetFormId ).appendChild( targetElem ); }; /** * Updates the form's nonceId based on the JSON response from an AjaxSecureForm */ nonceUtil.updateFromAjaxRequest = function( headerJSON ) { if ( headerJSON ) { var nonceId = nonceUtil.getNonceId(); if( nonceId ) { nonceId.value = headerJSON.nonceId; } } }; var NumberLocalizer = Class.create(); NumberLocalizer.prototype = { initialize : function() { var thousandsSeparator = LOCALE_SETTINGS[ 'number_format.thousands_sep' ]; var decimalSeparator = LOCALE_SETTINGS[ 'number_format.decimal_point' ]; this.thousandsSeparator = ( thousandsSeparator === null ) ? ',' : thousandsSeparator; this.needToConvertThousands = ( this.thousandsSeparator !== ',' ) ? true : false; this.decimalSeparator = ( decimalSeparator === null ) ? '.' : decimalSeparator; this.needToConvertDecimal = ( this.decimalSeparator !== '.' ) ? true : false; }, // Takes a number that is unlocalized and converts it to // the current locale format. formatNumber : function( f ) { var result; result = f.toString(); // Replace and thousands delimiter with a token so we can // replace it with the final symbol after we replace the decimal symbol. if ( this.needToConvertThousands ) { result = result.replace( ',', '[comma]' ); } if ( this.needToConvertDecimal ) { result = result.replace( '.', this.decimalSeparator ); } if ( this.needToConvertThousands ) { result = result.replace( '[comma]', this.thousandsSeparator ); } return result; }, // Takes a number that is in the current locale format and // converts it back to an unlocalized number. parseNumber : function( num ) { var result; result = num.toString(); // Parsing string to return as a float, so we don't need the thousands // separator anymore. result = result.replace( this.thousandsSeparator, '' ); if ( this.needToConvertDecimal ) { result = result.replace( this.decimalSeparator, '.' ); } return parseFloat( result ); } };var AccessibleSelect = {}; /** * Wire up the accessible event listeners to any <select>s on the page that have an onchange listener already */ AccessibleSelect.initializePage = function() { var selects = document.getElementsByTagName("select"); for ( var i = 0; i < selects.length; i++ ) { var currentSelect = selects[i]; if ( currentSelect.onchange ) { currentSelect.changed = false; currentSelect.onfocus = AccessibleSelect.onfocus; currentSelect.onkeydown = AccessibleSelect.onkeydown; currentSelect.onclick = AccessibleSelect.onclick; currentSelect.onchange = AccessibleSelect.createOnchange( currentSelect.onchange ); } } }; /** * Functor that creates an onchange function which if the <select> has actually been changed, will call the * specified callback (i.e. the original onchange function ) */ AccessibleSelect.createOnchange = function( callback ) { return function( theElement ) { var theSelect; if ( theElement && theElement.value ) { theSelect = theElement; } else { theSelect = this; } if (theSelect.changed) { // bind "theSelect" as the "this" for the callback. callback.apply(theSelect); return true; } else { return false; } }; }; /** * Event listener called when the <select> is clicked */ AccessibleSelect.onclick = function() { this.changed = true; // If the select size is greater than 0, then the onchange event occurs before the onclick event // and the "changed" attribute is false when the onchange event listener method runs and the select // element's onchange method does not get called. Therefore, we are going to call it here. if( this.size > 0 ) { this.onchange(this); } }; /** * Event listener called when the <select> gains focus */ AccessibleSelect.onfocus = function() { this.initValue = this.value; return true; }; /** * Event listener called when a key is pressed in the <select>. */ AccessibleSelect.onkeydown = function(e) { var theEvent; var keyCodeTab = "9"; var keyCodeEnter = "13"; var keyCodeEsc = "27"; if (e) { theEvent = e; } else { theEvent = event; } var largeSize = (this.size > 0); if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && ( largeSize || this.value != this.initValue) ) { this.initValue = this.value; this.changed = true; this.onchange(this); // returning true logically denotes that the change has been made, but more importantly it will make sure the default // behavior (what would have happened without the onkeydown event) is honored. For example, user pressing 'tab' key will // move the focus to the next element on the page return true; } else if (theEvent.keyCode == keyCodeEsc) { this.value = this.initValue; return false; } else { this.changed = false; } return true; }; // This script does not work for Safari. See AS-110404, AS-110426 if (!/webkit|khtml/i.test(navigator.userAgent)) { //When the page is loaded, initialize the select boxes if ( window.addEventListener) { window.addEventListener('load', AccessibleSelect.initializePage, false); } else if ( window.attachEvent ) { window.attachEvent('onload', AccessibleSelect.initializePage); } }var popup = { /** * Launches a new popup window. This method is used for an random popup that * might be necessary (preview window for example). If you are launching a * "picker" window you should use launchPicker() instead. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). This is required. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param resizable whether the new window should be resizable. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @param showStatus whether the new window should be show the status bar. If * not provided a default value will be used. Do not provide unless * your specific requirements dictate it. * @param scrolling whether the new window should allow scrolling. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @return a reference to the popup window generated */ launch: function( url, name, width, height, resizable, showStatus, scrolling ) { if ( typeof( width ) == 'undefined' ) { // for RTL, the width needs to be wider, to prevent vertical line overlapping in the popup if ( page.util.isRTL() ) { width = 890; } else { width = 825; // wide enough to prevent a horizontal scrollbar in most cases } } if ( typeof( height ) == 'undefined' ) { height = 500; } if ( typeof( resizable ) == 'undefined' ) { resizable = 'yes'; } if ( typeof( showStatus ) == 'undefined' ) { showStatus = 'yes'; } if ( typeof( scrolling ) == 'undefined' ) { scrolling = 'yes'; } // figure out placement of the new window we will open. If the desired size // of the new window is bigger than the screen size then make the window // smaller and put it far left. Otherwise, center the window on screen. var screenX = 0; if ( screen.width <= width ) { width = screen.width; // new window should not be wider than the screen } else { screenX = ( screen.width - width ) / 2; // center on the screen } var popup = window.open( url, name, 'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrolling + ',status=' + showStatus + ',top=20' + ',screenY=20' + ',screenX=' + screenX + ',left=' + screenX ); if ( popup ) { popup.focus(); if ( !popup.opener ) { popup.opener = self; } window.top.name = 'bbWin'; } return popup; }, /** * Launches a new "picker" window. * <p> * At the moment the only difference between this method and launch (besides * the inability to specify some advanced and rarely used options) is that * this method will default the {@code name} value if not provided. However, * you should still use this method if you are launching a "picker" type * window as additional differences may be introduced in the future. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). If not provided a default value will be used. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @return a reference to the picker window generated */ launchPicker: function( url, name, width, height ) { if ( typeof( name ) == 'undefined' ) { name = 'picker'; } return popup.launch( url, name, width, height ); }, /** * Launches a new Content System folder "picker" window. * * @param element a reference to the form element into which the value chosen * in the picker should be set. If not provided, the value will not be * set. * @return a reference to the picker window generated */ launchCsDirectoryPicker: function( element ) { var picker = popup.launchPicker( "/webapps/cmsmain/folderpicker" ); if ( picker !== null ) { if ( ( typeof( element ) != 'undefined' ) && ( element !== null ) ) { picker.opener.inputEntryURLToSet = document.getElementById( element ); } picker.opener.returnFullURL = false; } return picker; } }; var BrowserSpecific = { registerListeners: function() { if( Prototype.Browser.IE ) { var inputs = $A(document.getElementsByTagName('input')); //Enter key submit handling added only for IE browser. if( inputs ) { inputs.each( function( input ) { if(input.type === 'text' && !page.util.hasClassName(input,'noFormSubmitIE')) { Event.observe( input, "keypress", this.checkEnterKeyToSubmit.bindAsEventListener( this, input ) ); } }.bind( this ) ); } } }, checkEnterKeyToSubmit: function(event, input) { //if generated character code is equal to ascii 13 (if enter key) if(event.keyCode == 13 && input.form) { var submitButtons = $(input.form).getInputs('submit'); if(submitButtons && submitButtons.size() > 0) { submitButtons.first().click(); } Event.stop(event); } else { return true; } }, // Fix FireFox bug which converts absolute links pasted into a VTBE into relative ones which // start with a variable number of "../". // https://bugzilla.mozilla.org/show_bug.cgi?id=613517 handleFirefoxPastedLinksBug: function( baseUrl, vtbeText ) { if ( !baseUrl || !vtbeText ) { return vtbeText; } if ( Prototype.Browser.Gecko ) { if( !$( baseUrl.empty() ) && !$( vtbeText.empty() ) ) { //e.g. extract out "http://localhost:80" from "http://localhost:80/webapps/Bb-wiki-BBLEARN/" // port is optional var absoluteUrlPrefix = baseUrl.match(/https?:[\d]*\/\/[^\/]+/); // e.g."../../../bbcswebdav/xid-2202_1" into "http://localhost:80/bbcswebdav/xid-2202_1" vtbeText = vtbeText.replace(/(\.\.\/)+(sessions|bbcswebdav|courses|@@)/g, absoluteUrlPrefix + "/" + "$2"); } } return vtbeText; }, disableEnterKeyInTextBoxes: function (document) { var inputs = $A(document.getElementsByTagName('input')); if( inputs ) { inputs.each ( function( input ) { //must add special className for IE textboxes if( Prototype.Browser.IE ) { input.addClassName( 'noFormSubmitIE' ); } Event.observe( input, 'keypress', this.disableEnterKey ); }.bind( this ) ); } }, disableEnterKey: function( event ) { if( event.keyCode != Event.KEY_RETURN ) { return; } Event.stop( event ); return; } };

/** * Inserts the given HTML content into the extra content cell of the standard * title bar. * * @param content The HTML content to place */ function insertTitlebarContent(content) { var contentCell = document.getElementById("_titlebarExtraContent"); contentCell.innerHTML = content; }

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Declare an object to which we can add real functions. */ if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; /** * Set an alternative error handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setErrorHandler = function(handler) { dwr.engine._errorHandler = handler; }; /** * Set an alternative warning handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setWarningHandler = function(handler) { dwr.engine._warningHandler = handler; }; /** * Setter for the text/html handler - what happens if a DWR request gets an HTML * reply rather than the expected Javascript. Often due to login timeout */ dwr.engine.setTextHtmlHandler = function(handler) { dwr.engine._textHtmlHandler = handler; }; /** * Set a default timeout value for all calls. 0 (the default) turns timeouts off. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setTimeout = function(timeout) { dwr.engine._timeout = timeout; }; /** * The Pre-Hook is called before any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPreHook = function(handler) { dwr.engine._preHook = handler; }; /** * The Post-Hook is called after any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPostHook = function(handler) { dwr.engine._postHook = handler; }; /** * Custom headers for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setHeaders = function(headers) { dwr.engine._headers = headers; }; /** * Custom parameters for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setParameters = function(parameters) { dwr.engine._parameters = parameters; }; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.XMLHttpRequest = 1; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.IFrame = 2; /** XHR remoting type constant. See dwr.engine.setRpcType() */ dwr.engine.ScriptTag = 3; /** * Set the preferred remoting type. * @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setRpcType = function(newType) { if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) { dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" }); return; } dwr.engine._rpcType = newType; }; /** * Which HTTP method do we use to send results? Must be one of "GET" or "POST". * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setHttpMethod = function(httpMethod) { if (httpMethod != "GET" && httpMethod != "POST") { dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" }); return; } dwr.engine._httpMethod = httpMethod; }; /** * Ensure that remote calls happen in the order in which they were sent? (Default: false) * @see getahead.org/dwr/browser/engine/ordering */ dwr.engine.setOrdered = function(ordered) { dwr.engine._ordered = ordered; }; /** * Do we ask the XHR object to be asynchronous? (Default: true) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setAsync = function(async) { dwr.engine._async = async; }; /** * Does DWR poll the server for updates? (Default: false) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setActiveReverseAjax = function(activeReverseAjax) { if (activeReverseAjax) { // Bail if we are already started if (dwr.engine._activeReverseAjax) return; dwr.engine._activeReverseAjax = true; dwr.engine._poll(); } else { // Can we cancel an existing request? if (dwr.engine._activeReverseAjax && dwr.engine._pollReq) dwr.engine._pollReq.abort(); dwr.engine._activeReverseAjax = false; } // TODO: in iframe mode, if we start, stop, start then the second start may // well kick off a second iframe while the first is still about to return // we should cope with this but we don't }; /** * The default message handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultErrorHandler = function(message, ex) { dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true); if (message == null || message == "") alert("A server error has occured."); // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message); else alert(message); }; /** * The default warning handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultWarningHandler = function(message, ex) { dwr.engine._debug(message); }; /** * For reduced latency you can group several remote calls together using a batch. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.beginBatch = function() { if (dwr.engine._batch) { dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" }); return; } dwr.engine._batch = dwr.engine._createBatch(); }; /** * Finished grouping a set of remote calls together. Go and execute them all. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.endBatch = function(options) { var batch = dwr.engine._batch; if (batch == null) { dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" }); return; } dwr.engine._batch = null; if (batch.map.callCount == 0) return; // The hooks need to be merged carefully to preserve ordering if (options) dwr.engine._mergeBatch(batch, options); // In ordered mode, we don't send unless the list of sent items is empty if (dwr.engine._ordered && dwr.engine._batchesLength != 0) { dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch; } else { dwr.engine._sendData(batch); } }; /** @deprecated */ dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); }; dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); }; dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); }; dwr.engine.setPollType = function() { dwr.engine._debug("Manually setting the Poll Type is not supported"); }; //============================================================================== // Only private stuff below here //============================================================================== /** The original page id sent from the server */ dwr.engine._origScriptSessionId = "71B959AB0A851AED74CEDF577837B6CF"; /** The session cookie name */ dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID /** Is GET enabled for the benefit of Safari? */ dwr.engine._allowGetForSafariButMakeForgeryEasier = "false"; /** The script prefix to strip in the case of scriptTagProtection. */ dwr.engine._scriptTagProtection = "throw 'allowScriptTagRemoting is false.';"; /** The default path to the DWR servlet */ dwr.engine._defaultPath = "/webapps/assessment/dwr_open"; /** Do we use XHR for reverse ajax because we are not streaming? */ dwr.engine._pollWithXhr = "false"; /** The read page id that we calculate */ dwr.engine._scriptSessionId = null; /** The function that we use to fetch/calculate a session id */ dwr.engine._getScriptSessionId = function() { if (dwr.engine._scriptSessionId == null) { dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000); } return dwr.engine._scriptSessionId; }; /** A function to call if something fails. */ dwr.engine._errorHandler = dwr.engine.defaultErrorHandler; /** For debugging when something unexplained happens. */ dwr.engine._warningHandler = dwr.engine.defaultWarningHandler; /** A function to be called before requests are marshalled. Can be null. */ dwr.engine._preHook = null; /** A function to be called after replies are received. Can be null. */ dwr.engine._postHook = null; /** An map of the batches that we have sent and are awaiting a reply on. */ dwr.engine._batches = {}; /** A count of the number of outstanding batches. Should be == to _batches.length unless prototype has messed things up */ dwr.engine._batchesLength = 0; /** In ordered mode, the array of batches waiting to be sent */ dwr.engine._batchQueue = []; /** What is the default rpc type */ dwr.engine._rpcType = dwr.engine.XMLHttpRequest; /** What is the default remoting method (ie GET or POST) */ dwr.engine._httpMethod = "POST"; /** Do we attempt to ensure that calls happen in the order in which they were sent? */ dwr.engine._ordered = false; /** Do we make the calls async? */ dwr.engine._async = true; /** The current batch (if we are in batch mode) */ dwr.engine._batch = null; /** The global timeout */ dwr.engine._timeout = 0; /** ActiveX objects to use when we want to convert an xml string into a DOM object. */ dwr.engine._DOMDocument = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; /** The ActiveX objects to use when we want to do an XMLHttpRequest call. */ dwr.engine._XMLHTTP = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; /** Are we doing comet or polling? */ dwr.engine._activeReverseAjax = false; /** The iframe that we are using to poll */ dwr.engine._outstandingIFrames = []; /** The xhr object that we are using to poll */ dwr.engine._pollReq = null; /** How many milliseconds between internal comet polls */ dwr.engine._pollCometInterval = 200; /** How many times have we re-tried to poll? */ dwr.engine._pollRetries = 0; dwr.engine._maxPollRetries = 0; /** Do we do a document.reload if we get a text/html reply? */ dwr.engine._textHtmlHandler = null; /** If you wish to send custom headers with every request */ dwr.engine._headers = null; /** If you wish to send extra custom request parameters with each request */ dwr.engine._parameters = null; /** Undocumented interceptors - do not use */ dwr.engine._postSeperator = "\n"; dwr.engine._defaultInterceptor = function(data) { return data; }; dwr.engine._urlRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._contentRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._replyRewriteHandler = dwr.engine._defaultInterceptor; /** Batch ids allow us to know which batch the server is answering */ dwr.engine._nextBatchId = 0; /** A list of the properties that need merging from calls to a batch */ dwr.engine._propnames = [ "rpcType", "httpMethod", "async", "timeout", "errorHandler", "warningHandler", "textHtmlHandler" ]; /** Do we stream, or can be hacked to do so? */ dwr.engine._partialResponseNo = 0; dwr.engine._partialResponseYes = 1; dwr.engine._partialResponseFlush = 2; /** Is this page in the process of unloading? */ dwr.engine._unloading = false; /** * @private Send a request. Called by the Javascript interface stub * @param path part of URL after the host and before the exec bit without leading or trailing /s * @param scriptName The class to execute * @param methodName The method on said class to execute * @param func The callback function to which any returned data should be passed * if this is null, any returned data will be ignored * @param vararg_params The parameters to pass to the above class */ dwr.engine._execute = function(path, scriptName, methodName, vararg_params) { var singleShot = false; if (dwr.engine._batch == null) { dwr.engine.beginBatch(); singleShot = true; } var batch = dwr.engine._batch; // To make them easy to manipulate we copy the arguments into an args array var args = []; for (var i = 0; i < arguments.length - 3; i++) { args[i] = arguments[i + 3]; } // All the paths MUST be to the same servlet if (batch.path == null) { batch.path = path; } else { if (batch.path != path) { dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." }); return; } } // From the other params, work out which is the function (or object with // call meta-data) and which is the call parameters var callData; var lastArg = args[args.length - 1]; if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() }; else callData = args.pop(); // Merge from the callData into the batch dwr.engine._mergeBatch(batch, callData); batch.handlers[batch.map.callCount] = { exceptionHandler:callData.exceptionHandler, callback:callData.callback }; // Copy to the map the things that need serializing var prefix = "c" + batch.map.callCount + "-"; batch.map[prefix + "scriptName"] = scriptName; batch.map[prefix + "methodName"] = methodName; batch.map[prefix + "id"] = batch.map.callCount; for (i = 0; i < args.length; i++) { dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i); } // Now we have finished remembering the call, we incr the call count batch.map.callCount++; if (singleShot) dwr.engine.endBatch(); }; /** @private Poll the server to see if there is any data waiting */ dwr.engine._poll = function() { if (!dwr.engine._activeReverseAjax) return; var batch = dwr.engine._createBatch(); batch.map.id = 0; // TODO: Do we need this?? batch.map.callCount = 1; batch.isPoll = true; if (dwr.engine._pollWithXhr == "true") { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } else { if (navigator.userAgent.indexOf("Gecko/") != -1) { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseYes; } else { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } } batch.httpMethod = "POST"; batch.async = true; batch.timeout = 0; batch.path = dwr.engine._defaultPath; batch.preHooks = []; batch.postHooks = []; batch.errorHandler = dwr.engine._pollErrorHandler; batch.warningHandler = dwr.engine._pollErrorHandler; batch.handlers[0] = { callback:function(pause) { dwr.engine._pollRetries = 0; setTimeout(dwr.engine._poll, pause); } }; // Send the data dwr.engine._sendData(batch); if (batch.rpcType == dwr.engine.XMLHttpRequest && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._checkCometPoll(); } }; /** Try to recover from polling errors */ dwr.engine._pollErrorHandler = function(msg, ex) { // if anything goes wrong then just silently try again (up to 3x) after 10s dwr.engine._pollRetries++; dwr.engine._debug("Reverse Ajax poll failed (pollRetries=" + dwr.engine._pollRetries + "): " + ex.name + " : " + ex.message); if (dwr.engine._pollRetries < dwr.engine._maxPollRetries) { setTimeout(dwr.engine._poll, 10000); } else { dwr.engine._activeReverseAjax = false; dwr.engine._debug("Giving up."); } }; /** @private Generate a new standard batch */ dwr.engine._createBatch = function() { var batch = { map:{ callCount:0, page:window.location.pathname + window.location.search, httpSessionId:dwr.engine._getJSessionId(), scriptSessionId:dwr.engine._getScriptSessionId() }, charsProcessed:0, paramCount:0, parameters:{}, headers:{}, isPoll:false, handlers:{}, preHooks:[], postHooks:[], rpcType:dwr.engine._rpcType, httpMethod:dwr.engine._httpMethod, async:dwr.engine._async, timeout:dwr.engine._timeout, errorHandler:dwr.engine._errorHandler, warningHandler:dwr.engine._warningHandler, textHtmlHandler:dwr.engine._textHtmlHandler }; if (dwr.engine._preHook) batch.preHooks.push(dwr.engine._preHook); if (dwr.engine._postHook) batch.postHooks.push(dwr.engine._postHook); var propname, data; if (dwr.engine._headers) { for (propname in dwr.engine._headers) { data = dwr.engine._headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (dwr.engine._parameters) { for (propname in dwr.engine._parameters) { data = dwr.engine._parameters[propname]; if (typeof data != "function") batch.parameters[propname] = data; } } return batch; }; /** @private Take further options and merge them into */ dwr.engine._mergeBatch = function(batch, overrides) { var propname, data; for (var i = 0; i < dwr.engine._propnames.length; i++) { propname = dwr.engine._propnames[i]; if (overrides[propname] != null) batch[propname] = overrides[propname]; } if (overrides.preHook != null) batch.preHooks.unshift(overrides.preHook); if (overrides.postHook != null) batch.postHooks.push(overrides.postHook); if (overrides.headers) { for (propname in overrides.headers) { data = overrides.headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (overrides.parameters) { for (propname in overrides.parameters) { data = overrides.parameters[propname]; if (typeof data != "function") batch.map["p-" + propname] = "" + data; } } }; /** @private What is our session id? */ dwr.engine._getJSessionId = function() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length); if (cookie.indexOf(dwr.engine._sessionCookieName + "=") == 0) { return cookie.substring(dwr.engine._sessionCookieName.length + 1, cookie.length); } } return ""; }; /** @private Check for reverse Ajax activity */ dwr.engine._checkCometPoll = function() { for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { var text = ""; var iframe = dwr.engine._outstandingIFrames[i]; try { text = dwr.engine._getTextFromCometIFrame(iframe); } catch (ex) { dwr.engine._handleWarning(iframe.batch, ex); } if (text != "") dwr.engine._processCometResponse(text, iframe.batch); } if (dwr.engine._pollReq) { var req = dwr.engine._pollReq; var text = req.responseText; if (text != null) dwr.engine._processCometResponse(text, req.batch); } // If the poll resources are still there, come back again if (dwr.engine._outstandingIFrames.length > 0 || dwr.engine._pollReq) { setTimeout(dwr.engine._checkCometPoll, dwr.engine._pollCometInterval); } }; /** @private Extract the whole (executed an all) text from the current iframe */ dwr.engine._getTextFromCometIFrame = function(frameEle) { var body = frameEle.contentWindow.document.body; if (body == null) return ""; var text = body.innerHTML; // We need to prevent IE from stripping line feeds if (text.indexOf("<PRE>") == 0 || text.indexOf("<pre>") == 0) { text = text.substring(5, text.length - 7); } return text; }; /** @private Some more text might have come in, test and execute the new stuff */ dwr.engine._processCometResponse = function(response, batch) { if (batch.charsProcessed == response.length) return; if (response.length == 0) { batch.charsProcessed = 0; return; } var firstStartTag = response.indexOf("//#DWR-START#", batch.charsProcessed); if (firstStartTag == -1) { // dwr.engine._debug("No start tag (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed) + "'"); batch.charsProcessed = response.length; return; } // if (firstStartTag > 0) { // dwr.engine._debug("Start tag not at start (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed, firstStartTag) + "'"); // } var lastEndTag = response.lastIndexOf("//#DWR-END#"); if (lastEndTag == -1) { // dwr.engine._debug("No end tag. unchanged charsProcessed=" + batch.charsProcessed); return; } // Skip the end tag too for next time, remembering CR and LF if (response.charCodeAt(lastEndTag + 11) == 13 && response.charCodeAt(lastEndTag + 12) == 10) { batch.charsProcessed = lastEndTag + 13; } else { batch.charsProcessed = lastEndTag + 11; } var exec = response.substring(firstStartTag + 13, lastEndTag); dwr.engine._receivedBatch = batch; dwr.engine._eval(exec); dwr.engine._receivedBatch = null; }; /** @private Actually send the block of data in the batch object. */ dwr.engine._sendData = function(batch) { batch.map.batchId = dwr.engine._nextBatchId; dwr.engine._nextBatchId++; dwr.engine._batches[batch.map.batchId] = batch; dwr.engine._batchesLength++; batch.completed = false; for (var i = 0; i < batch.preHooks.length; i++) { batch.preHooks[i](); } batch.preHooks = null; // Set a timeout if (batch.timeout && batch.timeout != 0) { batch.timeoutId = setTimeout(function() { dwr.engine._abortRequest(batch); }, batch.timeout); } // Get setup for XMLHttpRequest if possible if (batch.rpcType == dwr.engine.XMLHttpRequest) { if (window.XMLHttpRequest) { batch.req = new XMLHttpRequest(); } // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) { batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP); } } var prop, request; if (batch.req) { // Proceed using XMLHttpRequest if (batch.async) { batch.req.onreadystatechange = function() { if (typeof dwr != 'undefined') dwr.engine._stateChange(batch); }; } // If we're polling, record this for monitoring if (batch.isPoll) { dwr.engine._pollReq = batch.req; // In IE XHR is an ActiveX control so you can't augment it like this if (!(document.all && !window.opera)) batch.req.batch = batch; } // Workaround for Safari 1.x POST bug var indexSafari = navigator.userAgent.indexOf("Safari/"); if (indexSafari >= 0) { var version = navigator.userAgent.substring(indexSafari + 7); if (parseInt(version, 10) < 400) { if (dwr.engine._allowGetForSafariButMakeForgeryEasier == "true") batch.httpMethod = "GET"; else dwr.engine._handleWarning(batch, { name:"dwr.engine.oldSafari", message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier." }); } } batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); try { batch.req.open(batch.httpMethod, request.url, batch.async); try { for (prop in batch.headers) { var value = batch.headers[prop]; if (typeof value == "string") batch.req.setRequestHeader(prop, value); } if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain"); } catch (ex) { dwr.engine._handleWarning(batch, ex); } batch.req.send(request.body); if (!batch.async) dwr.engine._stateChange(batch); } catch (ex) { dwr.engine._handleError(batch, ex); } } else if (batch.rpcType != dwr.engine.ScriptTag) { var idname = batch.isPoll ? "dwr-if-poll-" + batch.map.batchId : "dwr-if-" + batch.map.batchId; // Removed htmlfile implementation. Don't expect it to return before v3 batch.div = document.createElement("div"); // Add the div to the document first, otherwise IE 6 will ignore onload handler. document.body.appendChild(batch.div); batch.div.innerHTML = "<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='" + idname + "' name='" + idname + "' onload='dwr.engine._iframeLoadingComplete (" + batch.map.batchId + ");'></iframe>"; batch.document = document; batch.iframe = batch.document.getElementById(idname); batch.iframe.batch = batch; batch.mode = batch.isPoll ? dwr.engine._ModeHtmlPoll : dwr.engine._ModeHtmlCall; if (batch.isPoll) dwr.engine._outstandingIFrames.push(batch.iframe); request = dwr.engine._constructRequest(batch); if (batch.httpMethod == "GET") { batch.iframe.setAttribute("src", request.url); } else { batch.form = batch.document.createElement("form"); batch.form.setAttribute("id", "dwr-form"); batch.form.setAttribute("action", request.url); batch.form.setAttribute("style", "display:none;"); batch.form.setAttribute("target", idname); batch.form.target = idname; batch.form.setAttribute("method", batch.httpMethod); for (prop in batch.map) { var value = batch.map[prop]; if (typeof value != "function") { var formInput = batch.document.createElement("input"); formInput.setAttribute("type", "hidden"); formInput.setAttribute("name", prop); formInput.setAttribute("value", value); batch.form.appendChild(formInput); } } batch.document.body.appendChild(batch.form); batch.form.submit(); } } else { batch.httpMethod = "GET"; // There's no such thing as ScriptTag using POST batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); batch.script = document.createElement("script"); batch.script.id = "dwr-st-" + batch.map["c0-id"]; batch.script.src = request.url; document.body.appendChild(batch.script); } }; dwr.engine._ModePlainCall = "/call/plaincall/"; dwr.engine._ModeHtmlCall = "/call/htmlcall/"; dwr.engine._ModePlainPoll = "/call/plainpoll/"; dwr.engine._ModeHtmlPoll = "/call/htmlpoll/"; /** @private Work out what the URL should look like */ dwr.engine._constructRequest = function(batch) { // A quick string to help people that use web log analysers var request = { url:batch.path + batch.mode, body:null }; if (batch.isPoll == true) { request.url += "ReverseAjax.dwr"; } else if (batch.map.callCount == 1) { request.url += batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr"; } else { request.url += "Multiple." + batch.map.callCount + ".dwr"; } // Play nice with url re-writing var sessionMatch = location.href.match(/jsessionid=([^?]+)/); if (sessionMatch != null) { request.url += ";jsessionid=" + sessionMatch[1]; } var prop; if (batch.httpMethod == "GET") { // Some browsers (Opera/Safari2) seem to fail to convert the callCount value // to a string in the loop below so we do it manually here. batch.map.callCount = "" + batch.map.callCount; request.url += "?"; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.url += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&"; } } request.url = request.url.substring(0, request.url.length - 1); } else { // PERFORMANCE: for iframe mode this is thrown away. request.body = ""; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = []; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { buf.push(prop + "=" + batch.map[prop] + dwr.engine._postSeperator); } } request.body = buf.join(""); } else { // Use string concat on other browsers (fastest) for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.body += prop + "=" + batch.map[prop] + dwr.engine._postSeperator; } } } request.body = dwr.engine._contentRewriteHandler(request.body); } request.url = dwr.engine._urlRewriteHandler(request.url); return request; }; /** @private Called by XMLHttpRequest to indicate that something has happened */ dwr.engine._stateChange = function(batch) { var toEval; if (batch.completed) { dwr.engine._debug("Error: _stateChange() with batch.completed"); return; } var req = batch.req; try { if (req.readyState != 4) return; } catch (ex) { dwr.engine._handleWarning(batch, ex); // It's broken - clear up and forget this call dwr.engine._clearUp(batch); return; } if (dwr.engine._unloading) { dwr.engine._debug("Ignoring reply from server as page is unloading."); return; } try { var reply = req.responseText; reply = dwr.engine._replyRewriteHandler(reply); var status = req.status; // causes Mozilla to except on page moves if (reply == null || reply == "") { dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data received from server" }); } else if (status != 200) { dwr.engine._handleError(batch, { name:"dwr.engine.http." + status, message:req.statusText }); } else { var contentType = req.getResponseHeader("Content-Type"); if (!contentType.match(/^text\/plain/) && !contentType.match(/^text\/javascript/)) { if (contentType.match(/^text\/html/) && typeof batch.textHtmlHandler == "function") { batch.textHtmlHandler({ status:status, responseText:reply, contentType:contentType }); } else { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidMimeType", message:"Invalid content type: '" + contentType + "'" }); } } else { // Comet replies might have already partially executed if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._processCometResponse(reply, batch); } else { if (reply.search("//#DWR") == -1) { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" }); } else { toEval = reply; } } } } } catch (ex) { dwr.engine._handleWarning(batch, ex); } dwr.engine._callPostHooks(batch); // Outside of the try/catch so errors propogate normally: dwr.engine._receivedBatch = batch; if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, ""); dwr.engine._eval(toEval); dwr.engine._receivedBatch = null; dwr.engine._validateBatch(batch); if (!batch.completed) dwr.engine._clearUp(batch); }; /** * @private This function is invoked when a batch reply is received. * It checks that there is a response for every call in the batch. Otherwise, * an error will be signaled (a call without a response indicates that the * server failed to send complete batch response). */ dwr.engine._validateBatch = function(batch) { // If some call left unreplied, report an error. if (!batch.completed) { for (var i = 0; i < batch.map.callCount; i++) { if (batch.handlers[i] != null) { dwr.engine._handleWarning(batch, { name:"dwr.engine.incompleteReply", message:"Incomplete reply from server" }); break; } } } } /** @private Called from iframe onload, check batch using batch-id */ dwr.engine._iframeLoadingComplete = function(batchId) { // dwr.engine._checkCometPoll(); var batch = dwr.engine._batches[batchId]; if (batch) dwr.engine._validateBatch(batch); } /** @private Called by the server: Execute a callback */ dwr.engine._remoteHandleCallback = function(batchId, callId, reply) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true); return; } // Error handlers inside here indicate an error that is nothing to do // with DWR so we handle them differently. try { var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (!handlers) { dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true); } else if (typeof handlers.callback == "function") handlers.callback(reply); } catch (ex) { dwr.engine._handleError(batch, ex); } }; /** @private Called by the server: Handle an exception for a call */ dwr.engine._remoteHandleException = function(batchId, callId, ex) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; } var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; } if (ex.message == undefined) ex.message = ""; if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex); else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); }; /** @private Called by the server: The whole batch is broken */ dwr.engine._remoteHandleBatchException = function(ex, batchId) { var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: Reverse ajax should not be used */ dwr.engine._remotePollCometDisabled = function(ex, batchId) { dwr.engine.setActiveReverseAjax(false); var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: An IFrame reply is about to start */ dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) { if (iframe != null) dwr.engine._receivedBatch = iframe.batch; dwr.engine._callPostHooks(dwr.engine._receivedBatch); }; /** @private Called by the server: An IFrame reply is just completing */ dwr.engine._remoteEndIFrameResponse = function(batchId) { dwr.engine._clearUp(dwr.engine._receivedBatch); dwr.engine._receivedBatch = null; }; /** @private This is a hack to make the context be this window */ dwr.engine._eval = function(script) { if (script == null) return null; if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; } // dwr.engine._debug("Exec: [" + script + "]", true); return eval(script); }; /** @private Called as a result of a request timeout */ dwr.engine._abortRequest = function(batch) { if (batch && !batch.completed) { dwr.engine._clearUp(batch); if (batch.req) batch.req.abort(); dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" }); } }; /** @private call all the post hooks for a batch */ dwr.engine._callPostHooks = function(batch) { if (batch.postHooks) { for (var i = 0; i < batch.postHooks.length; i++) { batch.postHooks[i](); } batch.postHooks = null; } }; /** @private A call has finished by whatever means and we need to shut it all down. */ dwr.engine._clearUp = function(batch) { if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; } if (batch.completed) { dwr.engine._debug("Warning: Double complete", true); return; } // IFrame tidyup if (batch.div) batch.div.parentNode.removeChild(batch.div); if (batch.iframe) { // If this is a poll frame then stop comet polling for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { if (dwr.engine._outstandingIFrames[i] == batch.iframe) { dwr.engine._outstandingIFrames.splice(i, 1); } } batch.iframe.parentNode.removeChild(batch.iframe); } if (batch.form) batch.form.parentNode.removeChild(batch.form); // XHR tidyup: avoid IE handles increase if (batch.req) { // If this is a poll frame then stop comet polling if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null; delete batch.req; } // Timeout tidyup if (batch.timeoutId) { clearTimeout(batch.timeoutId); delete batch.timeoutId; } if (batch.map && (batch.map.batchId || batch.map.batchId == 0)) { delete dwr.engine._batches[batch.map.batchId]; dwr.engine._batchesLength--; } batch.completed = true; // If there is anything on the queue waiting to go out, then send it. // We don't need to check for ordered mode, here because when ordered mode // gets turned off, we still process *waiting* batches in an ordered way. if (dwr.engine._batchQueue.length != 0) { var sendbatch = dwr.engine._batchQueue.shift(); dwr.engine._sendData(sendbatch); } }; /** @private Abort any XHRs in progress at page unload (solves zombie socket problems in IE). */ dwr.engine._unloader = function() { dwr.engine._unloading = true; // Empty queue of waiting ordered requests dwr.engine._batchQueue.length = 0; // Abort any ongoing XHRs and clear their batches for (var batchId in dwr.engine._batches) { var batch = dwr.engine._batches[batchId]; // Only process objects that look like batches (avoid prototype additions!) if (batch && batch.map) { if (batch.req) { batch.req.abort(); } dwr.engine._clearUp(batch); } } }; // Now register the unload handler if (window.addEventListener) window.addEventListener('unload', dwr.engine._unloader, false); else if (window.attachEvent) window.attachEvent('onunload', dwr.engine._unloader); /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleError = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleWarning = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex); else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** * @private Marshall a data item * @param batch A map of variables to how they have been marshalled * @param referto An array of already marshalled variables to prevent recurrsion * @param data The data to be marshalled * @param name The name of the data being marshalled */ dwr.engine._serializeAll = function(batch, referto, data, name) { if (data == null) { batch.map[name] = "null:null"; return; } switch (typeof data) { case "boolean": batch.map[name] = "boolean:" + data; break; case "number": batch.map[name] = "number:" + data; break; case "string": batch.map[name] = "string:" + encodeURIComponent(data); break; case "object": if (data instanceof String) batch.map[name] = "String:" + encodeURIComponent(data); else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data; else if (data instanceof Number) batch.map[name] = "Number:" + data; else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime(); else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name); else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name); break; case "function": // We just ignore functions. break; default: dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." }); batch.map[name] = "default:" + data; break; } }; /** @private Have we already converted this object? */ dwr.engine._lookup = function(referto, data, name) { var lookup; // Can't use a map: getahead.org/ajax/javascript-gotchas for (var i = 0; i < referto.length; i++) { if (referto[i].data == data) { lookup = referto[i]; break; } } if (lookup) return "reference:" + lookup.name; referto.push({ data:data, name:name }); return null; }; /** @private Marshall an object */ dwr.engine._serializeObject = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; // This check for an HTML is not complete, but is there a better way? // Maybe we should add: data.hasChildNodes typeof "function" == true if (data.nodeName && data.nodeType) { return dwr.engine._serializeXml(batch, referto, data, name); } // treat objects as an associative arrays var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{"; var element; for (element in data) { if (typeof data[element] != "function") { batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[element], childName); reply += encodeURIComponent(element) + ":reference:" + childName + ", "; } } if (reply.substring(reply.length - 2) == ", ") { reply = reply.substring(0, reply.length - 2); } reply += "}"; return reply; }; /** @private Returns the classname of supplied argument obj */ dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError }; dwr.engine._getObjectClassName = function(obj) { // Try to find the classname by stringifying the object's constructor // and extract <class> from "function <class>". if (obj && obj.constructor && obj.constructor.toString) { var str = obj.constructor.toString(); var regexpmatch = str.match(/function\s+(\w+)/); if (regexpmatch && regexpmatch.length == 2) { return regexpmatch[1]; } } // Now manually test against the core Error classes, as these in some // browsers successfully match to the wrong class in the // Object.toString() test we will do later if (obj && obj.constructor) { for (var errorname in dwr.engine._errorClasses) { if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname; } } // Try to find the classname by calling Object.toString() on the object // and extracting <class> from "[object <class>]" if (obj) { var str = Object.prototype.toString.call(obj); var regexpmatch = str.match(/\[object\s+(\w+)/); if (regexpmatch && regexpmatch.length==2) { return regexpmatch[1]; } } // Supplied argument was probably not an object, but what is better? return "Object"; }; /** @private Marshall an object */ dwr.engine._serializeXml = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; var output; if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data); else if (data.toXml) output = data.toXml; else output = data.innerHTML; return "XML:" + encodeURIComponent(output); }; /** @private Marshall an array */ dwr.engine._serializeArray = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = ["Array:["]; for (var i = 0; i < data.length; i++) { if (i != 0) buf.push(","); batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); buf.push("reference:"); buf.push(childName); } buf.push("]"); reply = buf.join(""); } else { // Use string concat on other browsers (fastest) var reply = "Array:["; for (var i = 0; i < data.length; i++) { if (i != 0) reply += ","; batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); reply += "reference:"; reply += childName; } reply += "]"; } return reply; }; /** @private Convert an XML string into a DOM object. */ dwr.engine._unserializeDocument = function(xml) { var dom; if (window.DOMParser) { var parser = new DOMParser(); dom = parser.parseFromString(xml, "text/xml"); if (!dom.documentElement || dom.documentElement.tagName == "parsererror") { var message = dom.documentElement.firstChild.data; message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data; throw message; } return dom; } else if (window.ActiveXObject) { dom = dwr.engine._newActiveXObject(dwr.engine._DOMDocument); dom.loadXML(xml); // What happens on parse fail with IE? return dom; } else { var div = document.createElement("div"); div.innerHTML = xml; return div; } }; /** @param axarray An array of strings to attempt to create ActiveX objects from */ dwr.engine._newActiveXObject = function(axarray) { var returnValue; for (var i = 0; i < axarray.length; i++) { try { returnValue = new ActiveXObject(axarray[i]); break; } catch (ex) { /* ignore */ } } return returnValue; }; /** @private Used internally when some message needs to get to the programmer */ dwr.engine._debug = function(message, stacktrace) { var written = false; try { if (window.console) { if (stacktrace && window.console.trace) window.console.trace(); window.console.log(message); written = true; } else if (window.opera && window.opera.postError) { window.opera.postError(message); written = true; } } catch (ex) { /* ignore */ } if (!written) { var debug = document.getElementById("dwr-debug"); if (debug) { var contents = message + "<br/>" + debug.innerHTML; if (contents.length > 2048) contents = contents.substring(0, 2048); debug.innerHTML = contents; } } };

// Provide a default path to dwr.engine if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; if (UserDataDWRFacade == null) var UserDataDWRFacade = {}; UserDataDWRFacade._path = '/webapps/assessment/dwr_open'; UserDataDWRFacade.getStringTempScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringTempScope', p0, callback); } UserDataDWRFacade.setStringTempScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringTempScope', p0, p1, callback); } UserDataDWRFacade.getStringPermScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringPermScope', p0, callback); } UserDataDWRFacade.setStringPermScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringPermScope', p0, p1, callback); }

var assessment = {}; assessment.submitDrawerUrl=""; assessment.questionVisibility = true; assessment.blockToLeaveVisible = 'null'; assessment.savingRightNow = false; // aka - might rename to (if not remove eventually): assessment.nonceHasBeenUsed assessment.submittingRightNow = false; // set to true when we're submitting the assessment as a whole - used to block other submits assessment.gotNewNonceIdFlag = false; assessment.userReallyWantsToSubmit = false; assessment.isInUse = false; assessment.safetyNetDelay = 60; // Number of seconds to wait before telling the user that it is taking too long. assessment.alreadySavedSafetyNetId = null; assessment.saveSequence = 0; // TODO: Set from the server based on time when page is loaded assessment.isOneByOne = false; /************************** methods related to pool and test canvas per question add/edit/ copy/ remove********************/ function findAssessmentForm() { var assessmentForm = null; var documentForms = document.getElementsByTagName('form'); assessmentForm = $A( documentForms ).find( function( documentForm ) { var theAction = $( documentForm ).readAttribute( "action" ); return theAction.indexOf( "webapps/assessment/" ) != -1; }); return assessmentForm; } function submit(method, theForm) { if (!validateForm()) { return false; } if ( !theForm ) { // no form specified so try to find it theForm = findAssessmentForm(); } if(method == "createNew") { theForm.elements.assessmentId.value = null; } theForm.elements.method.value = method; theForm.submit(); return false; } function getFormByInputElement( elementName ) { var element = document.getElementsByName( elementName )[0]; return element.form; } // TODO: Rewrite this file to put all these methods into a namespace like assessment.XXX function modifyAssessment() { submit('modifyAssessment'); } function setQuestionId(questionId) { getFormByInputElement("questionId").questionId.value = questionId; } function modifyContentSettings( val ) { // properties|feedback|presentation|metadata submit( val ); } function addQuestionBefore(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated var theForm = getFormByInputElement("relativeId"); assessment.checkTheCheckBox (qId); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionBefore', theForm); } function addQuestionAfter(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (qId); var theForm = getFormByInputElement("relativeId"); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionAfter', theForm); } function addNGQuestion(sectionId, qtype, position) { var theForm = getFormByInputElement("questionType"); theForm.questionType.value = qtype; theForm.sectionId.value = sectionId; theForm.position.value = position; submit('addQuestion', theForm); } function modifyAssessmentInfo() { submit('modifyAssessmentInfo'); } function modifyHelper(questionId, method) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); setQuestionId(questionId); submit(method, theForm); } function modifyQuestion(questionId) { modifyHelper(questionId, 'modifyQuestion'); } function modifyRandomBlock(questionId) { modifyHelper(questionId, 'modifyRandomBlock'); } function modifyLinkQuestion(questionId) { getFormByInputElement("isLinkedQuestion").isLinkedQuestion.value = 'true'; modifyQuestion(questionId); } function copyQuestion(sectionId, questionId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("sectionId"); theForm.sectionId.value = sectionId; setQuestionId(questionId); submit('copyQuestion', theForm); } function copyLinkQuestion(sectionId, questionId, qbId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); theForm.sectionId.value = sectionId; theForm.questionBlockId.value = qbId; setQuestionId(questionId); submit('copyLinkQuestion', theForm); } function remove(id, type ) { if ( assessment.isInUse ) { var suffix = ( assessment.type == 'Survey'?'.survey':''); if ( !type ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_question.regrade" + suffix ) ); } else if ( type == 'question_link' ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.remove_question_link.regrade" + suffix ) ); } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_item.regrade" + suffix ) ); } } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString("confirm.delete_item")); } } assessment.removeEntity= function(id, message) { if (window.confirm(message)) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (id); var theForm = getFormByInputElement("questionId"); setQuestionId(id); submit('remove', theForm); } }; function reposition(id, position) { setQuestionId(id); var theForm = getFormByInputElement("questionId"); theForm.position.value = position; submit('reposition', theForm); } assessment.submitModifyQuestion = function() { submit('modifyQuestion'); }; assessment.cancelWarning = function() { var theForm = getFormByInputElement("methodEx"); theForm.elements.methodEx.value = 'modifyAssessment'; theForm.submit(); return false; }; function isCheckbox(element) { return (element && element.type && element.type == "checkbox"); } /******************* methods related to bulk update logic on the test/pool canvas*********************/ assessment.removeAll= function(container,showCount) { var count = 0; var inputs = list.checkboxes.get(container); for(var i=0; i<inputs.length; i++){ if(isCheckbox(inputs[i]) && inputs[i].checked ) { count ++; } } if (showCount?window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count",[count])):window.confirm(ASSESSMENT_RESOURCES.getString("confirm.delete_items")) ) { submit('removeBulk'); } }; assessment.removeAllPublished= function(message) { if (window.confirm(message)) { submit('removeBulk'); } }; assessment.updatePointsForAll = function(){ var element = document.getElementsByName("points_bulk"); if ( assessment.validatePoints(element) && ( !assessment.isInUse || confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) ) { submit('updatePointsBulk'); } return false; }; assessment.updatePointsInput = function(event) { var elements = document.getElementsByName("points_bulk"); var element = Event.findElement(event); var pointsValue = element.value; if (pointsValue ) { if (elements) { elements[0].value = pointsValue; elements[1].value = pointsValue; } } }; /*************************** common js methods for assessments**********************************************/ /** validate Input Field value **/ assessment.validateMiniFlyoutInputValue = function(element){ var value = null; if($(element) ) { value = $(element).value; } if ( !value ) { return ASSESSMENT_RESOURCES.getString("update.input.value"); } if ( !isNumeric( value, true ) ) { return ASSESSMENT_RESOURCES.getString("update.input.valid.value"); } return ""; }; assessment.validatePoints = function(element){ if (element) { var pointsTextBox = element[0] || element[1]; var pointsValue = pointsTextBox.value; return assessment.validateNumericInput(pointsTextBox, pointsValue, ASSESSMENT_RESOURCES.getString("update.points.value"), ASSESSMENT_RESOURCES.getString("update.points.valid.value"),true); } return true; }; assessment.validateCount = function(element) { if (element) { var countValue = element.value; return assessment.validateNumericInput(element, countValue, ASSESSMENT_RESOURCES.getString("update.count.value"), ASSESSMENT_RESOURCES.getString("update.count.valid.value")); } return true; }; assessment.validateNumericInput = function(textBox, value, blankMsg, badMsg,isFloat) { var checkForFloats = false; var numFormat = LOCALE_SETTINGS.getString('float.format'); var isValidNum = false; var re, trimmedVal; trimmedVal = value.trim(); if(isFloat != 'null') { checkForFloats = true; } if ( !value ) { alert(blankMsg); textBox.focus(); return false; } var numVal = null; if (!checkForFloats) { numVal = parseInt( value, 10); isValidNum = (!isNaN(numVal) && numVal >= 0); } else if ( typeof ( numFormat ) != 'undefined' ) { // hand parse for l10n re = new RegExp( numFormat ); isValidNum = ( trimmedVal.search( re ) === 0 ); } else { // try to use platform native (non-localized) numVal = parseFloat( trimmedVal ); isValidNum = !isNaN( numVal ); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test( trimmedVal.substring( numVal.toString().length ) ); } } if (!isValidNum) { alert(badMsg); textBox.value=""; textBox.focus(); return false; } return true; }; function back() { submit('back'); } function persistDisplayPreference(element, value){ UserDataDWRFacade.setStringTempScope( element, value ); } assessment.refreshParent = function( url ) { if ( window.opener ) { window.opener.location.href = url; if ( window.opener.progressWindow ) { window.opener.progressWindow.close(); } window.close(); } else { // We expected to be in a new window, but aren't. Perhaps this was a link from an announcement? window.location = url; } }; assessment.checkTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = true; } }; assessment.unCheckTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = false; } }; var startX; //set x offset of bar in pixels var startY; var padding = 53; var verticalpos="fromtop"; //enter "fromtop" or "frombottom" function setPadding(pad) { padding = pad; } function iecompattest(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body; } function resetInstructionHeight() { startY = document.getElementById("instructionBlock").offsetTop +document.getElementById("instructionBlock").clientHeight + padding; startX = document.getElementById("instructionBlock").offsetLeft; document.getElementById("dataCollectionContainer").style.position = "relative"; var tbh = document.getElementById("topbar").clientHeight; document.getElementById("containerdiv").style.paddingBottom = (32 + tbh) + "px"; if (document.getElementById("topbar").offsetTop !== 0) { document.getElementById("dataCollectionContainer").style.top=tbh+"px"; } } function staticbar(){ var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera; var d = document; function ml(id){ var el=d.getElementById(id); el.style.visibility="visible"; if(d.layers) { el.style=el; } el.sP=function(x,y,r) { this.style.left=x+"px"; this.style.top=y+6+"px"; if(r>-1) {this.style.right=r+"px";}; }; el.x = startX; el.y = startY; return el; } window.stayTopLeft = function() { var right = -1; var pY = ns ? window.pageYOffset : iecompattest().scrollTop; if (pY < startY) { window.ftlObj.y = startY - pY; document.getElementById("dataCollectionContainer").style.top=document.getElementById("topbar").clientHeight+4+"px"; } else { window.ftlObj.y = 0; } window.ftlObj.x = document.getElementById("instructionBlock").offsetLeft; if(page.util.isRTL()) { right = document.documentElement.clientWidth - (ftlObj.x + document.getElementById("instructionBlock").offsetWidth); } window.ftlObj.sP( window.ftlObj.x, window.ftlObj.y, right); setTimeout("stayTopLeft()", 20); }; resetInstructionHeight(); window.ftlObj = ml("topbar"); window.stayTopLeft(); } var AIM = { frame : function(c) { var n = 'f' + Math.floor(Math.random() * 99999); var d = document.createElement('DIV'); d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>'; document.body.appendChild(d); var i = document.getElementById(n); if (c && typeof(c.onComplete) == 'function') { i.onComplete = c.onComplete; } return n; }, form : function(f, name) { f.setAttribute('target', name); }, submit : function(f, c) { AIM.form(f, AIM.frame(c)); if (c && typeof(c.onStart) == 'function') { return c.onStart(); } else { return true; } }, loaded : function(id) { var i = document.getElementById(id); var d; if (i.contentDocument) { d = i.contentDocument; } else if (i.contentWindow) { d = i.contentWindow.document; } else { d = window.frames[id].document; } if (d.location.href == "about:blank") { return; } if (typeof(i.onComplete) == 'function') { i.onComplete(d.body.innerHTML); } } }; function resetContaindivHeight() { // adjust containdiv height // TODO: I don't see a reason for any of this code anymore... //if (document.getElementById('statusBlock').style.display=="" || document.getElementById('statusBlock').style.display=="inline") { // var statusHeight = document.getElementById('topbar').offsetHeight-22; // 22 is padding - be better to dynamically determine this value. //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight+statusHeight; //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} } function hideElement(element) { var msgspan=element; var msgimg=element+"img"; // TODO: I don't see a reason for any of this code anymore... //if (msgspan=="statusBlock") { // var statusHeight = document.getElementById('topbar').offsetHeight; //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight-statusHeight-22; // 22 is padding - be better to dynamically determine this value. //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} document.getElementById(msgspan).style.display="none"; document.images[msgimg].src="/images/ci/ng/more_options_dark.gif"; var alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; } function showElement(element) { var msgspan=element; var msgimg=element+"img"; document.getElementById(msgspan).style.display="inline"; document.images[msgimg].src="/images/ci/ng/less_options.gif"; var alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; if (msgspan=="statusBlock") { resetContaindivHeight(); } } function toggleElement(element){ var curStyle = document.getElementById(element).style.display; if(curStyle=="" || curStyle=="inline") { hideElement(element); persistDisplayPreference(element,'none'); } else { showElement(element); persistDisplayPreference(element,'inline'); } resetInstructionHeight(); } /********************************************* methods related to lightbox preview in pool/test canvas********************/ assessment.previewLightbox = null; assessment.copyLinkLightbox = null; assessment.showLightBox = function (event,baseContainer,numparents,previewUrl) { var e = event || window.event; // IE does not capture the event if( e && e.type == 'click') { Event.stop(e); } if ( !assessment.previewLightbox ) { assessment.previewLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 500 ,h : 375}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 125, horizontalBorder: 125 }); } assessment.previewLightbox.cfg.ajax={url:previewUrl, loadExternalScripts:true}; assessment.previewLightbox.cfg.content=null; assessment.previewLightbox.open(); }; assessment.showCopyLinkLightBox = function ( url) { var params = url.toQueryParams(); if ( !assessment.copyLinkLightbox ) { assessment.copyLinkLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 150 ,h : 200}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 50, horizontalBorder: 50 }); } assessment.copyLinkLightbox.cfg.ajax={url:'/webapps/assessment/do/authoring/questionSearch?method=copyLink&discoverUrl=' + encodeURIComponent(url) + '&course_id=' + params.course_id }; assessment.copyLinkLightbox.cfg.content=null; assessment.copyLinkLightbox.cfg.closeOnBodyClick=false; assessment.copyLinkLightbox.open(); }; assessment.showDiscover = function(url,title,width,height) { assessment.submitDrawerUrl = url; var screenX=Math.floor((screen.width)/2)-Math.floor(width/2); var screenY=Math.floor((screen.height)/2)-Math.floor(height/2)-20; var top=screenY; var left=screenX; var features="'"+'toolbar=no,scrollbars=yes,status=yes,resizable=yes,top='+ top+',left='+ left+',screenX='+ screenX+',screenY='+ screenY+',width='+ width+',height='+ height+"'"; var discover = window.open(url,title,features); if (window.focus) { if (discover) { discover.focus(); } else { alert(ASSESSMENT_RESOURCES.getString("pop.up.blocker.enabled")); } } }; assessment.discoverOptions = function(url,title,width,height,hideCopyLink){ if(!hideCopyLink) { //check if the UserPreference is set in session UserDataDWRFacade.getStringPermScope( "AssessmentUtils.DISCOVER_MODE_IS_LINKING", function( copyLinkSet ) { if (copyLinkSet == '') { assessment.showCopyLinkLightBox(url); } else{ assessment.showDiscover(url,title,width,height); } }); } else{ assessment.showDiscover(url,title,width,height); } }; assessment.onCloseCopyLinkLightbox = function ( url ) { var copyLinkId = $('copylink_link'); var copyCopyId = $('copylink_copy'); var copyLinkValueSet = false; if(copyLinkId && copyCopyId ) { copyLinkValueSet = copyLinkId.checked || copyCopyId.checked; } if ( !copyLinkValueSet ) { if (window.confirm(ASSESSMENT_RESOURCES.getString("confirm.set_copy_link"))) { assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } } else{ assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } }; /**************************** methods related to question block on the test canvas*************************************/ assessment.createQuestionBlock = function() { }; function addQuestionToBlock(questionId, assessmentType, assessmentId, courseId ) { var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=addQuestionsToQuestionBlock" + "&questionId=" +questionId + "&assessmentType=" +assessmentType + "&assessmentId=" +assessmentId + "&course_id=" +courseId; assessment.discoverOptions(url,'discover','900','675',true); } /********************** methods related to inline pool points flyout***************************/ assessment.poolFlyout = null; assessment.initPoolFlyout = function(title) { if ( !assessment.poolFlyout ) { assessment.poolFlyout = new miniFlyout.MiniFlyout({ title: title, miniFlyoutTemplate: "<label class='hideoff' for='#{inputFieldName}_id'>#{title}</label> <input id='#{inputFieldName}_id'type='text' style='width: 2em;' size='3' value='0' name='#{inputFieldName}'/> <a href='#' title='#{closeButtonName}' bb_flyout_title='Cancel' class='genericButtonImg button-3-img'><img alt='#{closeButtonName}' src='/images/ci/ng/remove_li.png'/></a> <a href='#' title='#{submitButtonName}' bb_flyout_title='Submit' class='genericButtonImg button-3-img'><img alt='#{submitButtonName}' src='/images/ci/ng/checkmark_li.png'/></a>", inputFieldName: "inline_points", errorMessage: page.bundle.getString("points.failure"), miniFlyoutDivClass: "liveArea liveArea-slim", onSubmitValidate : "return assessment.validateMiniFlyoutInputValue('inline_points_id')" }); } miniFlyout.closeCurrentMiniFlyout(); }; assessment.showPoolFlyout = function (event,title,assessmentId,id, courseId) { var e = event || window.event; // IE does not capture the event var aLink = Event.element(e); if( e && e.type == 'click') { Event.stop(e); } assessment.initPoolFlyout(title); assessment.poolFlyout.cfg.openLink = aLink ; assessment.poolFlyout.cfg.containerId = aLink.parentNode.parentNode; assessment.poolFlyout.cfg.inputFieldDefaultSource = "ipoints_" + id; assessment.poolFlyout.cfg.inputFieldName= "inline_points"; assessment.poolFlyout.cfg.onSubmit = "return assessment.saveQuestionPoints('" + assessmentId + "','" + id + "','" + courseId + "',false, false, assessment.poolFlyout.cfg.containerId);"; assessment.poolFlyout.open(); }; /*************************************************** methods related to test canvas selection by type*******************/ assessment.selectByType = function(container) { var selected = document.getElementsByName('selectbyQuestionType')[0];// either use 0 or 1, since both are updated to the same var checkboxes = list.checkboxes.get(container); for ( var i=0; i < checkboxes.length; ++i ) { checkboxes[ i ].checked = false; } var className = selected.options[selected.selectedIndex].value; checkboxes.each( function(e){ if(e.className.trim() ==className.trim()) { e.checked=true; } } ); $('selectbyQuestionType_idTop').options[selected.selectedIndex].selected=true; $('selectbyQuestionType_idBot').options[selected.selectedIndex].selected=true; }; assessment.toggleQuestionBlockDiv = function(rawId){ var ul = $('questionBlockDiv'+rawId); var a = $('questionBlockDivLink'+rawId).getElementsByTagName('a')[0]; Effect.toggle(ul, 'blind', { duration: 0.3 }); if(ul.style.display=="none"){ a.className="itemHead itemHeadOpen"; } else if(ul.style.display=="block" || ul.style.display==""){ a.className="itemHead"; } return false; }; /************************** methods related to discover drawer functionality********************************************/ assessment.inBasicDiscoverMode = function () { if (document.copyQuestionsForm.method.value == 'save') { return true; } return false; }; assessment.cancelDrawer = function() { var myDrawer = drawer.model.getCurrentInstance(); myDrawer.discard(); document.copyQuestionsForm.elements.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener ) { //close question discovery popup window.close(); } return false; }; assessment.cancelRandomBlock = function () { document.copyQuestionsForm.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener !== null) { //close question discovery popup window.close(); } return false; }; function findAndDisableInputElements(el) { if (el === null) { return; } var elems = el.getElementsByTagName('input'); for ( var i = 0; i < elems.length; i++ ) { el.addClassName('disabled'); el.disabled = true; } } /****************** Ajax method related to Test/pool canvas***************************************************/ function postAndUpdateCanvas(form) { var method = form.method.value; var assessmentId = form.assessmentId.value; var courseId = form.course_id.value; var nonceId = nonceUtil.getNonceId('bb-question-discover'); var questionId = ""; if (form.questionId ) { questionId = form.questionId.value; } var url = "/webapps/assessment/do/authoring/copyQuestions?method=" +method + "&assessmentId="+assessmentId + "&course_id=" + courseId + "&sectionId=" + form.sectionId.value + "&assessmentType=" +form.assessmentType.value + "&itemIds=" +form.itemIds.value + "&overridePoints=" +form.overridePoints.value + "&questionId=" +questionId + "&ajaxMode=true" + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (form.searchCriterion !== null) { url = url + "&searchCriterion=" + encodeURIComponent(form.searchCriterion.value); } findAndDisableInputElements( $('cartSubmit') ); var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { window.opener.location="/webapps/assessment/do/authoring/modifyAssessment?method=modifyAssessment&assessmentId="+assessmentId+"&course_id="+courseId; if (json !== null) { // capture any error message and display if (json.errorMessage ) { // exception message looks ugly for the end-user, hence use a more user-friendly message to indicate the ajax refresh failed new page.InlineConfirmation("error", json.errorMessage, false ); } else if (json.successMessage ) { // WIP // var startingEl = window.parent.document.getElementById('blockstart_' + questionId); // new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false ); } } setTimeout('window.close()', 1500); }, onFailure: function(transport, json) { new page.InlineConfirmation("error", "Failure post discover pop-up", false ); } }); } assessment.submitRandomBlock = function () { if ($('listContainer_datatable')) { var searchCriterion = activeFilter.getSearchCriteriaInstance(false).getSearchCriteriaAsXml(); document.copyQuestionsForm.searchCriterion.value = searchCriterion; if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } } else { alert(ASSESSMENT_RESOURCES.getString("cannot.submit.with.no.matching.questions")); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.submitDrawer = function () { var myDrawer = drawer.model.getCurrentInstance(); var selectedItems = myDrawer.getItems(true); var i; var allIds = ""; for (i=0;i<selectedItems.length;i++) { var qId = selectedItems[i].itemId; var mode = selectedItems[i].mode; allIds += qId + ":" + mode + ","; } document.copyQuestionsForm.itemIds.value = allIds; myDrawer.discard(); if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.OnCompleteUpdateCanvas = function(questionId, req, showNestedReceipt) { var json = req.responseText.evalJSON( true ); var pointsEl = $s('ipoints_' + questionId); var totalQuestionsCountEl = $s('totalNoQuestions' + questionId); var currentQuestionCountEl = $s('questionCount' + questionId); var totalBlockPointsEl = $s('totalPoints_' + questionId); var totalTestPointsEl =$s('totalTestPoints'); var totalQuestionsEl = $s('totalQuestions'); var startingEl = $s('blockstart_' + questionId); if( !json.errorMessage && pointsEl && json.points ) { // update per question points pointsEl.childNodes[0].nodeValue = json.points; } if( !json.errorMessage && totalQuestionsCountEl && json.totalQuestionsCount ) { // update per question points totalQuestionsCountEl.childNodes[0].nodeValue = json.totalQuestionsCount; } if( !json.errorMessage && currentQuestionCountEl && json.currentQuestionsCount ) { // update per question points currentQuestionCountEl.childNodes[0].nodeValue = json.currentQuestionsCount; } if( !json.errorMessage && totalBlockPointsEl && json.totalBlockPoints ) { // update the total points totalBlockPointsEl.childNodes[0].nodeValue = json.totalBlockPoints; } if( !json.errorMessage && totalQuestionsEl && json.totalQuestions ) { // update the total questions totalQuestionsEl.innerHTML = json.totalQuestions; } if( !json.errorMessage && totalTestPointsEl && json.totalTestPoints ) { // update total Test points, not for survey or pool totalTestPointsEl.innerHTML = json.totalTestPoints; } if (showNestedReceipt) { if (json.securityErrorMsg ) { new page.NestedInlineConfirmation("error", json.securityErrorMsg, true, startingEl, true); } else if (json.successMessage ) { if (json.successMessage.indexOf('regrading_queued_status')> 0) { // If we are displaying a confirmation including regrading status then DO NOT fade it away - let it stay and get updated. new page.NestedInlineConfirmation("success", json.successMessage, false, startingEl, true); } else { new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false); } } } assessment.result = json.errorMessage; assessment.setQuestionNumbers(); }; assessment.removeQuestionsFromBlock= function(listId, questionBlockId, courseId,assessmentId) { var allcheckBoxes = list.checkboxes.get(listId); var checkedCount = 0; var ids = ""; for (var i = 0; i < allcheckBoxes.length; i++) { var separator = (i == (allcheckBoxes.length - 1)) ? " " : ','; if (allcheckBoxes[i].checked ) { checkedCount ++; ids = ids + allcheckBoxes[i].value + separator; } } if (window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count", [checkedCount]))) { // ajax request var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + questionBlockId); var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=removeQuestionsFromQuestionBlock" + "&block_id=" + questionBlockId + "&course_id=" + courseId + "&assessment_id=" + assessmentId + "&questionIds=" + ids + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; nonceId.value = json.nonceId; inventoryList.ajaxPostOnClick(null, listId); if(json.errorMessage ) { new page.NestedInlineConfirmation("error", json.errorMessage, false, startingEl, false); } }, onSuccess: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); }, onFailure: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); } }); } }; assessment.result = ""; assessment.saveQuestionCount = function(assessmentId, blockId, courseId, forRandomBlock ) { var countEl = document.getElementsByName('question_count')[0]; var originalCountEl = document.getElementById('questionCount' + blockId); var originalCount = originalCountEl.childNodes[0].nodeValue; var newCount = countEl.value; if (newCount == originalCount) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + blockId); var url = "/webapps/assessment/do/authoring/modify"+(forRandomBlock?"Random":"Question")+"Block?method=saveQuestionCount" + "&block_id="+blockId + "&course_id=" + courseId + "&new_count=" + newCount + "&assessment_id=" + assessmentId + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(req) { var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); }, onFailure: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); } }); return assessment.result; }; assessment.updateExtraCredit = function (newExtraCreditValue, questionId) { var extraCreditDiv = $('extra_credit_' + questionId); if (extraCreditDiv) { if (newExtraCreditValue) { extraCreditDiv.removeClassName('hidden'); extraCreditDiv.addClassName('extraCredit'); } else { extraCreditDiv.addClassName('hidden'); extraCreditDiv.removeClassName('extraCredit'); } } }; assessment.updateFullCredit = function (newFullCredit, questionId) { document.getElementById('original_fullCredit_value_' + questionId).value = newFullCredit.toString(); if (newFullCredit) { document.getElementById('full_credit_' + questionId).show(); } else { document.getElementById('full_credit_' + questionId).hide(); } }; // copied or linked question assessment.saveQuestionPoints = function(assessmentId, questionId, courseId, isBlock, isInUse, containerId ) { var pointsToSave = document.getElementsByName('inline_points'); var extraCredit =$s('inline_points_extra_credit_id'); var newExtraCreditValue = false; if(extraCredit) { newExtraCreditValue = extraCredit.checked; } var newPoints = pointsToSave[0].value; var originalPointsEl = document.getElementById('ipoints_' + questionId); var originalExtraCreditValue = false; var originalExtraCreditEl = $('extra_credit_' + questionId); if(originalExtraCreditEl) { originalExtraCreditValue = !originalExtraCreditEl.hasClassName('hidden'); } var originalPoints; if( originalPointsEl.childNodes ) { originalPoints = originalPointsEl.childNodes[0].nodeValue; } var originalFullCredit; var newFullCredit; var fullCreditCheckbox = document.getElementById('inline_points_full_credit_' + questionId); if (fullCreditCheckbox !== null) { newFullCredit = fullCreditCheckbox.checked; originalFullCredit = document.getElementById('original_fullCredit_value_' + questionId).value; } if ( (newPoints == originalPoints ) && ( originalExtraCreditValue == newExtraCreditValue ) && (!fullCreditCheckbox || (originalFullCredit == newFullCredit.toString())) ) { return ""; } if ( isInUse && !confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); if( !extraCredit ) { newExtraCreditValue = ""; } if( !isBlock) { isBlock = false; } else { isBlock = true; } var url = "/webapps/assessment/do/authoring/modifyAssessment?method=updateQuestionPoints" + "&question_id=" + questionId + "&course_id=" + courseId + "&points_value=" + newPoints + "&extra_credit=" + newExtraCreditValue + "&assessment_id=" + assessmentId + "&is_Block=" + isBlock + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (fullCreditCheckbox) { url = url + "&full_credit=" + newFullCredit; } new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req){ var json = req.responseText.evalJSON( true ); var showNestedReceipt = false; if( !containerId ) { showNestedReceipt = true; } assessment.OnCompleteUpdateCanvas(questionId,req,showNestedReceipt); if(extraCredit) { assessment.updateExtraCredit(newExtraCreditValue,questionId); } if (fullCreditCheckbox) { assessment.updateFullCredit(newFullCredit,questionId); } if (!showNestedReceipt) { // show receipt in pool , table cell var status_msg = null; if (json.successMessage != "") { status_msg = $('status_msg_succ'); } var link = containerId.down(1); link.hide(); containerId.appendChild(status_msg); (status_msg).show(); setTimeout( function(){ (status_msg).fade({ duration: 0.5 }); },500); setTimeout( function(){ link.appear({duration:0.5}); },1000); link.focus(); } }, onFailure: function(req){ new page.InlineConfirmation("error", page.bundle.getString("updatePointsFailed"), false); } }); return assessment.result; }; assessment.setDefaultLinkingMode = function(isLinkingMode, courseIdStr) { var courseId = courseIdStr || document.copyQuestionsForm.course_id.value; var url = "/webapps/assessment/do/authoring/questionSearch?method=saveLinkingMode" + "&linkingMode="+isLinkingMode+ "&course_id=" +courseId ; new Ajax.Request(url, { method: 'post', onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { document.body.style.cursor = 'default'; }, onSuccess: function(transport, json) { }, onFailure: function(transport, json) { } }); }; assessment.setDisplayFullText = function(displayFull, listId) { var extras = []; // Note - Constants.DISPLAY_FULL_TEXT = "displayFullText" extras.displayFullText=displayFull; inventoryList.ajaxPostOnClick(null, listId, extras, true); }; assessment.rewriteSectionForScreenReader = function(elementName) { var element = document.getElementById(elementName); element.setAttribute("aria-live", "assertive"); element.setAttribute("aria-relevant", "all"); element.setAttribute("aria-atomic", "true"); element.setAttribute("aria-busy", "true"); var myContents = element.innerHTML; element.innerHTML = myContents; element.setAttribute("aria-busy", "false"); return false; }; assessment.clearQuestionModifiedStatuses = function() { // Called on page load to make sure we don't have any stranded questions-to-monitor kicking around. assessment.questions_to_monitor = []; assessment.questions_to_monitor_index = 0; }; assessment.QMonitor = Class.create(); assessment.QMonitor.prototype = { initialize: function( entity, index) { this.index = index; Event.observe(entity, 'change', this.onChange.bindAsEventListener(this)); }, onChange: function( event) { assessment.questions_to_monitor[this.index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[this.index].qnum); } }; assessment.getSaveButton = function(questionNum) { var myButton = document.getElementById("saveButton_" + questionNum); if (!myButton) { if (assessment.isOneByOne) { if (questionNum == document.forms.saveAttemptForm.current_question.value) { myButton = document.getElementById("saveAnswerSubmitId"); // for one-at-a-time tests } } } return myButton; }; assessment.setModifiedIcon = function(questionNum) { var saveAnswerLabel = page.bundle.getString('takeSaveAnswer'); var myButton = assessment.getSaveButton(questionNum); if (myButton) { myButton.value = saveAnswerLabel; Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); } // TODO - Either rip this out or put in appropriate image, style, and text // NOTE - can't actually enable this until on-the-fly onchange support in the VTBE is done // (as opposed to the current on-unload check for change) // Also - would need to deal with leaving this image on-page in this scenario: // Save Q1 // Modify Q1 // Save Q2 // -- at this point, we update the status icons and lose the modified icon for Q1 /* var mySpan =document.getElementById("span_"+questionNum); var myImg = document.getElementById("img_"+questionNum); mySpan.className = "qIncomplete"; myImg.src = "/images/ci/icons/needs_grading.gif"; // better icon myImg.alt = "TODO: Incomplete"; myImg.height= "10"; myImg.width= "10"; */ }; assessment.addQuestionToMonitor = function(qid,qnum, isFileUploadQuestion) { var questionBlock = $(qid); assessment.questions_to_monitor[assessment.questions_to_monitor_index] = {}; // TODO - is there a more efficient way to do this? $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, assessment.questions_to_monitor_index); }); assessment.questions_to_monitor[assessment.questions_to_monitor_index].qid = qid; assessment.questions_to_monitor[assessment.questions_to_monitor_index].qnum = qnum; // Status: 0 == not changed, 1 = changed, 2 = attempted to be auto-saved since last change assessment.questions_to_monitor[assessment.questions_to_monitor_index].status = 0; assessment.questions_to_monitor[assessment.questions_to_monitor_index].isFileUploadQuestion = isFileUploadQuestion; assessment.questions_to_monitor_index++; }; assessment.remonitorFileUpload = function(qid, qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { if (assessment.questions_to_monitor[i].isFileUploadQuestion) { var questionBlock = $(qid); $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, i); }); } else { return; } } } } }; assessment.questionBeingSaved = -1; assessment.markQuestionAsSaved = function (qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { assessment.questions_to_monitor[i].status = 0; } } } }; assessment.hasUnsavedAnswers = function() { if (assessment.questions_to_monitor_index > 0) { var i = 0; if (typeof(finalizeEditorsAnyChange) == "function") { finalizeEditorsAnyChange(assessment.vtbeChanged); } for(i=0;i<assessment.questions_to_monitor_index;i++) { //alert("Question " + assessment.questions_to_monitor[i].qid + " number " + assessment.questions_to_monitor[i].qnum + " status " + assessment.questions_to_monitor[i].status); if (assessment.questions_to_monitor[i].status >= 1) { return true; } else if (assessment.questions_to_monitor[i].isFileUploadQuestion) { // In IE, the assessment.QMonitor onchange handle disappears after the first file selection and I can't seem to add it back. // This at least gets the saving to work so it doesn't appear totally broken. The button doesn't change to 'save answer' immediately // after you attach a file a second time though, but we have to live with that for now. var actionDivName = 'file_upload_ans_' + assessment.questions_to_monitor[i].qid + '_selectedFileActions'; var actionDiv = $(actionDivName); if (actionDiv && actionDiv.visible()) { assessment.questions_to_monitor[i].status = 1; return true; } } } } return false; }; assessment.registerVTBEChange = function() { if (typeof(registerOnChangeCallback) == "function") { registerOnChangeCallback(assessment.vtbeChangedCallback, assessment.getVtbeQuestionIndex); } }; assessment.autoSaveExecutor = ''; assessment.autoSaveInterval = 10; // seconds assessment.startAutoSave = function(interval) { assessment.autoSaveInterval = interval; assessment.autoSaveExecutor = new PeriodicalExecuter(assessment.doAutoSave, assessment.autoSaveInterval); }; assessment.stopAutoSave = function() { if (assessment.autoSaveExecutor != '') { assessment.autoSaveExecutor.stop(); } }; assessment.toggleAutoSave = function(interval) { assessment.stopAutoSave(); if ($s('autoSaveCheckbox').checked) { assessment.startAutoSave(interval); } }; assessment.doAutoSave = function(pe) { if (assessment.submittingRightNow) { // Ignore if submitting right now return; } if (assessment.savingRightNow) { // If we are already saving, do nothing right now. return; } var doneOne = false; if (assessment.hasUnsavedAnswers()) { for(var i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].status == 1) // explicitly only check for status 1, skipping status==2 { if (doneOne) { // We can only submit one question per pass because otherwise the nonce fails. Switch // to a higher frequency to save all the outstanding questions faster. pe.stop(); pe.frequency = 1; pe.registerCallback(); return; } assessment.questions_to_monitor[i].status = 2; // flag to indicate we've already tied to auto-save this // Will be reset to 0 after a successful save or 1 if the user modifies their answer again. saveOneItem( assessment.questions_to_monitor[i].qid, assessment.questions_to_monitor[i].qnum, true, false ); doneOne = true; } } } if (!doneOne) { if (pe.frequency != assessment.autoSaveInterval) { pe.stop(); pe.frequency = assessment.autoSaveInterval; pe.registerCallback(); } } }; assessment.vtbeChanged = function(ifr) { var index = assessment.getVtbeQuestionIndex( ifr ); assessment.vtbeChangedCallback(ifr,index); }; assessment.vtbeChangedCallback = function(ifr,index) { if (index != -1) { assessment.questions_to_monitor[index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[index].qnum); } }; assessment.getVtbeQuestionIndex = function(ifr) { var parents = ifr.ancestors(); var num = parents.length; for ( var i = 0; i < num; i++ ) { var parent = parents[i]; if ( page.util.hasClassName(parent, 'takeQuestionDiv') ) { var divid = parent.id; for ( var j = 0; j < assessment.questions_to_monitor_index; j++ ) { if ( assessment.questions_to_monitor[j].qid == divid ) { return j; } } return -1; } } return -1; }; assessment.warnBeforeLeavingIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var prefix = "test"; if (isSurvey) { prefix = "survey"; } var timermsg = ''; if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } if (isForced) { return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.forced.beforeunload.warning"); } return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.beforeunload.warning") + timermsg; }; assessment.queueUpWarning = function(msg, oneByOneAndForceUnload) { var url = assessment.getNextActionUrl() + '&method=queueUpWarning'; var params = Object.extend({ 'msg' : msg, 'oneByOneAndForceUnload' : oneByOneAndForceUnload, 'course_assessment_id' : document.forms.saveAttemptForm.course_assessment_id.value } ); var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, asynchronous: false }); }; assessment.warnOnLeaveIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var timermsg = ''; var prefix = "test"; if (isSurvey) { prefix = "survey"; } if (assessment.hasUnsavedAnswers()) { // Since we are always auto-saving anyways, we might as well just always save unsaved answers here. saveAllQuestions(false); } if (isForced) { assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.forced.warning", assessment.currentTestName), true ); } else { if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.warning", assessment.currentTestName )+timermsg, false); } }; assessment.setDefaultQuestionDisplay = function(blockToLeaveVisible) { assessment.blockToLeaveVisible = blockToLeaveVisible; UserDataDWRFacade.getStringPermScope( "assessment.questionsExpanded", function( questionsExpanded ) { if (questionsExpanded == 'false') { assessment.toggleQuestionDisplay(); } assessment.blockToLeaveVisible = 'null'; }); }; assessment.toggleQuestionDisplay = function() { var newVis = !assessment.questionVisibility; if (newVis) { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", true ); } else { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", false ); } // Note -most of the time this will be "contentListItem:null" - that's OK var idToIgnore = "contentListItem:" + assessment.blockToLeaveVisible; $A(document.getElementsByTagName('li'))._each(function(entity) { // hide|show the given entity if it is one we care about var id = entity.id; if (id.startsWith("contentListItem:") && id != idToIgnore) { $A(entity.getElementsByTagName('div'))._each(function(adiv) { if (page.util.hasClassName(adiv,'details')) { if (newVis) { $(adiv).show(); } else { $(adiv).hide(); } } }); if (newVis) { entity.removeClassName('hideQuestionDetails'); } else { entity.addClassName('hideQuestionDetails'); } } }); var buttonText = page.bundle.getString( newVis ? "hide.question.details" : "show.question.details" ); $('content_listContainer_hideshowQuestions_top').down('a').update( buttonText ); $('content_listContainer_hideshowQuestions_bottom').down('a').update( buttonText ); assessment.questionVisibility = newVis; }; assessment.setDisableFlag = function(questionId, flag) { modifyHelper(questionId, 'setDisableFlag' + flag); }; assessment.questionLabelMap = {}; assessment.dndHooksAdded = false; assessment.setQuestionNumbers = function() { var index = 1; // loop through line items in list of questions var questions = $('content_listContainer'); if (questions) { $A(questions.childElements()).each( function( li ) { var h3 = li.down('h3'); var span = h3.down('span.questionNumber'); if ( !span ) // create & add span for questionNumber if none exists { span = new Element('span',{'class':'questionNumber autoQuestionNumber'}); h3.insert({top:span}); } var id = h3.up('div').id; var qSetSize = $('questionCount'+id); var qNumStr = ''+index; if ( qSetSize ) // show number range for question sets { var s = parseInt(qSetSize.innerHTML, 10); index += s - 1; if ( s > 1 ) { qNumStr += ' - '+index; } else if ( s === 0 ) { qNumStr = ''; } } qNumStr = qNumStr + '.'; index++; span.update(qNumStr); assessment.questionLabelMap[id] = h3.innerHTML.stripTags(); // save numbered label in map for loading accessible reorder select }); } if ( !assessment.dndHooksAdded ) { var dndCtrl = dragdrop.getControllerObjById( 'pageListReorderControls' ); if (dndCtrl) { // Set question numbers in the accessible reorder select before opening it's popup. // Setting the question numbers needs to be defered until the popup is added to the DOM, which // happens just before the popup is opened dndCtrl.extPreOpenCallback = assessment.setAccessibleReorderQuestionNumbers; // call this function to set question numbers after a dnd or accessible reorder happens dndCtrl.extPostOrderCallback = assessment.setQuestionNumbers; assessment.dndHooksAdded = true; } } }; assessment.setAccessibleReorderQuestionNumbers = function() { $A($('pageListReorderControlSelect').options).each( function( option ) { option.text = assessment.questionLabelMap[option.value]; }); }; assessment.viewReferencingCanvases = function(courseId, assessmentId) { var url = "/webapps/assessment/do/authoring/modifyAssessment?course_id=" + courseId + "&method=getReferringCanvases&assessmentId=" + assessmentId; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ document.body.style.cursor = 'default'; }, onSuccess: function(req){ $('referencingCanvasesPlaceholder').update(req.responseText); }, onFailure: function(req){ $('referencingCanvasesPlaceholder').update(ASSESSMENT_RESOURCES.getString("error.loading.referrers")); } }); }; assessment.normalizedWidth = 0; assessment.setNormalizedButtonWidth = function(myButton) { if (assessment.normalizedWidth === 0) { myButton.value = page.bundle.getString('takeSaveAnswer'); Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); assessment.normalizedWidth = myButton.clientWidth; myButton.value = page.bundle.getString('takeSaveAnswerAgain'); Element.addClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } myButton.value = page.bundle.getString('savingAnswer'); Element.addClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } } //myButton.style.width = assessment.normalizedWidth + 'px'; return; }; assessment.resetFields = function() { window.document.assessmentSubmitted = false; window.document.assessmentActuallySubmitted = true; }; assessment.getNextActionUrl = function() { var url = document.forms.saveAttemptForm.action; url = url + '?saveSequence=' + (assessment.saveSequence++); return url; }; assessment.submitAttemptForm = function() { var myForm = document.forms.saveAttemptForm; var origUrl = myForm.action; myForm.action = assessment.getNextActionUrl(); try { myForm.submit(); } catch (err) { // Make sure we get to the next line and reset the url just in case. } myForm.action = origUrl; }; // This is the final save-and-submit request for the test/survey assessment.doConfirmSubmit = function(msg) { document.forms.saveAttemptForm.save_and_submit.value='true'; try { if (confirmSubmit(msg)) { assessment.resetFields(); assessment.submitAttemptForm(); } } catch (err) { // If we had an error, continue to clear the saveandsubmit value } document.forms.saveAttemptForm.save_and_submit.value=''; return false; }; assessment.alertSaveStatus = function (status) { if (status == 'COMPLETED' ) { alert(page.bundle.getString("confirm_saveall_success")); } else if (status == 'PARTIAL' ) { alert(page.bundle.getString("confirm_save_partial")); } else if (status == 'UNANSWERED' ) { alert(page.bundle.getString("confirm_save_empty")); } else { alert(page.bundle.getString("confirm_save_error")); } }; assessment.removeFileUploadAnswer = function (fieldName, divName, questionId, questionNumber, remAnsSuffix, takeDupeSaveMsg) { document.getElementById(divName).style.display = "none"; document.forms.saveAttemptForm.elements.method.value = "fileremove"; document.forms.saveAttemptForm.elements[fieldName + '-override'].value = "false"; document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = "true"; try { if (checkAlreadySaved(takeDupeSaveMsg)) { saveOneItem( questionId, questionNumber, true, false); } } catch (err) { // Ignore - just want to make sure we do the next statement } document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = ""; return false; }; assessment.updateQuestionStatusResponse = function(originalRequest ) { var qnums = originalRequest.responseText; var lines = qnums.split("\n"); var qnum=lines[0].split(","); for (var i=0; i<qnum.length; i++) { var num = qnum[i]; if (num > 0) { setSavedIcon(num); } else { setNotSavedIcon(-num); } } for (var j=1;j<lines.length;j++) { var fileUpload = lines[j].split(":"); if (fileUpload.length == 2) { var divName = "file_upload_div_" + fileUpload[0]; var divElement = document.getElementById(divName); if (fileUpload[1] == "HIDE") { if(divElement !== null) { divElement.style.display = "none"; } } else { var spanName = "file_upload_span_" + fileUpload[0]; var cancelFileButton = "file_upload_ans_" + fileUpload[0] + "_cancelFileButton"; var cancelElement = document.getElementById(cancelFileButton); var overrideName = "file_upload_ans_" + fileUpload[0] + "-override"; var overrideElement = document.forms.saveAttemptForm.elements[overrideName]; var spanElement = document.getElementById(spanName); if(divElement !== null) //we must check if item exists for one question at a time format { divElement.style.display = "block"; } if(spanElement !== null) { spanElement.innerHTML = fileUpload[1]; } if(cancelElement !== null) { cancelElement.click(); } if (typeof overrideElement !== 'undefined' && overrideElement !== null) { overrideElement.value = "true"; } } } } }; assessment.prepareForSubmit = function(doValidation) { // MUST VALIDATE FORM TO PERSIST WYSIWYG // Set textarea value to VTBE contents: if (typeof(finalizeEditors) == "function") { finalizeEditors(); } /* Transform equations place holders into html before validation*/ var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if (doValidation) { /* Validate form TODO: Why not call validateForm()*/ var valid = formCheckList.check(); return valid; } return true; };

var widget = {}; widget.colorPickers = {}; widget.ColorPicker = Class.create(); widget.ColorPicker.prototype = { /** * Constructor * * @param name - id of the color picker * @param initialColor - initial color hex string ("#000000") * @param alertMsg - localized error msg string ("Error: A valid color value must be specified") * @param previewIdStr - optional id string of the color preview DIV container user can specify * @param allowTransparent - optional boolean whether to render an option to select transparent. Default is false. */ initialize : function( name, initialColor, alertMsg, previewIdStr, previewBackgroundIdStr, allowTransparent ) { this.theColorPickerName = name; this.allowTransparent = ( !allowTransparent ) ? false : true; this.theMenu = $( name ); this.alertMsg = alertMsg; this.userPreviewContainer = $( previewIdStr ); // may be undefined this.userPreviewBackgroundContainer = $( previewBackgroundIdStr ); // may be undefined if ( typeof this.userPreviewContainer == "undefined" ) { this.userPreviewContainer = null; } if ( typeof this.userPreviewBackgroundContainer == "undefined" ) { this.userPreviewBackgroundContainer = null; } this.colorListParent = $( name + '_colorlist_parent' ); widget.ColorPicker.registerColorPicker( this ); this.ie = document.all && navigator.userAgent.indexOf( "Opera" ) == -1; this.color_hidden_input = $( name + "_title_color_input" ); this.color_hidden_input.value = initialColor; this.color_hidden_input._defaultValue = initialColor; this.anch_link = $( name + "_link" ); this.color_link = $( name + "_img" ); this.color_name_label = $( name + "_color_name_label" ); this.title_color_input = $( name + "_title_color" ); this.setDisplay( initialColor, this.getDisplayColorInfo( initialColor, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( initialColor, true ); var backgroundStyle = initialColor; if( initialColor === "transparent" ) { backgroundStyle = 'url(/images/swatches/transparent.gif)'; } this.color_link.setStyle( { background : backgroundStyle } ); this.updateUserPreviewContainerColor( initialColor ); if ( this.anch_link ) { Event.observe( this.anch_link, "click", this.onOpen.bindAsEventListener( this ) ); } Event.observe( document.body, "click", this.closeColorPickers.bindAsEventListener( this ) ); Event.observe( this.theMenu, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_previewColorLink', 'click', this.previewListener .bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_cancelButton', 'click', this.onClose.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_submitButton', 'click', this.onApply.bindAsEventListener( this ) ); this.skip_link = $( name + "_skip_link" ); if ( this.skip_link ) { Event.observe( this.skip_link, "click", this.onSkipLinkClick.bindAsEventListener( this ) ); } // relocate color picker popup div to the bottom of the doc b/c of css display issues Element.remove( this.theMenu ); document.body.appendChild( this.theMenu ); widget.colorPickers[ this.theColorPickerName ] = this; }, onSkipLinkClick : function( event ) { $( this.theColorPickerName + '_submitButton' ).focus(); }, onKeyPress : function( event ) { var key = event.keyCode || event.which; if ( key == Event.KEY_ESC ) { this.onClose( event ); } }, closeColorPickers : function( event ) { var element = Event.element( event ); widget.ColorPicker.colorPickers.each( function( cp ) { if ( cp != this && !element.descendantOf( cp.theMenu ) ) { cp.close(); } }.bind( this ) ); }, setOnChangeHandler : function( handler ) { this.onChangeHandler = handler; }, setDefaultColor : function( colorValue ) { this.color_hidden_input.value = colorValue; this.color_hidden_input._defaultValue = colorValue; if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); }, setColor : function( colorValue ) { widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, colorValue ); if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); this.updateUserPreviewContainerColor( colorValue ); if ( this.onChangeHandler ) { this.onChangeHandler(); } }, getPaletteInstance : function() { if ( !this.paletteInstance ) { this.paletteInstance = Element.clone( widget.ColorPicker.colorPalette, true ); } return this.paletteInstance; }, deletePaletteInstance : function() { if ( this.paletteInstance ) { Event.stopObserving( this.paletteInstance, 'click' ); this.paletteInstance.remove(); delete this.paletteInstance; } }, onOpen : function( event ) { this.closeColorPickers( event ); this.colorListParent.appendChild( this.getPaletteInstance() ); this.initializeTransparent(); Event.observe( this.getPaletteInstance(), 'click', this.setColorFromSwatch.bindAsEventListener( this ) ); var offset = Position.cumulativeOffset( this.anch_link ); this.theMenu.setStyle( { display : "block", position : "absolute" } ); var width = this.theMenu.getWidth(); var bodyWidth = $( document.body ).getWidth(); var menuDims = this.theMenu.getDimensionsEx(); var anchorDims = this.anch_link.getDimensionsEx(); var menuHeight = menuDims.height; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); // Use viewport relative offsets to figure out placement within the view var offsetTop = offset[ 1 ] - scrollOffsets.top; var offsetLeft = offset[ 0 ] - scrollOffsets.left; var xpos = offsetLeft; if ( page.util.isRTL() ) { xpos = xpos + this.anch_link.getWidth() - width; } if ( xpos + width > viewportDimensions.width ) { // First try to position it on the left of the link instead of the right xpos = offsetLeft - width + anchorDims.width; if ( xpos < 0 ) { // If we go off the page though, just try our best xpos = viewportDimensions.width - width; } } if ( xpos < 0 ) { xpos = 0; } var ypos = offsetTop + anchorDims.height; if ( ( ypos + menuHeight ) > viewportDimensions.height ) { // Try to position above the color picker first ypos = offsetTop - menuHeight; if ( ypos < 0 ) { // but if it goes off the top of the page just do a best-effort. ypos = ypos - ( ypos + menuHeight - viewportDimensions.height ); if ( ypos < 0 ) { ypos = 0; } } } // The color swatch is positioned absolutely, so adjust offsets to include the scrollofset ypos = ypos + scrollOffsets.top; xpos = xpos + scrollOffsets.left; this.theMenu.setStyle( { left : xpos + "px", top : ypos + "px" } ); this.title_color_input.focus(); ( function() { if ( !this.shim ) { this.shim = new page.popupShim( this.theMenu ); } this.shim.open(); }.bind( this ).defer() ); Event.stop( event ); }, /** * Removes the transparent choice from the palette if the picker is not supposed to support transparency. */ initializeTransparent : function() { if ( !this.allowTransparent ) { var transparentLi = this.colorListParent.down( 'li#colorlist_transparent' ); if ( transparentLi ) { Element.remove( transparentLi ); } } }, /** * Hides the color picker. */ onClose : function() { this.close(); this.anch_link.focus(); }, close : function() { this.deletePaletteInstance(); this.theMenu.setStyle( { display : "none" } ); if ( this.shim ) { this.shim.close(); } }, /** * Sets the preview color and text to the color selected by the user in the palette */ setColorFromSwatch : function( event ) { var element = Event.element( event ); if ( element.hasClassName( 'transparent' ) ) { this.setDisplay( "transparent", page.bundle.getString( "colorpicker.color.transparent" ) ); } else { var text = element.childNodes[ 0 ].nodeValue; if ( text ) { this.setDisplay( text.substring( 0, 7 ), this.getDisplayColorInfo( text.substring( 0, 7 ), false ) ); } } Event.stop( event ); }, getDisplayColorInfo : function( hexValue, onlyColorName ) { var transparent = false; var localizedName; var safeColorCode; if ( hexValue === "transparent" ) { transparent = true; localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ hexValue ]; } else { safeColorCode = this.getSafeColorCode( hexValue ).toUpperCase(); //The keys in ColorPickerMap are all 6 digit safe color codes, that's we need to make sure that we're using the correct key to lookup the color. localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ safeColorCode ]; } if ( !localizedName ) { localizedName = ''; } var colorName; colorName = localizedName + ' (' + hexValue + ')'; if ( onlyColorName || transparent ) { colorName = localizedName; } return colorName; }, /** * Returns a Six digit Hexadecimal Color Code. */ getSafeColorCode : function( hexValue ) { return hexValue.replace( /#([\d0-9A-Fa-f])([\d0-9A-Fa-f])([\d0-9A-Fa-f])$/,'#$1$1$2$2$3$3'); }, /** * Handles the Preview functionality on the swatch. If an inappropriate color is choosen, a msg is displayed to the * user. Else updates the color preview with the manually entered color. */ previewListener : function( event ) { if ( !this.isValidColor( this.title_color_input.value ) ) { alert( this.alertMsg ); return; } if ( this.title_color_input.value.length != 6 ) { return; } var prevCol; if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { prevCol = "transparent"; this.setDisplay( prevCol, page.bundle.getString( 'colorpicker.color.transparent' ) ); } else { prevCol = '#' + this.title_color_input.value; this.setDisplay( prevCol, this.getDisplayColorInfo( prevCol, false ) ); } Event.stop( event ); }, /** * Updates the color preview panel in the picker pop up */ setDisplay : function( col, text ) { if ( col === "transparent" ) { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : 'url(/images/swatches/transparent_lrg.gif)' } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : '#ffffff' } ); this.title_color_input.value = 'XXXXXX'; } else { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : col } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : col } ); this.title_color_input.value = ( col.startsWith( '#' ) ) ? col.substr( 1 ) : col; } $( this.theColorPickerName + '_title_color_name' ).innerHTML = text; }, /** * Checks for a valid color value. */ isValidColor : function( color_value ) { var isValid = false; isValid = ( /^[0-9A-Fa-f]{6}/ ).test( color_value ); if ( !isValid && this.allowTransparent ) { isValid = color_value.toLowerCase() === "xxxxxx"; } return isValid; }, /** * Manages the functionality for the Apply button the swatch. */ onApply : function( event ) { var color = this.title_color_input.value; if ( !this.isValidColor( color ) ) { return; } if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); color = "transparent"; this.color_name_label.innerHTML = page.bundle.getString( "colorpicker.color.transparent" ); } else { color = '#' + color; this.color_link.setStyle( { background : color } ); this.color_name_label.innerHTML = this.getDisplayColorInfo( color, true ); } widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, color ); this.updateUserPreviewContainerColor( color ); this.onClose(); if ( this.onChangeHandler ) { this.onChangeHandler(); } Event.stop( event ); }, /** * If the user specified preview container element exists, update its color style to the color given. * * @param color - color hex string */ updateUserPreviewContainerColor : function( color ) { if ( this.userPreviewContainer ) { this.userPreviewContainer.style.color = color; } else if ( this.userPreviewBackgroundContainer ) { this.userPreviewBackgroundContainer.style.background = color; } } }; // end widget.ColorPicker.prototype widget.ColorPicker.colorPickers = []; widget.ColorPicker.colorPickerMap = {}; widget.ColorPicker.colorPickerPaletteMap = {}; widget.ColorPicker.registerColorPicker = function( cp ) { widget.ColorPicker.colorPickers.push( cp ); widget.ColorPicker.colorPickerMap[ cp.theColorPickerName ] = cp; // grab the color definition and remove it from the DOM for the time being if ( !widget.ColorPicker.colorPalette ) { var colorPalette = $( 'picker_colorlist' ); // Store the colors and their localized names so we can look them up later. widget.ColorPicker.colorPickerPaletteMap[ "default" ] = {}; var arrColors = Element.getElementsBySelector( colorPalette, "a" ); for ( var i = 0; i < arrColors.length; i++ ) { if ( !arrColors[ i ].hasClassName( "transparent" ) ) { widget.ColorPicker.colorPickerPaletteMap[ "default" ][ arrColors[ i ].innerHTML.substring( 0, 7 ).toUpperCase() ] = arrColors[ i ].innerHTML .substring( 8 ); } } widget.ColorPicker.colorPickerPaletteMap[ "default" ].transparent = page.bundle .getString( "colorpicker.color.transparent" ); widget.ColorPicker.colorPalette = colorPalette; // deferring so that the name lookup for colors can succeed during init ( function() { Element.remove( colorPalette ); }.defer() ); } }; widget.ColorPicker.closeAllColorPickers = function() { widget.ColorPicker.colorPickers.each( function( cp ) { cp.close(); } ); }; widget.MultiSelect = Class.create(); widget.MultiSelect.multiselectBoxes = []; // ---------------- "static" methods widget.MultiSelect.registerMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.push( ms ); }; widget.MultiSelect.unRegisterMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.remove( ms ); }; widget.MultiSelect.prototype = { initialize : function( multiSelectDiv, formName ) { this.multiSelectDiv = $( multiSelectDiv ); this.formName = formName; if ( this.multiSelectDiv ) { this.leftClickListeners = []; this.rightClickListeners = []; var divs = this.multiSelectDiv.getElementsByTagName( 'div' ); var leftDiv = $( divs[ 0 ] ); var buttonDiv = $( divs[ 1 ] ); var rightDiv = $( divs[ 2 ] ); var inputs = this.multiSelectDiv.getElementsByTagName( 'input' ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); var leftSelects = leftDiv.getElementsByTagName( 'select' ); var rightSelects = rightDiv.getElementsByTagName( 'select' ); this.leftSelectBox = $( leftSelects[ 0 ] ); this.rightSelectBox = $( rightSelects[ 0 ] ); var buttons = buttonDiv.getElementsByTagName( 'button' ); var moveRightButton = $( buttons[ 0 ] ); var moveLeftButton = $( buttons[ 1 ] ); var leftInputs = leftDiv.getElementsByTagName( 'input' ); var leftInvertSelectionButton = $( leftInputs[ 0 ] ); var leftSelectAllButton = $( leftInputs[ 1 ] ); var rightInputs = rightDiv.getElementsByTagName( 'input' ); var rightInvertSelectionButton = $( rightInputs[ 0 ] ); var rightSelectAllButton = $( rightInputs[ 1 ] ); widget.MultiSelect.registerMultiSelect( this ); Event.observe( moveLeftButton, "click", this.onMoveLeftClick.bindAsEventListener( this ) ); Event.observe( moveRightButton, "click", this.onMoveRightClick.bindAsEventListener( this ) ); Event.observe( leftInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, true ) ); Event.observe( rightInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, false ) ); Event.observe( leftSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, true ) ); Event.observe( rightSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, false ) ); // This for the MultiSelectAction Bean. // If actionBean list is less than 1, button is displayed and not the dropdown if ( leftSelects.length > 1 ) { this.actionBeanLeftSelect = $( leftSelects[ 1 ] ); this.actionBeanRightSelect = $( rightSelects[ 1 ] ); var actionBeanLeftGoBox = $( leftInputs[ 2 ] ); var actionBeanRightGoBox = $( leftInputs[ 2 ] ); Event.observe( actionBeanLeftGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, true ) ); Event.observe( actionBeanRightGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, false ) ); } } }, actionBeanFunc : function( event, leftSelect ) { var destination = this.actionBeanLeftSelect; var selectedBox = this.leftSelectBox; if ( !leftSelect ) { destination = this.actionBeanRightSelect; selectedBox = this.rightSelectBox; } var myindex = destination.selectedIndex; if ( myindex == -1 || myindex > destination.length - 1 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return false; } var sFunctionName = destination.options[ myindex ].value; var oFunc = window[ sFunctionName ]; oFunc( selectedBox.name, this.formName ); this.setHiddenValues(); }, /* * listener registration for leftmove and rightmove clicks */ addToLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.push( listenerFunc ); } }, addToRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.push( listenerFunc ); } }, removeFromLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.remove( listenerFunc ); } }, removeFromRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.remove( listenerFunc ); } }, removeAllLeftClickListeners : function() { this.leftClickListeners = []; }, removeAllRightClickListeners : function() { this.rightClickListeners = []; }, removeFromLeft : function( id ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var toRemoveElement = leftItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToLeft : function( id, value, sortString ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var returnItem = leftItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { this.rawAddToLeft( id, value, sortString ); this.setHiddenValues(); } } }, rawAddToLeft : function( id, value, sortString ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.leftSelectBox.appendChild( item ); }, removeFromRight : function( id ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var toRemoveElement = rightItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToRight : function( id, value, sortString ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var returnItem = rightItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.rightSelectBox.appendChild( item ); this.setHiddenValues(); } } }, resetRightBox : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); rightItems.invoke( "remove" ); this.setHiddenValues(); } }, resetLeftBox : function() { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); leftItems.invoke( "remove" ); this.setHiddenValues(); } }, getAllLeftAvailableElements : function() { if ( this.leftSelectBox ) { return this.leftSelectBox.immediateDescendants(); } else { return []; } }, getAllRightElements : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); return rightItems; } else { return []; } }, onMoveLeftClick : function( event ) { var rightItems = this.rightSelectBox.immediateDescendants(); var selectedItems = rightItems.findAll( function( item ) { return item.selected; } ); var leftItems = this.leftSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { leftItems.push( item ); } ); leftItems = leftItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); leftItems.each( function( item ) { this.leftSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.leftClickListeners ) { this.leftClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, onMoveRightClick : function( event ) { var leftItems = this.leftSelectBox.immediateDescendants(); var selectedItems = leftItems.findAll( function( item ) { return item.selected; } ); var rightItems = this.rightSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { rightItems.push( item ); } ); rightItems = rightItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); rightItems.each( function( item ) { this.rightSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.rightClickListeners ) { this.rightClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, setHiddenValues : function() { var leftString; var rightString; var temp = ""; // Populate select box values comma separated into leftString,rightString. if ( this.leftSelectBox ) { this.leftSelectBox.immediateDescendants().each( function( option ) { leftString = option.value; temp += leftString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.leftValues.value = temp; temp = ""; } if ( this.rightSelectBox ) { this.rightSelectBox.immediateDescendants().each( function( option ) { rightString = option.value; temp += rightString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.rightValues.value = temp; temp = ""; } }, onSelectAllClick : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } Event.stop( event ); }, onInvertSelection : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } } }; /** * A dynamic picker list */ widget.PickerList = Class.create(); widget.PickerList.prototype = { /** * Creates a new picker list * * @param id id of the picker list table * @param cellGenerators an array of functions to be called to generate the HTML for the cells for a new row in the * table. * @param columnAlignments an array of the alignments of the columns * @param columnStyles optional styles to applied to columns * @param reorderable whether the table is to be reorderable * @param reorderingUrl url that reordering changes will be persisted to (can be null) * @param contextParameters parameters that are passed along with the reordering action. */ initialize : function( id, cellGenerators, columnAlignments, columnStyles, reorderable, reorderingUrl, contextParameters ) { this.table = $( id ); this.reorderable = reorderable; if ( this.table ) { this.tableBody = $( this.table.getElementsByTagName( 'tbody' )[ 0 ] ); if ( reorderable ) { this.dragDrop = new dragdrop.ListReordering( this.tableBody, this.table.id + '_reorderControls', false, 'tr', 'dndHandle', 'span', reorderingUrl, contextParameters, new Date().getTime(), null ); } } this.cellGenerators = cellGenerators; this.columnAlignments = columnAlignments; this.columnStyles = columnStyles; }, /** * This function takes any number of arguments. They will be passed directly to the generator functions. If this * list is reorderable, the first two arguments must be: - id of the item added. - name of the item added. */ addRow : function() { var generatorArgs = arguments; var row = $( document.createElement( "tr" ) ); if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var id = arguments[ 0 ]; var name = arguments[ 1 ]; // Set the row id so that the drag and drop code can identify the row row.id = this.table.id + '_row:' + id; // Add the reordering handle. var cell = document.createElement( "td" ); cell.className = 'smallCell dndHandle'; cell.valign = 'top'; cell.innerHTML = '<span class="reorder"><span><img src="/images/ci/icons/generic_updown.gif" alt="" /></span></span>'; row.appendChild( cell ); // Add the item to the accessible controls. var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); accessibleSelect.options[ accessibleSelect.length ] = new Option( name, id ); dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } this.cellGenerators.each( function( generator, index ) { var alignment = this.columnAlignments[ index ]; var cell = $( document.createElement( "td" ) ); cell.setAttribute( "align", alignment ); var columnStyle = this.columnStyles[ index ]; if ( '' != columnStyle ) { cell.addClassName( columnStyle ); } cell.innerHTML = generator.apply( window, generatorArgs ); row.appendChild( cell ); }.bind( this ) ); if ( generatorArgs[ 0 ] && generatorArgs[ 0 ].incompatibleFile ) { return; } else { this.tableBody.appendChild( row ); } if ( this.reorderable ) { // Toggle drag and drop so that it picks up the new item. this.dragDrop.disableDragAndDrop(); this.dragDrop.enableDragAndDrop(); this.dragDrop.calculateItemOrder(); } return row; }, /** * Removes the row with the specified id or index * * @param idOrIndex - if the argument is a string - it is taken as the id of one of the rows in the table - if the * argument is a number - the row at the specified index will be removed. */ removeRow : function( idOrIndex ) { var rowToRemove = null; if ( Object.isString( idOrIndex ) ) { rowToRemove = $( this.table.id + "_row:" + idOrIndex ); } else { rowToRemove = this.tableBody.childElements()[ idOrIndex ]; } if ( rowToRemove ) { // Remove the row from the accessible repositioning controls if applicable if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var idToCheck = rowToRemove.id.split( ':' )[ 1 ]; var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); var options = accessibleSelect.childElements(); for ( var i = 0; i < options.length; i++ ) { if ( options[ i ].value == idToCheck ) { Element.remove( options[ i ] ); break; } } dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } Element.remove( rowToRemove ); if ( this.reorderable ) { this.dragDrop.calculateItemOrder(); } } } }; widget.PickerList.noopGenerator = function() { return '&nbsp;'; }; /** * File picker */ widget.FilePicker = Class.create(); widget.FilePicker.prototype = { /** * Creates a new file picker * * @param pickerList the javascript object representing the picker list (of currently attached files) * @param baseElementName the base name for the file picker elements * @param required whether a file is required to be chosen * @param overrideLocalBehavior whether the CS options to override local behavior should be shown * @param csPickerUrl url to the CS file picker * @param showAddMetadata whether the "submit and add metadata" content system functionality should be enabled. * @param onAttachFile Optional callback function triggered when a new file is attached */ initialize : function( pickerList, baseElementName, required, overrideLocalBehavior, csPickerUrl, showAddMetadata, showSpecialAction, allowMultipleFiles, onAttachFile ) { this.pickerList = pickerList; this.baseElementName = baseElementName; this.required = required; this.overrideLocalBehavior = overrideLocalBehavior; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.allowMultipleFiles = allowMultipleFiles; this.onAttachFile = onAttachFile; this.pickCSButton = $( this.baseElementName + '_csBrowse' ); this.pickLocalButton = $( this.baseElementName + '_localBrowse' ); this.localFilePicker = $( this.baseElementName + '_chooseLocalFile' ); this.pickURLButton = $( this.baseElementName + '_urlBrowse' ); this.selectedCSFile = $( this.baseElementName + '_selectedCSFile' ); this.selectedCSFileName = $( this.baseElementName + '_selectedCSFileName' ); this.selectedCSFilePath = $( this.baseElementName + '_selectedCSFilePath' ); this.selectedCSFileSize = $( this.baseElementName + '_selectedCSFileSize' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_selectedCSFileMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_selectedCSFileMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_selectedCSFileMetadataFormat' ); } // single file selected area this.selectedFileActionsArea = $( this.baseElementName + '_selectedFileActions' ); this.selectedFileName = $( this.baseElementName + '_selectedFileName' ); this.selectedFileSource = $( this.baseElementName + '_selectedFileSource' ); this.selectedFileLinkTitle = $( this.baseElementName + '_selectedFileLinkTitle' ); this.selectedFileSpecialAction = $( this.baseElementName + '_selectedFileSpecialAction' ); this.attachFileButton = $( this.baseElementName + '_attachFileButton' ); this.cancelFileButton = $( this.baseElementName + '_cancelFileButton' ); this.allowCS = this.pickCSButton ? true : false; this.allowLocal = this.pickLocalButton ? true : false; this.allowURL = this.pickURLButton ? true : false; // Wire up events if ( this.overrideLocalBehavior ) { this.pickTargetButton = $( this.baseElementName + '_CSTargetButton' ); this.targetCSLocation = $( this.baseElementName + '_CSTarget' ); Event.observe( this.pickTargetButton, "click", this.onPickTargetClick.bindAsEventListener( this ) ); } this.pickMDButton = $( this.baseElementName + '_CSTargetMetaButton' ); if ( this.pickMDButton ) { window.CSMetadataPickerCallBack = this.afterPickMD.bind( this ); Event.observe( this.pickMDButton, "click", this.onPickMDClick.bindAsEventListener( this ) ); } if ( $( this.baseElementName + '_permissionPickerButton0' ) ) { Event.observe( $( this.baseElementName + '_permissionPickerButton0' ), "click", widget.FilePicker.openPermPicker .bindAsEventListener( this, this.csPickerUrl, this.baseElementName + "_permissions0_manual", "", this.selectedCSFilePath, widget.FilePicker.permPickerCallback .curry( this.baseElementName, this.baseElementName + '_csPermFileList0', 0 ) ) ); } if ( this.allowCS ) { Event.observe( this.pickCSButton, "click", this.onCSBrowse.bindAsEventListener( this ) ); Event.observe( this.selectedCSFile, "change", this.onCSPick.bindAsEventListener( this ) ); } if ( this.allowLocal ) { this.localFileContainer = this.localFilePicker.up(); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } if ( this.allowURL ) { this.linkId = $( this.baseElementName + "_urlBrowse" ); this.formDivId = $( this.baseElementName + "_addUrlForm" ); this.formContainerId = $( this.baseElementName + "_urlContainerDiv" ); var flyout = new flyoutform.FlyoutForm( { linkId : this.linkId, formDivId : this.formDivId, inlineFormContainerId : this.formContainerId, customCallbackObject : this, customOnSubmitHandler : this.onURLPick } ); this.flyout = flyout; } if ( this.cancelFileButton ) { Event.observe( this.cancelFileButton, "click", this.onCancelClick.bindAsEventListener( this ) ); } Event.observe( this.allowLocal ? this.pickLocalButton.form : this.pickCSButton.form, "submit", this.onSubmit .bindAsEventListener( this ) ); this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv && this.pickerList && this.pickerList.tableBody && ( this.pickerList.tableBody .getElementsBySelector( 'input[type="hidden"]' ).length > 0 || this.pickerList.tableBody .getElementsBySelector( 'input[type="file"]' ).length > 0 ) ) { this.listHtmlDiv.show(); } if ( !this.allowMultipleFiles && this.selectedFileSource.value != '' ) { // A file is already attached, so show the selected files area and // turn off the file choosing button (and metadata button if any). this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } } widget.FilePicker.registerFilePicker( this ); }, /** * For the override local behavior: show the picker to pick the location */ onPickTargetClick : function( event ) { var remote = popop.launchPicker( '/webapps/cmsmain/folderpicker/', 'picker_browse' ); if ( remote ) { remote.opener.inputEntryURLToSet = this.targetCSLocation; remote.opener.returnFullURL = false; remote.methodCall = this.onPickMDClick.bind( this ); } }, /** * For the override local behavior: show the picker to pick the metadata */ onPickMDClick : function( event ) { var location = this.targetCSLocation; var file = this.localFilePicker; if ( file.value == '' ) { return; } var url = '/webapps/cmsmain/execute/metadatapicker/manage?action=pick&file=' + file.value; if ( location && location.value != '' ) { url += 'location=' + location.value; } popup.launchPicker( url, 'picker_browse' ); }, /** * For the override local behavior: callback from the metadata picker */ afterPickMD : function( metadata, selection, synchronised, format ) { $( this.baseElementName + '_CSTargetmetadata' ).value = metadata; $( this.baseElementName + '_CSTargetselection' ).value = selection; $( this.baseElementName + '_CSTargetSynchronised' ).value = synchronised; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = format; }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.inputEntryURLToSet = this.selectedCSFile; this.csBrowseWindow.opener.inputFileSizeToSet = this.selectedCSFileSize; this.csBrowseWindow.opener.linkName = this.selectedCSFileName; if ( this.selectedCSFilePath ) { this.csBrowseWindow.opener.filePath = this.selectedCSFilePath; } this.csBrowseWindow.opener.customHandler = this.onCSPick.bind( this ); if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, /** * Called after file has been chosen from CS file picker with metadata added. */ afterMD : function( metadata, synced, format, fileId ) { var metadataString = metadata.join( "#" ); if ( fileId ) { if ( $( this.baseElementName + '_CSMetadata_' + fileId ) ) { $( this.baseElementName + '_CSMetadata_' + fileId ).value = metadataString; } if ( $( this.baseElementName + '_CSMetadataSync_' + fileId ) ) { $( this.baseElementName + '_CSMetadataSync_' + fileId ).value = synced; } if ( $( this.baseElementName + '_CSMetadataFormat_' + fileId ) ) { $( this.baseElementName + '_CSMetadataFormat_' + fileId ).value = format; } } else { if ( this.selectedCSFileMetadata ) { this.selectedCSFileMetadata.value = metadataString; } if ( this.selectedCSFileMetadataSync ) { this.selectedCSFileMetadataSync.value = synced; } if ( this.selectedCSFileMetadataFormat ) { this.selectedCSFileMetadataFormat.value = format; } } }, /** * Callback called after a file has been chosen from the CS file picker in single file mode - updating selected * files section */ onCSPick : function( fileList ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { // picker was opened in multiple mode but one of the legacy page was hit // see how legacy pages with radio buttons submit its selection - pickmultiple.jspf // create object cell generator is expecting using hidden input if ( typeof ( fileList ) == 'string' ) { var filePath = this.selectedCSFilePath ? this.selectedCSFilePath.value : ""; var csFile = { fileName : this.selectedCSFile.value, fullUrlToFile : this.selectedCSFile.value, linkTitle : this.selectedCSFileName.value, filePath : filePath, size : this.selectedCSFileSize.value }; this.onCSPickAllowMultiple( [ csFile ] ); } else { this.onCSPickAllowMultiple( fileList ); } } else { this.csBrowseWindow = null; this.selectedFileSource.value = 'C'; this.selectedFileName.innerHTML = this.selectedCSFileName.value; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = this.selectedCSFileName.value; } this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } if ( $( this.baseElementName + '_csPermissionsLi' ) ) { var fileName = this.selectedCSFileName.value; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. if ( ( /html|htm/i ).test( ext ) ) { $( this.baseElementName + "_permissionOptionsIndex" ).value = 0; $( this.baseElementName + '_csPermissionsLi' ).show(); } } if ( this.onAttachFile ) { this.onAttachFile( this, false ); } } }, /** * Called after a file is chosen from the local file picker in single file mode - updating selected files section */ onLocalPick : function( event ) { if ( this.localFilePicker.value != '' ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { this.onLocalPickAllowMultiple( event ); } else { var localFileName = this.getFileName( this.localFilePicker.value ); this.selectedFileName.innerHTML = localFileName; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = localFileName; } this.selectedFileSource.value = 'L'; this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.show(); } if ( this.onAttachFile ) { this.onAttachFile( this, true ); } } } }, /** * Callback called after files have been chosen from the CS file picker in multiple files mode - updating table */ onCSPickAllowMultiple : function( fileList ) { this.csBrowseWindow = null; fileList.each( function( selectedFile ) { selectedFile.baseElementName = this.baseElementName; selectedFile.showAddMetadata = this.showAddMetadata; selectedFile.csPickerUrl = this.csPickerUrl; this.pickerList.addRow( selectedFile, false ); // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); if ( this.onAttachFile ) { this.onAttachFile( this, false ); } }.bind( this ) ); }, /** * Called after a file is chosen from the local file picker in multiple files mode - updating table */ onLocalPickAllowMultiple : function( event ) { var row = this.pickerList.addRow( this, true ); if ( row === null ) { return; } // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); var cell = $( row.getElementsByTagName( 'td' )[ 0 ] ); var title = this.localFilePicker.title; Element.remove( this.localFilePicker ); this.localFilePicker.removeClassName( "hiddenInput" ); this.localFilePicker.setStyle( { position : "absolute", top : '-10000px' } ); this.localFilePicker.disabled = false; cell.appendChild( this.localFilePicker ); // Set up the names of the local file fields this.pickerList.tableBody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = this.baseElementName + '_LocalFile' + index; }.bind( this ) ); // Create and insert a new local file picker for more local file attaching this.localFilePicker = new Element( 'input', { title : title, type : 'file' } ); this.localFilePicker.addClassName( 'hiddenInput' ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); if ( this.onAttachFile ) { this.onAttachFile( this, true ); } }, /** * If a) Special Actions are enabled, and b) the embed options are configure to show up: - Wires up an on change * even on the special action select box that shows the embed options when the embed action is chosen. */ registerEmbedOptionsListener : function( index ) { if ( this.showSpecialAction ) { var specialAction = $( this.baseElementName + '_specialAction' + index ); var embedOptions = $( this.baseElementName + '_embedOptions' + index ); if ( embedOptions ) { specialAction.observe( 'change', function( event ) { if ( "EMBED" == specialAction.options[ specialAction.selectedIndex ].value ) { embedOptions.show(); } else { embedOptions.hide(); } } ); } } }, /** * Called after a url is chosen from the local file picker in multiple files mode - updating table */ onURLPick : function( widget ) { var selectedURL = document.getElementById( widget.baseElementName + '_newUrlName' ); if (selectedURL.value.blank()) // TODO: More exhaustive URL validation? { alert(page.bundle.getString('filePicker.validate.invalid.url')); return false; } if ( widget.listHtmlDiv ) { widget.listHtmlDiv.show(); } if ( widget.allowMultipleFiles ) { var urlFile = { fileName : selectedURL.value, fullUrlToFile : selectedURL.value, linkTitle : selectedURL.value }; widget.onCSPickAllowMultiple( [ urlFile ] ); } else { widget.selectedFileSource.value = 'C'; widget.selectedFileName.innerHTML = selectedURL.value; if ( widget.selectedFileLinkTitle ) { widget.selectedFileLinkTitle.value = selectedURL.value; } widget.selectedFileActionsArea.show(); widget.togglePickerButtons( false ); if ( widget.pickMDButton ) { widget.pickMDButton.hide(); } if ( widget.onAttachFile ) { widget.onAttachFile( widget, false ); } } // Purge entry widget.flyout.close(); selectedURL.value = ''; return true; }, /** * Called when the "Do not attach file" button is clicked */ onCancelClick : function( event ) { this.selectedFileActionsArea.hide(); this.clearSelectedFileInfo(); this.togglePickerButtons( true ); if ( event ) { Event.stop( event ); } }, /** * Toggles the enabled state of the Local/CS picker buttons to the specified state */ togglePickerButtons : function( enabled ) { if ( this.allowLocal ) { this.pickLocalButton.disabled = !enabled; if ( enabled ) { this.pickLocalButton.className = 'browse visibleInput'; this.localFilePicker.position = 'relative'; this.localFilePicker.style.top = ''; } else { this.pickLocalButton.className = 'disabled'; this.localFilePicker.position = 'absolute'; this.localFilePicker.style.top = '-10000px'; } if ( this.allowMultiple ) { this.localFilePicker.disabled = !enabled; } } if ( this.allowCS ) { this.pickCSButton.disabled = !enabled; if ( enabled ) { this.pickCSButton.className = 'browse visibleInput'; } else { this.pickCSButton.className = 'disabled'; } } if ( this.allowURL ) { this.pickURLButton.disabled = !enabled; if ( enabled ) { this.pickURLButton.className = 'browse visibleInput'; } else { this.pickURLButton.className = 'disabled'; } } }, /** * Clears the info associated to the current attached file (if the user cancelled, or chose to attach another file ) */ clearSelectedFileInfo : function() { var isLocal = this.selectedFileSource.value == 'L'; this.selectedFileName.innerHTML = ""; this.selectedFileSource.value = ""; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = ""; } if ( this.pickMDButton ) { $( this.baseElementName + '_CSTargetmetadata' ).value = ""; $( this.baseElementName + '_CSTargetselection' ).value = ""; $( this.baseElementName + '_CSTargetSynchronised' ).value = ""; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = ""; } if ( $( this.baseElementName + "_permissionOptionsIndex" ) ) { $( this.baseElementName + '_permissionOptionsIndex' ).value = -1; $( this.baseElementName + '_permissions0_all' ).checked = true; } if ( this.selectedFileSpecialAction ) { this.selectedFileSpecialAction.selectedIndex = 0; } if ( isLocal ) { var title = ""; if ( !this.allowMultipleFiles ) { title = this.localFilePicker.title; Element.remove( this.localFilePicker ); } this.localFilePicker = $( document.createElement( "input" ) ); if ( !this.allowMultipleFiles ) { this.localFilePicker.name = this.baseElementName + '_LocalFile0'; } this.localFilePicker.title = title; this.localFilePicker.type = "file"; this.localFilePicker.addClassName( "hiddenInput" ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } else { this.selectedCSFile.value = ""; this.selectedCSFileName.value = ""; if ( this.selectedFilePath ) { this.selectedFilePath = ""; } this.selectedCSFileSize.value = ""; if ( this.showAddMetadata ) { this.selectedCSFileMetadata.value = ""; this.selectedCSFileMetadataSync.value = ""; this.selectedCSFileMetadataFormat.value = ""; } } }, /** * Gets the file name based on the full file path. */ getFileName : function( fullPath ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return result; }, setRequired : function( required ) { this.required = required; }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.allowMultipleFiles ) { if ( this.pickerList.tableBody.immediateDescendants().length === 0 ) { alert( page.bundle.getString( "filePicker.validate.atLeastOne" ) ); if ( event ) { Event.stop( event ); } return false; } } else { if ( ( this.selectedCSFile && this.selectedCSFile.value == '' ) && ( this.localFilePicker && this.localFilePicker.value == '' ) ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); if ( event ) { Event.stop( event ); } return false; } } } return true; } }; // Creates hidden input items for selected files/folders if giving access to additional files/folder // when attaching an HTML file widget.FilePicker.permPickerCallback = function( baseElementName, permFileList, index, itemList ) { if ( itemList && itemList.length > 0 ) { var i; var permFileListElem = $( permFileList ); var hiddenInputs = ""; if ( !permFileListElem ) { return; } hiddenInputs += '<input type="hidden" name="' + baseElementName + '_permittedFiles' + index + '" value="' + itemList[ 0 ].fileName; for ( i = 1; i < itemList.length; i++ ) { hiddenInputs += ':' + itemList[ i ].fileName; } hiddenInputs += '">'; permFileListElem.innerHTML = hiddenInputs; } }; /** * Toggles the "mark for removal" status of an item in the currently attached files table. Should be called from an * onclick attribute on the toggle link in the table. */ widget.FilePicker.toggleForRemove = function( event, removeLink ) { var e = event || window.event; removeLink = $( removeLink ); var tableRow = removeLink.up( "tr" ); var hiddenField = removeLink.up( "td" ).down( 'input[type="hidden"]' ); tableRow.toggleClassName( "removeCell" ); if ( hiddenField.disabled ) { hiddenField.disabled = false; removeLink.innerHTML = page.bundle.getString( "filePicker.unmarkForRemove" ); } else { hiddenField.disabled = true; removeLink.innerHTML = page.bundle.getString( "filePicker.markForRemove" ); } Event.stop( e ); }; widget.FilePicker.togglePickerButton = function( pickerButton, enabled ) { if ( enabled ) { $( pickerButton ).setAttribute( "href", "#" ); $( pickerButton ).removeClassName( "disabled" ); } else { $( pickerButton ).removeAttribute( "href" ); $( pickerButton ).addClassName( "disabled" ); } }; /** * Removes the specified pending attachment. Should be called from an onclick handler on a link in the currently * attached files table */ widget.FilePicker.removePendingAttachment = function( event, removeLink, baseElementName ) { var e = event || window.event; if ( confirm( page.bundle.getString( "filePicker.doNotAttach.confirm" ) ) ) { removeLink = $( removeLink ); var row = removeLink.up( "tr" ); var tbody = row.up( "tbody" ); // Remove the pending row Element.remove( row ); // Re-index the local file inputs. tbody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = baseElementName + '_LocalFile' + index; } ); // Hide the whole attached files table if there are no more attached files. var rowTotal = tbody.getElementsByTagName( 'tr' ).length; if ( rowTotal === 0 ) { var listHtmlDiv = $( baseElementName + "_listHtmlDiv" ); if ( listHtmlDiv ) { listHtmlDiv.hide(); } } } Event.stop( e ); }; widget.FilePicker.getPermPickerUrl = function( csPickerUrl, path, pathElement ) { // reuse current file picker's url as fall back plan var baseUrl = csPickerUrl.split( "?" )[ 0 ]; var queryParams = csPickerUrl.toQueryParams(); if ( !queryParams.multipicker ) { queryParams.multipicker = 'true'; } if ( !path && pathElement ) { path = pathElement.value; } // if we have path, construct proper full url from scratch using the provided path & extracted principalId if ( path ) { var principalId = baseUrl.match( /\/webapps\/cmsmain\/.*picker\/([^\/]*)\/?/ ); baseUrl = "/webapps/cmsmain/picker"; if ( principalId ) { baseUrl += "/" + principalId[ 1 ]; } if ( baseUrl.charAt( baseUrl.length - 1 ) === '/' ) { baseUrl = baseUrl.slice( 0, baseUrl.length - 1 ); } baseUrl += path; } return baseUrl + "?" + $H( queryParams ).toQueryString(); }; widget.FilePicker.openPermPicker = function( event, csPickerUrl, pid, path, pathElement, callback ) { if ( !( pid && $( pid ) && $( pid ).type == 'radio' && $( pid ).checked ) ) { return false; } var permPickerUrl = widget.FilePicker.getPermPickerUrl( csPickerUrl, path, pathElement ); var remote = popup.launchPicker( permPickerUrl ); if ( remote ) { if ( callback ) { remote.opener.customHandler = callback; } else { remote.opener.customHandler = null; } } var e = event || window.event; if ( e ) { var eventElement = Event.element( e ); Event.stop( e ); } return false; }; /** * A registry of defined file pickers and methods to access this registry */ widget.FilePicker.filePickers = {}; widget.FilePicker.registerFilePicker = function( filePicker ) { widget.FilePicker.filePickers[ filePicker.baseElementName ] = filePicker; }; widget.FilePicker.unRegisterFilePicker = function( filePicker ) { delete widget.FilePicker.filePickers[ filePicker.baseElementName ]; }; widget.FilePicker.getFilePicker = function( baseElementName ) { return widget.FilePicker.filePickers[ baseElementName ]; }; /** * Cell generators for the current attached files table */ widget.FilePicker.cellGenerators = { fileName : function( filePicker, isLocal ) { var result = '<input type="hidden" name="' + filePicker.baseElementName + '_attachmentType" value="' + ( isLocal ? 'L' : 'C' ) + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_fileId" value="new">'; if ( isLocal ) { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.getFileName( filePicker.localFilePicker.value ) + '</span>'; } else { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.linkTitle + '</span>'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFile" value="' + filePicker.fileName + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFileUrl" value="' + filePicker.fullUrlToFile + '">'; if ( filePicker.showAddMetadata ) { result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadata" id="' + filePicker.baseElementName + '_CSMetadata_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataSync" id="' + filePicker.baseElementName + '_CSMetadataSync_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataFormat" id="' + filePicker.baseElementName + '_CSMetadataFormat_' + filePicker.xythosId + '" value="">'; } } return result; }, fileType : function( filePicker, isLocal ) { var result = null; if ( isLocal ) { result = page.bundle.getString( "filePicker.fileType.attachment" ); } else { result = page.bundle.getString( "filePicker.fileType.content" ); } return result; }, linkTitle : function( filePicker, isLocal ) { var linkTitle = ""; if ( isLocal ) { linkTitle = filePicker.getFileName( filePicker.localFilePicker.value ); } else { if ( filePicker.linkTitle ) { linkTitle = filePicker.linkTitle; } } return '<input type="text" name="' + filePicker.baseElementName + '_linkTitle" value="' + linkTitle + '" title="' + page.bundle .getString( "filePicker.nameOfLink" ) + " " + linkTitle + '">'; }, size : function( filePicker, isLocal ) { if ( !isLocal && filePicker.size ) { return '<input type="hidden" name="' + filePicker.baseElementName + '_size" value="' + filePicker.size + '"> ' + filePicker.size; } else { return ""; } }, fileAction : function( filePicker, isLocal ) { return widget.FilePicker.cellGenerators.fileActionEmbedOptions( filePicker, isLocal, true ); }, fileActionEmbedOptions_index : 0, // used to uniquely identify embed options form elements on the page. fileActionEmbedOptions : function( filePicker, isLocal, suppressOptions ) { var index = widget.FilePicker.cellGenerators.fileActionEmbedOptions_index++; var baseName = filePicker.baseElementName; var fileName = isLocal ? filePicker.getFileName( filePicker.localFilePicker.value ) : filePicker.linkTitle; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. var isType = { image : ( /gif|jpeg|png|tif|bmp|jpg/i ).test( ext ), videoQt : ( /qt|mov|moov|movie/i ).test( ext ), videoOther : ( /avi|mpg|mpeg|wmv|asf|wma|mpe/i ).test( ext ), real : ( /ra|ram|rm/i ).test( ext ), flash : ( /swa|swf/i ).test( ext ), audio : ( /aif|aiff|au|mp3|wav/i ).test( ext ), html : ( /html|htm/i ).test( ext ) }; var isMedia = isType.image || isType.videoQt || isType.videoOther || isType.flash || isType.audio; var result = ''; if ( isMedia ) { result += '<select id="' + baseName + '_specialAction' + index + '" name="' + baseName + '_specialAction"'; result += ' title="' + page.bundle.getString( "filePicker.specialAction.for" ) + " " + fileName + '">'; result += '<option value="LINK">' + page.bundle.getString( "filePicker.specialAction.link" ) + '</option>'; result += '<option value="EMBED">' + page.bundle.getString( "filePicker.specialAction.embed" ) + '</option>'; result += '</select>'; // Render the embed options (if not suppressed) if ( !suppressOptions ) { result += '<ul style="display: none;" class="nestedList smallControls liveArea liveArea-slim" id="' + baseName + '_embedOptions' + index + '">'; // Alignment var fid = baseName + 'align' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.alignment' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_l" name="' + fid + '" value="Left" checked> <label for="' + fid + '_l">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.left' ) + '</label>' + '<input type="radio" id="' + fid + '_c" name="' + fid + '" value="Center"> <label for="' + fid + '_c">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.center' ) + '</label>' + '<input type="radio" id="' + fid + '_r" name="' + fid + '" value="Right"> <label for="' + fid + '_r">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.right' ) + '</label></fieldset></div></li>'; // Placement fid = baseName + 'placement' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.placement' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.placement' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_a" name="' + fid + '" value="Above"> <label for="' + fid + '_a">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.above' ) + '</label>' + '<input type="radio" id="' + fid + '_b" name="' + fid + '" value="Below" checked> <label for="' + fid + '_b">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.below' ) + '</label></fieldset></div></li>'; // Dimensions if ( !isType.audio ) { fid = baseName + 'width' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.width' ) + '</label></div><div class="field"><input class="width" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; fid = baseName + 'height' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.height' ) + '</label></div><div class="field"><input class="height" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; } // Autoplay if ( !isType.image ) { fid = baseName + 'autostart' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.autostart' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.autostart' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Loop if ( !isType.image && !isType.real ) { fid = baseName + 'loop' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.loop' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.loop' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + baseName + 'loop' + index + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Control (radio) if ( isType.videoQt || isType.real ) { fid = baseName + 'controls' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.controls' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="Full" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="None"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Controls (drop down) if ( isType.videoOther || isType.audio ) { fid = baseName + 'controls' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="controls">' + '<option value="None">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_none' ) + '</option>' + '<option value="Mini">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_mini' ) + '</option>' + '<option value="Full" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.controls_full' ) + '</option>' + '</select></div></li>'; } // Quality if ( isType.flash ) { fid = baseName + 'quality' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.set_quality' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="quality">' + '<option value="Low">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_low' ) + '</option>' + '<option value="Medium">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_med' ) + '</option>' + '<option value="High">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_high' ) + '</option>' + '<option value="Best" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.quality_best' ) + '</option>' + '</select></div></li>'; } if ( isType.image ) { // URL fid = baseName + 'url' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.url' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25">' + '</div></li>'; // New Window fid = baseName + 'newwin' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.new_window' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.new_window' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label>' + '</fieldset></div></li>'; // Border fid = baseName + 'border' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.border' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="border">' + '<option value="0" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.none' ) + '</option>' + '<option value="1>1</option><option value="2">2</option><option value="3">3</option>' + '<option value="4">4</option></select></div></li>'; } // Alt text fid = baseName + 'alttext' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25" value=""></div><span class="fieldHelp clearfloats">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text.instructions' ) + '</span></li>'; result += '</ul>'; } } else { result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialAction" value="LINK">'; result += page.bundle.getString( "filePicker.specialAction.link" ); } // The index is used to find the correct request parameters on the backend. result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialActionIndex" value="' + ( isMedia && !suppressOptions ? index : -1 ) + '">'; if ( filePicker.shouldManagePermission && !isLocal ) { // permission management options var permissionCsPickerUrl = filePicker.csPickerUrl; if ( permissionCsPickerUrl.indexOf( 'multipicker=true' ) != -1 ) { var xythosId = filePicker.fileName.sub( '/xid-', '' ).strip(); if ( xythosId ) { permissionCsPickerUrl = permissionCsPickerUrl + '&preselectedItemId=' + xythosId; } } result += '<ul id="' + filePicker.baseElementName + '_imgSpecOptions" class="nestedList smallControls liveArea liveArea-slim">'; result += '<li>'; var pid = baseName + "_permissions" + index; var pickerButtonId = baseName + "_permissionPickerButton" + index; var permFileListName = baseName + '_csPermFileList' + index; result += '<input type="radio" name="' + pid + '" value="A" id="' + pid + '_all" checked="checked" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.all" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="O" id="' + pid + '_this" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.this" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="S" id="' + pid + '_manual" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', true)" />' + page.bundle .getString( "fm.permission.grant.manual" ); result += '<a id="' + pickerButtonId + '" class="button-4 disabled" style="margin:0 3px" onclick="widget.FilePicker.openPermPicker( event, \'' + permissionCsPickerUrl + '\', \'' + pid + '_manual\',\'' + filePicker.filePath + '\', null, widget.FilePicker.permPickerCallback.curry( \'' + baseName + '\', \'' + permFileListName + '\', ' + index + ' ) );">' + page.bundle .getString( "filePicker.browse" ) + '</a>'; result += '</li>'; result += '</ul>'; result += '<div id="' + permFileListName + '" style="display: none;"></div>'; } result += '<input type="hidden" name="' + baseName + '_permissionOptionsIndex" value="' + ( isType.html && !isLocal ? index : -1 ) + '">'; return result; }, remove : function( filePicker, isLocal ) { var result = '<a href="#" onclick="widget.FilePicker.removePendingAttachment(event, this, '; result += "'" + filePicker.baseElementName + "'"; result += ');">' + page.bundle.getString( "filePicker.doNotAttach" ) + '</a>'; return result; }, // attach CS file alignment to course item align : function(filePicker, isLocal) { var alignOptionsName = "csAlignedResources"; var html = '<label for="csAlignedResources" style="white-space:nowrap">' + '<input type="checkbox" id="' + alignOptionsName + '"' + ' name="' + alignOptionsName + '"' + ' value="' + filePicker.filePath + '"' + '/>' + ' ' + page.bundle.getString('wysiwyg.insert_picture.csalign') + '</label>'; return html; } }; widget.InlineSingleCSFilePicker = Class.create(); widget.InlineSingleCSFilePicker.prototype = { initialize : function( baseElementName, csPickerUrl, showAddMetadata, showSpecialAction ) { this.baseElementName = baseElementName; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.browseButton = $( baseElementName + '_csBrowse' ); this.fileEntry = $( baseElementName + '_CSFile' ); this.fileId = $( baseElementName + '_fileId' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_CSMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_CSMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_CSFileMetadataFormat' ); } Event.observe( this.browseButton, 'click', this.onCSBrowse.bindAsEventListener( this ) ); }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = "picker" + new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.inputEntryURLToSet = this.fileEntry; this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.linkName = this.fileId; if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, afterMD : function( metadata, synced, format ) { var metadataString = metadata.join( "#" ); this.selectedCSFileMetadata.value = metadataString; this.selectedCSFileMetadataSync.value = synced; this.selectedCSFileMetadataFormat.value = format; } }; /** * Inline single local file picker - $baseElementName_attachmentType - 'AL' or 'L' or '' - $baseElementName_localBrowse - * $baseElementName_fileId */ widget.InlineSingleLocalFilePicker = Class.create(); widget.InlineSingleLocalFilePicker.prototype = { initialize : function( baseElementName, currentAttachedFile, required, showSpecialAction ) { this.baseElementName = baseElementName; this.fileInput = $( baseElementName + '_chooseLocalFile' ); this.fileInputWrapper = $( this.fileInput.parentNode ); this.attachmentType = $( baseElementName + '_attachmentType' ); this.fullFileName = $( baseElementName + '_fileId' ); this.attachmentNameSpan = $( baseElementName + '_attachmentName' ); this.removeLink = $( baseElementName + '_removeLink' ); this.inputArea = $( baseElementName + '_inputArea' ); this.attachedFileArea = $( baseElementName + '_attachedFileArea' ); this.required = required; this.showSpecialAction = showSpecialAction; // Wire up events Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); Event.observe( this.removeLink, "click", this.onRemoveClick.bindAsEventListener( this ) ); Event.observe( this.fileInput.form, "submit", this.onSubmit.bindAsEventListener( this ) ); // Set up initial values if ( currentAttachedFile ) { this.setDefaultCurrentAttachedFile( currentAttachedFile ); } widget.InlineSingleLocalFilePicker.pickerMap[ baseElementName ] = this; }, setCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, file ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, setDefaultCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentType._defaultValue = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } this.fullFileName.value = file; this.fullFileName._defaultValue = file; this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; this.fullFileName.value = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, onAfterChooseFile : function( event ) { this.attachmentNameSpan.innerHTML = this.getFileName( this.fileInput.value, true ); this.attachmentType.value = 'L'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fileInput.value ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); Event.stop( event ); }, onRemoveClick : function( event ) { this.clearFileInput(); if ( this.attachmentType.value == 'AL' ) { this.removeHiddenField = document.createElement( 'input' ); this.removeHiddenField.type = 'hidden'; this.removeHiddenField.name = this.baseElementName + '_remove'; this.removeHiddenField.id = this.baseElementName + '_remove'; this.removeHiddenField.value = this.fullFileName.value; this.attachedFileArea.insertBefore( this.removeHiddenField, this.attachedFileArea.firstChild ); widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fullFileName.value ); } else { this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); } this.attachmentNameSpan.innerHTML = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); Event.stop( event ); }, clearFileInput : function() { var title = this.fileInput.title; Element.remove( this.fileInput ); this.fileInput = $( document.createElement( "input" ) ); this.fileInput.title = title; this.fileInput.type = "file"; this.fileInput.addClassName( "hiddenInput" ); this.fileInput.name = this.baseElementName + '_LocalFile0'; this.fileInput._defaultValue = ''; this.fileInputWrapper.insertBefore( this.fileInput, this.fileInputWrapper.firstChild ); Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); }, /** * Gets the file name based on the full file path. * * @param fullPath Fully-qualified path of file * @param isDecodedName (optional) Indicates that the filename has already been URL decoded */ getFileName : function( fullPath, isDecodedName ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return isDecodedName ? result : decodeURI( result ); }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.fullFileName.value == '' ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); Event.stop( event ); return; } } } }; widget.InlineSingleLocalFilePicker.pickerMap = {}; /** * Read Only File picker */ widget.ReadOnlyFilePicker = Class.create(); widget.ReadOnlyFilePicker.prototype = { /** * Creates a new file picker * * @param baseElementName the base name for the file picker elements */ initialize : function( baseElementName ) { this.baseElementName = baseElementName; this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } widget.ReadOnlyFilePicker.pickerMap[ baseElementName ] = this; } }; widget.ReadOnlyFilePicker.pickerMap = {}; widget.UserRoleSelect = Class.create(); widget.UserRoleSelect.prototype = { initialize : function( userSelectRoleDivStr, moveMsgJS, noRoleMsgJs ) { this.sourceValueName = "_left_values"; this.secondaryValueName = "_right_values"; this.primaryValueName = "_primary_value"; this.userSelectRoleDiv = $( userSelectRoleDivStr ); if ( this.userSelectRoleDiv ) { var selects = this.userSelectRoleDiv.getElementsByTagName( 'select' ); var inputs = this.userSelectRoleDiv.getElementsByTagName( 'input' ); var links = this.userSelectRoleDiv.getElementsByTagName( 'a' ); this.source = $( selects[ 0 ] ); this.primary = $( inputs[ 3 ] ); this.secondary = $( selects[ 1 ] ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); this.primaryValue = $( inputs[ 2 ] ); this.toPrimaryMove = $( links[ 0 ] ); this.toSecondaryMove = $( links[ 1 ] ); this.toSourceMove = $( links[ 2 ] ); Event.observe( this.toSourceMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, false, moveMsgJS, noRoleMsgJs ) ); Event.observe( this.toPrimaryMove, "click", this.switchPrimary.bindAsEventListener( this, moveMsgJS ) ); Event.observe( this.toSecondaryMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, true, moveMsgJS, noRoleMsgJs ) ); } }, switchPrimary : function( event, msg ) { var indx; indx = 0; var sourceArray = this.source; if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } if ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.getFromPrimary(); this.primaryValue.value = sourceArray.options[ indx ].value; this.primary.value = sourceArray.options[ indx ].text; sourceArray.options[ indx ].selected = false; sourceArray.options[ indx ] = null; sourceArray.options[ sourceArray.length ] = tmpOpt; } this.writeToSelectBoxValues( this.source, this.leftValues ); return false; }, getFromPrimary : function() { var primaryRoleField = this.primaryValue; var primaryField = this.primary; return new Option( primaryField.value, primaryRoleField.value ); }, writeToSelectBoxValues : function( selectBox, hiddenName ) { var i = 0; var values = ""; while ( i < selectBox.length ) { if ( i > 0 ) { values += ","; } values += selectBox.options[ i ].value; i++; } hiddenName.value = values; return true; }, switchUserRoleColumns : function( event, isSourceDest, msg, noRoleMsg ) { var indx; indx = 0; var sourceArray = this.source; var targetArray = this.secondary; if ( !isSourceDest ) // If we are moving from Dest to Source { var temp = sourceArray; sourceArray = targetArray; targetArray = temp; } if ( sourceArray.length <= 0 ) { alert( noRoleMsg ); return false; } if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } var rightIndex = 0; var targetLength = targetArray.length; while ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.cloneMultipleRows( sourceArray.options[ indx ] ); if ( targetLength > 0 ) { var i = targetLength; while ( i > 0 ) { var tmpOpt1 = this.cloneMultipleRows( targetArray.options[ i + rightIndex - 1 ] ); targetArray.options[ i + rightIndex ] = tmpOpt1; i--; } } sourceArray.options[ indx ].selected = false; targetArray.options[ rightIndex ] = tmpOpt; // targetArray.options[rigthIndex].selected=true; rightIndex = rightIndex + 1; sourceArray.options[ indx ] = null; } // end of while this.writeToSelectBoxValues( this.source, this.leftValues ); this.writeToSelectBoxValues( this.secondary, this.rightValues ); return false; }, cloneMultipleRows : function( opt ) { return new Option( opt.text, opt.value, opt.defaultSelected, opt.selected ); } }; widget.StepGroup = {}; widget.StepGroup.toggleStepGroup = function( e, activeTabStr ) { var event = e || window.event; var target = Event.findElement( event, 'li' ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); $( 'activeTabSpanId_' + tab.id ).innerHTML = activeTabStr; } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); $( 'activeTabSpanId_' + tab.id ).innerHTML = ""; } } ); Event.stop( event ); }; /** * Show a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.showStepGroup = function( number ) { var target = $( 'stepGroupTab_' + number ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; /** * Get the content block element to a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.getStepGroupContentBlock = function( number ) { var targetTab = $( 'stepGroupTab_' + number ); return $( targetTab.getAttribute( "bb:groupId" ) ); }; widget.StepGroup.showAllStepGroupsForSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } ); }; widget.StepGroup.revertAllStepGroupsAfterSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { if ( page.util.hasClassName( tab, 'active' ) ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } else { $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; widget.ShowUnsavedChanges = Class.create(); widget.ShowUnsavedChanges.prototype = { initialize : function( dataCollectionContainer, skipTextArea ) { widget.ShowUnsavedChanges.enabled = true; widget.ShowUnsavedChanges.registerOnValueChangeCallback( widget.ShowUnsavedChanges.showIconsForUnsavedChanges ); var container = $( dataCollectionContainer ); var inputs = $A( container.getElementsByTagName( 'input' ) ); var selects = $A( container.getElementsByTagName( 'select' ) ); var textareas = $A( container.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { input = $( input ); var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { input._defaultValue = input.checked; } else if ( type == 'hidden' || type == 'text' ) { input._defaultValue = input.value; } else { input._defaultValue = ''; } if ( type != 'hidden' && type != 'button' && type != 'submit' ) { input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); } }.bind( this ) ); selects.each( function( input ) // TODO: multiselect? { input = $( input ); input._defaultValue = input.selectedIndex; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); if ( !skipTextArea || !skipTextArea ) { textareas.each( function( input ) { input = $( input ); input._defaultValue = input.value; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); } } }; widget.ShowUnsavedChanges.onValueChangeCallback = function() { }; // do nothing widget.ShowUnsavedChanges.registerOnValueChangeCallback = function( callbackFunction ) { widget.ShowUnsavedChanges.onValueChangeCallback = callbackFunction; }; widget.ShowUnsavedChanges.dataElementsByStepGroup = {}; widget.ShowUnsavedChanges.onValueChange = function( event, elem ) { if ( widget.ShowUnsavedChanges.enabled ) { var dataElement = null; if ( event ) { dataElement = Event.findElement( event, 'li' ); } else { dataElement = elem.parentNode; while ( dataElement && dataElement.tagName.toLowerCase() != 'li' ) { dataElement = dataElement.parentNode; if ( dataElement.tagName.toLowerCase() == 'body' ) { dataElement = null; } } if ( dataElement ) { dataElement = $( dataElement ); } } if ( !dataElement ) { return; } var isDefault = true; var inputs = $A( dataElement.getElementsByTagName( 'input' ) ); var selects = $A( dataElement.getElementsByTagName( 'select' ) ); var textareas = $A( dataElement.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { isDefault &= ( input.checked == input._defaultValue ); } else if ( type == 'hidden' || type == 'text' ) { isDefault &= ( input.value == input._defaultValue ); } } ); selects.each( function( input ) // TODO: multiselect? { isDefault &= ( input.selectedIndex == input._defaultValue ); } ); textareas.each( function( input ) { isDefault &= ( input.value == input._defaultValue ); } ); // trigger call back function widget.ShowUnsavedChanges.onValueChangeCallback( isDefault, dataElement ); } }; widget.ShowUnsavedChanges.showIconsForUnsavedChanges = function( isDefault, dataElement ) { var imgs = dataElement.getElementsByTagName( 'img' ); var unsavedImg = null; for ( var i = 0; i < imgs.length; i++ ) { if ( imgs[ i ].className.indexOf( 'unsavedChangeImg' ) >= 0 ) { unsavedImg = $( imgs[ i ] ); break; } } if ( unsavedImg ) { if ( isDefault ) { dataElement.removeClassName( 'dirty' ); unsavedImg.hide(); } else { dataElement.addClassName( 'dirty' ); unsavedImg.show(); } widget.ShowUnsavedChanges.updateStepGroupIndicator(); } }; widget.ShowUnsavedChanges.updateStepGroupIndicator = function() { if ( widget.ShowUnsavedChanges.enabled ) { // Loop through each step group tab, and determine if an icon that indicates // unsaved changes should be displayed in the tab itself $$( '#dataCollectionContainer ul li.stepGroupTab' ).each( function( tab ) { var stepGroup = $( tab.getAttribute( "bb:groupId" ) ); var img = $( tab.getElementsByTagName( 'img' )[ 0 ] ); var link = $( tab.getElementsByTagName( 'a' )[ 0 ] ); var dataElements = widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ]; if ( !dataElements ) { dataElements = stepGroup.getElementsByTagName( 'li' ); widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ] = dataElements; } var dirtyCount = 0; for ( var i = 0; i < dataElements.length; i++ ) { //If the data element is hidden, we do not want to include it in the count of dirty //data elements. Doing so could result in the dirty image on the step group displaying //with no child data elements that display as dirty. if ( dataElements[ i ].hasClassName( "dirty" ) && dataElements[ i ].getStyle( "display" ) !== "none" ) { dirtyCount++; } } if ( dirtyCount > 0 && !tab.isDirty ) { img.show(); link.setStyle( { 'paddingLeft' : '20px' } ); tab.isDirty = true; } else if ( dirtyCount === 0 && tab.isDirty ) { img.hide(); link.setStyle( { 'paddingLeft' : '' } ); tab.isDirty = false; } } ); } }; // Call this when the value of a hidden data element changes that you want to // show an indicator for. Otherwise changing the value of the hidden element directly will // not cause an indicator to show. widget.ShowUnsavedChanges.changeHiddenValue = function( hiddenElem, value ) { hiddenElem.value = value; if ( widget.ShowUnsavedChanges.enabled ) { widget.ShowUnsavedChanges.onValueChange( null, hiddenElem ); } }; widget.ShowUnsavedChanges.enabled = false; /** * Supports a counter widget attached to a textbox -- it keeps track of the number of characters in the text box, and * updates a counter whenever that number changes. The counter turns red, and begins counting backwards, when the max * number of charters is exceeded. */ widget.TextBoxCounter = Class.create(); widget.TextBoxCounter.prototype = { /** * Contructor * * @param textBoxId The id of the textbox we're counting from * @param counterId The id of the element that countains the count * @param maxCharCount The max number of characters supported by this textbox * @param charactersRemainingLabel The label for the character count element * @param charactersOverLimitLabel The alternate label for the character element, for when the max # of characters * has been exceeded. */ initialize : function( textBoxId, counterId, maxCharCount, charactersRemainingLabel, charactersOverLimitLabel ) { this.textBoxElement = $( textBoxId ); this.counterElement = $( counterId ); this.maxCharCount = maxCharCount; this.countLabelElement = this.counterElement.up().childNodes[ 0 ]; this.charactersRemainingLabel = charactersRemainingLabel; this.charactersOverLimitLabel = charactersOverLimitLabel; // watch all keystrokes in the text area, and update the counter accordingly this.textBoxElement.observe( 'keyup', this.updateCount.bindAsEventListener( this ) ); // update the initial count this.updateCount(); this.registerCounter( textBoxId ); }, /** * Registers the current counter with the document, so that it can be accessed from anywhere on the page. * * @param id The id with which this counter can be accessed */ registerCounter : function( id ) { if ( !widget.TextBoxCounter.counters ) { widget.TextBoxCounter.counters = []; } widget.TextBoxCounter.counters[ id ] = this; }, /** * Update the counter. * * @param event The event that prompted this update, if any. */ updateCount : function( event ) { var chars = this.textBoxElement.value.length; // max character count exceeded if ( chars > this.maxCharCount ) { this.counterElement.update( chars - this.maxCharCount ).addClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersOverLimitLabel; } // max character count not exceeded else if ( chars <= this.maxCharCount ) { this.counterElement.update( this.maxCharCount - chars ).removeClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersRemainingLabel; } } }; widget.ColorPalettePicker = Class.create(); widget.ColorPalettePicker.prototype = { initialize : function( onChange, themeChangeElementId ) { widget.ColorPalettePicker.picker = this; this.onChange = onChange; var palettes = []; $A( $( 'paletteLibraryPanel' ).getElementsByTagName( 'li' ) ).each( function( li ) { if ( page.util.hasClassName( li, 'palette' ) ) { palettes.push( $( li ) ); } } ); this.palettes = palettes; this.libraryOpen = false; this.paletteLibraryPanel = $( 'paletteLibraryPanel' ); this.paletteLibraryButton = $( 'paletteLibraryButton' ); var updateHandler = this.updateCurrentSelection.bindAsEventListener( this ); // this.paletteLibraryPanel.toggleLibrary(); if ( this.palettes ) { this.palettes.each( function( palette ) { Event.observe( palette, "click", updateHandler ); } ); } if ( this.paletteLibraryButton ) { Event.observe( 'paletteLibraryButtonLink', "click", this.toggleLibrary.bindAsEventListener( this ) ); } if ( themeChangeElementId !== "" ) { Event.observe( themeChangeElementId, "change", this.changePaletteThemeTypeStyles.bindAsEventListener( this ) ); } }, changePaletteThemeTypeStyles : function( event ) { var dropdown = event.currentTarget; var themeExtRef = $F( dropdown ); var extRefToThemeTypeJson = $F( "themeExtRefToThemeTypeJson" ); var extRefToThemeTypeMap = this.convertJsonToObject( decodeURIComponent( extRefToThemeTypeJson ) ); var themeType = extRefToThemeTypeMap[themeExtRef]; var mapKey = null; this.palettes.each( function( palette ) { if( palette.id === "currentsystemthemecolorpalette" ) { mapKey = "theme_type_" + themeExtRef; } else { if( themeType !== null ) { mapKey = "theme_type_" + themeType; } else { mapKey = "theme_type_"; } } var styleJson = $F( palette.down('input[type=hidden]') ); var styleMap = this.convertJsonToObject( decodeURIComponent( styleJson ) ); var schemePreviewStyle = styleMap[mapKey]['schemePreview']; var schemePreviewHeadStyle = styleMap[mapKey]['schemePreviewHead']; var schemePreviewBodyStyle = styleMap[mapKey]['schemePreviewBody']; var modulePreviewStyle = styleMap[mapKey]['moduleBorder']; var modulePreviewHeadStyle = styleMap[mapKey]['moduleTitle']; var modulePreviewBodyStyle = styleMap[mapKey]['moduleBody']; palette.down('.schemePreview').writeAttribute("style", schemePreviewStyle); palette.down('.schemePreviewHead').writeAttribute("style", schemePreviewHeadStyle); palette.down('.schemePreviewBody').writeAttribute("style", schemePreviewBodyStyle); palette.down('.modulePreview').writeAttribute("style", modulePreviewStyle); palette.down('.modulePreviewHead').writeAttribute("style", modulePreviewHeadStyle); palette.down('.modulePreviewBody').writeAttribute("style", modulePreviewBodyStyle); }, this ); }, convertJsonToObject : function( json ) { if ( typeof ( JSON ) === 'object' && typeof ( JSON.parse ) === 'function' ) { return JSON.parse( json ); } else { return eval( '(' + json + ')' ); } }, toggleLibrary : function( event ) { var img = this.paletteLibraryButton.getElementsByTagName( 'img' )[ 0 ]; if ( this.libraryOpen ) { // Collapse the library. img.src = "/images/db/p.gif"; img.alt = page.bundle.getString( "dynamictree.expand" ); this.paletteLibraryPanel.hide(); this.libraryOpen = false; } else { // Expand the library. img.src = "/images/db/m.gif"; img.alt = page.bundle.getString( "dynamictree.collapse" ); this.paletteLibraryPanel.show(); this.libraryOpen = true; } // stop the event if exists; there will not be an event if called on page onLoad if ( event ) { Event.stop( event ); } }, selectColorPaletteByExtRef : function( extRef ) { var eventElement = $( extRef ); this.selectColorPaletteByElement( eventElement ); }, selectColorPaletteByElement : function( eventElement ) { this.palettes.each( function( p ) { if ( p.hasClassName( "selected" ) ) { p.removeClassName( 'selected' ); } } ); var selPal = eventElement; while ( selPal && selPal.tagName != 'LI' ) { selPal = selPal.parentNode; if ( selPal.tagName == 'BODY' ) { selPal = null; } } selPal.addClassName( 'selected' ); widget.ShowUnsavedChanges.changeHiddenValue( $( 'currentPaletteExtRef' ), selPal.id == 'currentsystemthemecolorpalette' ? '' : selPal.id ); eval( this.onChange ); $( 'currentPaletteLabel' ).update( $( selPal.id + '_label' ).innerHTML ); this.copyStyles( selPal.down( '.schemePreview' ), $( 'currentPalettePreview' ) ); this.copyStyles( selPal.down( '.schemePreviewHead' ), $( 'currentPalettePreviewHead' ) ); this.copyStyles( selPal.down( '.schemePreviewBody' ), $( 'currentPalettePreviewBody' ) ); this.copyStyles( selPal.down( '.modulePreview' ), $( 'currentModulePalettePreview' ) ); this.copyStyles( selPal.down( '.modulePreviewHead' ), $( 'currentModulePalettePreviewHead' ) ); this.copyStyles( selPal.down( '.modulePreviewBody' ), $( 'currentModulePalettePreviewBody' ) ); $( 'selectedPalette' ).show(); }, updateCurrentSelection : function( event ) { var eventElement = Event.element( event ); this.selectColorPaletteByElement( eventElement ); Event.stop( event ); }, copyStyles : function( s, d ) { d.style.cssText = s.style.cssText; } }; widget.ColorPalettePicker.picker = null; /** * node picker */ widget.MINodePicker = Class.create(); /** Constants used for the picker */ widget.MINodePicker.Constants = { EXISTING_NODE_SUFFIX : "", EXISTING_NODE_DELETE_SUFFIX : "", NEW_NODE_SUFFIX : "" }; widget.MINodePicker.prototype = { initConstants : function() { widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeSuffix" ); widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeDeleteSuffix" ); widget.MINodePicker.Constants.NEW_NODE_SUFFIX = page.bundle.getString( "nodePicker.const.newNodeSuffix" ); }, /** * Creates a new node picker * * @param baseElementName the base name for the node picker elements * @param pickerList the javascript object representing the picker list (of currently attached files) * @param allowMultipleSelect boolean indicating whether the picker should allow single or multiple select * @param entitlements comma delimited list of entitlement UIDs in which to check on node search * @param popupInstructions key value pair of bundle name and bundle key for instructions to be displayed in the pop * up * @param addPrimaryEntitlement Entitlement required to display primary radio button. * @param removeNodeEntitlement Entitlement required to display remove node link. */ initialize : function( baseElementName, pickerList, allowMultipleSelect, entitlements, popupInstructions, addPrimaryEntitlement, removeNodeEntitlement ) { this.initConstants(); this.baseElementName = baseElementName; this.allowMultipleSelect = allowMultipleSelect; this.entitlements = entitlements; this.nodePickerPopupButton = $( this.baseElementName + '_nodeBrowseButton' ); this.nodePickerUrl = "/webapps/blackboard/execute/institutionalHierarchy/nodePicker?cmd=openPicker&allowMultipleSelect=" + this.allowMultipleSelect + "&instructionKey=" + popupInstructions + "&entitlements=" + this.entitlements + "&addPrimaryEntitlement=" + addPrimaryEntitlement + "&removeNodeEntitlement=" + removeNodeEntitlement; Event.observe( this.nodePickerPopupButton, "click", this.onNodeBrowse.bindAsEventListener( this ) ); this.pickerList = pickerList; this.selectedNodesListContainer = $( this.baseElementName + '_listHtml' ); // make sure that all removedNodes are hidden var removedNodes = this.selectedNodesListContainer .getElementsBySelector( 'input[name=' + this.baseElementName + widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX + ']' ); removedNodes.each( function( node ) { node.up( 'tr' ).hide(); } ); var showList; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { showList = this.selectedNodesListContainer && this.pickerList && this.pickerList.tableBody && !this.pickerList.tableBody .empty(); } // For single node picker, the attached node is contained within a span element else { showList = this.selectedNodesListContainer && this.selectedNodesListContainer.select( "input.selectedNodeData" ) && this.pickerList; } if ( this.pickerList && this.pickerList.tableBody ) { // If no visible row then hide the table label and headers. if ( !this.pickerList.tableBody.select( "tr" ).any( function( row ) { return row.visible(); } ) ) { showList = false; } } this.showHideSelectedNodesList( showList ); widget.MINodePicker.registerNodePicker( this ); }, /** * Pop up the node search window from which to pick nodes */ onNodeBrowse : function( event ) { this.nodePickerWindow = null; var windowId = new Date().getTime(); if ( $( 'primaryNodeIdStr' ) ) { this.nodePickerUrl += '&primaryNodeIdStr=' + $F( 'primaryNodeIdStr' ); } if ( $( 'objectType' ) ) { this.nodePickerUrl += '&objectType=' + $F( 'objectType' ); } this.nodePickerWindow = popup.launchPicker( this.nodePickerUrl, windowId ); if ( this.nodePickerWindow ) { this.nodePickerWindow.opener.customHandler = this.onNodePick.bind( this ); } Event.stop( event ); }, /** * Callback called after node(s) have been selected from the node picker pop up. This method updates the UI list of * currently select nodes. * * @param selectedNodesObjArr The array of currently selected nodes from the picker */ onNodePick : function( selectedNodesObjArr ) { this.showHideSelectedNodesList( true ); var existingNodes; if ( this.allowMultipleSelect ) { // Array of existing selected nodes in the node picker list existingNodes = this.selectedNodesListContainer.down( "tbody" ).select( "input.selectedNodeData" ); } else { // Existing selected node in the node picker list for single node picker existingNodes = this.selectedNodesListContainer.select( "input.selectedNodeData" ); } // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. if ( selectedNodesObjArr && selectedNodesObjArr.length !== 0 ) { // Switch the radio button selection to Create hierarchy under the specified entity (for single node pickers) if ( $( "selectedRoot" ) ) { $( "selectedRoot" ).checked = true; } } /* * For each selected node, add the node to the list if it is a newly selected node, otherwise unhide the node if * it is an existing selection that has been marked for delete. Specifically: - If node is an existing selected * node and marked for delete and hidden, then unmark and show - If node is an existing selected node and not * marked for delete and showing, then do nothing - If node is a newly selected node and is not already there, add * the row - If node is a newly selected node and is already there, then do nothing */ selectedNodesObjArr.each( function( node ) { // See if the picked node is already in the list of nodes var existingNode; existingNodes.each( function( inputEle ) { if ( node.nodeIdStr === inputEle.value ) { existingNode = inputEle; if ( existingNode.disabled && existingNode.checked ) { // If its a disabled primary node then restore the value of it in hidden param. $( this.baseElementName + '_disabledPrimaryNode' ).value = node.nodeIdStr; } throw $break; } } ); // If not, then add this newly picked node to list if ( !existingNode ) { var primaryRadioChecked; var existingPrimaryNodeRadios = this.selectedNodesListContainer .select( 'input[name=' + this.baseElementName + '_PrimaryNode]' ); if ( existingPrimaryNodeRadios.all( function( radio ) { return !radio.checked; } ) ) { primaryRadioChecked = true; } // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { // This calls the cell generator methods for each column in the "currently selected nodes" list this.pickerList.addRow( this.baseElementName, node, this.nodePickerWindow, primaryRadioChecked ); } // For single node picker, the attached node is contained within a span element else { this.selectedNodesListContainer.innerHTML = ""; this.pickerList.cellGenerators.each( function( generator, index ) { var args = []; args.push( this.baseElementName, node, this.nodePickerWindow ); this.selectedNodesListContainer.innerHTML += generator.apply( window, args ); }.bind( this ) ); } } else { /* * If picked node is already in the list AND is an existing selected node that is marked for delete and * hidden, then unmark node and show in list. */ if ( existingNode.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ) ) { existingNode.name = existingNode.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ); if ( this.allowMultipleSelect ) { existingNode.up( "tr" ).show(); } } } }.bind( this ) ); }, /** * Shows or hides the selected nodes list * * @param show boolean to indicate show or hide */ showHideSelectedNodesList : function( show ) { if ( this.selectedNodesListContainer ) { return show ? this.selectedNodesListContainer.show() : this.selectedNodesListContainer.hide(); } } }; /** * Removes the specified node selection from the list. Should be called from an onclick handler on a link in the * currently selected nodes table. */ widget.MINodePicker.removeSelectedNode = function( event, removeLink, baseElementName ) { var e = event || window.event; // Have user confirm removal of selected node if ( confirm( page.bundle.getString( "nodePicker.nodeRemoveConfirmMsg" ) ) ) { var visibleRows = []; var picker = widget.MINodePicker.getNodePicker( baseElementName ); var hiddenNodeDataEle; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( picker.allowMultipleSelect ) { // Get references to DOM elements in the list removeLink = $( removeLink ); var rowToHideRemove = removeLink.up( "tr" ); var tbodyEle = rowToHideRemove.up( "tbody" ); hiddenNodeDataEle = rowToHideRemove.down( "input.selectedNodeData" ); var primaryNodeRadioSelector = 'input[name=' + baseElementName + '_PrimaryNode]'; var primaryNodeRadioInCurrentRow = rowToHideRemove.down( primaryNodeRadioSelector ); if ( primaryNodeRadioInCurrentRow ) { // Check if removed node is selected as a primary node if ( primaryNodeRadioInCurrentRow.checked ) { if ( primaryNodeRadioInCurrentRow.disabled ) { // A disabled primary node is removed from UI then nullify the value of hidden param storing its value. $( baseElementName + '_disabledPrimaryNode' ).value = ''; } else { // Get the next node which is not checked as primary and is enabled. var nextNode = picker.selectedNodesListContainer.select( primaryNodeRadioSelector ).find( function( radio ) { return ( !radio.checked && !radio.disabled && radio.up( 'tr' ).visible() ); } ); if ( nextNode ) { nextNode.checked = true; } else { // In case there's no next node with primary node radio button, then uncheck current primary manually primaryNodeRadioInCurrentRow.checked = false; } } } } // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); // hide rowToHideRemove.hide(); } // If is a newly selected node else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { // remove the row from the DOM Element.remove( rowToHideRemove ); } tbodyEle.select( "tr" ).each( function( row ) { if ( row.visible() ) { visibleRows.push( row ); } } ); } // For single node picker, the attached node is contained within a span element else { hiddenNodeDataEle = picker.selectedNodesListContainer.down( "input.selectedNodeData" ); // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); } // If is a newly selected node, clear the span content else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { picker.selectedNodesListContainer.innerHTML = ""; } } // If there are no more selected nodes, hide some UI elements if ( visibleRows.length === 0 ) { // Hide the whole selected nodes table picker.showHideSelectedNodesList( false ); // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. // Switch the radio button selection to Create hierarchy under the top level (for single node pickers) if ( $( "topLevelRoot" ) ) { $( "topLevelRoot" ).checked = true; } } } Event.stop( e ); }; /** * A registry of defined node pickers and methods to access this registry */ widget.MINodePicker.nodePickers = {}; widget.MINodePicker.registerNodePicker = function( nodePicker ) { widget.MINodePicker.nodePickers[ nodePicker.baseElementName ] = nodePicker; }; widget.MINodePicker.unRegisterNodePicker = function( nodePicker ) { delete widget.MINodePicker.nodePickers[ nodePicker.baseElementName ]; }; widget.MINodePicker.getNodePicker = function( baseElementName ) { return widget.MINodePicker.nodePickers[ baseElementName ]; }; /** * Cell generators for the currently selected nodes table. Mostly copies what is in multiInstNodePickerListElement.vm. */ widget.MINodePicker.cellGenerators = { /** * Dynamic rendering of a cell in the node "Name" column */ nodeName : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { var result = '<input type="hidden" name="' + pickerNameStr + widget.MINodePicker.Constants.NEW_NODE_SUFFIX + '" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData">'; result += '<img src="/images/ci/ng/entity_small.png" alt="">'; result += selectedNodeObj.nodeName; return result; }, /** * Dynamic rendering of a cell in the node "Primary Node" column */ nodePrimary : function( pickerNameStr, selectedNodeObj, nodePickerWindow, primaryRadioChecked ) { var result = '<input type="radio" id="' + selectedNodeObj.nodeIdStr + '_Primary' + '" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData"'; if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' ) { result += ' disabled'; } if ( primaryRadioChecked ) { result += ' checked'; } result += ' >'; // Since values of disabled radio element doesn't go through the request, adding hidden param here to store its // value. if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' && primaryRadioChecked ) { result += '<input type="hidden" id="' + pickerNameStr + '_disabledPrimaryNode" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" />'; } return result; }, /** * Dynamic rendering of a cell in the remove node column */ nodeRemove : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_canRemoveObject' ).value == 'true' ) { var result = '<img src="/images/ci/icons/x_ia.gif" alt="">'; result += '<a href="#" onclick="widget.MINodePicker.removeSelectedNode(event, this, '; result += "'" + pickerNameStr + "');"; result += '">' + page.bundle.getString( "nodePicker.nodeRemoveLabel" ); result += '</a>'; return result; } else { return ''; } } };

Take Test MC Exercises Sentences Parallelism, 1.mht

Current Location

Take Test: MC Exercises: Sentences: Parallelism, 1

Content

Assistive Technology Tips [opens in new window]

Instructions

Description
Instructions

Read the following instructions carefully!

For each of the following items, select the answer that demonstrates parallelism. If the original sentence uses parallel structure correctly, select c. No change.

Multiple Attempts This Test allows multiple attempts.
Force Completion This Test can be saved and resumed later.

Collapse Question Completion Status:

1Question Incomplete 2Question Incomplete 3Question Incomplete 4Question Incomplete 5Question Incomplete 6Question Incomplete 7Question Incomplete 8Question Incomplete 9Question Incomplete 10Question Incomplete

Question 1

  1.   To do well on final exams, students should not only study every day but also be getting enough sleep. Answer
    To do well on final exams, students should not only have studied every day but also sleep enough.
    To do well on final exams, students should not only study every day but also get enough sleep.
    No change.

10 points  

Question 2

  1.   The perky Labrador retriever charged through the yard, did go down the hill, and went after the squirrels. Answer
    The perky Labrador retriever charged through the yard, down the hill, and after the squirrels.
    The perky Labrador retriever was charging through the yard, went down the hill, and chased the squirrels.
    No change.

10 points  

Question 3

  1.   When a police officer stops you for speeding, you should apologize, be polite, and find your driver’s license. Answer
    When a police officer stops you for speeding, you should try apologizing, be making an effort to be polite, and try to find your driver’s license.
    When a police officer stops you for speeding, you should be apologetic, try to be polite, and to find your driver’s license.
    No change.

10 points  

Question 4

  1.   Growing tomatoes in my yard requires three things: a sunny location, some soil that has been well cultivated, and keeping deer out with a wire fence. Answer
    Growing tomatoes in my yard requires three things: a sunny location, some well-cultivated soil, and a wire fence to keep out the deer.
    Growing tomatoes in my yard requires three things: plenty of sun, cultivating the soil well, and a wire fence for keeping the deer away.
    No change.

10 points  

Question 5

  1.   Tips for using presentation software: ·      Lists rather than paragraphs. ·      Amount of information on a slide. ·      Be sure the type is large enough for the audience to read. Answer
    Tips for using presentation software: ·      Use lists rather than paragraphs. ·      Don’t put too much information on a slide. ·      Be sure the type is large enough for the audience to read.
    Tips for using presentation software: ·      Why lists are better than paragraphs. ·      Don’t put too much information on a slide. ·      Why large type is a good idea.
    No change.

10 points  

Question 6

  1.   My wealthy aunt works hard every day, as she polishes her nails, and is chatting with friends, and is reading romance novels. Answer
    My wealthy aunt works hard every day, as she polishes her nails, chats with friends, and reads romance novels.
    My wealthy aunt works hard every day, as she is polishing her nails, and she chats with friends and reads romance novels.
    No change.

10 points  

Question 7

  1.   A text can be presented in paragraphs—or in the form of lists, tables, charts, as graphs, and so on. Answer
    A text can be presented in paragraphs—or in the form of lists, or on a table, charts, as graphs, and so on.
    A text can be presented in paragraphs—or in the form of lists, tables, charts, graphs, and so on.
    No change.

10 points  

Question 8

  1.   To finish her paper by tomorrow afternoon, Jayne needs either to work until midnight or she would have to get up early in the morning Answer
    To finish her paper by tomorrow afternoon, Jayne needs either to work until midnight or to get up early in the morning.
    To finish her paper by tomorrow afternoon, Jayne needs either to be working until midnight or to get up early in the morning.
    No change.

10 points  

Question 9

  1.   The Norton Field Guide offers the guidance many new teachers need and the flexibility wanted by many experienced teachers. Answer
    The Norton Field Guide offers guidance for new teachers and the flexibility many experienced teachers want.
    The Norton Field Guide offers the guidance many new teachers need and the flexibility many experienced teachers want.
    No change.

10 points  

Question 10

  1.   Evaluating the causes of the Civil War ·      Economic reasons ·      Cultures of North and South different ·      Understanding slavery Answer
    Evaluating the causes of the Civil War ·      Economic reasons were a factor. ·      Culture—North vs. South ·      Slavery as a moral issue
    Evaluating the causes of the Civil War ·      Economic reasons ·      Cultural factors ·      Slavery issues
    No change.

10 points  

 Save and Submit

Click Save and Submit to save and submit. Click Save All Answers to save all answers. Click Close Window to close window.

Links to Test Questions and Answers
Read question 1 Read answers for question 1 Read question 2 Read answers for question 2 Read question 3 Read answers for question 3 Read question 4 Read answers for question 4 Read question 5 Read answers for question 5 Read question 6 Read answers for question 6 Read question 7 Read answers for question 7 Read question 8 Read answers for question 8 Read question 9 Read answers for question 9 Read question 10 Read answers for question 10

@font-face { font-family: Utilicons; src:url(fonts/utilicons/utilicons-web-webfont.eot); } HTML { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } APPLET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OBJECT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IFRAME { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H1 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H2 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H5 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H6 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } P { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ABBR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ACRONYM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ADDRESS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BIG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CITE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CODE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DFN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } EM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } INS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } KBD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } Q { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } S { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SAMP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SMALL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRIKE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRONG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUB { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } VAR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FIELDSET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FORM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LABEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LEGEND { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CAPTION { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TBODY { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TFOOT { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } THEAD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TR { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TH { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } FONT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BACKGROUND: #fff } OL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } UL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } TABLE { BORDER-COLLAPSE: collapse } TH { FONT-WEIGHT: normal } CAPTION { TEXT-ALIGN: left } TH { TEXT-ALIGN: left } TD { TEXT-ALIGN: left } BLOCKQUOTE:before { CONTENT: "" } BLOCKQUOTE:after { CONTENT: "" } Q:before { CONTENT: "" } Q:after { CONTENT: "" } BLOCKQUOTE { QUOTES: "" "" } Q { QUOTES: "" "" } INPUT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } BUTTON { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } SELECT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } .field SELECT { MAX-WIDTH: 100% } .noLabelField SELECT { MAX-WIDTH: 100% } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px !important } .vtbegenerated IMG { FILTER: alpha(opacity=auto) !important; opacity: auto } .vtbegenerated UL { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated OL { LIST-STYLE-TYPE: decimal; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated LI { LIST-STYLE-POSITION: outside; DISPLAY: list-item } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL[type=circle] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type=disc] LI { LIST-STYLE-TYPE: disc } .vtbegenerated UL[type=square] LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 24px } .inlineVtbegenerated { DISPLAY: inline } .hideme { DISPLAY: none !important } .hidden { DISPLAY: none } .clearfloats { CLEAR: both } .hideoff { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; TOP: -1000px; LEFT: -10000px } .altHideoff1 { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; LEFT: -10000px } .boldme { FONT-WEIGHT: bold } .u_inlineStack { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > LI { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > DIV { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStack SELECT { MAX-WIDTH: 300px } .u_resetFont { FONT-SIZE: 100% } .u_reverseAlign { TEXT-ALIGN: right } .u_centerAlign { TEXT-ALIGN: center } .u_normalAlign { TEXT-ALIGN: left } .u_floatThis-right { FLOAT: right } .u_floatThis-left { FLOAT: left } .u_floatWrapper-right > DIV { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-right > LI { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-left > DIV { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LI { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LABEL { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_floatWrapper-right:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_controlsWrapper:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_clearFloatsWrapper > DIV { FLOAT: none !important } .u_clearFloatsWrapper > LI { FLOAT: none !important } .u_controlsWrapper { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .u_indent { MARGIN-LEFT: 24px !important } .u_scrollPanel-vertical { OVERFLOW-Y: auto } .u_panel-short { HEIGHT: 70px; MAX-HEIGHT: 100px } .u_panel-medium { HEIGHT: 70px; MAX-HEIGHT: 150px } .u_panel-long { HEIGHT: 70px; MAX-HEIGHT: 200px } HTML { HEIGHT: 100% } BODY { MIN-WIDTH: 1000px; HEIGHT: 100% } BODY.topFrame { OVERFLOW-Y: hidden; HEIGHT: 89px } BODY.filePicker { MIN-WIDTH: 400px } BODY.popup { MIN-WIDTH: 100% } .content-system-page { MIN-WIDTH: 780px } BODY.popup DIV.locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.csMenuFrame { MIN-WIDTH: 210px; WIDTH: 100% } BODY.popupMenu { MIN-WIDTH: 210px; WIDTH: 100% } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } H1 { FONT-WEIGHT: bold } H2 { FONT-WEIGHT: bold } H3 { FONT-WEIGHT: bold } H4 { FONT-WEIGHT: bold } H5 { FONT-WEIGHT: bold } H6 { FONT-WEIGHT: bold } STRONG { FONT-WEIGHT: bold } B { FONT-WEIGHT: bold } EM { FONT-STYLE: italic } TABLE.bouncer { WIDTH: 100% } TABLE.bouncer TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .brandingImgWrap { OVERFLOW: hidden } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { POSITION: relative; OVERFLOW-Y: hidden } .topTabs-compact { POSITION: relative } .topTabs .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs-compact .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs .tabWrapper-right .appTabs { FLOAT: right } .topTabs-compact .tabWrapper-right .appTabs { FLOAT: right } .breadcrumbs { POSITION: relative } .locationPane { POSITION: relative; MIN-WIDTH: 100%; ZOOM: 1; DISPLAY: inline-block; OVERFLOW: visible } .navigationPane { POSITION: absolute; WIDTH: 200px; ZOOM: 1; CLEAR: both; OVERFLOW: visible; TOP: 0px; LEFT: 0px } .menuWrap { POSITION: relative; ZOOM: 1 } .contentPane { MIN-WIDTH: auto; MARGIN: 0px 14px 0px 212px; ZOOM: 1; DISPLAY: block; OVERFLOW: visible } #puller { Z-INDEX: 3; POSITION: absolute } #puller A { WIDTH: 15px; DISPLAY: block; BACKGROUND: #ccc; HEIGHT: 30px } .contcollapsed { MARGIN-LEFT: 15px } .content { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .container { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .containerPortal { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .popup .container { MIN-HEIGHT: 400px } .container { OVERFLOW: visible } .containerOptions { OVERFLOW: visible } .column-1 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-2 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-3 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-4 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } column-5 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-1 { WIDTH: 100% } .column-2 { WIDTH: 50% } .column-3 { WIDTH: 33.3% } .column-4 { WIDTH: 25% } .column-5 { WIDTH: 20% } #lightbox .column-3 { MARGIN: 0px; MIN-HEIGHT: 200px !important } #lightbox .column-2 { MARGIN: 0px; MIN-HEIGHT: 200px !important } INPUT[type='submit'].submit { FONT-WEIGHT: bold } .mainButton A { FONT-WEIGHT: bold } .actionBarMicro .mainButton A { FONT-WEIGHT: bold } .rumble .mainButton > A { FONT-WEIGHT: bold } .rumble_top .mainButton > A { FONT-WEIGHT: bold } .button-1 { FONT-WEIGHT: bold } .button-1-img { FONT-WEIGHT: bold } .modeSwitchWrap { TOP: 6px; RIGHT: 0px; LEFT: auto } .modeSwitchWrap DIV { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .modeSwitch { POSITION: relative; DISPLAY: block; OVERFLOW: hidden } .read-on { MARGIN-RIGHT: 0px } A.read-off IMG { POSITION: absolute; BOTTOM: 0px; LEFT: 0px } A.read-on IMG { POSITION: absolute; BOTTOM: 0px; RIGHT: 0px } .switcherLabel { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .helpLink { POSITION: relative; TOP: 1px } .helpLink A.browseIcon { DISPLAY: inline-block } .vtbeSwitch { POSITION: relative; FLOAT: right } .vtbeSwitch SPAN { DISPLAY: inline-block } .fileInputWrapper { POSITION: relative; FLOAT: left; OVERFLOW: hidden } .fileInputWrapper INPUT.hiddenInput { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: right; FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 210%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px; opacity: 0 } .fileInputWrapper INPUT[type='file'] { FILTER: alpha(opacity=0) !important } .fileInputWrapper INPUT.visibleInput { Z-INDEX: 1; POSITION: relative; TOP: 0px; RIGHT: 0px } .frameResizeToggle { POSITION: absolute; BOTTOM: 0px; DISPLAY: block; OVERFLOW: hidden; LEFT: 0px; _top: 68px } A.colorChip { DISPLAY: inline-block } A.colorChip SPAN { DISPLAY: inline-block } .clearfix:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfixParent > *:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfix { DISPLAY: block } .clearfixParent > * { DISPLAY: block } INPUT[type='button'] { } INPUT[type='submit'] { } BUTTON { } FORM#content { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } .reorder { POSITION: absolute; CURSOR: move } .contextMenuContainer { ZOOM: 1 } .gbtable .contextMenuContainer { DISPLAY: inline } .gbtable_header .contextMenuContainer { DISPLAY: inline } .gbtable_header TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } .gbtable THEAD TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } A.cmimg { ZOOM: 1 } HTML { FONT: 300 0.78em "Lucida Grande", Arial, sans-serif } H1 { FONT-SIZE: 148% } H2 { FONT-SIZE: 123.1% } H3 { FONT-SIZE: 110% } H1 { MARGIN: 1em 0px } H2 { MARGIN: 1em 0px } H3 { MARGIN: 1em 0px } A { COLOR: #128fa8; TEXT-DECORATION: none } A:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } TABLE { FONT-SIZE: 100% } THEAD TH { FONT-WEIGHT: bold } #contentFrame { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } #schemePreview { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY.topFrame { BACKGROUND: #f7f7f7 } BODY.login-page { POSITION: relative; MIN-HEIGHT: 800px } BODY.popup { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } BODY.csMenuFrame { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } BODY.popupMenu { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } .csMenuFrame { FONT-SIZE: 95% } BODY.my-places-popup { MIN-WIDTH: 300px; WIDTH: auto; BACKGROUND: #fff } BODY.external-breadcrumbs { BACKGROUND-IMAGE: none } BODY.picker { MIN-WIDTH: 400px; BACKGROUND: #fff } .breadcrumbs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 9px; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .locationPane { MARGIN-TOP: 12px } BODY.picker .locationPane { MARGIN: 0px; DISPLAY: block } .csPicker .locationPane { DISPLAY: block } .navigationPane { MARGIN: 0px; WIDTH: 210px; TOP: 0px; LEFT: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .menuWrap { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .contentPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px 0px 222px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portalPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .popup .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .picker .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .course-tools-page #listContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 0px } .picker .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } .popup .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } #puller { Z-INDEX: 3; POSITION: absolute; BOTTOM: 1px; TOP: -1px; RIGHT: -8px; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A { BORDER-BOTTOM: #777 1px solid; POSITION: relative; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 8px; BACKGROUND: url(images/reorder_bg.png) #bbb repeat-y; HEIGHT: 100%; OVERFLOW: visible; BORDER-TOP: #777 1px solid; BORDER-RIGHT: #777 1px solid; opacity: 0; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0; box-shadow: 1px 0 3px rgba(0, 0, 0, 0.4) inset } .menuWrap:hover #puller A { FILTER: alpha(opacity=100); opacity: 1; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A:after { BORDER-BOTTOM: #666 1px solid; POSITION: absolute; FILTER: alpha(opacity=0) !important; BORDER-LEFT: #666 0px solid; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1; BACKGROUND-COLOR: #777; PADDING-LEFT: 1px; PADDING-RIGHT: 6px; DISPLAY: none !important; COLOR: #fff; FONT-SIZE: 180%; BORDER-TOP: #666 1px solid; CONTENT: "\2190"; TOP: 200px; RIGHT: -30px; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 3px; opacity: 0; -webkit-transition: opacity .5s ease-in-out; -moz-transition: opacity .5s ease-in-out; border-radius: 0 12px 12px 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, .5); transition: opacity .5s ease-in-out } .pullcollapsed#puller A { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #00add0; opacity: 1 } #puller A:hover { BACKGROUND-COLOR: #777 } #puller A IMG { POSITION: relative; FILTER: alpha(opacity=0)\9; PADDING-BOTTOM: 3px; PADDING-LEFT: 1px; WIDTH: 12px; PADDING-RIGHT: 6px; BACKGROUND: url(images/menu_expand_rtl.gif) no-repeat 0px 0px; HEIGHT: 24px; TOP: 200px; RIGHT: -9px; PADDING-TOP: 3px } .pullcollapsed#puller A:hover { BACKGROUND-COLOR: #777; -webkit-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller A:after { CONTENT: "\2192"; opacity: 0 } .pullcollapsed#puller A:hover:after { opacity: 1 } #puller A:hover:after { opacity: 1 } .pullcollapsed#puller A:hover IMG { FILTER: alpha(opacity=100) } #puller A:hover IMG { FILTER: alpha(opacity=100) } .pullcollapsed#puller A:hover IMG { BACKGROUND: url(images/menu_collapse_rtl.gif) no-repeat 0px 0px } .navcollapsed { MARGIN-LEFT: -210px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller { RIGHT: -10px; opacity: 1; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navcollapsed .menuWrap { DISPLAY: block !important } .contcollapsed { MARGIN-LEFT: 12px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #topFrame { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .bgBanner { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .brandingImgWrap { HEIGHT: 46px } .brandingImgWrap A { MARGIN: 8px 12px 0px; DISPLAY: inline-block } .bannerImage { MAX-HEIGHT: 35px } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #555; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 89px; PADDING-TOP: 0px; -moz-box-shadow: 0 -6px 17px #333 inset; -webkit-box-shadow: 0 -6px 17px #333 inset } .topTabs-compact { HEIGHT: 47px } .tabWrapper-left { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-center { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-right { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .appTabs { POSITION: relative; WIDTH: auto } .topTabs-compact .tabWrapper-left { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-center { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-right { PADDING-TOP: 20px } #topTab { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A SPAN { BORDER-BOTTOM: transparent 1px dotted; PADDING-BOTTOM: 1px } .topTabs-compact .appTabs A SPAN { PADDING-BOTTOM: 0px } .appTabs A:hover { COLOR: #fff } .appTabs A:focus { COLOR: #fff } .appTabs A:hover SPAN { BORDER-BOTTOM: #fff 1px double } .appTabs A:focus SPAN { BORDER-BOTTOM: #fff 1px double } #topTabActive { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:hover { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:focus { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:hover SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:focus SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .topTabs-compact .appTabs .active .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs .active A:hover .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs A { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:hover { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:focus { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .round1 A { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .round2 A { -moz-border-radius: 12px 12px 0 0; -webkit-border-radius: 12px 12px 0 0; border-radius: 12px 12px 0 0 } .topGlobalLinks { TEXT-ALIGN: right; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); FLOAT: right; FONT-SIZE: 90%; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .topGlobalLinks UL { Z-INDEX: 1001 } .topGlobalLinks UL LI { MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; COLOR: #ccc } .loggedInAs { POSITION: relative; FONT: italic 100% Georgia; COLOR: #999; BORDER-TOP: 0px } .loggedInAs IMG { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 18px !important; PADDING-RIGHT: 1px; DISPLAY: inline-block; HEIGHT: 18px !important; TOP: -2px; RIGHT: -9px; PADDING-TOP: 1px; LEFT: auto } .loggedInAs SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: inline-block; PADDING-TOP: 6px } .topGlobalLinks A { BACKGROUND-IMAGE: none !important; MIN-WIDTH: 18px; TEXT-ALIGN: left; PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline-block; COLOR: #ccc; PADDING-TOP: 6px } .topGlobalLinks UL LI:first-child A { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks UL LI:first-child { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks A .link-icon { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); WIDTH: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; FLOAT: right; HEIGHT: 16px; OVERFLOW: hidden } .topGlobalLinks .myPlaces .link-icon { BACKGROUND-POSITION: -113px 0px } .topGlobalLinks .myPlaces:hover .link-icon { BACKGROUND-POSITION: -113px -16px } .topGlobalLinks .home .link-icon { BACKGROUND-POSITION: -129px 0px } .topGlobalLinks .home:hover .link-icon { BACKGROUND-POSITION: -129px -16px } .topGlobalLinks .logout .link-icon { DISPLAY: none } .topGlobalLinks .logout { PADDING-BOTTOM: 6px; TEXT-INDENT: 0px; PADDING-LEFT: 9px; WIDTH: auto !important; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .topGlobalLinks .help .link-icon { BACKGROUND-POSITION: -145px 0px } .topGlobalLinks .help:hover .link-icon { BACKGROUND-POSITION: -145px -16px } .topGlobalLinks A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topGlobalLinks A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topTabs-compact .loggedInAs SPAN { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks A { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks .logout { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } UL.nav LI.sub UL.narrow LI A { TEXT-INDENT: -5px; FONT-SIZE: 90% } .hotItems { Z-INDEX: 10000; POSITION: relative; WIDTH: 240px; FLOAT: right; HEIGHT: 28px; COLOR: #666; MARGIN-LEFT: 6px; FONT-SIZE: 90% } .topTabs-compact .hotItems { DISPLAY: none } .hotItems .hotLinks { POSITION: absolute; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; MAX-HEIGHT: 46px; OVERFLOW: auto; RIGHT: 0px; PADDING-TOP: 4px; LEFT: 0px; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; border-radius: 0 0 0 4px } .hotItems .hotLinks LI { DISPLAY: inline } .hotItems .hotLinks A { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT: italic 100% Georgia; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; TEXT-DECORATION: none; PADDING-TOP: 3px } .hotItems .hotLinks LI:after { POSITION: relative; COLOR: #999; CONTENT: "\2022"; RIGHT: 1px } .hotItems .hotLinks LI A:hover { COLOR: #eee; TEXT-DECORATION: underline } .path { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px } .breadcrumbs .noToggle { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .simplePath LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .path .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .path .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .simplePath .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .path A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .simplePath A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .path A:hover { COLOR: #333; TEXT-DECORATION: underline } .simplePath A:hover { COLOR: #333; TEXT-DECORATION: underline } .path .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .simplePath .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .path .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .simplePath .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .path .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='course_id']:before { CONTENT: "H" } .simplePath .root A[href*='course_id']:before { CONTENT: "H" } .path .root A[href*='admin']:before { CONTENT: "S" } .simplePath .root A[href*='admin']:before { CONTENT: "S" } .path .root A[href*='tabId=']:before { CONTENT: "m" } .simplePath .root A[href*='tabId=']:before { CONTENT: "m" } .path .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .simplePath .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .simplePath .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .path .root A:hover:before { COLOR: #888 } .simplePath .root A:hover:before { COLOR: #888 } .path .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .simplePath .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .path LI.contextPath { PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contextPath > DIV { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath > DIV:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath:hover > DIV { opacity: 1 } .contextPath:hover > DIV:hover { opacity: 1 } .contextPath A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .courseArrow A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .contextPath A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .contextPath A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow { DISPLAY: inline-block } .courseArrow A { DISPLAY: inline-block } .coursePath:hover .courseArrow { opacity: 1 } .banner + .breadcrumbs { BACKGROUND-COLOR: inherit; MARGIN: 0px } .breadcrumb-controls { FLOAT: right } .content { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #contentArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } #schemePreviewBody { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .contentBox { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .popup .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .picker .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .portal .contentBox { -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15) } #contentArea { MARGIN: 0px; COLOR: #444 } .container { MARGIN: 0px; COLOR: #444 } .containerOptions { MARGIN: 0px; COLOR: #444 } .containerPortal { MARGIN: 0px; COLOR: #444 } .containerPortal { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .portal .container { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .containerOptions .searchbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } .containerOptions .liveArea { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } #addFolderForm { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } DIV.okContainer { POSITION: relative; PADDING-BOTTOM: 60px } DIV.ok DIV.container { POSITION: relative; PADDING-BOTTOM: 60px } .collabContainer { POSITION: relative; PADDING-BOTTOM: 60px } .column-1 { MARGIN: 6px 0px 0px } .column-2 { MARGIN: 6px 0px 0px } .column-3 { MARGIN: 6px 0px 0px } .column-4 { MARGIN: 6px 0px 0px } .column-5 { MARGIN: 6px 0px 0px } .leftColumn-narrow { MARGIN: -20px 0px 0px -30px; WIDTH: 22%; FLOAT: left; OVERFLOW: auto; BORDER-RIGHT: #ccc 3px double } .picker .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .picker #bb-question-discover .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .rightColumn-narrow { WIDTH: 22%; FLOAT: right; MARGIN-LEFT: 1% } .rightColumn-wide { WIDTH: 74%; FLOAT: right } .leftColumn-wide { BORDER-LEFT: #ccc 3px double; WIDTH: 76%; FLOAT: left; MARGIN-LEFT: -3px } .picker .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker #bb-question-discover .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker .leftColumn-wide H1 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #bb-question-discover .leftColumn-wide { BORDER-LEFT: #ccc 3px double; MARGIN: -20px -20px 0px -3px; WIDTH: 80% } #bb-question-discover .leftColumn-wide + .leftColumn-wide { BORDER-LEFT: medium none; MARGIN: 0px; WIDTH: auto } #bb-question-discover .leftColumn-narrow { WIDTH: 24% } .leftColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .rightColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .leftColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .rightColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .columnPalette H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .leftColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .rightColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .leftColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } .rightColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } A.itemHead:hover { TEXT-DECORATION: underline } .leftColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .rightColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .leftColumn-narrow H3.hideoff { MARGIN: 0px } .leftColumn-narrow .columnPalette:first-child { BORDER-TOP: 0px } .paletteGroup { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .columnPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .paletteGroup DIV.columnPalette { BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .paletteItems { MARGIN: 0px 0px 4px; FONT-SIZE: 95% } .paletteItems LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 16px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } .paletteItems DIV { MARGIN: 0px 0px 0px 16px } #searchForm .paletteItems LI { MARGIN: 0px 0px 0px 24px } .paletteItems LI A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 110%; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .paletteItems LI LABEL { PADDING-LEFT: 21px; DISPLAY: inline-block } .picker .paletteItems LI LABEL { FONT-SIZE: 94% } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } UL.paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI:hover { BACKGROUND: #fff } .paletteItems LI A:hover { TEXT-DECORATION: underline } .paletteItems LI.selectedItem { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.selectedItem:hover { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active:hover { BACKGROUND: #fff4bf; COLOR: #000 } .columnActions UL LI A { DISPLAY: block } #copyright { POSITION: relative; MARGIN: 16px 0px 0px 9px; DISPLAY: inline-block; FONT-SIZE: 82% } .newCopyright { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 12px; PADDING-TOP: 20px } .logo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .legal { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .additionalInfo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 0px; MIN-HEIGHT: auto; PADDING-LEFT: 9px; PADDING-RIGHT: 12px; PADDING-TOP: 9px } .logo { POSITION: absolute; MARGIN-TOP: -20px; LEFT: 0px } .logo IMG { WIDTH: 45px } .additionalInfo { FLOAT: none } .legal P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P:first-child { PADDING-BOTTOM: 0px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } .additionalInfo P:first-child:after { POSITION: relative; COLOR: #ccc; CONTENT: "\2022"; RIGHT: -1px } .additionalInfo P:first-child A { PADDING-RIGHT: 12px } .additionalInfo P:first-child A:hover { BACKGROUND: url(images/micro_popup.png) no-repeat right 2px } .productTitle A { TEXT-ALIGN: right; LINE-HEIGHT: 1.1em; DISPLAY: block; COLOR: #333; FONT-SIZE: 125%; FONT-WEIGHT: bold; TEXT-DECORATION: none } .productTitle A:hover { TEXT-DECORATION: underline } .additionalInfo A:hover { TEXT-DECORATION: underline } .copyrightDetailContents { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #777; MARGIN: 0px; MIN-HEIGHT: 5em; PADDING-LEFT: 24px; WIDTH: 740px; PADDING-RIGHT: 24px; DISPLAY: none; COLOR: #fff; CLEAR: left; BORDER-TOP: #555 1px solid; TOP: 0px; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 12px; LEFT: 0px; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); border-radius: 3px } .productImg { MARGIN-TOP: 5px; FLOAT: left } .copyrightDetailContents UL { TEXT-ALIGN: left; MARGIN: 4px 0px 0px 24px; FLOAT: left } .copyrightDetailContents UL LI SPAN { FONT-WEIGHT: bold } A.closeCopyright { POSITION: relative; FLOAT: right; TOP: -5px; RIGHT: -16px } .contentBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 1em; MARGIN: 0px 1em 0.6em; PADDING-LEFT: 1.4em; PADDING-RIGHT: 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0.6em } .contentBlock H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; MARGIN: 0px 0px 1em; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .contentBlock UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentBlock UL.threeCol { WIDTH: 30%; FLOAT: left } .contentBlock UL.threeCol LI { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px 3px; FLOAT: none; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contentBlock UL.threeCol LI A { BACKGROUND-IMAGE: none } .contentBlock UL.threeCol LI A:hover { TEXT-DECORATION: underline } .contentBlock UL.threeCol LI A:focus { TEXT-DECORATION: underline } .contentBlock H3 INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock H3 SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock OL LI INPUT[type='checkbox'] { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .contentBlock H3 A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock INPUT.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } DIV.landingListWrapper { TEXT-ALIGN: center; MARGIN: 1.6em 0px 0px } DIV.landingListWrapper UL.landingList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI { TEXT-ALIGN: left; MARGIN: 0px 0px 1.6em; WIDTH: 50% } DIV.landingListWrapper UL.landingList-2cols LI { TEXT-ALIGN: left; MARGIN: 0px 3em 1.6em 0px; WIDTH: 45%; FLOAT: left } DIV.landingListWrapper UL.landingList LI.restart { MARGIN-TOP: -13.6em } DIV.landingListWrapper UL.landingList LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList-2cols LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList LI UL { LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em } DIV.landingListWrapper UL.landingList LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; CLEAR: left; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #000; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .containerLanding { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } DIV.landing DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } BODY.landingBody DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } .inst-email DIV.landing DIV.container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } DIV.landingPageColumn { PADDING-BOTTOM: 0px; MARGIN: 1.2em 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .twoCol { MARGIN: 1.2em 0px; WIDTH: 49% } .threeCol { MARGIN: 1.2em 0px; WIDTH: 32.5% } .landingPageColumn UL { MARGIN: 0px 0px 0px 30px } .landingPageColumn .outcomesLanding { PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI { TEXT-ALIGN: left; MARGIN: 0px 0px 2.2em } .inst-email .landingPageColumn UL LI { MARGIN: 0px } .landingPageColumn .outcomesLanding LI { MARGIN: 0px 0px 1.2em } .landingPageColumn UL LI A { TEXT-DECORATION: none } .landingPageColumn UL LI A:hover { TEXT-DECORATION: underline } .landingPageColumn H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI H3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 115%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } .landingPageColumn .outcomesLanding LI P { BORDER-TOP: 0px } .landingPageColumn H3 IMG { MARGIN: 0px 0px 0px -12px } .landingPageColumn H3.hiddenlink IMG { POSITION: absolute; FILTER: alpha(opacity=40); TOP: 0px; LEFT: 1.1em; opacity: .4 } .landingPageColumn UL LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em; PADDING-LEFT: 1.6em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #555; PADDING-TOP: 1px } .landingPageColumn UL LI UL LI.more { PADDING-TOP: 3px } .landingPageColumn UL LI UL LI.more A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; COLOR: #555; PADDING-TOP: 0px } .landingPageColumn UL LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn H3.hiddenlink { POSITION: relative; PADDING-BOTTOM: 0.6em; PADDING-LEFT: 4.2em; PADDING-RIGHT: 1.2em; PADDING-TOP: 1em } .landingPageColumn H3.hiddenlink A { COLOR: #777; TEXT-DECORATION: none } .landingPageColumn H3.hiddenlink A:hover { COLOR: #777; TEXT-DECORATION: none } .subhead_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #333; FONT-SIZE: 90%; PADDING-TOP: 0px } .list_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 1.3em; PADDING-RIGHT: 2px; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .landingPageColumn .outcomesLanding .list_text A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 3px; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; HEIGHT: 360px; OVERFLOW: auto; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.datalist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.landingPageColumn UL LI UL.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 250px; OVERFLOW: auto; BORDER-TOP: medium none; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.datalistScroll LI { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: white; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.datalistScroll LI:hover { BACKGROUND-COLOR: #ffc } DIV.landingPageColumn UL LI UL.datalistScroll LI:focus { BACKGROUND-COLOR: #ffc } DIV.datalist TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } DIV.datalistScroll TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } .emptylist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: white; MARGIN: 6px 0px 0px 1.4em; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 12px } DIV.landingPageColumn UL LI UL.subcaret { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.subcaret LI { PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.complete { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_complete_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.inprogress { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_active_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } .iconLegendLabel { MARGIN: 1px 0px 1px 1.6em; FONT-SIZE: 95% } DIV.landingPageColumn UL LI UL.subcaret LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI UL.datalist LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI DIV A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI TABLE A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI P A { TEXT-DECORATION: underline } .genericButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .genericButtonImg { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browse { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browseIcon { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } INPUT[type='submit'].submit { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble_top A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paging A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .itemHeaderControl A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .actionMenuButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paletteSearch .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } H3#cs_search + UL DIV.none:first-child .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .mainButton H2 { MARGIN: 0px; FONT-SIZE: 100% } .secondaryButton H2 { MARGIN: 0px; FONT-SIZE: 100% } #primaryButton { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble_top .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1 { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1-img { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } #secondaryButton { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2 { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2-img { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } #secondaryButton { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .sub A IMG { MARGIN: -2px -4px 0px 0px } .sub .button-1 IMG { MARGIN: -2px -4px 0px 0px } .sub .button-2 IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton A IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton .button-2 IMG { MARGIN: -2px -4px 0px 0px } .mainButton A { DISPLAY: block } .secondaryButton A { DISPLAY: block } .actionBar .button-1 { DISPLAY: block } .actionBar .button-2 { DISPLAY: block } .mainButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .mainButton H2 > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .secondaryButton > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .secondaryButton H2 > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .sub.mainButton A { PADDING-RIGHT: 12px } .sub.secondaryButton A { PADDING-RIGHT: 12px } .mainButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A { FONT-WEIGHT: 600 } .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 30px } .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 30px } .popup .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .popup .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .genericButtonImg { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } INPUT[type='submit'].genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browse { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browseIcon { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .paging A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .itemHeaderControl > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .actionMenuButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } #toolsSearchBox + .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .treeContainer .tree LI A.button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .threadButtons .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .dbThreadInfo .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .containerOptions INPUT.genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-2 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-3 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-4 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'] { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'].submit { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='button'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .genericButtonImg { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-3-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .itemHeaderControl A { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .browseIcon { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .genericButtonImg { DISPLAY: inline-block !important } INPUT[type='submit'].genericButton { FONT-WEIGHT: bold } .button-3 { FONT-WEIGHT: bold } .searchbar INPUT[type='submit'].genericButton { FONT-WEIGHT: normal } .u_reverseAlign#editGradeActionList A.genericButton { DISPLAY: inline-block; MARGIN-BOTTOM: 5px } .genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .threadButtons .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .dbThreadInfo .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img.contextArrow:hover { box-shadow: none } .button-4-img.contextArrow:focus { box-shadow: none } .paletteSearch .button-4:hover { BACKGROUND-IMAGE: none !important } .paletteSearch .button-4:focus { BACKGROUND-IMAGE: none !important } .button-5 { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5-img { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5:hover { BACKGROUND: #ededed; COLOR: black } .button-5-img:hover { BACKGROUND: #ededed; COLOR: black } .button-6 { TEXT-DECORATION: none } .mainButton A.disabled { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .rumble A { DISPLAY: block } .rumble_top A { DISPLAY: block } .rumble .sub A IMG { MARGIN: -2px -1px 0px 3px } .rumble_top .sub A IMG { MARGIN: -2px -1px 0px 3px } .paging A { DISPLAY: inline-block } .rumble_top .inventory_paging .gotolink { DISPLAY: inline-block } .rumble .inventory_paging .gotolink { DISPLAY: inline-block } .listItemSelect { MARGIN: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #555 } #threadArea .listItemSelect { MARGIN: 0px } .rumble_top .listItemSelect { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 4px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .listItemSelect { PADDING-BOTTOM: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .rumble .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble_top .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble .listItemSelect A:hover { TEXT-DECORATION: none } .rumble_top .listItemSelect A:hover { TEXT-DECORATION: none } .listItemSelect LABEL { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline; PADDING-TOP: 0px } .listItemSelect SELECT { FONT-SIZE: 95% } INPUT.calcButton { MARGIN: 2px 0px; WIDTH: 2em; DISPLAY: inline-block } INPUT#width { WIDTH: 5em } INPUT#height { WIDTH: 5em } SELECT#border { WIDTH: 5em } SELECT#controls { WIDTH: 5em } .smallControls INPUT[type='text'].width { WIDTH: 5em } .smallControls INPUT[type='text'].height { WIDTH: 5em } .smallControls SELECT.quality { WIDTH: auto } .smallControls SELECT.controls { WIDTH: auto } .smallControls SELECT.border { WIDTH: auto } .actionBarMicro .mainButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .secondaryButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .mainButton A IMG { MARGIN: 0px } .actionBarMicro .secondaryButton A IMG { MARGIN: 0px } .actionBarMicro A SPAN IMG { VISIBILITY: hidden } .actionBar A SPAN IMG { VISIBILITY: hidden } .actionBarMicro .access-reorder { -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .actionBarMicro A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBar A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBarMicro #quickViewLink A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #shortcutView A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #quickViewLink A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#quickViewLink A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #shortcutView A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#shortcutView A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #addCmItem > A SPAN { BACKGROUND-POSITION: -16px 0px } .actionBarMicro #detailViewLink2 UL LI A { WIDTH: 90px } .actionBarMicro #addCmItem:hover > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro .active#addCmItem > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro #detailViewLink A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #folderView A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #detailViewLink2 A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #folderView A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#folderView A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #courseMapButton A SPAN { BACKGROUND-POSITION: -48px 0px } .actionBarMicro #courseMapButton A:hover SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro .active#courseMapButton A SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro #refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshView A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshMenuLink A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro #refreshView A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshView A SPAN { BACKGROUND-POSITION: -64px -16px } A.access-reorder SPAN { BACKGROUND-POSITION: -80px 0px } A.access-reorder:hover SPAN { BACKGROUND-POSITION: -80px -16px } A.active.access-reorder SPAN { BACKGROUND-POSITION: -80px -16px } .actionBar .sub A .chevron { BACKGROUND-POSITION: -95px 0px } .actionBar .sub:hover A .chevron { BACKGROUND-POSITION: -95px -16px } .actionBar .sub A:focus .chevron { BACKGROUND-POSITION: -95px -16px } .actionBarMicro .active > A { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:hover { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:focus { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } A.liveAreaTab:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub H2 > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .mainButton.sub:hover H2 > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang H2:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang:hover H2:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub:hover > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .actionBarMicro UL:hover + UL .active A:after { DISPLAY: none } A.liveAreaTab:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang H2:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang:hover H2:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .sub:hover > A:after { BORDER-BOTTOM-COLOR: #d1eaef } .columnActions.actionBarMicro { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 3px } .alignPanel LI.sub { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .alignPanel LI.sub A.button-4:after { CONTENT: none } .columnActions UL { MARGIN: 0px 0px 2px } .columnActions .mainButton A { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .columnActions .mainButton A:hover { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .modeSwitchWrap { DISPLAY: inline-block; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; FONT-WEIGHT: bold; BORDER-RIGHT: transparent 1px dotted } .modeSwitch { PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: #ccc; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -moz-border-radius: 16px; -webkit-border-radius: 16px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); border-radius: 16px } .modeSwitch:before { POSITION: relative; LINE-HEIGHT: 0.9; COLOR: #bbb; FONT-SIZE: 22px; VERTICAL-ALIGN: middle; CONTENT: "\2022"; TOP: -1px; FONT-WEIGHT: normal; MARGIN-RIGHT: 2px; LEFT: 0px; font-effect: outline } .read-on { BACKGROUND-COLOR: #777; MARGIN-RIGHT: 0px } .read-on:hover { BACKGROUND: #555 } .read-on { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .read-on:before { COLOR: lime; text-shadow: 0 0 4px lime } .disabled.read-on:before { COLOR: #999 } .disabled.read-on { COLOR: #999 } .read-off:before { COLOR: #999 } .read-off { COLOR: #999 } .read-off.modeSwitch { TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } A.read-off IMG { DISPLAY: none } A.read-on IMG { DISPLAY: none } A.read-on .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } A.read-off .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } .modeSwitch SPAN { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .switcherLabel { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 4px !important; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 2px !important } .vtbeSwitch { TOP: 2px } .vtbeSwitch SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .legacy .vtbeSwitch { HEIGHT: 2.2em } .vtbeSwitch DIV.modeSwitchWrap { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ccc 1px solid; TOP: 2px; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .vtbeSwitch DIV.modeSwitchWrap A SPAN#statusText { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 0px !important } .vtbeSwitch DIV.modeSwitchWrap A.read-off { BACKGROUND-COLOR: #ddd } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover { BACKGROUND-COLOR: #fff } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover SPAN#statusText { COLOR: #000 } TABLE.vtbeTable-legacy { WIDTH: 100% } .vtbeTable-legacy TEXTAREA { WIDTH: 100% } .helpLink { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .helpLink A.browseIcon { BORDER-BOTTOM: 0px; POSITION: relative; TEXT-ALIGN: center; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#777777); BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; BACKGROUND: #777; FONT-SIZE: 115%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; box-shadow: none; border-radius: 12px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .helpLink A.browseIcon IMG { DISPLAY: none } .helpLink A.browseIcon:before { Z-INDEX: 1; POSITION: relative; WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: #fff; CONTENT: "?"; RIGHT: -4px; FONT-WEIGHT: bold } .helpLink A.browseIcon:hover { box-shadow: none } .helpLink A.browseIcon:focus { box-shadow: none } .helpLink A[title*='Off'].browseIcon:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bbbbbb,endColorstr=#bbbbbb); BACKGROUND: #bbb } .helpLink A[title*='Off'] { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } TABLE.reorder { opacity: 1 } .reorder SPAN { DISPLAY: inline-block; HEIGHT: 20px } TABLE.reorder SPAN { HEIGHT: auto } .item .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } .item .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .liItem .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .subList-reorder .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .buttonCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .dndHandle .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .portlet .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder { WIDTH: 16px } .subList-reorder .reorder { WIDTH: 16px } .buttonCm .reorder { WIDTH: 16px } .portlet .reorder SPAN { DISPLAY: block; BACKGROUND-POSITION: -237px -116px; HEIGHT: 24px } .portlet .reorder { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; BOTTOM: -1px; BORDER-TOP: #555 1px solid; TOP: -1px; BORDER-RIGHT: #555 0px solid; LEFT: -19px; opacity: 0; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px } .module-dragstate.portlet .reorder { BORDER-RIGHT-WIDTH: 0px; BOTTOM: -2px; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-LEFT-WIDTH: 2px; TOP: -2px; LEFT: -20px } .reorder IMG { FILTER: alpha(opacity=0); opacity: 0 } .item .reorder IMG { MARGIN: 6px 3px } .portlet .reorder IMG { WIDTH: 18px; HEIGHT: 20px } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .liItem:focus .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .listCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buttonCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .portlet H2:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentListPlain LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentList > LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg { MARGIN: 0px; WIDTH: 16px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -125px; HEIGHT: 16px } TABLE.inventory A.cmimg { FILTER: alpha(opacity=0); opacity: 0 } TABLE.inventory TR:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg:hover { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg:focus { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg IMG { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 15px; PADDING-RIGHT: 0px; HEIGHT: 15px; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .buttonCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .portlet A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } A.cmimg-small { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .listCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .listCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .courseMenu .subhead A.cmimg { TOP: 9px } .buttonCm .courseMenu .subhead .cmimg { TOP: 2px } .portlet A.cmimg { POSITION: relative; TOP: 2px; RIGHT: 0px } .listCm .courseMenu A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .portlet A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .buildList LI .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .item .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .buildList LI .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .item .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .listCm .courseMenu LI:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 3px; BOTTOM: 0px; PADDING-RIGHT: 4px; PADDING-TOP: 4px; -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); border-radius: 0 3px 0 0 } .frameResizeToggle A { WIDTH: 16px; DISPLAY: block; BACKGROUND: url(images/utilicons_sprite_rev.png) no-repeat -158px 0px; HEIGHT: 16px; OVERFLOW: hidden } .frameResizeToggle:hover { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle A.resize-on { BACKGROUND-POSITION: -175px 0px; opacity: .5 } .frameResizeToggle A.resize-off { BACKGROUND-POSITION: -159px 0px; opacity: .8 } .frameResizeToggle A.resize-on:hover { BACKGROUND-POSITION: -159px -16px; opacity: 1 } .frameResizeToggle A.resize-off:hover { BACKGROUND-POSITION: -175px -16px; opacity: 1 } .frameResizeToggle A IMG { WIDTH: 18px; HEIGHT: 18px } A.close { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close-menu { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close { TOP: 0px; RIGHT: 20px } A.close IMG { DISPLAY: none } A.close-menu IMG { DISPLAY: none } .lbAction IMG { DISPLAY: none } A.close:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } .lbAction:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT-SIZE: 14px } A.close:hover:before { COLOR: #888 } A.close-menu:hover:before { COLOR: #888 } .lbAction:hover:before { COLOR: #888 } .builderItem A.close { FILTER: alpha(opacity:0); opacity: 0 } .builderItem:hover A.close { FILTER: alpha(opacity:100); opacity: 1 } .liveArea A.close { TOP: 6px; RIGHT: 6px } .cmdiv A.close-menu { Z-INDEX: 100; POSITION: relative; FILTER: alpha(opacity=100); TOP: 0px; RIGHT: 0px; opacity: 1 } #bb-assessment-canvas [id*='receipt_nested'].receipt A.close { TOP: 6px; RIGHT: 6px } A.colorChip { PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 1px } .pageTitle A.colorChip { PADDING-BOTTOM: 4px; PADDING-LEFT: 7px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } A.colorChip SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -123px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } A.colorChip:hover SPAN { BACKGROUND-POSITION: -320px -141px } A.colorChip SPAN IMG { FILTER: alpha(opacity=0); WIDTH: 16px; HEIGHT: 16px; opacity: 0 } A.colorChip IMG.chipSwatch { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 16px; HEIGHT: 16px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #aaa 1px solid } SPAN.colorChipName { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: inline-block !important; VERTICAL-ALIGN: middle; PADDING-TOP: 0px !important } INPUT[type='text'] { FONT-SIZE: 90% } INPUT[type='password'] { FONT-SIZE: 90% } SELECT { FONT-SIZE: 90% } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .courseMenu INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .courseMenu INPUT[type='text'] { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { MARGIN-LEFT: 0px } #calculatorValue { MARGIN: 3px 0px; WIDTH: 10em } A.microControl { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A.microControl IMG { WIDTH: 12px; HEIGHT: 12px } A.save { BACKGROUND: url(images/controls.png) no-repeat -50px -123px } A.cancel { BACKGROUND: url(images/controls.png) no-repeat -70px -123px } .fileInputWrapper { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; MARGIN-RIGHT: 9px; PADDING-TOP: 0px } .fileInputWrapper INPUT.hiddenInput { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .backLink { POSITION: absolute; MARGIN: 0px; BOTTOM: 0px; RIGHT: 0px } .tocBottom_min .backLink { BOTTOM: 48px } .tocBottom_max .backLink { BOTTOM: 348px } .tocBottom_open .backLink { BOTTOM: 178px } .shortDoc .backLink { POSITION: relative; TEXT-ALIGN: left; MARGIN-TOP: 15px; BOTTOM: 0px; RIGHT: 0px } .backLink A { BORDER-BOTTOM: #cdcdcd 0px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 18px; DISPLAY: inline-block; BACKGROUND: #eee; COLOR: #888; BORDER-TOP: #cdcdcd 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #cdcdcd 0px solid; TEXT-DECORATION: none; PADDING-TOP: 8px; -moz-box-shadow: 1px 1px 4px #DDD inset; -webkit-box-shadow: 1px 1px 4px #ddd inset; -moz-border-radius: 4px 0 4px 0; -webkit-border-radius: 4px 0 4px 0; text-shadow: 0 1px 0 #fff } .shortDoc .backLink A { BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px } .backLink A:before { LINE-HEIGHT: 1.2; COLOR: #999; FONT-SIZE: 120%; CONTENT: "\2190" } .backLink A:hover { BACKGROUND: #ddd; COLOR: #777 } .backLink A:hover:before { COLOR: #00add0 } .sliderWrapper { BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 0px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 13px; BACKGROUND: #fff; FLOAT: left; FONT-SIZE: 85%; PADDING-TOP: 14px; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0 } #sliderHandle { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: -2px 0px 0px; WIDTH: 4px; DISPLAY: block; BACKGROUND: #999; HEIGHT: 4px; BORDER-TOP: #555 1px solid; CURSOR: ew-resize; BORDER-RIGHT: #555 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } #sliderTrack { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 6px; WIDTH: 60px; DISPLAY: inline-block; BACKGROUND: #ededed; HEIGHT: 2px; BORDER-TOP: #ccc 1px solid; TOP: -2px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .itemCounter { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #cdcdcd; FONT-SIZE: 115%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #pageHeader { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitleSmall { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } #pageHeader { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #schemePreviewHead { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitle H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitleError H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #pageHeader { FONT-SIZE: 185% } .pageTitle H1 { FONT-SIZE: 185% } .pageTitleError H1 { FONT-SIZE: 185% } .picker .pageTitle H1 { FONT-SIZE: 160% } .popup .pageTitle H1 { FONT-SIZE: 160% } .pageTitle #titleicon { DISPLAY: inline-block } .pageTitle H1 { DISPLAY: inline-block } .pageTitle A.cmimg { DISPLAY: inline-block } .pageTitle H1 + .contextMenuContainer { POSITION: relative; MARGIN-LEFT: 2px; VERTICAL-ALIGN: top; TOP: 4px } .pageTitle A.cmimg { MARGIN: 0px } .pageTitle #titleicon { MARGIN: 0px 6px 0px 0px; DISPLAY: none } .pageTitle [src*='slideshare']#titleicon { BORDER-BOTTOM: #dedede 1px solid; POSITION: absolute; BORDER-LEFT: #dedede 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; WIDTH: auto; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #fff; HEIGHT: 39px; BORDER-TOP: #dedede 0px solid; TOP: 1px; RIGHT: 7px; BORDER-RIGHT: #dedede 0px solid; PADDING-TOP: 4px; border-radius: 0 4px 0 4px } .pageTitle [src*='youtube']#titleicon { POSITION: absolute; WIDTH: auto; DISPLAY: block; HEIGHT: 44px; TOP: 8px; RIGHT: 14px } .pageTitleSmall H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #fff; FONT-SIZE: 135%; PADDING-TOP: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.9) } #pageHeader { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } #schemePreviewHead { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .hierarchy-page .pageTitle + .container { MARGIN-TOP: -20px; BACKGROUND: #fff } .picker .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popup .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } #pageHeader { BACKGROUND-COLOR: #dedede } #schemePreviewHead { BACKGROUND-COLOR: #dedede } .pageTitleIcon { DISPLAY: table-row } .pageTitle .details { DISPLAY: none } .pageTitle .contextMenuContainer { DISPLAY: inline-block !important } .pageTitle .titleButtons { DISPLAY: inline-block !important } .pageTitleEdit { DISPLAY: inline-block !important } #pageTitleBar { DISPLAY: inline-block; MARGIN-RIGHT: 6px } .pageTitle H2 { MARGIN: 0px; COLOR: #333; CLEAR: both; FONT-SIZE: 100% } .pageTitle H2 SPAN { FONT-WEIGHT: normal } .contextString { COLOR: #777; FONT-WEIGHT: normal } .pageTitle .label { COLOR: #777; FONT-WEIGHT: normal } .error .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#DB0F0F,endColorstr=#FC0202); box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6) inset } .error .pageTitle H1 { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2) } .customBanner { TEXT-ALIGN: center; BACKGROUND-COLOR: transparent; MARGIN: 0px; OVERFLOW: hidden } DIV.localViewToggle + DIV.pageTitle { PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #fafafa inset; border-radius: 0 } DIV#lightboxContent H2 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; FONT-SIZE: 130%; PADDING-TOP: 18px } .helphelp { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .pageTitle P { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .label.details { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .mapTabs + .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .mapTabs ~ .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .helphelp A { BORDER-BOTTOM: #666 1px dotted; COLOR: #666; TEXT-DECORATION: none } .helphelp A:hover { BORDER-BOTTOM-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-TOP-STYLE: solid; BORDER-LEFT-STYLE: solid } DIV.helphelp UL { MARGIN: 6px 0px } .version { MARGIN-TOP: 6px; DISPLAY: inline-block; COLOR: #666; FONT-SIZE: 60%; FONT-WEIGHT: normal } .version I { FONT-STYLE: normal; FONT-WEIGHT: bold } .version SPAN { POSITION: relative; WIDTH: 13px; DISPLAY: inline-block; OVERFLOW: hidden; TOP: -2px; LEFT: -5px } .version SPAN:before { POSITION: relative; COLOR: #00add0; FONT-SIZE: 105%; CONTENT: "+"; TOP: 0px; FONT-WEIGHT: bold; LEFT: 0px } .colophon { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px 14px; PADDING-LEFT: 55px; WIDTH: 30em; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: right; FONT-SIZE: 85%; OVERFLOW: visible; RIGHT: 0px; PADDING-TOP: 0px } .colophon IMG { POSITION: absolute; LEFT: 0px } .installation { LINE-HEIGHT: 1.3em; COLOR: #666 !important } .installation SPAN { FONT-WEIGHT: bold } .actionBar { Z-INDEX: 110; BORDER-TOP: #444 1px solid; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .hierarchy-page .actionBar { MARGIN-TOP: -21px } .hierarchy-page #toolsTabForm .actionBar { MARGIN: -21px -30px 0px } .actionBar UL LI { POSITION: relative } .actionBar UL LI.mainButton { Z-INDEX: 210 } .actionBar UL LI.secondaryButton { Z-INDEX: 209 } .actionBar UL LI.mainButton:hover { Z-INDEX: 112 } .pageTitle + .actionBar { -moz-border-radius: 0; border-radius: 0 } .actionBar .mainButton { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBar .secondaryButton { MARGIN: 0px; FLOAT: right } .actionMenu { Z-INDEX: 111; POSITION: relative } .actionMenuItem { Z-INDEX: 123; POSITION: relative } .actionBarMicro { -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .csMenuFrame .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popupMenu .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .portlet .actionBarMicro { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .portlet .actionBarMicro UL { MARGIN: 2px } .actionBarMicro UL LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBarMicro .mainButton { Z-INDEX: 1000 } .actionBarMicro .secondaryButton { Z-INDEX: 10; FLOAT: right } .actionBar { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .actionBarMicro { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .searchbar { POSITION: relative } .searchbarPicker { POSITION: relative } .subActionBar { POSITION: relative } .searchbarCanvas.searchbar { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN: -24px -30px 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dfdfdf 0px 0px; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #F0F0F0 inset; -webkit-box-shadow: 1px 0 0 #F0F0F0 inset } .picker .searchbarCanvas.searchbar { MARGIN: -24px -20px 20px } .picker .leftColumn-narrow H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } .picker .leftColumn-wide H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } #bb-question-discover .searchbarCanvas.searchbar FIELDSET H2 { DISPLAY: inline-block; FONT-SIZE: 100%; FONT-WEIGHT: normal } .subActionBar { FONT-SIZE: 95% } .searchbar TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE TD TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE FIELDSET { PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 3px } .searchbar TABLE DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .searchbar FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchbarPicker { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .searchbar:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .searchbarPicker:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .receipt A.close { FILTER: alpha(opacity=70); TOP: 1px; RIGHT: 4px; opacity: .7 } .slideshowControls { TEXT-ALIGN: center; MARGIN: 8px auto 12px; FONT-SIZE: 100% } .searchbar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbarPicker FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .subActionBar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbar H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .searchbarPicker H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .picker .searchbar H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbarPicker H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbar .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbarPicker .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .liveArea FIELDSET .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbar OL LI { MARGIN: 5px; FLOAT: left } .searchbarPicker OL LI { MARGIN: 5px; FLOAT: left } .liveArea FIELDSET OL LI { MARGIN: 5px; FLOAT: left } .searchbar OL LI > DIV { MARGIN: 0px 4px 4px 0px; DISPLAY: inline-block } .searchbar OL LI.options { FLOAT: right } .searchbarPicker OL LI.options { FLOAT: right } .liveArea FIELDSET OL LI.options { FLOAT: right } .searchbarPicker SPAN { DISPLAY: inline } .searchbar SPAN.spacer { MARGIN: 0px 4px } .cmImg { TEXT-ALIGN: center; MARGIN: 0px 0px 6px 12px; WIDTH: 180px; OVERFLOW: hidden } .cmImg IMG { WIDTH: 180px } .navDivider { PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; MARGIN: 0px 0px 4px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; LETTER-SPACING: 2px; COLOR: #999; FONT-SIZE: 80%; FONT-WEIGHT: bold; PADDING-TOP: 18px; text-shadow: 0 1px 0 #f9f9f9 } .cmPreviewWrapper { WIDTH: 212px } .navPalette { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .csMenuFrame .navPalette { MARGIN: 0px 0px 18px } .navPalette H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 105%; PADDING-TOP: 0px } .navPaletteTitle { POSITION: relative } .navPaletteTitle H3 + H3 { POSITION: absolute; TOP: 0px; RIGHT: 0px } .navPaletteCol H3 { BORDER-BOTTOM: 0px } .navPalette H4 { MARGIN: 0px; FONT-SIZE: 100% } .navPaletteContent UL LI { POSITION: relative; ZOOM: 1 } .navPaletteContent { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .listCm .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .singleControl .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .tools .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } #courseMenuPalette DIV.navPaletteContent { PADDING-BOTTOM: 14px; PADDING-TOP: 14px; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset } #courseMenuPalette { MARGIN-BOTTOM: 0px } .singleControl .navPaletteContent { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .singleControl { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPalette .discover { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPaletteContent A { PADDING-BOTTOM: 3px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; WORD-BREAK: normal; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 3px } .navPaletteContent A:hover { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A:focus { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A.comboLink { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.open { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.submenuLink { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink_active { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent A.submenuLink_active IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent UL LI:first-child H4 A { BORDER-TOP: medium none } .navPaletteContent UL LI:first-child A { BORDER-TOP: medium none } .navPaletteContent UL LI H4 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPaletteContent H3 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px; text-shadow: 0 1px 0 #f9f9f9 } .navPaletteContent H3 A:hover { TEXT-DECORATION: none } .navPaletteContent H3 A:focus { TEXT-DECORATION: none } #courseMenu { BACKGROUND-COLOR: #0078cb; COLOR: #fff } .controlpanel UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .controlpanel A { BORDER-TOP: #ccc 1px dotted } .controlpanel A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .controlpanel A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { DISPLAY: inline-block } .navPaletteContent H3 A.submenuLink_active { DISPLAY: inline-block } .controlpanel A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .controlpanel A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink_active:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .navPaletteContent H3 A.submenuLink_active:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .controlpanel A.submenuLink:hover:after { COLOR: #aaa } .controlpanel A.submenuLink_active:hover:after { COLOR: #aaa } .tools A.submenuLink:hover:after { COLOR: #aaa } .tools A.submenuLink_active:hover:after { COLOR: #aaa } .navPaletteContent H3 A.submenuLink:hover:before { COLOR: #aaa } .navPaletteContent H3 A.submenuLink_active:hover:before { COLOR: #aaa } .controlpanel A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .tools A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel H4 A.open { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navPaletteContent UL LI:first-child H4 A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore H4 { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel A.comboLink_active { Z-INDEX: 1; POSITION: relative } .tools A.comboLink_active { Z-INDEX: 1; POSITION: relative } .controlpanel H4 A.open { Z-INDEX: 1; POSITION: relative } .treeViewCs .navPaletteContent { } .treeViewCs .bottomRound B { } .courseFilesPalette { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .paletteSearch { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 6px } .classFiles H4#cs_search + UL LI:first-child { BORDER-BOTTOM: #aaa 1px dotted; PADDING-BOTTOM: 6px; MARGIN: 2px 9px 2px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 95%; PADDING-TOP: 0px } .classFiles H4#cs_search + UL LI { BACKGROUND-IMAGE: none } .classFiles A#filesPaletteContentCollectionLink { BACKGROUND-IMAGE: url(images/indicators.png); PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 98% -143px; COLOR: #aaa; PADDING-TOP: 3px } .navPaletteContent .submenu .paletteSearchElement { PADDING-BOTTOM: 9px; MARGIN: 6px 0px 0px -16px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BORDER-TOP: #bbb 1px dotted; PADDING-TOP: 10px } .paletteSearchElement INPUT { WIDTH: 99px } .classFiles UL.tree > LI { BACKGROUND-IMAGE: none !important } .listCm .courseMenu { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .ineditmode DIV.listCm UL.courseMenu { MARGIN: 0px } .ineditmode DIV.listCm UL.courseMenu LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px -1px 0px 0px; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid } .ineditmode DIV.listCm UL.courseMenu LI:hover { BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff !important; -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -moz-transition: border, margin, background, -moz-box-shadow 500ms cubic-bezier(0.420, 0.000, 1.000, 1.000); box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-transition-property: background, border, -webkit-box-shadow; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000); background-clip: padding-box } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder { -webkit-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder:before { -webkit-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .listCm .courseMenu LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .buttonCm LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .buttonCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .listCm .courseMenu A:hover { TEXT-DECORATION: underline } .listCm .courseMenu A:focus { TEXT-DECORATION: underline } .buttonCm LI A:hover { TEXT-DECORATION: underline } .buttonCm LI:focus { TEXT-DECORATION: underline } .listCm .courseMenu > LI:hover A SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:hover { COLOR: #128fa8 !important } .listCm .courseMenu A:focus { COLOR: #128fa8 !important } .listCm .courseMenu A:hover SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:focus SPAN { COLOR: #128fa8 !important } .listCm .courseMenu .here A { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:hover { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:focus { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A.cmimg { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu .here A.cmimg:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .listCm .subhead H3 { PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #courseMenu_folderView H4 A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } #courseMenu_folderView .subhead { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .navPaletteContent .subhead H3 A { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .navPaletteContent .subhead H3 A:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .listCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { BACKGROUND-IMAGE: none !important } .noteditmode .listCm .courseMenu .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .noteditmode .listCm .buttonCm .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .listCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .buttonCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .listCm .courseMenu .collapsed { PADDING-BOTTOM: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; HEIGHT: 2px; PADDING-TOP: 0px } .buttonCm .navPaletteContent { BACKGROUND: none transparent scroll repeat 0% 0% } .buttonCm LI { BACKGROUND-COLOR: transparent; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 12px 0px } .buttonCm .courseMenu .here A { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .buttonCm .courseMenu .here A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .cmLink-hidden { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-empty { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-hidden IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -123px } .cmLink-hidden { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -138px } .buttonCm .invisible .cmLink-hidden { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { RIGHT: 32px } .buttonCm .bottomRound { DISPLAY: none } .pickerMenu { POSITION: absolute; MARGIN: 0px; WIDTH: 150px; TOP: 0px; LEFT: 14px } .pickerMenu UL LI A { BACKGROUND-IMAGE: none } DIV.pickerMenu A.simpleLink { BACKGROUND-IMAGE: none } .pickerMenu A.open { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:hover { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:focus { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .discover .topRound B { } .discover .bottomRound B { } .discover .navPaletteContent { } .singleControl .topRound B { } .singleControl .bottomRound B { } .singleControl .navPaletteContent { } .discover A IMG { DISPLAY: none } .discover.navPalette { MARGIN-BOTTOM: 0px } .singleControl A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .navPalette .discover A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .singleControl A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A.enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .discover A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { COLOR: #3c0; CONTENT: "+" } .discover A:before { COLOR: #eee; CONTENT: "F" } .navPaletteContent .submenu { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; FONT-SIZE: 90%; PADDING-TOP: 0px; -moz-box-shadow: 0 1px 4px #ccc; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore .submenu { BACKGROUND: #fff; FONT-SIZE: 90% } .navPaletteContent .submenu LI { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent .submenu LI UL LI { PADDING-LEFT: 12px } .navPaletteContent .submenu LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } H4#cs_search + UL DIV A { DISPLAY: block; FONT-SIZE: 90% } .controlpanel .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu .emptyMsg { COLOR: #777 } .controlpanel .submenu A:hover { TEXT-DECORATION: underline } .controlpanel .submenu A.here { TEXT-DECORATION: underline } .controlpanel .submenu A:focus { TEXT-DECORATION: underline } .explore .submenu A:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .explore .submenu A:focus { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .tools .submenu { BACKGROUND: #fff } .controlpanel .submenu { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel .submenu LI UL { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND-COLOR: transparent } .navPalette A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .controlpanel A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPalette A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPalette A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPaletteCol H3 A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol H3 A.comboLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol .navPaletteContent H3 { BACKGROUND-IMAGE: none } .navPaletteCol .actionBarMicro { DISPLAY: none } .shortcutViewCs UL LI A { TEXT-ALIGN: center; BORDER-TOP: #ededed 1px dotted } .shortcuts LI A { BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted } .shortcuts LI A:hover { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .shortcuts LI A:focus { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .treeContainer#courseMenu_folderView { OVERFLOW-X: auto } DIV.expTreeContainer { BACKGROUND: #eee } DIV.treeContainer UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.treeContainer > UL.tree { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree > UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.listCm DIV.treeContainer UL.tree { OVERFLOW-X: auto; ZOOM: 1 } DIV.treeContainer UL.tree LI H4 + UL { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; ZOOM: 1; FONT-SIZE: 90%; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .sideTOC UL.tree > LI { OVERFLOW-X: visible } DIV.treeContainer UL.tree LI.last { BACKGROUND-IMAGE: none } UL.tree LI.last { BACKGROUND-IMAGE: none } DIV.treeContainer UL.tree LI.here A { BACKGROUND-COLOR: #ededed } UL.tree LI.here A { BACKGROUND-COLOR: #ededed } DIV.treeContainer UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.open_folder { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: #ebeffa; FONT-SIZE: 95%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.exp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folder.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI A.collapse { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folderopen.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer H4.treehead { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 2px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.treeContainer H4.first { MARGIN: 0px 0px 2px } DIV#userTreeDiv { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead { BACKGROUND-IMAGE: none; MARGIN: 0px; BORDER-TOP: #ccc 1px dotted } DIV.treeContainer UL.tree LI.subhead H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.first A { BORDER-TOP: medium none } DIV.treeContainer UL.tree LI.subhead H4 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 6px } UL.tree LI.subhead:first-child { MARGIN-TOP: 0px } UL.tree LI.subhead:first-child > A { BORDER-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.treeSubhead-collapsed A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: normal } .tableOverflowControl { OVERFLOW-X: auto } .inventory { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 0px; BORDER-SPACING: 0; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-COLLAPSE: separate; BACKGROUND: #fff; COLOR: #000; CLEAR: both; PADDING-TOP: 0px } .inventory CAPTION { TEXT-ALIGN: left; COLOR: #999; FONT-SIZE: 85% } .inventory > THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .splashTable THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .inventory > THEAD TR TH:first-child { BORDER-LEFT: medium none; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .inventory > TBODY { BORDER-BOTTOM: #ccc 2px solid } .inventory > TBODY TR { BORDER-BOTTOM: #ccc 1px solid } .inventory > TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory > TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory#drawerItems TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory#drawerItems TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory > TBODY TR TH { TEXT-ALIGN: left; FONT-WEIGHT: normal } .inventory > TBODY TR TD:first-child { BORDER-LEFT: medium none } .inventory > TBODY .gray TD { BACKGROUND: #fff4bf } .inventory > TBODY .gray TH { BACKGROUND: #fff4bf } .inventory > THEAD TR TH.sorted { BACKGROUND: #ccc } TH.sorted { BACKGROUND: #ccc } .splashTable THEAD TR TH.sorted { BACKGROUND: #ccc } .inventory > TBODY TR TD.sorted { BACKGROUND: #eee } .inventory > THEAD TR TH.sorted A { COLOR: #000 !important; FONT-WEIGHT: bold } .sortable > THEAD TH A { COLOR: #666; MARGIN-RIGHT: 9px } .sortable > THEAD TH A:hover { COLOR: #333; TEXT-DECORATION: underline } .sortable A.sortheader { POSITION: relative; PADDING-RIGHT: 17px; DISPLAY: block; MARGIN-RIGHT: 0px; text-shadow: 0 1px 0 #fff } .sortable .sortarrow { COLOR: #ff0; TOP: 0px; RIGHT: 0px; TEXT-DECORATION: none; LEFT: auto } TR.high { BACKGROUND: #fff4bf } .high { BACKGROUND: #fff4bf } .disabledCell { BACKGROUND-COLOR: #f0f0f0 } .inventory .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .inventory > TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments { WIDTH: 100% } .inventory .dndHandle { POSITION: static; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 5px } .inventory .dndHandle .reorder IMG { HEIGHT: 20px } .inventory .dndHandle .reorder:hover IMG { HEIGHT: 20px } .inventory .dndHandle .reorder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory .dndHandle .reorder:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory TR:hover .dndHandle { BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px } .reorderable > TBODY TR:hover { -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset } .reorderable > TBODY TR:hover TD { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable > TBODY TR:hover TH { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable TBODY TR TD:first-child { BORDER-LEFT: transparent 1px solid } .inventory TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .inventory > TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .attachments TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .attachments TBODY TR { BORDER-TOP: #eee 1px solid } .inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } .attachments TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .attachments TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory > TBODY UL.subtabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } TABLE.inventory > TBODY UL.subtabs LI { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.status { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; BACKGROUND: #f9f9f9; COLOR: #000; FONT-SIZE: 90%; PADDING-TOP: 1px } DIV.status A IMG { VERTICAL-ALIGN: middle } DIV.status P { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left !important; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; LINE-HEIGHT: 10%; MARGIN: 2px auto 4px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } DIV.status P IMG { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #8dafaf; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 8px; PADDING-TOP: 0px } DIV.stopped P IMG { BACKGROUND: url(images/controls.png) #fff no-repeat -20px -180px } DIV.status A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.status DIV { POSITION: relative; TEXT-ALIGN: center } DIV.status A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } TABLE.inventory-simple { MARGIN: 0px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } TABLE.attachments THEAD TR.warningRow { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TABLE.inventory-simple THEAD TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } TABLE.inventory-simple TBODY TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TH { COLOR: #000 } TABLE.inventory-simple .removeCell { BACKGROUND: #ededed; COLOR: #777 } TABLE.inventory-simple .removeCell TD { COLOR: #999 } TABLE.inventory-simple .removeCell TH { COLOR: #999 } TABLE.inventory-simple .removeCell TD A IMG { FILTER: alpha(opacity=40); opacity: .4 } TABLE.inventory-simple .smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.inventory-simple TBODY TR.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TD { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TH { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.stepItems-reorder { BORDER-SPACING: 0; MARGIN-BOTTOM: 12px; FONT-SIZE: 85% } TABLE.gbColumns { ZOOM: 1; FONT-SIZE: 90% } TABLE.stepItems-reorder TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BACKGROUND: #fff; COLOR: #999 } TABLE.gbColumns THEAD TR TH { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TD { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TH.sorted { BORDER-LEFT: #777 1px solid; BACKGROUND: #999; BORDER-RIGHT: #777 1px solid } TABLE.gbColumns THEAD TR TH A { COLOR: #fff } TABLE.gbColumns THEAD TR TD A { COLOR: #fff } TABLE.stepItems-reorder THEAD TR.lowerHeader TH { BORDER-BOTTOM: #ccc 2px solid; COLOR: #333 } TABLE.stepItems-reorder TBODY TR TD.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder THEAD TR TH.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder TR TH.clearCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TD { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TH { BORDER-TOP: 0px } TABLE.stepItems-reorder THEAD TR:first-child { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; TEXT-ALIGN: right; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD SPAN.reorder { POSITION: relative; FILTER: alpha(opacity=100); WIDTH: 18px !important; DISPLAY: block; BACKGROUND: url(images/controls.png) #ededed no-repeat -177px -122px; HEIGHT: 20px; TOP: 2px; CURSOR: move; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; LEFT: auto; opacity: 1; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } TABLE.gbColumns TBODY TR TD SPAN.reorder { BACKGROUND: url(images/controls.png) #ededed no-repeat -237px -122px } TABLE.stepItems-reorder TBODY TR.frozenbar TD SPAN.reorder { TOP: 1px } TABLE.stepItems-reorder TBODY TR TD INPUT { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: 95%; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } TABLE.stepItems-reorder TBODY TR TD.points INPUT { WIDTH: 3em } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=text] { WIDTH: 90% } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=checkbox] { WIDTH: auto } TABLE.stepItems-reorder TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px 4px 0px 0px } TABLE.gbColumns TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px; WIDTH: auto } TABLE.gbColumns TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; PADDING-TOP: 6px } TABLE.gbColumns TBODY TR.frozenbar TD { BACKGROUND: #ccc; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: 0px } TABLE.gbColumns TFOOT TR.lastRow TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #999; HEIGHT: 2px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.frozen TD { BACKGROUND: #ededed } TABLE.gbColumns THEAD TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } TABLE.gbColumns TBODY TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } DIV.areaHighlight TABLE.gbColumns THEAD TR TD.clear { BACKGROUND: inherit } TD.clear { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozen TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TFOOT TR.lastRow TD.clear { BACKGROUND: inherit } TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.gbColumns TBODY TR.placeholder TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.placeholder TD.clear { BACKGROUND: inherit } UL.dragableHighlight LI TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozen TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TFOOT TR.lastRow TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TR.rowdrag { Z-INDEX: 1; BACKGROUND: #ccc } .insertImg { Z-INDEX: 20; POSITION: relative; TOP: 12px } .insertImgUp { Z-INDEX: 20; POSITION: absolute; RIGHT: -10px } TABLE.inventory > TBODY TR TD.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > THEAD TR TH.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > TBODY TR TD.hideCell { DISPLAY: none } TABLE.inventory > THEAD TR TH.hideCell { DISPLAY: none } .clickOrder { DISPLAY: none } TABLE.inventory > TBODY TR TD.clickOrder { BORDER-LEFT: medium none; BACKGROUND-COLOR: #ddd } TABLE.inventory TR TD.endCell { PADDING-BOTTOM: 0px !important; BACKGROUND-COLOR: #ddd !important; PADDING-LEFT: 0px !important; WIDTH: 1px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.inventory TR.orderRow TD.clickOrder { TEXT-ALIGN: center; BACKGROUND-COLOR: #ddd } TABLE.inventory TR.orderRow TD.clickOrder DIV { POSITION: relative } .sortedplus { BACKGROUND-IMAGE: url(images/controls.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 48% -995px } .dragCol { BACKGROUND-COLOR: #999 } TABLE.splashTable { BORDER-BOTTOM: #ccc 2px solid; MARGIN: 3px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.splashTable THEAD TR { COLOR: #999 } TABLE.splashTable THEAD TR TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } TABLE.splashTable THEAD TR TH A { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #666; TEXT-DECORATION: none } TABLE.splashTable THEAD TR TH A:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; TEXT-DECORATION: underline } TABLE.splashTable TBODY TR { BORDER-TOP: #ddd 1px solid } TABLE.splashTable TBODY TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TH { TEXT-ALIGN: left; COLOR: #000 } TABLE.splashTable TH.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.splashTable TD.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } .contentBlock A { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -450px; TEXT-DECORATION: none } .contentBlock A.collapse { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -1045px; TEXT-DECORATION: none } .contentBlock A.collapse:hover { TEXT-DECORATION: underline } .contentBlock A.hover { TEXT-DECORATION: underline } TABLE.reorderCols { MARGIN: 18px 0px 9px; WIDTH: 100%; BORDER-COLLAPSE: collapse; CLEAR: both; FONT-SIZE: 95% } TABLE.reorderCols THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #ededed; BORDER-TOP: #ccc 1px solid; CURSOR: move; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } TABLE.reorderCols THEAD TR TH.noReorderCol { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; CURSOR: default; BORDER-RIGHT: medium none } TABLE.reorderCols TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed; COLOR: #555 } TABLE.reorderCols THEAD TH SPAN.reorderToolTip { BACKGROUND: url(images/controls.png) #ddd no-repeat -347px -122px } TABLE.reorderCols THEAD TR TH.axis { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed 0px 50%; COLOR: #555 } .ghostTd { BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; FONT: 10px arial; BACKGROUND: #eee; HEIGHT: auto; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 2px } TABLE.reorderCols THEAD TH.dragging { BACKGROUND: #ccc } TABLE.reorderCols THEAD TH.hovering { BACKGROUND: #666 } TABLE.reorderCols THEAD TH.hovering IMG { DISPLAY: none } .rumble { MARGIN: 0px 0px 9px; BACKGROUND: url(images/selected_items.png) no-repeat -1974px center } .rumble_top { MARGIN: 12px 0px 0px; BACKGROUND: url(images/selected_items.png) no-repeat 12px center } #mapCanvasForm .rumble_top { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble_top { BORDER-BOTTOM: #eee 2px solid } .noBatchActions { BACKGROUND-IMAGE: none !important; PADDING-BOTTOM: 5px !important; PADDING-LEFT: 5px !important; PADDING-RIGHT: 5px !important; PADDING-TOP: 5px !important } .rumbleBuildList { MARGIN: 0px 0px 0px 18px; BORDER-TOP: #eee 2px solid } .rumbleBuildList UL LI { Z-INDEX: 1000 } .rumbleBuildListTop UL LI { Z-INDEX: 1000 } .rumble_top UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble_top UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .rumble UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .contentListPlain .rumble LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentListPlain .rumble_top LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble_top LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .selectList .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble_top LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble LI.listActionGroup A { DISPLAY: inline } .rumble_top LI.listActionGroup A { DISPLAY: inline } .paging { TEXT-ALIGN: right; FLOAT: right; CLEAR: left } .pagingprefs { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN-TOP: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 3px } .paging SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BORDER-RIGHT: #ccc 1px dotted; PADDING-TOP: 1px } .rumble_top .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .rumble .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .jumptopage INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } .jumptopage INPUT { WIDTH: 2em; FONT-WEIGHT: normal; -moz-border-radius: 0; -webkit-border-radius: 0 } .rumble_top .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .inventory_paging A { DISPLAY: inline-block } .inventory_paging IMG { DISPLAY: inline-block } .inventory_paging SPAN { DISPLAY: inline-block } .inventory_paging DIV { DISPLAY: inline-block } .jumptopage DIV { DISPLAY: inline-block } .inventory_paging A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px } .inventory_paging IMG { MARGIN: 2px 2px 3px } .inventory_paging A.inactive { FILTER: alpha(opacity=40); opacity: .4 } A.jumpToPageOpen { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } A.jumpToPageOpen:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } DIV.jumptopage INPUT#currentpage_bot { WIDTH: auto } DIV.jumptopage INPUT#currentpage_top { WIDTH: auto } INPUT#currentpage_bot { WIDTH: auto } INPUT#currentpage_top { WIDTH: auto } .jumptopage { FLOAT: right } .jumptopage DIV { MARGIN: 0px 0px 0px 3px } .jumptopage BUTTON { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; TOP: -2px; RIGHT: 0px; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .jumptopage BUTTON IMG { MARGIN: 0px } .rumble_top .secondaryControl { FLOAT: right } .rumble .secondaryControl { FLOAT: right } .key-valueTable TR { BORDER-BOTTOM: medium none } .key-valueTable TH { BORDER-BOTTOM: medium none } .key-valueTable TD { BORDER-BOTTOM: medium none } .key-valueTable TBODY { BORDER-BOTTOM: medium none } .key-valueTable TBODY TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TH { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TR:first-child TH { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TR:first-child TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TH { COLOR: #555 } .infoListWrapper .key-valueTable { MARGIN: 3px 9px 6px } TD.removeCell { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A IMG { FILTER: alpha(opacity=30); opacity: .3 } .contentList { MARGIN: -20px -30px } .buildList { MARGIN: -20px -30px } .contentListPlain { MARGIN: -20px -30px } .announcementList { MARGIN: -20px -30px } #bb-assessment-canvas .contentListPlain { MARGIN: 0px -30px } .gradingList { MARGIN: 0px -30px } .buildList#survey { MARGIN: 0px -30px } #manageFormCanvasForm .buildList { MARGIN: 0px -30px } #mapCanvasForm .buildList { MARGIN: 0px 30px } .hierarchy-page #toolSettingsForm #dataCollectionContainer { MARGIN: -10px -30px } .leftColumn-wide .contentListPlain { MARGIN: 0px } .contentList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .buildList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentListPlain > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .announcementList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPageItem { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentList > LI.read:first-child:hover { BORDER-TOP: transparent 1px solid } .buildList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentListPlain > LI:first-child { BORDER-TOP: transparent 1px solid } .announcementList > LI:first-child { BORDER-TOP: transparent 1px solid } #bb-assessment-canvas .contentListPlain > LI:first-child { BORDER-TOP-COLOR: #ccc } #bb-assessment-canvas .contentListPlain > LI { MIN-HEIGHT: 16px; PADDING-LEFT: 42px } #bb-assessment-canvas .contentListPlain > LI .item { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-assessment-canvas .contentListPlain > LI .details { PADDING-BOTTOM: 5px; PADDING-TOP: 12px } .takeQuestionDiv { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='_'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='step'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer H3.submittitle.steptitle { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } .takeQuestionDiv H3 { MARGIN: 0px } .takeQuestionDiv + H3 { PADDING-LEFT: 28px } #assessmentGradeForm #dataCollectionContainer { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .contentList > LI { MIN-HEIGHT: 50px } .buildList > LI { MIN-HEIGHT: 50px } .contentListPlain > LI { MIN-HEIGHT: 50px } .announcementList > LI { MIN-HEIGHT: 50px } .contentPageItem { MIN-HEIGHT: 50px } .liItem:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList > LI:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList LI:first-child:hover { BORDER-TOP-COLOR: #666 } .contentList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .gradingList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .liItem A[onclick*='toggleDetails'] { POSITION: relative; VISIBILITY: hidden; TOP: -6px; RIGHT: -19px } .liItem:hover A[onclick*='toggleDetails'] { VISIBILITY: visible } .liItem A[onclick*='toggleDetails'] IMG { VISIBILITY: hidden } .liItem A[title*='Hide'] { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 0px 0px } .liItem A[title*='Show'] { BACKGROUND: url(images/portlet_expand_alt_rev.png) no-repeat 0px 0px } .contentListPlain .item_icon { DISPLAY: none } .item { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; CURSOR: move; PADDING-TOP: 0px } .contentList .item { PADDING-BOTTOM: 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .gradingList .item { PADDING-RIGHT: 120px } .announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .announcementList-read .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } #announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .item:hover { CURSOR: move } .item:focus { CURSOR: move } .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .announcementList-read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .contentList-slim .read .item { PADDING-LEFT: 48px } .read .item:hover { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .read .item:focus { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .tab-groups H3.item { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 8px; MARGIN: 0px 11em 8px -12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tab-groups H3.item .reorder + SPAN { FONT-STYLE: italic; MARGIN: 0px 4px 0px 0px; FONT-FAMILY: Georgia; COLOR: #999; FONT-SIZE: 90%; FONT-WEIGHT: normal } .item_icon { POSITION: absolute; MARGIN: 0px; TOP: 12px; LEFT: 24px } .read .item_icon { MARGIN: 0px; LEFT: 18px } .item H3 { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item .contextMenuContainer { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item H3 + .contextMenuContainer { POSITION: relative; TOP: 2px } .tab-groups .item .contextMenuContainer { FLOAT: none } .item INPUT[type=checkbox] { MARGIN: 2px 6px 0px -6px; FLOAT: left } .iconsOnly { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 24px auto; WIDTH: 80% } .iconsOnly LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 0px; FLOAT: left !important; PADDING-TOP: 0px } .iconsOnly > LI:first-child { BORDER-TOP-COLOR: #ccc } .iconsOnly .read { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconsOnly .item_icon { PADDING-BOTTOM: 0px; MIN-HEIGHT: 50px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 12px; LEFT: auto } .iconsOnly .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MIN-HEIGHT: 3em; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .iconsOnly .read .item { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .iconsOnly .item H3 { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly .item .contextMenuContainer { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly LI:hover .item_icon { BACKGROUND: #ededed } .iconsOnly LI:hover .item { BACKGROUND: #ededed } .iconsOnly LI:focus .item_icon { BACKGROUND: #ededed } .iconsOnly LI:focus .item { BACKGROUND: #ededed } .iconsOnly .read .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .read .item_icon { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read:hover .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:hover .item { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item { BACKGROUND: none transparent scroll repeat 0% 0% } .buildList LI INPUT { MARGIN: 2px 8px; FLOAT: left } .buildList INPUT.browse { MARGIN: 0px 0px 6px } .buildList INPUT.genericButton { MARGIN: 0px 0px 6px } .buildList INPUT[type=button] { MARGIN: 0px 0px 6px } .contentListRight { POSITION: absolute; RIGHT: 6px; FONT-WEIGHT: normal; LEFT: auto } .pagedContentListRight { TOP: 4px } .contentListRightOffset { MARGIN-RIGHT: 12em } .contentList .details { PADDING-LEFT: 60px } .contentListPlain .contentListRight + .details { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; PADDING-LEFT: 28px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } .announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } #announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } .contentList-slim .read .details { MARGIN-LEFT: 48px } .staffInfoList .details { MARGIN-RIGHT: 160px } .staffInfoList .hasPhoto .details { MIN-HEIGHT: 135px } .details > P { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .details .note { FONT-WEIGHT: bold } .details > P.important { PADDING-BOTTOM: 0px; MARGIN: 3px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .details > P.important SPAN { COLOR: #888; FONT-WEIGHT: normal } .itemDetails { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .itemDetails P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .announcementInfo P SPAN { COLOR: #999 } .announcementInfo SPAN { COLOR: #999 } .itemDetails SPAN { COLOR: #999 } .announcementInfo P SPAN SPAN { FONT-SIZE: 95% !important } .noItems { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } .additional + P .warnFont { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } #listContainer .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .additional + P .warnFont { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { TEXT-ALIGN: center; PADDING-TOP: 100px } .hierarchy-page .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { MARGIN: 0px auto; DISPLAY: block } .additional + P .warnFont { DISPLAY: block; PADDING-TOP: 100px } .details .attachments { WORD-WRAP: break-word; MARGIN-BOTTOM: 9px; WORD-BREAK: normal } .buildList > LI.separator { Z-INDEX: 0; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; MIN-HEIGHT: 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #ededed; TOP: 0px; PADDING-TOP: 14px; LEFT: 0px } .separator H3.item { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .external-breadcrumbs .receipt { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .separator .line { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: relative; MARGIN: 0px 24px 0px 30px; TOP: 6px; LEFT: 0px } .separator .text { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .external-breadcrumbs .receipt { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .buildList .detailList .hidden { DISPLAY: none } .buildList .detailList .tagContainer { POSITION: relative } .buildList .detailList .tagContainer .hidden { DISPLAY: none } .buildList .detailList .tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer .newTagForm { BORDER-LEFT: #999 1px dotted; MARGIN-LEFT: 6px } .tagContainer .newTagForm LABEL { PADDING-LEFT: 6px } .currentTags { Z-INDEX: 100; POSITION: absolute; LINE-HEIGHT: 1.8; WIDTH: 16em; ZOOM: 1; DISPLAY: none; OVERFLOW: hidden; TOP: 1.2em; RIGHT: 0px } .currentTags SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 18px } .currentTags A { FONT-WEIGHT: bold } .currentTags A.closeCloud { POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 1px; LINE-HEIGHT: 1; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; TOP: 0px; PADDING-TOP: 0px; LEFT: 0px } .auto_complete { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; WIDTH: 12em; BACKGROUND: #e2eefe; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid } .auto_complete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .auto_complete UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3%; WIDTH: 96%; PADDING-RIGHT: 1%; OVERFLOW: hidden; CURSOR: pointer; PADDING-TOP: 2px } .auto_complete UL LI.selected { BACKGROUND-COLOR: #fff } .auto_complete UL STRONG.highlight { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .freq1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 90%; PADDING-TOP: 0px } .freq2 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 105%; PADDING-TOP: 0px } .freq3 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 120%; PADDING-TOP: 0px } .freq4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 135%; PADDING-TOP: 0px } .freq5 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 150%; PADDING-TOP: 0px } .freq6 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 165%; PADDING-TOP: 0px } .freq1:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq2:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq3:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq4:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq5:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq6:hover { BACKGROUND: white; TEXT-DECORATION: none } .currentTags A.tagDisabled { FILTER: alpha(opacity=70); FONT-WEIGHT: normal; TEXT-DECORATION: none; opacity: .7 } .currentTags A.tagDisabled:hover { BACKGROUND: none transparent scroll repeat 0% 0% } .tab-groups .tab-group-label { FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #999 } .subList { MARGIN: 3px 0px 6px } .subList-reorder { MARGIN: 3px 0px 6px } .subList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .buildList .detailList { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .subList-reorder LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 6px } .subList-reorder LI:hover { BORDER-BOTTOM-COLOR: #bbb !important; BORDER-TOP-COLOR: #bbb !important; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #bbb !important; BORDER-LEFT-COLOR: #bbb !important } .subList LI A IMG { VERTICAL-ALIGN: middle } .subList-reorder LI A IMG { VERTICAL-ALIGN: middle } .subList LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList-reorder LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList LI P { VISIBILITY: hidden } .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .buildList .detailList LI .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder .itemDetails { DISPLAY: none } .subList-reorder .details { DISPLAY: none } .subList .details { DISPLAY: none } .itemDetails + .details { OVERFLOW: visible; MARGIN-RIGHT: 13em } .subList LI P SPAN { FONT-WEIGHT: bold } .subListArtifact { CLEAR: both } .detailList .subListArtifact { CLEAR: both } .subListArtifact LI { POSITION: static } .detailList .subListArtifact LI { POSITION: static } .detailList .subListArtifact { ZOOM: 1 } .detailList .subListArtifact LI { ZOOM: 1 } .detailList .subListArtifact LI A { ZOOM: 1 } .buildList .detailList { MARGIN: 0px 0px 0.6em 0.7em } .buildList .detailList .subList { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.buildList UL.detailList OL.subList { LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: decimal } UL.buildList UL.detailList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 0.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: table-row; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } UL.buildList UL.detailList LI SPAN { WIDTH: 135px; DISPLAY: block; FLOAT: left; FONT-WEIGHT: bold } UL.buildList UL LI > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; WIDTH: 79%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: 135px; PADDING-TOP: 0px } UL.buildList UL LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } UL.noimg LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } .buildList .pageBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } .buildList .sectionBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } DIV.itemHeaderControl { POSITION: absolute; TOP: 9px; RIGHT: 14.5em } DIV.itemHeaderControl A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.cartMode { PADDING-BOTTOM: 49px } .addedRow { COLOR: #999 } TABLE.sortable TBODY TR.addedRow TH LABEL A { COLOR: #999 } .addedRow TD A { COLOR: #999 } .addedRow { } .addedRow IMG { FILTER: alpha(opacity=50); opacity: .5 } TABLE#datatable2 TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 THEAD TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .itemSelector { MARGIN: 0px auto; WIDTH: 20px; HEIGHT: 20px } .itemSelector INPUT { FILTER: alpha(opacity=0); opacity: 0 } .available { BACKGROUND: url(../../../images/ci/ng/available_ti.png) no-repeat 0px 0px } .inprogress { BACKGROUND: url(../../../images/ci/ng/progress.png) red no-repeat 0px 0px } .remove { BACKGROUND: url(../../../images/ci/ng/remove_ti.png) no-repeat 0px 0px } .itemTray { Z-INDEX: 10000; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 18px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .picker .itemTray { RIGHT: 12px; LEFT: 12px } DIV.itemTrayContentPane { LEFT: 200px } DIV.itemTrayContentPaneWide { LEFT: 0px } .itemTray H2 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H3 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H2 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H3 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H2 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H3 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H2 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray H3 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray DIV.noItems { TEXT-ALIGN: center; COLOR: #777 } .itemTray #cartList { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .itemTray #selectedItemsWrapper { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #777; PADDING-TOP: 4px } .itemTray .cartTableWrapper { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; OVERFLOW-Y: auto; BACKGROUND: #fff; MAX-HEIGHT: 130px; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .sideTOC .cartTableWrapper { OVERFLOW: auto } #count { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .itemTray #numberOfElements { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #progress { Z-INDEX: 300; POSITION: absolute; MARGIN: 300px 50%; WIDTH: 100px; DISPLAY: none } #progress DIV { MARGIN-LEFT: -100% } #cartSubmit { Z-INDEX: 200 } #cartList FIELDSET { PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #f6f6f6; PADDING-TOP: 3px } #cartList FIELDSET UL LI INPUT[type=text] { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 2.3em; PADDING-RIGHT: 0px; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 0px } .itemGallery { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .itemGallery > LI { TEXT-ALIGN: center; MARGIN: 5px 5px 20px; WIDTH: 1.2em; ZOOM: 1; VERTICAL-ALIGN: top; PADDING-TOP: 0.06em; _height: 130px } .itemGallery .stackFix { WIDTH: 100%; HEIGHT: auto } .itemIconHolder { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px auto 0.05em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 1em; PADDING-TOP: 0px } .itemIconHolder A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; ZOOM: 1; DISPLAY: block; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .itemIconHolder A:hover { BORDER-BOTTOM-COLOR: #777; BORDER-TOP-COLOR: #777; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777 } .itemIconWrapper { BORDER-BOTTOM: #f1f1f1 0.02em solid; POSITION: absolute; BORDER-LEFT: #f1f1f1 0.02em solid; MARGIN: 0px 50%; WIDTH: auto; BOTTOM: 0px; BORDER-TOP: #f1f1f1 0.02em solid; BORDER-RIGHT: #f1f1f1 0.02em solid } .x-small LI { WIDTH: 1.8em; FONT-SIZE: 70px } .small LI { FONT-SIZE: 100px } .normal LI { FONT-SIZE: 140px } .large LI { FONT-SIZE: 180px } .x-large LI { FONT-SIZE: 220px } .u_resetFont-px { FONT-SIZE: 12px } .itemIconLink-vertical A { WIDTH: 0.78em; HEIGHT: 0.9em } .itemIconLink-square A { WIDTH: 0.78em; HEIGHT: 0.78em } .itemIconLink-horizontal A { WIDTH: 1em; HEIGHT: 0.78em } .itemIconLink-vertical IMG { WIDTH: 0.8em; HEIGHT: 0.9em; VERTICAL-ALIGN: top } .itemIconLink-square IMG { WIDTH: 0.8em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-horizontal IMG { WIDTH: 1em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-vertical .itemIconWrapper { LEFT: -0.39em } .itemIconLink-square .itemIconWrapper { LEFT: -0.39em } .itemIconLink-horizontal .itemIconWrapper { LEFT: -0.5em } .itemInfo { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-SIZE: 12px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.2em } .itemInfo LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; LINE-HEIGHT: 1.25em; MARGIN: 0px; WIDTH: 100%; FONT-SIZE: 95%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .itemInfo LI SPAN { VERTICAL-ALIGN: top } .itemInfo LI .label { TEXT-ALIGN: right } .itemInfo .cmimg { WIDTH: 18px } .itemInfo .cmimg IMG { WIDTH: 18px } .itemInfo .title { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .itemInfo INPUT[type='text'] { WIDTH: 100% } .itemInfo .high { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; BACKGROUND: #fff1c5; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .lb-content .itemInfo { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 3px } .lb-content .itemInfo LI { LINE-HEIGHT: 1.45em } .lb-content .itemInfo .title { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .iconGallery > LI { MARGIN: 5px 5px 12px; WIDTH: 75px } .iconGallery .itemIconHolder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; HEIGHT: 60px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemIconHolder A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemTitle { COLOR: #666; FONT-SIZE: 85% } .iconGallery .itemIconWrapper { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: auto; PADDING-RIGHT: 4px; BACKGROUND: #fff; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px; LEFT: -30px } .sideTOC_panelMin .container { POSITION: static !important } .sideTOC_panel .container { POSITION: static !important } .sideTOC_panelMax .container { POSITION: static !important } .tocWrapper { Z-INDEX: 200; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 0px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .tocHidden { TOP: -10000px !important } .tocHead { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #333; PADDING-TOP: 10px } .tocHead H2 { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .tocActions { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .sideTOC H2 { FLOAT: none !important; FONT-SIZE: 110%; text-shadow: 0 1px 0 #f0f0f0 } .tocActions { WHITE-SPACE: nowrap } .tocActions A { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions SPAN { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions > IMG { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .actionBar .tocNavText { PADDING-BOTTOM: 13px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; COLOR: #eee; PADDING-TOP: 13px } .actionBar .tocNavText + A { MARGIN-RIGHT: 12px } .actionBar .tocNavText + IMG { MARGIN-RIGHT: 12px } .tocActions SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .tocTreeWrapper { PADDING-BOTTOM: 0px; OVERFLOW-Y: auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .sideTOC .tocTreeWrapper { OVERFLOW: auto } UL#tocTree LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL#tocTree A.itemActive { FONT-WEIGHT: bold; TEXT-DECORATION: none } UL#tocTree SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; COLOR: #555; PADDING-TOP: 0px } .treeNodeIcon { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .sideTOC { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 200px; BOTTOM: auto; PADDING-RIGHT: 0px; BACKGROUND: #ddd; BORDER-TOP: #aaa 1px solid; TOP: 0px; RIGHT: auto; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -2px 0 2px rgba(0, 0, 0, .2) inset, 0px 3px 2px #ddd inset, 0px -3px 2px #ddd inset; -webkit-box-shadow: none; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: none } .sideTOCMinimize { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 9px !important; BOTTOM: auto; PADDING-RIGHT: 0px; BORDER-TOP: medium none; TOP: 0px; RIGHT: auto; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } .sideTOCMinimize .tocActions { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 1px; LEFT: -24px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .sideTOCMinimize .tocActions A { MARGIN: -1px 0px 0px; DISPLAY: block } .tocBottom_pullExpanded { LEFT: 228px } .tocBottom_pullCollapsed { LEFT: 18px } .tocSide_pullExpanded { TOP: 4px; LEFT: 222px } .tocSide_pullCollapsed { LEFT: 13px } .sideTOC_panel { PADDING-LEFT: 201px } .sideTOC_panelMin { PADDING-LEFT: 21px } .sideTOC_panelMax { PADDING-LEFT: 351px } .tocBottom_min { PADDING-BOTTOM: 30px } .tocBottom_max { PADDING-BOTTOM: 330px } .tocBottom_open { PADDING-BOTTOM: 160px } .tocBottom_open .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_max .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_min .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panel .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMax .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMin .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .localViewToggle { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .localViewToggle UL { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .localViewToggle UL LI { FLOAT: right } .localViewToggle UL LI.active { POSITION: relative } .localViewToggle A { PADDING-BOTTOM: 7px; TEXT-TRANSFORM: inherit; MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; DISPLAY: block; FONT-SIZE: 90%; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .localViewToggle A:hover { TEXT-DECORATION: underline } .localViewToggle .active A:hover { TEXT-DECORATION: none } .localViewToggle A.active { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } DIV.localViewToggle H2 { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } .localViewToggle A.active:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } DIV.localViewToggle H2:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .localViewToggle .separator { BORDER-LEFT: #d7bb66 1px dotted; PADDING-LEFT: 6px; MARGIN-LEFT: 6px } .localViewToggle A.miniComboButton { BORDER-BOTTOM: #d7bb66 1px solid; BORDER-LEFT: #d7bb66 1px solid; PADDING-RIGHT: 16px; BACKGROUND: url(images/controls.png) #f5e7bd no-repeat -1px -500px; COLOR: #444; BORDER-TOP: #d7bb66 1px solid; BORDER-RIGHT: #d7bb66 1px solid; TEXT-DECORATION: none !important } .containerTabs { MARGIN: 6px 24px 0px; FONT-SIZE: 100% } .containerTabs LI { POSITION: relative; FLOAT: left } .containerTabs LI A { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI H3 { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs LI H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs .active A { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:hover { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:focus { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active H3 { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .active H3:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .tabhead H3 { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 18px; COLOR: #555; PADDING-TOP: 9px } .collapseTabs .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #d1eaef } .collapseTabs .containerTabs .active A:before { CONTENT: none } .portlet .containerTabs { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 8px } .portlet .containerTabs LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .containerTabs LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } .portlet .containerTabs .active A { MARGIN: 0px } .collapseTabs .containerTabs { MARGIN: 0px } .portlet .containerTabs .active A:before { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:after { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:before { BORDER-BOTTOM-COLOR: #ddd } .portlet .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #fff4bf; BOTTOM: -1px } .mapTabs { POSITION: relative; MARGIN: 20px -30px 0px; BACKGROUND: #d1eaef; CLEAR: both; BORDER-TOP: #aaa 1px solid; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .lesson-plan-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { BORDER-BOTTOM: #bbb 1px solid } .evidence-page .mapTabs LI:before { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:after { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:before { Z-INDEX: 100; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #bbb 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 1px } .evidence-page .mapTabs LI.active + LI:after { BORDER-LEFT-COLOR: #eaeaea } .evidence-page .mapTabs LI:first-child:before { DISPLAY: none } .evidence-page .mapTabs LI:first-child:after { DISPLAY: none } .evidence-page .mapTabs LI A { PADDING-LEFT: 30px } .evidence-page .mapTabs LI.active H3 { PADDING-LEFT: 30px } .mapTabs UL { MARGIN-TOP: 0px; MARGIN-LEFT: 0px } DIV.mapTabs UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mapTabs UL LI.active H3 { POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; BACKGROUND: #eaeaea; FONT-SIZE: 100%; PADDING-TOP: 14px } .mapTabs UL LI.active H3:before { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #eaeaea; BOTTOM: -1px } .mapTabs UL LI.active:first-child H3:after { MARGIN-LEFT: 0px } .mapTabs UL LI.active:first-child H3:before { MARGIN-LEFT: 0px } .lesson-plan-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .hierarchy-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .lesson-plan-page .mapTabs UL LI.active H3:before { DISPLAY: none } .hierarchy-page .mapTabs UL LI.active H3:before { DISPLAY: none } .evidence-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #fff } .mapTabs UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; COLOR: #01869e; FONT-SIZE: 100%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .mapTabs UL LI A:hover { TEXT-DECORATION: underline } .mapTabs UL LI SPAN:hover { BORDER-BOTTOM-STYLE: solid } .mapTabs A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs LI:first-child A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 54px; BACKGROUND-POSITION: 30px 50% } .mapTabs UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI:first-child H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI DIV { PADDING-BOTTOM: 7px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: none; PADDING-TOP: 7px } .mapTabs UL LI.saveTab A { DISPLAY: none } UL.containerTabs LI.saveTab IMG { DISPLAY: none } .mapTabs UL LI.saveFadeIn { FILTER: alpha(opacity=0); opacity: 0 } .mapTabs UL LI.saveTab DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/tab_receipt_back.gif) #44b10e repeat-x center bottom; COLOR: white; FONT-WEIGHT: bold; PADDING-TOP: 5px } DIV.mapHelp { PADDING-BOTTOM: 0px; MARGIN: -1px 0px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff1c5; PADDING-TOP: 4px } UL.setStatus { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 3px; LIST-STYLE-TYPE: none; MARGIN: 15px 0px 9px 30px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #eee 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 3px } UL.setStatus LI { MARGIN: 0px 6px 0px 0px; FONT-SIZE: 95% } UL.setStatus LI INPUT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.setStatus LI LABEL { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 1px 0px } UL.setStatus LI LABEL.complete { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_complete.gif) no-repeat 1px 0px } FORM.mapCanvasForm DIV.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } FORM.mapCanvasForm H3.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } .mapTabs .containerTabs { BORDER-BOTTOM: 0px } #mapCanvasForm { MARGIN: 0px -30px } #mapCanvasForm #containerDiv { MARGIN: 20px 0px } .evidence-page .infoListWrapper H3 A.itemHead { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .infoListWrapper H3 A.itemHeadOpen { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .leftColumn-narrow { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f9f9f9; MARGIN: 0px; PADDING-LEFT: 6px; WIDTH: 26%; PADDING-RIGHT: 6px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; border-radius: 3px 3px 3px 3px } .evidence-page .leftColumn-wide { WIDTH: 69% } .sessionBox { WIDTH: 95% } .sessionBox .key-valueTable { } .sessionBox .key-valueTable TBODY TD { PADDING-RIGHT: 40px } .sessionBox .key-valueTable TBODY TH { PADDING-RIGHT: 40px } .evidence-page .criteriaSummary { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; MARGIN: 0px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 12px } .evidence-page .paletteItems LI { MARGIN-LEFT: 0px } .paneTabs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: -12px 0px 12px; ZOOM: 1; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .subtabs-framed .paneTabs { -moz-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -webkit-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; border-radius: 0 } .paneTabs UL { CLEAR: both } .paneTabs UL LI { Z-INDEX: 200; POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs .active { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs A { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 12px } .paneTabs UL LI:first-child A { BORDER-LEFT: 0px } .paneTabs A:hover { TEXT-DECORATION: underline } .paneTabs .active A:hover { TEXT-DECORATION: none } .paneTabs .active A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:focus { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active H3 { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:after { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #ccc 8px solid; BOTTOM: 0px } .paneTabs .active A:after { BOTTOM: -1px } .paneTabs .activepersonal A { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .activepersonal A:hover { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .personal A { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dedede; TEXT-DECORATION: none; PADDING-TOP: 3px } .paneTabs .external A { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #dedede no-repeat 2px center } .paneTabs .external A:hover { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #fff1c5 no-repeat 2px center } .paneTabs .activepersonal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs .personal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs A.paneTabOptions { DISPLAY: none } .paneTabs .activepersonal:hover A.paneTabOptions { FILTER: alpha(opacity=100); opacity: 1 } .paneTabs A.hiddenTabsLink { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center 6px } .paneTabs A.hiddenTabsLink IMG { FILTER: alpha(opacity=0); WIDTH: 2px; HEIGHT: 2px; opacity: 0 } .panelTabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .panelTabs LI { BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FLOAT: right; TOP: 2px !important; RIGHT: -3px; PADDING-TOP: 0px !important } .panelTabs LI.active { Z-INDEX: 2 } .panelTabs LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI.active A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI A:hover { BACKGROUND-COLOR: #f6f6f6 } .panelTabs LI.active A { BORDER-BOTTOM: 0px; COLOR: #333; FONT-WEIGHT: bold } .panelTabs LI.active A.preview { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 2px solid; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .panelTabs LI.active A.edit { BORDER-BOTTOM: 0px; MARGIN: 0px } .collapseTabs { MARGIN-BOTTOM: 12px } .collapseTabsData { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; BACKGROUND: #d1eaef; PADDING-TOP: 12px; -moz-border-radius: 3px } .containerTabsCollapsed { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .collapseTabs LI A { TEXT-DECORATION: underline } .collapseTabs LI.active { Z-INDEX: 1000 } .sequenceMapHead { MARGIN: 6px 0px } .sequenceMapHead H3 { MARGIN: 12px 0px 6px } .sequenceMapHead P { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 0px } DIV.sequenceMapHead DIV.actionBar { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #fff7de; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.searchResultList-sortOptions { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: right; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; MIN-HEIGHT: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 15px; PADDING-TOP: 10px } DIV.searchResultList-sortOptionsCount { WIDTH: auto; FLOAT: left } DIV.dropzone { BORDER-BOTTOM: #aaa 2px dashed; BORDER-LEFT: #aaa 2px dashed; BORDER-TOP: #aaa 2px dashed; BORDER-RIGHT: #aaa 2px dashed; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -moz-border-radius: 3px; -webkit-border-radius: 3px } .container DIV.dropzone { TOP: 3px !important } .modalOverlay { Z-INDEX: 90; POSITION: fixed; FILTER: alpha(opacity=1); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .01 } .cmdiv { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .menumini { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.quickAddPal { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.keyboardAccess { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .nav .sub UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .gb_currView.nav .sub > UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .menumini UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .keyboardAccess { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } SPAN.currentTags { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea-slim { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .previewArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .jumptopage { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .bcContent .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI IMG + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } DIV.treeContainer UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #learningUnitToc UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #loginLang UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .actionBar .mainButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .secondaryButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBarMicro .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton:first-child .flyout { MARGIN: 0px 0px 0px -2px } DIV.calPicker.quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI IMG + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } DIV.treeContainer UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } #learningUnitToc UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.nestedList { -moz-box-shadow: none; -webkit-box-shadow: none } .liveArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } .previewArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } #addFolderForm { MARGIN: 0px -30px } UL.tree LI A + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI IMG + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } DIV.treeContainer UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #learningUnitToc UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .builderItem .liveArea { Z-INDEX: 100; POSITION: absolute; TOP: 12px; LEFT: 22px } .previewArea { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; MARGIN-TOP: 0px; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .jumptopage { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 8px } .jumptopage LABEL { FONT-SIZE: 90% } .liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.secondaryButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { OVERFLOW: hidden } .actionBar UL LI.secondaryButton A.liveAreaTab { OVERFLOW: hidden } .liveArea-slim { PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 3px } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .columnActions .nav .sub UL { MARGIN-TOP: 0px } .nav .sub UL { POSITION: absolute; DISPLAY: none } .nav .sub .flyout { POSITION: absolute; DISPLAY: none } .nav .sub UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .nav .sub UL UL { DISPLAY: block } .nav .sub .flyout UL { DISPLAY: block } .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .nav .sub:hover .flyout { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { TOP: 18px } .rumble_top .nav .sub:hover UL { TOP: 18px } .rumble .nav .sub:hover UL { TOP: 18px } .quickAddPal { WIDTH: auto } .quickAddColor { WIDTH: 311px } .quickAddColor A.genericButton { MARGIN: 2px 0px; FLOAT: left } .cmdiv { Z-INDEX: 1150 !important; BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .cmdiv UL { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; WIDTH: 180px; PADDING-RIGHT: 4px; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 3px } .cmdiv UL:first-child { BORDER-TOP: medium none } .menumini UL:first-child { BORDER-TOP: medium none } .cmdiv UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .menumini UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .nav .sub UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .menumini A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } #loginLang UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: auto; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .nav .sub UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .nav LI.sub UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .actionBarMicro .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .actionBarMicro .nav LI.sub UL LI A:focus { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:focus { BACKGROUND-IMAGE: none } .nav LI.sub UL LI A:focus { BACKGROUND-COLOR: #fff !important } .cmdiv A:focus { BACKGROUND-COLOR: #fff !important } .menumini A:focus { BACKGROUND-COLOR: #fff !important } .nav .sub UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .paneTabs .nav .sub UL LI A { TEXT-ALIGN: left } .timediv UL LI A:hover { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { BACKGROUND-COLOR: #369; COLOR: #444 } .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; LEFT: 0px } .topTabs-compact .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; RIGHT: 0px; LEFT: auto } .cmdiv LI.contextmenubar_top { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .menumini LI.contextmenubar { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-border-radius: 0; -webkit-border-radius: 0 } .quickAddPal H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .keyboardAccess H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .quickAddPalHeader { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .comText .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .e_expandArea .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess P.paletteHelp { BORDER-BOTTOM: #fc0 1px solid; BORDER-LEFT: #fc0 1px solid; PADDING-BOTTOM: 3px; MARGIN: 6px 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; WHITE-SPACE: normal; BACKGROUND: #fff1c5; FONT-SIZE: 90%; BORDER-TOP: #fc0 1px solid; BORDER-RIGHT: #fc0 1px solid; PADDING-TOP: 3px } .bcMenuDiv-1 { WIDTH: 190px } .bcMenuDiv-2 { WIDTH: 380px } .bcMenuDiv-3 { WIDTH: 570px } .bcMenuDiv-4 { WIDTH: 760px } .bcMenuDiv-5 { WIDTH: 950px } .flyout { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 12px !important; PADDING-RIGHT: 12px !important; PADDING-TOP: 9px !important } .nav .sub .flyout DIV { POSITION: static; PADDING-BOTTOM: 6px; MARGIN: 0px; MIN-HEIGHT: 1px; FLOAT: left } .flyout H3 { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 95% Georgia, serif; LETTER-SPACING: 2px; PADDING-TOP: 0px } .flyout H3 .line { HEIGHT: 1px; BORDER-TOP: #ccc 1px solid } .flyout H3 .text { BACKGROUND: #d1eaef } .nav .sub .flyout UL { Z-INDEX: 1000; BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted; BORDER-RIGHT: 0px; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .nav .sub .flyout DIV H3 + UL { BORDER-TOP: 0px } .nav .sub .flyout DIV UL:first-child { BORDER-TOP: 0px } .nav .sub .flyout A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .quickAddPal .colorlist { MARGIN: 6px 0px 9px 6px; WIDTH: 288px } .quickAddPal .stepcontent .colorlist LI { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 14px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 14px; OVERFLOW: hidden; BORDER-TOP: #333 1px solid; CURSOR: pointer; BORDER-RIGHT: #333 1px solid; PADDING-TOP: 0px } .quickAddPal .colorlist LI A { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:link { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: 12px; HEIGHT: 12px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .quickAddPal .colorlist LI A:active { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A:focus { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:active { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:focus { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorPreview { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: white; PADDING-TOP: 3px } .quickAddPal .colorPreview IMG { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #444 1px solid; MARGIN: 3px; WIDTH: 42px; DISPLAY: block; BACKGROUND: black; FLOAT: left; HEIGHT: 42px; BORDER-TOP: #444 1px solid; BORDER-RIGHT: #444 1px solid } .quickAddPal .colorPreview DIV { WIDTH: 66%; FLOAT: left; MARGIN-LEFT: 3px } .quickAddPal .colorPreview SPAN { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 0px } SPAN.title_color_name { COLOR: #666 } .receipt { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .warning { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .inlineDialog { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .contentPaneWide.tabbedPane .receipt { Z-INDEX: 201; BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; PADDING-BOTTOM: 12px; MARGIN: -12px 0px 10px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .contentPane .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .contentPaneWide .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .container .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px; box-shadow: none } .receipt ~ #editmodeWrapper { Z-INDEX: 1; POSITION: relative } .receipt ~ .contentBox { Z-INDEX: 1; POSITION: relative } .sideTOC_panel .receipt ~ #editmodeWrapper { POSITION: static } .sideTOC_panel .receipt { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .tabbedPane .receipt A.close IMG { DISPLAY: none } .contentPane .receipt A.close IMG { DISPLAY: none } .contentPaneWide .receipt A.close IMG { DISPLAY: none } A.closeCopyright IMG { DISPLAY: none } .tabbedPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPaneWide .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .receipt A.close:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { } .receipt A.close:hover:before { COLOR: #fff } A.closeCopyright:hover:before { COLOR: #fff } .inlineDialog { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .inlineReceipt { POSITION: absolute; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .miniReceipt { Z-INDEX: 300; BORDER-BOTTOM: #bbb 1px solid; POSITION: absolute; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .bad { COLOR: #fff; FONT-WEIGHT: bold } .good { COLOR: #fff; FONT-WEIGHT: bold } .removing { COLOR: #fff; FONT-WEIGHT: bold } .adding { COLOR: #fff; FONT-WEIGHT: bold } .infoReceipt { COLOR: #fff; FONT-WEIGHT: bold } .brokenFileLink { COLOR: #fff; FONT-WEIGHT: bold } .portlet SPAN.warning.due { COLOR: #fff; FONT-WEIGHT: bold } .good A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .removing { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .brokenFileLink { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .portlet SPAN.warning.due { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .container .warningReceipt { PADDING-RIGHT: 24px } .warningReceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.areceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.close:before { } .contentPane .warningReceipt A.close { TOP: 5px; RIGHT: 5px } .warningReceipt A.close:hover:before { } .good { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .adding { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .infoReceipt { BORDER-BOTTOM-COLOR: #62758f; BORDER-TOP-COLOR: #62758f; BACKGROUND: #6d8aaf; BORDER-RIGHT-COLOR: #62758f; BORDER-LEFT-COLOR: #62758f } .attention { BORDER-BOTTOM-COLOR: #fc3; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #fc3; MARGIN: 0px 0px 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff4bf; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; BORDER-LEFT-WIDTH: 2px; FONT-WEIGHT: normal; PADDING-TOP: 4px } .removing { FONT-WEIGHT: normal } .adding { FONT-WEIGHT: normal } .brokenFileLink { FONT-WEIGHT: normal } .portlet SPAN.warning.due { FONT-WEIGHT: normal } .brokenFileLink { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet SPAN.warning.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .infoBox { BORDER-BOTTOM: #afdf61 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #afdf61 1px solid; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #afdf61 1px solid; BORDER-RIGHT: #afdf61 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .infoBox > .message { DISPLAY: block; MARGIN-BOTTOM: 4px } .info-ok { BORDER-BOTTOM-COLOR: #afdf61; BORDER-TOP-COLOR: #afdf61; BACKGROUND: #d9efa4; COLOR: #360; BORDER-RIGHT-COLOR: #afdf61; BORDER-LEFT-COLOR: #afdf61 } .nestedReceipt { Z-INDEX: 1001; PADDING-BOTTOM: 12px !important; MARGIN: 0px 20% 6px 0px; PADDING-LEFT: 12px !important; PADDING-RIGHT: 30px !important; PADDING-TOP: 6px !important } [id*='receipt_nested'].receipt { PADDING-RIGHT: 28px } .columnMsgWrapper { MARGIN-LEFT: 60% } .columnMsgWrapper .column-2 { MIN-HEIGHT: 1px } .smsIssue { POSITION: relative; MARGIN: 3px 3px 9px } .t2vIssue { POSITION: relative; MARGIN: 3px 3px 9px } .bubbleStem-bottom-center { BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: transparent 10px solid; WIDTH: 0px; BOTTOM: -12px; HEIGHT: 0px; MARGIN-LEFT: -8px; BORDER-TOP: #fc3 12px solid; BORDER-RIGHT: transparent 10px solid; LEFT: 50% } .nextStepsReceipt { BACKGROUND-IMAGE: url(images/reorder_bg.png); POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4; BACKGROUND-COLOR: #eee; MARGIN: 10px -30px -20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #545454; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3) } .nextStepsText { PADDING-BOTTOM: 18px; MARGIN: 0px 0px 0px 20px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fefefe; PADDING-TOP: 18px } .nextStepsText H5 { MIN-WIDTH: 6em; LINE-HEIGHT: 2em; DISPLAY: inline-block; COLOR: #545454; text-shadow: 1px 1px 1px #fff } .receiptCollapsed { POSITION: relative; FONT-SIZE: 90% } .external-breadcrumbs .receipt { BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; BORDER-TOP: 0px; TOP: -9px; BORDER-RIGHT: 0px; box-shadow: none } .stepcontent LI.fieldError { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; BACKGROUND: #fff1c5; PADDING-TOP: 2px } .stepcontent LI.fieldError .fieldErrorText { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { DISPLAY: inline; MARGIN-LEFT: 0px } .criteriaSummary { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px -28px 0px 0px; PADDING-LEFT: 12px; BACKGROUND: #f9f9f9 } #bb-question-discover H2 { FONT-SIZE: 110% } #filterContainer H2 { MARGIN-LEFT: 14px } #filterContainer .columnActions { MARGIN-LEFT: 14px } .criteriaSummary H3 { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .criteriaSummary .hidden { DISPLAY: none; VISIBILITY: hidden } .criteriaSummary UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .criteriaSummary UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FLOAT: left; FONT-SIZE: 90%; PADDING-TOP: 3px; border-radius: 12px } .criteriaSummary UL LI:first-child { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG { MARGIN: 0px; DISPLAY: block; FLOAT: left; COLOR: #aaa; FONT-WEIGHT: normal } .receipt-highlight { BACKGROUND: #fff4bf; box-shadow: 0 0 4px #fff } .receipt-default { BACKGROUND: none transparent scroll repeat 0% 0%; box-shadow: none } .criteriaSummary UL LI STRONG:before { POSITION: relative; LINE-HEIGHT: 1; COLOR: #aaa; FONT-SIZE: 120%; CONTENT: "+"; FONT-WEIGHT: bold; LEFT: -2px } .criteriaSummary UL LI SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI A { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI SPAN { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG + SPAN { MARGIN-LEFT: 3px } .criteriaSummary UL LI A { PADDING-RIGHT: 18px; BACKGROUND: url(../../../images/ci/icons/delete_li.gif) #eee no-repeat 96% 2px; TEXT-DECORATION: none } .search-element { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 18px; PADDING-LEFT: 9px; PADDING-RIGHT: 3px; BACKGROUND: #f9f9f9; PADDING-TOP: 18px } .search-element H2 { LINE-HEIGHT: 1; MARGIN: 0px; WIDTH: 0px; DISPLAY: inline-block; HEIGHT: 22px; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; OVERFLOW: hidden; FONT-WEIGHT: normal } .search-element H2:before { POSITION: relative; MARGIN: 0px 3px 6px 0px; FONT: 17px/1 "Utilicons"; COLOR: #aaa; VERTICAL-ALIGN: middle; CONTENT: "F"; TOP: 2px } .search-element INPUT[type='text'] { WIDTH: 60%; -moz-appearance: searchfield; -webkit-appearance: searchfield } .calPicker { Z-INDEX: 1500 !important } .calPicker .calHead { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .calPicker H3 { BORDER-BOTTOM: medium none; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 40px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .calPicker .previous { POSITION: absolute; TOP: 2px; LEFT: 2px } .calPicker .next { POSITION: absolute; TOP: 2px; RIGHT: 2px } .calPicker DIV.calFoot { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; CLEAR: both; PADDING-TOP: 6px } .calPicker A.contextmenubar { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .calPicker A.contextmenubar:hover { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .timediv { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .timediv UL { WIDTH: 8em; HEIGHT: 200px; OVERFLOW: auto } .timediv UL LI.contextmenubar_top { WIDTH: 114px; TOP: -18px } .timediv UL LI A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .csPicker { MIN-WIDTH: 300px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 12px; FONT-SIZE: 95%; PADDING-TOP: 0px } .csPicker .actionBar { FONT-SIZE: 110% } .csPicker .localViewToggle { FONT-SIZE: 110% } .csPicker .contentPaneWide { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .breadcrumbs { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .itemTray { Z-INDEX: 1000 } .csPicker .itemTray .taskbuttondiv { MARGIN: 0px; FONT-SIZE: 105% } .csPicker .itemTray H3 { FONT-SIZE: 115% } .csPicker #titleicon + H1 { MARGIN-TOP: 2px } .csPicker .itemTray #numberOfElements { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.lb-overlay { Z-INDEX: 1001; POSITION: fixed; BACKGROUND-COLOR: #000; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px } DIV.lb-wrapper { Z-INDEX: 1002; POSITION: fixed; OVERFLOW: hidden } DIV.lb-wrapper DIV.lb-header { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #dedede; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } DIV.lb-wrapper DIV.lb-header H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 15px; HEIGHT: 1.23em; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-header A { POSITION: absolute; DISPLAY: block; TOP: 10px; RIGHT: 10px } DIV.lb-wrapper DIV.lb-header A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; VERTICAL-ALIGN: top; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.lb-wrapper DIV.lb-content { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: auto; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-content DIV.lb-loading { BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) no-repeat center center } DIV.lb-wrapper DIV.topRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #lightbox DIV.bottomRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } DIV.lb-wrapper DIV.topRound B { DISPLAY: block; OVERFLOW: hidden } #lightbox DIV.bottomRound B { DISPLAY: block; OVERFLOW: hidden } DIV.lb-wrapper DIV.topRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } #lightbox DIV.bottomRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } #lightbox DIV.bottomRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightbox DIV.bottomRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightboxWrapper { Z-INDEX: 1001; POSITION: absolute; TOP: 0px; RIGHT: 0px; LEFT: 0px } #lightboxWrapper-inner { Z-INDEX: 1002; POSITION: relative; TEXT-ALIGN: center; WIDTH: 100%; TOP: 0px; LEFT: 0px } #lightbox { Z-INDEX: 1003; POSITION: relative; TEXT-ALIGN: left; MARGIN: 40px 0px 0px; DISPLAY: block; TOP: auto; LEFT: auto } .my-places-popup #lightbox { MARGIN: 0px } .my-places-popup #lightboxWrapper { POSITION: relative } #lightbox #lightboxContent { BORDER-BOTTOM: #333 2px solid; POSITION: relative; BORDER-LEFT: #333 2px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff !important; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP: #333 2px solid; BORDER-RIGHT: #333 2px solid; PADDING-TOP: 1px; -moz-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -moz-border-radius: 5px; -webkit-border-radius: 5px } .my-places-popup #lightbox #lightboxContent { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .lb-container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lb-content .container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lbAction { Z-INDEX: 1005; POSITION: absolute; TOP: 9px; RIGHT: 9px } #overlay { Z-INDEX: 1000; POSITION: fixed; FILTER: alpha(opacity=30); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .30 } .done#lightbox #lbLoadMessage { DISPLAY: none } .done#lightbox #lbContent { DISPLAY: block } .loading#lightbox #lbContent { DISPLAY: none } .loading#lightbox #lbLoadMessage { DISPLAY: block } .myPlacesContent { PADDING-BOTTOM: 16px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; HEIGHT: auto !important; MAX-HEIGHT: 500px !important; FONT-SIZE: 95%; OVERFLOW: auto; PADDING-TOP: 16px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .avatar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .myavatar { MARGIN-BOTTOM: 12px; MAX-HEIGHT: 150px; OVERFLOW: hidden } #lightbox .tallPara { PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 14px } #lightbox UL { MARGIN: 4px 0px 12px } #lightbox UL LI { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } #lightbox UL LI A:hover { TEXT-DECORATION: underline } DIV.lbContainer P.taskButtonsContent { MARGIN: 12px 0px 6px } .toBeRemoved { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .toBeRemoved > TD { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .unsavedItem { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD:first-child { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD { BACKGROUND-IMAGE: none } A.selectedItem { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } A.selectedItem:focus { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } TR.inEditMode-row { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TR.inEditMode-row TD { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 6px !important } #dataCollectionContainer { MARGIN: -20px -30px 0px } .popup #dataCollectionContainer { MARGIN: -12px -20px } DIV#dataCollectionContainer DIV.contentBlock { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-question-discover .inventoryListContainerDiv { PADDING-LEFT: 12px } .picker .inventoryListContainerDiv { PADDING-LEFT: 12px } .blogContainer .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV[id*='step'] { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } .submittitle { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #infoStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #taskStatusStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #linkedContentStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } DIV[id*='stepcontent'] { PADDING-BOTTOM: 0px; PADDING-LEFT: 48px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-TOP: 0px } .steptitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { PADDING-BOTTOM: 18px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .steptitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { MARGIN-RIGHT: 3px } #toolSettingsForm .steptitle SPAN { DISPLAY: none } #toolSettingsForm .stepcontent { PADDING-LEFT: 20px } #toolSettingsForm .steptitle { PADDING-LEFT: 9px } #toolSettingsForm .submittitle.steptitle { PADDING-LEFT: 27px } H3.noNumber { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 4px } .stepcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .stepcontent LI { PADDING-BOTTOM: 6px; MARGIN-BOTTOM: 6px } .stepcontent LI LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .stepcontent LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .stepcontent .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepcontent .stepHelp:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .stepcontent .fieldHelp { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 2px } A.browse + .fieldHelp { PADDING-TOP: 9px } .stepcontent .nonHelp { COLOR: #000; FONT-SIZE: 95% } .stepcontent .nestedList LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .nestedListSmall LI { FONT-SIZE: 90% } .nestedSubList { MARGIN: 6px 6px 6px 30px } .stepLite { PADDING-BOTTOM: 12px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 6px } .columnStep .column-3 { MIN-HEIGHT: 200px } .columnStep .column-3 TABLE.attachments { FONT-SIZE: 90% } .columnStep DIV H3 { MARGIN: 6px } .columnStep DIV DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } OL.nestedList LI DIV.imgLabel { WIDTH: auto } OL.nestedList LI DIV.imgLabel SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } OL.nestedList LI DIV.imgLabel SPAN.control { DISPLAY: inline } #title_color_value { PADDING-TOP: 6px } DIV.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.gb_gridCell_inner H3.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.field { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { WIDTH: 100% } DIV.label SPAN.contextMenuContainer { DISPLAY: inline } DIV.noLabelField BR { DISPLAY: none } SPAN.stepHelp BR { DISPLAY: block } SPAN.fieldHelp BR { DISPLAY: block } DIV.field OL P { PADDING-BOTTOM: 3px } DIV.noLabelField UL P { PADDING-BOTTOM: 3px } DIV.field EM { MARGIN-TOP: 5px; DISPLAY: inline-block; FONT: italic 100% Georgia, serif; COLOR: #888 } FIELDSET.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } DIV.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } FIELDSET.info DIV.label { COLOR: #666 } .reqfield { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 40px; PADDING-RIGHT: 0px; FONT: italic 105% Georgia, serif; FLOAT: left; COLOR: #777; PADDING-TOP: 24px } .reqfield:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .required > .label > LABEL:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .reqfield IMG { DISPLAY: none } .required > .label > LABEL IMG { DISPLAY: none } .requiredField { PADDING-BOTTOM: 6px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(../../../images/ci/icons/required.gif) no-repeat 0px center; PADDING-TOP: 6px } DIV.label IMG.indicator { POSITION: absolute; TOP: 0px; LEFT: -18px } .largeText DIV.label { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText DIV.field { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 75% !important; FONT-WEIGHT: normal } .field A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 95% } DIV.editBlock { FLOAT: left; MARGIN-RIGHT: 12px } .largeText DIV.field DIV.editBlock LABEL { FONT-SIZE: 80%; FONT-WEIGHT: normal } .largeText DIV.field DIV.exemptdiv LABEL { FONT-SIZE: 65% } .largeText TEXTAREA { FONT-SIZE: 80% } LI.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; PADDING-TOP: 3px; -moz-border-radius: 6px; -webkit-border-radius: 6px } .e_expandArea { MARGIN-TOP: 21px } #e_groups_menu { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #ceeaee; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .parent-child-listing { WIDTH: 50% } .parent-child-listing .stepHelp { MARGIN-LEFT: 24px } .parent-child-listing UL { BORDER-LEFT: #ccc 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 12px 10px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .parent-child-listing LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .stepcontent .hierarchy { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .stepcontent .hierarchy LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; PADDING-TOP: 0px } OL.hierarchy LI H5 { POSITION: relative; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 11em; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 8px } OL.hierarchy LI H5 SPAN { BORDER-BOTTOM: medium none; DISPLAY: inline; COLOR: #888; FONT-SIZE: 100% } OL.hierarchy LI H5 A { POSITION: absolute; FONT-SIZE: 90%; TOP: 9px; RIGHT: 0px; FONT-WEIGHT: normal } OL.hierarchy LI DIV { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 2px; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } OL.hierarchy LI DIV.gbData SPAN { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 2px } OL.hierarchy LI DIV.gbData SPAN:first-child { BORDER-LEFT: medium none; PADDING-LEFT: 0px; MARGIN-LEFT: 0px } OL.hierarchy LI DIV INPUT.points { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT.points { WIDTH: 2em } OL.hierarchy LI DIV INPUT.name { WIDTH: 16em } LI.parent { PADDING-BOTTOM: 0px !important } OL.hierarchy LI.parent OL LI H5 { BACKGROUND-IMAGE: none } .stepPanels { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .stepPanels LI { BORDER-BOTTOM: medium none } .panelTitle { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 4px 0px 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; CURSOR: pointer; PADDING-TOP: 3px } .mdHead A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { WIDTH: 100%; DISPLAY: block } .panelTitle .date { POSITION: absolute; COLOR: #666; FONT-SIZE: 95%; TOP: 2px; RIGHT: 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none } .panelTitle A SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 2px } .mdHead A SPAN.date { FONT-WEIGHT: normal } .mdList { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel P SPAN { COLOR: #666 } .mdList H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .mdList P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanelControls { FONT-SIZE: 90% } .contentAreaBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px 24px 24px; BACKGROUND: #fff; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .contentAreaBlock #step1 { BORDER-TOP: 0px } .taskbuttondiv { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .taskButtonsContent { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .okbutton { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .picker .taskbuttondiv { PADDING-BOTTOM: 9px; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .container .taskbuttondiv:first-child { MARGIN-TOP: 0px } DIV#dataCollectionContainer .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#dataCollectionContainer .reqfield + .taskbuttondiv { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#containerdiv .mapCanvasForm .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } #customizeDataCollection .taskbuttonhelp { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px } DIV#dataCollectionContainer .taskbuttonhelp + .taskbuttondiv { PADDING-BOTTOM: 18px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 0px } SPAN.stepTitleRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } SPAN.contentListRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } .taskButtonsContent { PADDING-BOTTOM: 0px; MARGIN: 24px -12px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 9px } P.okbutton INPUT { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 100%; PADDING-TOP: 1px } .taskbuttonhelp { PADDING-BOTTOM: 0px; FONT-STYLE: italic; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } #taskbuttondiv P { BORDER-BOTTOM: red 1px solid; TEXT-ALIGN: left; BORDER-LEFT: red 1px solid; FONT-STYLE: italic; MARGIN: 6px 0px; DISPLAY: block; FONT-SIZE: 90%; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .stepTitleRight { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; TOP: -2px; RIGHT: -2px; PADDING-TOP: 6px; LEFT: auto } LEGEND { POSITION: absolute; LINE-HEIGHT: 0; HEIGHT: 0px; TOP: -10000px } FIELDSET OL LI SPAN.tagContainer INPUT { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer A.browse { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.hidden { DISPLAY: none } .contentBlock OL LI SPAN.hidden { DISPLAY: none } .selectItems { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 639px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .selectItems SELECT { MARGIN: 6px 0px 0px; WIDTH: 300px; DISPLAY: block; MAX-WIDTH: 300px; HEIGHT: 115px; FONT-SIZE: 100% } #dataCollectionContainer .noLabelField > .selectItems { POSITION: relative; PADDING-BOTTOM: 15px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 15px } #dataCollectionContainer .noLabelField > .userRoleSelect:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems.userRoleSelect:before { LEFT: 358px } #dataCollectionContainer .noLabelField > .selectItems.cumulativeSelectItems:before { LEFT: 47% } .selectItems INPUT[type=button] { MARGIN: 6px 0px 0px } .selectItems INPUT[type=text] { MARGIN: 6px 0px; WIDTH: 300px; DISPLAY: block; FONT-SIZE: 100% } .selectArrows { POSITION: relative; MARGIN-TOP: 60px } .selectArrows A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectArrows BUTTON { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectItems H4 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px 56px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .userRoleSelect { WIDTH: auto } .userSelectedRoles { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 56px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .userSelectedRoles .selectArrows { POSITION: absolute; MARGIN: 0px; TOP: 28px; LEFT: 20px } .selectItems .available-roles H4 { MARGIN-LEFT: 0px } .selectItems .available-roles SELECT { HEIGHT: 200px } .multiSelect { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .multiSelect > DIV { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; WIDTH: 46%; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } .multiSelect SELECT { WIDTH: 100% } .multiSelect .selectArrows { TEXT-ALIGN: center; MARGIN: 40px 0px; WIDTH: 5% } .widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: 6px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } .widgetControls { FONT-SIZE: 90% } TABLE .widgetControls { FONT-SIZE: 90% } .widget .spellCheck { FLOAT: right } .widget .textBoxItem { FLOAT: right } DIV.liveArea FIELDSET.stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.liveArea FIELDSET.stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.liveArea FIELDSET.stepcontent TEXTAREA { WIDTH: 100% } DIV.liveArea FIELDSET.stepcontent SPAN.inlineHelp { DISPLAY: inline } .quickAddPal .stepcontent { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; PADDING-TOP: 3px } .quickAddPal .stepcontent LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .quickAddPal .stepcontent .label { WIDTH: 30%; PADDING-RIGHT: 2px; OVERFLOW: visible } .quickAddPal .stepcontent .field { WIDTH: 65% } .quickAddPal LI.fieldError .fieldErrorText { DISPLAY: block; COLOR: red; MARGIN-LEFT: 74px; FONT-SIZE: 85%; FONT-WEIGHT: normal } DIV.quickAddPal DIV.field INPUT[type=text] { WIDTH: 100% } DIV.quickAddPal DIV.field SELECT { WIDTH: 100% } DIV.quickAddPal DIV.field TEXTAREA { WIDTH: 100% } DIV.quickAddPal LI.stepHelp { WIDTH: auto } DIV.quickAddPal LI DIV SPAN { WIDTH: auto } DIV.field SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.field SPAN.control { DISPLAY: inline } DIV.quickAddPal DIV.field INPUT.datePickerInput { WIDTH: 8em } DIV.quickAddPal DIV.field INPUT.timePickerInput { WIDTH: 8em } .dtpickerEndDiv { PADDING-TOP: 10px } DIV#texteditor { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } DIV#texteditor TEXTAREA { WIDTH: 450px; DISPLAY: block; MARGIN-LEFT: 0px } DIV#texteditor A.textBoxItem { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 80%; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 2px } SELECT.survey_question { MAX-WIDTH: 100% } .htmlarea .toolbar DIV > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FLOAT: left; HEIGHT: 22px; PADDING-TOP: 0px } .htmlarea IFRAME { MIN-WIDTH: 300px !important } .htmlarea .toolbar A.wikiButton { WIDTH: auto !important } .htmlarea .toolbar A.wikiButton IMG { WIDTH: auto !important } .vtbe_footer { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .vtbe_footer SPAN { FONT-SIZE: 100% } .vtbe_footer INPUT[type=button] { FONT-SIZE: 95% } .vtbe_footer A { MARGIN: 0px 0px 0px 3px } .resize_handle { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BACKGROUND: url(images/controls.png) #ccc no-repeat 50% -1px; HEIGHT: 12px; BORDER-TOP: #ddd 1px solid; CURSOR: n-resize } .resize_handle:hover { BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #bbb; BORDER-TOP-COLOR: #ccc } .resize_handle IMG { WIDTH: 100%; HEIGHT: 8px } .tabGroupsPreview { MARGIN: -11px -12px 24px; FONT-SIZE: 100% } .previewContent { Z-INDEX: 1; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; BACKGROUND: url(images/backgrounds_h.png) #aaa repeat-x 0px -320px; PADDING-TOP: 14px } .previewContent IFRAME { WIDTH: 100%; HEIGHT: 300px } .previewContent .appTabs { TOP: -3px } .tabGroupsPreview TABLE DIV { DISPLAY: block } .previewOverlay { POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=30); TEXT-TRANSFORM: uppercase; WIDTH: 100%; LETTER-SPACING: 10px; COLOR: #555; FONT-SIZE: 300%; TOP: 130px; FONT-WEIGHT: bold } .tabGroupsPreview .previewOverlay { TOP: 40px } .previewOverlay SPAN { FILTER: alpha(opacity=30); PADDING-BOTTOM: 6px; BACKGROUND-COLOR: white; PADDING-LEFT: 24px; PADDING-RIGHT: 12px; PADDING-TOP: 6px; opacity: .30 } P.warning { PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #cf1d19; MARGIN: 12px 0px 24px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 9px } .warning { BACKGROUND: #a7d0df } DIV.tabPreview { Z-INDEX: 1; BORDER-BOTTOM: #cdcdcd 12px solid; POSITION: relative; BORDER-LEFT: #cdcdcd 12px solid; MARGIN: 0px 6px 6px; WIDTH: auto; BACKGROUND: #cdcdcd; BORDER-TOP: #cdcdcd 12px solid; BORDER-RIGHT: #cdcdcd 12px solid } DIV.tabPreview DIV.paneTabs { MARGIN-TOP: 12px } .buttonLibrary { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 207px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .buttonLibrary LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FLOAT: left; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .buttonLibrary LI A { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 3px } .buttonLibrary LI A.selected { FONT-WEIGHT: bold; TEXT-DECORATION: none } .buttonLibrary LI A:hover { TEXT-DECORATION: underline } DIV.menuStyleStep { MARGIN: 9px 40px 0px 0px; WIDTH: 212px; FLOAT: left } DIV.menuDefaultStyleStep { MARGIN: 9px auto; WIDTH: 212px } .schemeWrapper { MARGIN: 0px 12px 0px 0px; FLOAT: left } .buttonLibrary .schemeWrapper { PADDING-BOTTOM: 10px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #fff; FLOAT: none; PADDING-TOP: 10px; -moz-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); border-radius: 4px } .buttonLibrary .selected .schemeWrapper { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #bbb; PADDING-TOP: 10px } #selectedPalette .schemePreview { BORDER-BOTTOM: #bbb 10px solid; BORDER-LEFT: #bbb 10px solid; BORDER-TOP: #bbb 10px solid; BORDER-RIGHT: #bbb 10px solid; -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); border-radius: 4px } .schemeWrapper SPAN { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: italic 100% Georgia; PADDING-TOP: 6px } UL.buttonLibrary LI.selected { POSITION: absolute; TOP: 6px; LEFT: 0px } UL.buttonLibrary LI.selected A.selected { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A.selected SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .schemePreview { PADDING-BOTTOM: 0px; PADDING-LEFT: 16px; WIDTH: 160px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .modulePreview { BORDER-BOTTOM: 0px solid; POSITION: relative; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px !important; MARGIN: 6px 0px 0px auto; PADDING-LEFT: 0px !important; WIDTH: 140px; BOTTOM: 0px; PADDING-RIGHT: 0px !important; HEIGHT: 57px; FONT-SIZE: 85%; BORDER-TOP: 1px solid; RIGHT: 0px; BORDER-RIGHT: 0px solid; PADDING-TOP: 0px !important; LEFT: auto } .schemePreviewHead { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 6px !important } .modulePreviewHead { PADDING-BOTTOM: 4px !important; MARGIN: 0px; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-WEIGHT: bold; PADDING-TOP: 4px !important } .schemePreviewBody { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 3px } .modulePreviewBody { PADDING-BOTTOM: 3px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 4px !important } .moduleList { BORDER-TOP: #ccc 1px solid } .moduleItem { BORDER-BOTTOM: #ccc 1px solid } .module { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } .moduleHeading { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 10px } .module H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 110% } .moduleDescription { WIDTH: 90% } .more { DISPLAY: none } .moduleAction { MARGIN: 10px 0px } .moduleCategory { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .moduleCategory A { FONT-WEIGHT: bold } .moduleSample { PADDING-LEFT: 10px; DISPLAY: none } .expandedModule { BACKGROUND-COLOR: #efefef } .expandedModule .moduleDetails { WIDTH: 47% } .expandedModule .moduleSample { WIDTH: 47% } .expandedModule .more { DISPLAY: inline } .expandedModule .moduleSample { DISPLAY: block } .leftColumn-wide#moduleList .contentListPlain { PADDING-LEFT: 18px } .moduleListActionBar { PADDING-LEFT: 18px } #moduleList .contentListPlain > LI.expandedModule .moduleSample > DIV { MIN-HEIGHT: 50px !important; WORD-WRAP: normal } #moduleBody { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } #moduleBorder { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .portlet { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #efede3; MARGIN: 0px 10px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #444; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 0 2px 4px rgba(0, 0, 0, .05); border-radius: 3px } .containerPortal > DIV:first-child .portlet { MARGIN: 0px 10px 20px 0px } .reorderableModule:hover { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; -webkit-transition-property: border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border, background; -moz-transition-duration: 200ms; -moz-transition-timing-function: ease-in-out } .reorderableModule:hover H2 { COLOR: #000 } .module-dragstate { BORDER-BOTTOM-COLOR: #555; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: 2px; opacity: .9; -moz-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-transition-property: border-width, border-color, background, -webkit-box-shadow; -webkit-transition-duration: 50ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border-width, border-color, background, -moz-box-shadow; -moz-transition-duration: 50ms; -moz-transition-timing-function: ease-in-out } #moduleTitle { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 .moduleTitle { WORD-WRAP: break-word } .portlet H2.dragHandle { PADDING-LEFT: 20px } .portlet H2.dragHandle:hover { CURSOR: move } .portlet H2 A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; COLOR: #fff; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .portlet H2 A:hover { TEXT-DECORATION: underline } .portlet H2 A IMG { VERTICAL-ALIGN: middle } .portlet H2.noTitle { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 1.4em; PADDING-TOP: 0px } .portlet H2.noTitle:hover { BACKGROUND: #ededed } .portlet A { WORD-WRAP: break-word; TEXT-DECORATION: none } .portlet A:hover { TEXT-DECORATION: underline } .edit_controls { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FLOAT: right; PADDING-TOP: 7px } .portlet .edit_controls { VISIBILITY: hidden } .portlet:hover .edit_controls { VISIBILITY: visible } .edit_controls A { Z-INDEX: 201; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 1px; TEXT-DECORATION: none; PADDING-TOP: 0px; verical-align: top } .portlet .edit_controls A:hover { TEXT-DECORATION: none } .portlet:hover .edit_controls A { TEXT-DECORATION: none } .edit_controls .moduleToggleLink { Z-INDEX: 201; POSITION: absolute; FILTER: alpha(opacity=50); PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 14px; PADDING-RIGHT: 3px; HEIGHT: 14px; TOP: 3px; PADDING-TOP: 3px; LEFT: -4px; opacity: .5 } .edit_controls A IMG { DISPLAY: none } .edit_controls A:before { FONT: 16px/1 "Utilicons"; COLOR: #bcbcbc; text-shadow: 0 1px 0 #fff } .edit_controls A:hover:before { COLOR: #888 } .edit_controls A.moduleToggleLink { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px } .edit_controls A[title*='Expand'].moduleToggleLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .edit_controls A.moduleCloseLink:before { CONTENT: "X" } .edit_controls A.moduleDetachLink:before { FONT: 16px/1 "Utilicons"; CONTENT: "w" } .edit_controls A[href*='edit_module']:before { CONTENT: "S" } .collapsible { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px } .collapsible TABLE { BORDER-SPACING: 3px 2px; BORDER-COLLAPSE: separate; FONT-FAMILY: Helvetica, Arial, sans-serif; COLOR: #333; FONT-SIZE: 90% } .collapsible .help { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .imgWrapper { TEXT-ALIGN: center; MARGIN: 6px auto; OVERFLOW: auto } .portlet H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } #lightbox H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.portletBlock H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.blockContents H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .flyout H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 5px } .portlet H4 { PADDING-BOTTOM: 2px; TEXT-INDENT: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 1px } .portlet .portletList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList LI:first-child { BORDER-TOP: medium none } .portlet .portletList LI IMG { DISPLAY: none } .portlet .courseListing LI > A { FONT-WEIGHT: bold } .portlet .courseRole { COLOR: #777 } .portlet .dataBlockLabel { COLOR: #777 } .portlet .eventDate { COLOR: #777 } .portlet .eventList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .eventList LI .date { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f0f0f0; COLOR: #597298; FONT-WEIGHT: bold; PADDING-TOP: 2px; -moz-border-radius: 1px; -webkit-border-radius: 1px; border-radius: 1px } .portlet .eventList LI .event { PADDING-BOTTOM: 2px; PADDING-LEFT: 18px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .portlet .eventList LI .description { FONT-SIZE: 90% } .portlet .eventDate { FONT-SIZE: 90% } .portlet .eventList LI .event A { FONT-WEIGHT: bold } .portlet SPAN.origin { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #999; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet .portletList-img > LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList-img > LI:first-child { BORDER-TOP: medium none; PADDING-TOP: 0px } .portlet .portletList-img > LI IMG { DISPLAY: none } .portlet .courseInformation { PADDING-BOTTOM: 0px; TEXT-INDENT: -16px; MARGIN: 4px 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock { PADDING-BOTTOM: 0px; TEXT-INDENT: -4px; MARGIN: 4px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock UL { MARGIN-TOP: 5px } .portlet .courseDataBlock UL LI { TEXT-INDENT: 0px } .portlet .calculatorModule { TEXT-ALIGN: center } .portlet .calculator { PADDING-BOTTOM: 6px; MARGIN: 0px auto; PADDING-LEFT: 6px; WIDTH: 10em; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .portlet .portletPath { MARGIN: 4px; BACKGROUND: #f0f0f0; FONT-SIZE: 90%; -moz-border-radius: 1px; -webkit-border-radius: 1px } .portlet .portletPath SPAN { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; DISPLAY: inline-block; BACKGROUND: #ddd; COLOR: #666; FONT-WEIGHT: bold; PADDING-TOP: 1px; -moz-border-radius: 1px 0 0 1px; -webkit-border-radius: 1px 0 0 1px } .portlet .courseDataBlock UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px -895px; PADDING-TOP: 0px } .portlet .courseDataBlock A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock LI A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock A:hover { TEXT-DECORATION: underline } .portlet .courseDataBlock LI A:hover { TEXT-DECORATION: underline } .portletHelp { PADDING-BOTTOM: 2px; MARGIN: 4px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #688ba8; FONT-SIZE: 95%; PADDING-TOP: 1px } DIV.module_actions { PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.8em; MARGIN: 4px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.module_actions A:link { BORDER-BOTTOM: #ccc 1px outset; BORDER-LEFT: #ccc 1px outset; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 5px; COLOR: #036; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px outset; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px outset; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.module_actions A:hover { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions A:active { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions IMG { MARGIN: 0px 3px; VERTICAL-ALIGN: middle } DIV.module_actions SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.module_actions LABEL { FONT-WEIGHT: bold } DIV.scroll_div { MAX-HEIGHT: 300px; OVERFLOW: auto } .portlet DIV.scroll_div { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN-BOTTOM: 3px; BACKGROUND: #fff4bf; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .submission_list { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .submission_list LI { PADDING-BOTTOM: 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; PADDING-TOP: 9px } .submission_list LI:first-child { BORDER-TOP: medium none } .submission_list LI A { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .submission_list LI A.label { MARGIN-LEFT: 0px; FONT-SIZE: 100%; FONT-WEIGHT: bold } .submission_list LI DIV.button { MARGIN: 4px 0px 0px; FLOAT: right } .submission_list LI SPAN { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .eudModule { PADDING-BOTTOM: 24px; MARGIN: 0px } .styledModule-dark { PADDING-BOTTOM: 24px; MARGIN: 0px } .portlet .noItems { TEXT-ALIGN: center; FONT-STYLE: italic } .eudModule .eudModule-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .styledModule-dark .module-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .eud-button-wrap { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } IMG.eud-avatar { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 28px; PADDING-RIGHT: 2px; BACKGROUND: #fff; HEIGHT: 28px; PADDING-TOP: 2px; -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -moz-border-radius: 2px; -webkit-border-radius: 2px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } .actionMenuButton { FILTER: none; PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: block; BACKGROUND: #eee; VERTICAL-ALIGN: middle; PADDING-TOP: 3px } DIV[id*='actionMenu_'] { Z-INDEX: 1000; MARGIN-TOP: -4px; MARGIN-LEFT: -3px } .portlet .portletBlock { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 6px } .portlet .portletBlock:first-child { BORDER-TOP: 0px } .moduleActions + .portletBlock { BORDER-TOP: 0px } .blockGroups LI:first-child { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .portlet .memberList { MARGIN: 0px 0px 5px } .itemGroups { PADDING-BOTTOM: 0px; MARGIN: 4px 9px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .itemGroups .itemGroups { MARGIN-BOTTOM: 4px; MARGIN-LEFT: 0px } .portlet .blockGroups LI { FONT-SIZE: 100% } .portlet .itemGroups LI { PADDING-BOTTOM: 7px; LINE-HEIGHT: 120%; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .memberList LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 14px !important; PADDING-TOP: 0px } .portlet .course { DISPLAY: block; FONT-SIZE: 90% } .portlet UL.memberList { DISPLAY: block; FONT-SIZE: 90% } .portlet SPAN.refresh { DISPLAY: block; FONT-SIZE: 90% } .portlet .course { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet SPAN.noIndent { MARGIN-LEFT: 0px !important } .portlet .whatsNew SPAN.course { MARGIN-LEFT: 0px !important } .portlet SPAN.course { MARGIN-LEFT: 0px !important } .portlet UL.hierarchyList { MARGIN-LEFT: 22px } .portlet UL.hierarchyList LI { OVERFLOW-X: visible; TEXT-INDENT: -18px } .portlet UL.hierarchyList LI * { TEXT-INDENT: 0px } .portlet UL.hierarchyList LI.childless { TEXT-INDENT: 0px } .portlet UL LI UL LI SPAN.warning { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.newItemCount { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .flag { BORDER-BOTTOM: #efa495 1px solid; BORDER-LEFT: #efa495 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; BACKGROUND: #ffe4df; COLOR: #c30; FONT-SIZE: 90%; BORDER-TOP: #efa495 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #efa495 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL.memberList SPAN { FONT-SIZE: 100% } .portlet UL.memberList SPAN.newItemCount { FONT-SIZE: 100% } .portletInfoFooter { POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 9px; BOTTOM: 5px; PADDING-RIGHT: 9px; COLOR: #999; FONT-SIZE: 90%; RIGHT: 0px; PADDING-TOP: 2px } .dateSelector { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .blockGroups LI SPAN.newItemCount { COLOR: #999; FONT-WEIGHT: normal } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHead A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .portlet .portletBlock H4 A:hover { BACKGROUND: #eee } .portlet .portletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .portlet .portletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .portlet .subCategories LI A { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead:hover { CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) #fff no-repeat 1px 9px; COLOR: #0099b6 } .blockGroups .itemHeadOpen:hover { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen:focus { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups LI IMG.spacer { WIDTH: 50px; HEIGHT: 0px } .blockGroups LI SPAN.headerText:hover { CURSOR: pointer; TEXT-DECORATION: underline } .viewHeader { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .viewHeader H3 { COLOR: #666; FONT-WEIGHT: bold } DIV.waitingFrame { BACKGROUND: #fff } .moduleControlWrapper { MARGIN: 6px 0px 0px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 6px } .moduleControlWrapper A { POSITION: relative; MARGIN: 0px 2px } .moduleControlWrapper A:after { POSITION: relative; COLOR: #bbb; FONT-SIZE: 14px; CONTENT: "\2192"; RIGHT: 0px; FONT-WEIGHT: bold } .moduleBlock { MARGIN: 6px } .portlet H1 { MARGIN: 6px; FONT-SIZE: 120% } .assessmentPortlet DIV.assessmentPortletBlock { BORDER-BOTTOM-COLOR: #777; PADDING-BOTTOM: 0px; BORDER-TOP-COLOR: #777; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #f9f9f9; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4 A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4 A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet UL.subCategories { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock UL.subCategories LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet UL.subCategories LI A { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead:hover { BACKGROUND-COLOR: #e3efff; TEXT-DECORATION: underline } UL.assessmentBlockGroups LI A.itemHeadOpen { BACKGROUND: #fff no-repeat 3px center } UL.assessmentBlockGroups LI A.itemHeadOpen:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .assessmentPortlet UL.subCategories LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } UL.assessmentBlockGroups LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .assessmentPortlet UL.subCategories LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } UL.assessmentBlockGroups LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } .assessmentPortlet UL.itemGroup LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.assessmentBlockGroups LI UL.itemGroups LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet UL.itemGroup LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI UL.items { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; FONT-SIZE: 110%; PADDING-TOP: 2px } UL.assessmentBlockGroups LI UL.itemGroups LI A { FONT-WEIGHT: normal } UL.itemGroups LI UL.items LI A { FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H3 { MARGIN: 0px } .assessmentPortlet DIV.assessmentPortletBlock H3 A { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f0f0f0; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet DIV.assessmentPortletBlock H3 A:hover { TEXT-DECORATION: none } .assessmentPortlet DIV.assessmentPortletBlock:first-child H3 A { BORDER-TOP: medium none } .assessmentPortlet DIV.assessmentPortletBlock H3 A.open { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/less_options.gif) #e3efff no-repeat 99% center; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet UL.objectList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortletBlock UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .blockContents UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.memberList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet .blockContents UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet .blockContents UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .portlet #loginBoxFull { PADDING-BOTTOM: 16px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull P { MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; COLOR: #444; FONT-SIZE: 0.95em } .portlet #loginBoxFull P.welcome { PADDING-BOTTOM: 0px; MARGIN: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000; FONT-SIZE: 1em; FONT-WEIGHT: bold; PADDING-TOP: 0px } .portlet #loginBoxFull UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } .portlet #loginBoxFull LI LABEL { FONT-SIZE: 100%; FONT-WEIGHT: normal } .portlet #loginBoxFull INPUT[type='text'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='password'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull A { FONT-SIZE: 0.9em } .portlet #loginBoxFull P A { FONT-SIZE: 1em } .portlet #loginBoxFull P.welcome A { FONT-SIZE: 1em } .portlet #loginBoxFull LI + LI + LI { FLOAT: left } .portlet #loginBoxFull LI + LI + LI + LI { TEXT-ALIGN: right; FLOAT: right } .portlet #loginBoxFull LI INPUT.submit { MARGIN: -14px -3px 0px 0px } #body { PADDING-BOTTOM: 60px } #loadstatus { POSITION: relative; HEIGHT: 180px } FIELDSET.highlight { BACKGROUND: #eee } FIELDSET.highlight DIV.input { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .builderItem .item { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FONT-SIZE: 100%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 12px } .builderItem:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } #lessonPlanForm #dataCollectionContainer .contentListPlain LI:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } LI.builderItem { MIN-HEIGHT: auto } .builderItem .close { POSITION: absolute; TOP: 5px; CURSOR: pointer; RIGHT: 5px } .builderItem IFRAME { WIDTH: 100% !important } DIV.subheading { FONT-WEIGHT: bold } DIV.required DIV.inputField { PADDING-LEFT: 1.5em; BACKGROUND: url(../../images/ci/icons/required.gif) no-repeat left 2px; MARGIN-LEFT: -1.5em } .inputOptions { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.5em } .offscreen { POSITION: absolute; HEIGHT: 0px; LEFT: -999em } .label A:hover { CURSOR: pointer } #lessonPlanForm #customFormBuilderDiv { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer .contentListPlain { MARGIN: 0px } .alignPanelLightbox { MIN-WIDTH: 650px; PADDING-BOTTOM: 10px; MIN-HEIGHT: 250px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .alignHeader { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .alignPanel TABLE TD { FONT-SIZE: 90% } .alignPanel TABLE TH { FONT-SIZE: 90% } .alignPanel TABLE TD.descriptionCell { MIN-WIDTH: 120px; WORD-WRAP: break-word } .alignPanel THEAD TH.smallCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .alignPanel THEAD TH { WHITE-SPACE: nowrap } .alignPanel TD.actionCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 4px } .pageBreadcrumb { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #fff; HEIGHT: 1em; PADDING-TOP: 6px } .pageBreadcrumb UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .pageBreadcrumb LI { FLOAT: left; COLOR: #999; MARGIN-LEFT: 3px; FONT-WEIGHT: bold } .pageBreadcrumb LI A { COLOR: #036; FONT-WEIGHT: bold; MARGIN-RIGHT: 3px; TEXT-DECORATION: none } .pageBreadcrumb LI A.active { COLOR: #036; FONT-WEIGHT: bold; TEXT-DECORATION: none } .sStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #063; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .sStatusI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #c00; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .panelList { PADDING-BOTTOM: 0px; MARGIN: 2px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; PADDING-TOP: 0px } .panelList > LI { MARGIN: 0px 0px 1px } .panelNested { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #fff; MARGIN: 4px 0px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; OVERFLOW: hidden; PADDING-TOP: 4px } .panelHead { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; WORD-WRAP: break-word; BACKGROUND: #efefef; PADDING-TOP: 6px } .panelHead A { COLOR: #000; TEXT-DECORATION: none } .panelItem { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 6px } .panelList_leftCol { POSITION: absolute; TOP: 6px; LEFT: 6px } .panelList_rightCol { POSITION: absolute; TOP: 6px; RIGHT: 6px } .panelList_centerCol { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 0px } UL.logMessages { LIST-STYLE-TYPE: none; TEXT-INDENT: -1em; PADDING-LEFT: 1em; MARGIN-LEFT: 0px; LIST-STYLE-IMAGE: none } LI.logError { COLOR: red } LI.logWarning { COLOR: blue } LI.logMessage { MARGIN-TOP: 0.1em } .connectionWrapper { POSITION: relative; MARGIN-TOP: 1px; PADDING-RIGHT: 30px } .connectionWrapper A { POSITION: absolute; MARGIN-TOP: -14px; TOP: 50%; RIGHT: 0px } .invertItems { POSITION: relative; DISPLAY: block !important; MARGIN-RIGHT: 26px } .invertItems A { POSITION: absolute; TOP: -14px; RIGHT: -33px } .subcategories { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 11px !important; PADDING-RIGHT: 11px !important; PADDING-TOP: 6px !important } .subcategories H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.calendarTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.announcementTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.calendarTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.announcementTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.calMonth { PADDING-BOTTOM: 6px; MARGIN: 10px 4px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; OVERFLOW: auto; PADDING-TOP: 2px } DIV.calMonth TABLE { BORDER-BOTTOM: #a8beda 2px solid; BORDER-LEFT: #a8beda 1px solid; MARGIN: 0px auto; BORDER-COLLAPSE: collapse; BORDER-TOP: #a8beda 2px solid; BORDER-RIGHT: #a8beda 2px solid } DIV.calMonth TABLE THEAD TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE TBODY TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE THEAD TD DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TBODY TH DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE THEAD TH { BORDER-BOTTOM: #a0a0a0 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 8em; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; OVERFLOW: hidden; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } DIV.calMonth TABLE TBODY TD { BORDER-BOTTOM: #a8beda 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 8em; PADDING-RIGHT: 0px; BACKGROUND: url(images/backgrounds_h.png) white repeat-x 0px -400px; HEIGHT: 8em; OVERFLOW: hidden; BORDER-RIGHT: #a8beda 1px solid; PADDING-TOP: 0px } DIV.calMonth TABLE TH:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:focus { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:active { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD A.daylink { BORDER-BOTTOM: #a8beda 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; WIDTH: 1.2em; PADDING-RIGHT: 0.2em; DISPLAY: block; BACKGROUND: #e3efff; FLOAT: left; FONT-SIZE: 110%; FONT-WEIGHT: bold; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0.2em } DIV.calMonth TABLE TD A.daylink:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD A.daylink SPAN { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TD.today { BACKGROUND-COLOR: #fff4bf } DIV.calMonth TABLE TD.today A.daylink { BACKGROUND: #fff4bf; FONT-WEIGHT: bold } DIV.calMonth TABLE TD.today A.daylink:hover { BACKGROUND: url(images/backgrounds_h.png) #fff4bf repeat-x 0px -50px } DIV.calMonth TABLE TD.offday { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:hover { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:focus { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD DIV { WIDTH: 8em; CLEAR: both; OVERFLOW: hidden } DIV.calMonth TABLE TD DIV UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.calMonth TABLE TD DIV UL LI { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FONT-SIZE: 90%; PADDING-TOP: 1px } TABLE.calYear { POSITION: relative; MIN-WIDTH: 200px; MARGIN: 6px; BORDER-COLLAPSE: collapse; FONT-SIZE: 95% } TABLE.calYearFloat { MARGIN: 6px 0.66%; WIDTH: 32%; FLOAT: left } TABLE.calYear THEAD TD { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear TBODY TH { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear CAPTION { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 108%; PADDING-TOP: 2px } TABLE.calYear CAPTION A { FONT-WEIGHT: bold; TEXT-DECORATION: none } TABLE.calYear CAPTION A:hover { TEXT-DECORATION: underline } TABLE.calYear THEAD TH { BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } TABLE.calYear TBODY TD { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; WHITE-SPACE: nowrap; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } TABLE.calYear TD A { POSITION: relative; WIDTH: 100%; DISPLAY: block; TEXT-DECORATION: none } TABLE.calYear TD A IMG { FLOAT: left } TABLE.calYear TD:hover { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:focus { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:active { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TH:hover { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:focus { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:active { BACKGROUND-COLOR: #ccc } TABLE.calYear TD.today { BACKGROUND: #999 } TABLE.calYear TD.today:hover { BACKGROUND: #999 } TABLE.calYear TD.today:focus { BACKGROUND: #999 } TABLE.calYear TD.today A { COLOR: #fff; FONT-WEIGHT: bold; text-shadow: 0 -1px 0 #555 } TABLE.calYear TD.today A:hover { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:active { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:focus { BACKGROUND-IMAGE: none } TABLE.calYear TD.offday { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:hover { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:focus { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.hasEvent { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -50px; FONT-WEIGHT: bold } TABLE.calendarDay { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; MARGIN: 10px 0px 0px; WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #cdcdcd 1px solid; BORDER-RIGHT: #cdcdcd 1px solid } TABLE.calendarDay THEAD { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay THEAD TH { POSITION: absolute; TOP: 0px; LEFT: -1000px } UL.calendarWeek LI TABLE.calendarDay { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } TABLE.calendarDay TBODY TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 3px; WIDTH: 6%; PADDING-RIGHT: 12px; BACKGROUND: #f3f3f3; COLOR: #555; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } TABLE.calendarDay TBODY TH:hover { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:focus { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:active { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #fff; VERTICAL-ALIGN: top; BORDER-TOP: #cdcdcd 1px solid; PADDING-TOP: 0px } TABLE.calendarDay TBODY TD.hasEvent { PADDING-LEFT: 6px } TABLE.calendarDay TBODY TD.hasEvent A.jumpToEvent { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay TBODY TR.halfHour TH { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.halfHour TD { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.midday TH { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TBODY TR.midday TD { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TR.notBusinessHours TH { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #f3f3f3; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TABLE.calendarDay TR.notBusinessHours TD { BACKGROUND: #fafafa } TABLE.calendarDay TBODY TR.notBusinessHours TD.hasEvent { BACKGROUND: #fafafa } TABLE.calendarDay TR TH SPAN.ampm { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #bbb; LETTER-SPACING: 0.1em; COLOR: #fff; FONT-SIZE: 75%; TOP: -1.2em; PADDING-TOP: 0px; LEFT: -4px } TABLE.calendarDay TBODY TR:hover { -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calendarDay TBODY TR:hover TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TD DIV DIV { PADDING-BOTTOM: 1px; MARGIN: 0px 4px 0px -6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: #b5ccea; FLOAT: left; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } TABLE.calendarDay TD DIV DIV.contextMenuContainer { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px -3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: none; PADDING-TOP: 0px } TABLE.calendarDay TD DIV SPAN { COLOR: #555; FONT-SIZE: 90% } UL.calendarWeek { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #cdcdcd 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #cdcdcd 1px solid; PADDING-TOP: 0px } UL.calendarWeek LI { BORDER-BOTTOM: #cdcdcd 1px solid; POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } UL.calendarWeek LI UL:first-child { BORDER-TOP: medium none } UL.calendarWeek UL LI:first-child { BORDER-TOP: medium none } UL.calendarWeek LI H3.weekDay { PADDING-BOTTOM: 0.3em; MARGIN: 0px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BACKGROUND: #e3efff; COLOR: #666; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 0.3em } UL.calendarWeek LI H3.weekDay:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.calendarWeek LI UL LI { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ededed 1px solid; PADDING-TOP: 6px } UL.calendarWeek LI UL LI:hover { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:focus { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:active { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI H4 { PADDING-BOTTOM: 1px; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 3px; WIDTH: 10em; PADDING-RIGHT: 3px; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 1px } UL.calendarWeek LI DIV { MARGIN-LEFT: 11em } UL.calendarWeek LI DIV.contextMenuContainer { MARGIN: 0px 0px 0px -3px } UL.calendarWeek LI UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } .diffbox-wrapper { MARGIN: 9px auto; WIDTH: 80% } .legendbox-wrapper { MARGIN: 9px auto; WIDTH: 90% } .legendbox-wrapper > DIV { BORDER-LEFT: #ddd 1px solid } .legendbox-wrapper > DIV:first-child { BORDER-LEFT: medium none } .diffbox-left { FLOAT: left } .diffbox-right { FLOAT: left } .diffbox-arrow { FLOAT: left } .legendbox { FLOAT: left } .diffbox-left { WIDTH: 44% } .diffbox-right { WIDTH: 44% } .legendbox-3 { WIDTH: 33% } .legendbox-2 { WIDTH: 48% } .diffbox-left > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .diffbox-right > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #fff; PADDING-TOP: 3px } .diffbox-right > DIV { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .diffbox-left UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-right UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .legendbox UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-left UL LI:first-child { BORDER-TOP: 0px } .diffbox-right UL LI:first-child { BORDER-TOP: 0px } .legendbox UL LI:first-child { BORDER-TOP: 0px } .diffbox-left .label { WIDTH: 30%; COLOR: #666 } .diffbox-right .label { WIDTH: 30%; COLOR: #666 } .legendbox .label { WIDTH: 30%; COLOR: #666 } .diffbox-left .field { WIDTH: 59% } .diffbox-right .field { WIDTH: 59% } .legendbox .label { WIDTH: 45%; FONT-SIZE: 90% } .legendbox .field { WIDTH: 55% } .diffbox-arrow { TEXT-ALIGN: center; WIDTH: 6%; PADDING-TOP: 50px } .diffLegend-sample { POSITION: static !important; WIDTH: 90px !important; HEIGHT: 17px !important } .addedImg-sample { HEIGHT: 13px !important } .removedImg-sample { HEIGHT: 13px !important } .changedImg-sample { HEIGHT: 13px !important } .diff-html-added { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-removed { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .added-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .removed-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-added { BACKGROUND-COLOR: #cfc } .added-sample { BACKGROUND-COLOR: #cfc } .diff-html-removed { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .removed-sample { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .diff-html-changed { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .changed-sample { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .diff-html-added IMG { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .addedImg-sample { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .diff-html-removed IMG { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .removedImg-sample { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .diff-html-changed IMG { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } .changedImg-sample { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } DIV.diff-removed-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-added-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } .diff-addedImg-sample { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-removed-image { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } .diff-removedImg-sample { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } DIV.diff-added-image { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } .diff-addedImg-sample { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } DIV.blogContainer DIV.wikiPage { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid } DIV.blogContainer DIV.wikiPage H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; FONT-SIZE: 120%; PADDING-TOP: 9px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryDate { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 6px } .editWiki { MARGIN: 9px } .topRound { DISPLAY: none } .bottomRound { DISPLAY: none } .playerControls { POSITION: relative; PADDING-BOTTOM: 6px !important; MARGIN-TOP: 0px; PADDING-LEFT: 6px !important; PADDING-RIGHT: 6px !important; MARGIN-BOTTOM: 2px; PADDING-TOP: 6px !important } IMG.managedPluginStatusIcon { MARGIN: 1px 7px 3px 0px } UL.metaDataList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.metaDataList LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } UL.metaDataList LI H3 { MARGIN: 0px; DISPLAY: inline } .bb-cpgbtd { FONT-SIZE: 90% } .bb-cpgbth { FONT-SIZE: 90% } .bb-cpmgtd { COLOR: #000; FONT-SIZE: 85% } .bb-cpmgth { FONT-SIZE: 85%; FONT-WEIGHT: bold } #resizeHandle { BORDER-BOTTOM: #999 1px solid; POSITION: absolute; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 0px; WIDTH: 3px; BOTTOM: 0px; BACKGROUND: #ddd; BORDER-TOP: #999 1px solid; TOP: 0px; BORDER-RIGHT: #999 1px solid; LEFT: 200px; -moz-border-radius: 1px; -webkit-border-radius: 1px } #resizeHandle:hover { BACKGROUND: #aaa; CURSOR: e-resize } #resizeHandle .collapseControl { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #resizeHandle .pullcollapsed { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .collapseControl:hover { CURSOR: pointer } .caretTitleModifier { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; COLOR: #444; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } .landingPageColumn H3.hiddenlink .linkStatus { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0.4em } TABLE.inventory .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .additional { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .additional .left { FLOAT: left } .additional .right { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: right; COLOR: #777; PADDING-TOP: 2px } .additional .right SPAN.size { COLOR: #000; FONT-WEIGHT: bold } .additional .left SPAN.suboption { DISPLAY: block } A.add { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #b3efb3; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.add:hover { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #e4ffdf; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.remove { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffc4bf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } A.remove:hover { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffd2cf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .listColumnHead { BORDER-BOTTOM: #ccc 1px dotted; MARGIN-BOTTOM: 3px; COLOR: #555; FONT-SIZE: 90%; FONT-WEIGHT: bold } .customFormBuilderLabel { WIDTH: 88%; DISPLAY: block; WORD-WRAP: break-word } .textareaWrapper TEXTAREA { WIDTH: 100% } .textareaWrapper TABLE { WIDTH: 100% } .tools.navPalette { } DIV.instructionData { MARGIN: 0px 0px 12px } DIV.instructionData UL { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } DIV.instructionData UL LI H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 100% } DIV.instructionData UL LI.instructions { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px } DIV.instructionData UL LI.saving { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.instructionData UL LI.instructions A.browse { BORDER-BOTTOM: medium none; BORDER-LEFT: #ccc 1px solid; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .assessmentInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } .assessmentInstructions H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px }

.assessmentPortlet { Z-INDEX: 1; POSITION: fixed; RIGHT: 43px } .assessmentPortlet H3 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.assessmentPortletBlock H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.blockContents H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .savingQuestion { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: none; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #c03; FONT-SIZE: 150%; PADDING-TOP: 2px } TR.dummyVTBEFooter TD { BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 2px } .qIncomplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; COLOR: #333; BORDER-TOP: #999 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } .qComplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; BACKGROUND-COLOR: #ccc; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; FLOAT: left; COLOR: #888; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } DIV.canvasHead { PADDING-BOTTOM: 12px; MARGIN: 0.6em 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #f6f6f6; PADDING-TOP: 6px } DIV.canvasHead UL LI { BORDER-TOP: #eee 1px solid } DIV.canvasHead UL LI:first-child { BORDER-TOP: medium none } DIV.canvasHead UL LI DIV.label { COLOR: #555 } .peer_instructions { MARGIN: 12px 6px } .peerHelp { COLOR: #555 } H2.evaluator { MARGIN: 1em 0px 0.3em } H2.evaluator SPAN { FONT-SIZE: 90%; FONT-WEIGHT: normal } DIV.peerCriteriaStatus { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; BACKGROUND: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 0.3em } DIV.peerCriteriaStatus A.itemHeadOpen { MARGIN: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 90%; FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV.peerCriteriaStatus A.itemHeadOpen:hover { TEXT-DECORATION: underline } DIV.peerCriteriaStatus TD.qStatus { PADDING-BOTTOM: 4px; PADDING-LEFT: 1px; WIDTH: 5%; PADDING-RIGHT: 1px; PADDING-TOP: 4px } DIV.peerCriteriaStatus TD.qStatus A SPAN { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #fff 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 1px solid; PADDING-TOP: 1px } DIV.peerCriteriaStatus TD.qStatus A SPAN.qComplete { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qComplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qIncomplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus A SPAN IMG { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 12px; PADDING-RIGHT: 2px; HEIGHT: 12px; PADDING-TOP: 2px } .questionNumber { FONT-WEIGHT: bold } .questionType { FONT-WEIGHT: bold } .questionNumber { COLOR: #aaa } .questionDiv { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: -1px 0px 6px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.6em } .questionDiv H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: 0px 0px 0.6em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv P { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv DIV.criteriaText { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .questionDiv DIV.submission_text { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; WIDTH: 100%; PADDING-RIGHT: 4px; HEIGHT: 150px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .questionDiv TABLE { WIDTH: 98% } .questionDiv TABLE TABLE { WIDTH: auto } .questionDiv TD.label { WIDTH: 150px; WHITE-SPACE: nowrap } #creceipt { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: red; FONT-WEIGHT: bold; PADDING-TOP: 4px } UL.fileData { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.fileData LI { BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FLOAT: left; PADDING-TOP: 2px } UL.listNav { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: #ddd; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.listNav LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: #ededed; FLOAT: left; COLOR: #2d2680; PADDING-TOP: 0px } UL.listNav LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.listNav LI A:hover { BACKGROUND-COLOR: #dedede; TEXT-DECORATION: underline } UL.listNav LI A.active { BORDER-BOTTOM: #000 2px solid; BORDER-LEFT: #000 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BACKGROUND: #fff; COLOR: #000; BORDER-TOP: #000 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 2px solid; PADDING-TOP: 2px } UL.evaluation { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.evaluation LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 4px } UL.evaluation LI P { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 0px; WIDTH: 79%; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } UL.evaluation H4 { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 4px; WIDTH: 20%; PADDING-RIGHT: 0px; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } UL.evaluation LI P SPAN { COLOR: #555 } DIV.stepPanel DIV.user_html { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.stepPanels H4.defaultCursor { CURSOR: default } H4.defaultCursor { CURSOR: default } .qShow { DISPLAY: block } .qHide { DISPLAY: none } .completionContainer { PADDING-BOTTOM: 6px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainerLarge { PADDING-BOTTOM: 6px; HEIGHT: 75px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainer A IMG { VERTICAL-ALIGN: baseline } .pagedRumble { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 14px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px } .pagedPointsOutsideBar { POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; TOP: 0px; RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 0px; LEFT: auto } .pagedPoints { PADDING-BOTTOM: 6px; LINE-HEIGHT: 100%; MARGIN: -5px 24px -5px -10px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 5px } .designAreaHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaFooter { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaFooter H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaHeader .headertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .designAreaFooter .footertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV#emptyText { MARGIN: 0.6em 16px } .infoListWrapper { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #assessmentGradeForm .infoListWrapper { MARGIN: 0px -12px 18px } .infoListWrapper H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .infoListWrapper H3 A { PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -443px; PADDING-TOP: 3px } .infoListWrapper H3 A.open { BACKGROUND: url(images/indicators.png) no-repeat 0px -1040px } .infoList { MARGIN: 6px 12px } .infoList > LI { PADDING-BOTTOM: 0px !important; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 3px !important } .infoListWrapper .infoList > LI { BORDER-TOP: #cdcdcd 1px dotted } .infoList LI:first-child { BORDER-TOP: medium none } .infoList LI DIV H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .details .infoList { MARGIN-TOP: 0px !important } .infoListFloat { MARGIN: 0px } .infoListFloat LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 3px !important; PADDING-LEFT: 10px !important; PADDING-RIGHT: 10px !important; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 3px !important } .copyQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .linkQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .copyQuestion { BACKGROUND: url(/images/ci/icons/file_copy_ti.png) no-repeat 1px center } .linkQuestion { BACKGROUND: url(/images/ci/icons/file_link_ti.png) no-repeat 1px center } DIV.contentListRight { Z-INDEX: 1000; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 9px; RIGHT: 9px; FONT-WEIGHT: normal; PADDING-TOP: 4px } DIV.contentListRight A { MARGIN-LEFT: 4px; FONT-WEIGHT: bold } DIV.contentListRight SPAN:first-child + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN[style*='none']:first-child + SPAN { DISPLAY: none } DIV.contentListRight SPAN[style*='none']:first-child + SPAN + SPAN { DISPLAY: none } DIV.contentListRight SPAN SPAN { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 9px } DIV.contentListRight STRONG { PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.assessmentHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } DIV.assessmentHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 3px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.assessmentHeader DIV { MARGIN: 3px; COLOR: #555 } .questionShell { WIDTH: 100% } .questionShell > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TBODY > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell > TBODY > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH.labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell .labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell TD.valueCell { WIDTH: 83% } .questionShell .correctAnswer { WIDTH: 2% } .questionShell .field { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 15px; WIDTH: 95%; PADDING-RIGHT: 15px; PADDING-TOP: 0px } .questionShell .field IMG { POSITION: absolute; TOP: 52%; LEFT: -2px } .questionShell .field .vtbegenerated IMG { POSITION: relative; TOP: auto; LEFT: auto } .questionShell .vtbegenerated { WIDTH: 95%; DISPLAY: inline !important } .questionShell TD.valueCell TABLE .vtbegenerated { DISPLAY: inline !important } .takeQuestionDiv .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } #assessmentGradeForm .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } DIV.multiAssign { MARGIN: 3px 0px 9px } DIV.multiAssign UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; LIST-STYLE-IMAGE: none; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI.read { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI P { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } DIV.multiAssign UL LI.label { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.1em; PADDING-LEFT: 0px; WIDTH: 12em; PADDING-RIGHT: 0px; WHITE-SPACE: normal; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #888; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI P SPAN { COLOR: #888 } DIV.multiAssign A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } H3 A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.multiAssign A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.simpleLink { DISPLAY: block; COLOR: #666; FONT-WEIGHT: normal } H3 SPAN.status A.buttonMicro { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } H3 SPAN.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 DIV.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 SPAN.status SPAN { COLOR: #888 } H3 DIV.status SPAN { COLOR: #888 } H3 DIV.status { DISPLAY: inline } .gbtable_header DIV.gbText { text-shadow: 0 -1px 0 #777 } .gbtable THEAD DIV.gbText { text-shadow: 0 -1px 0 #777 } .subActionBar:hover { Z-INDEX: 1000 } .subActionBar DIV.block { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar DIV.button { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar SPAN.block { FLOAT: none } .subActionBar SPAN.button { FLOAT: none } .subActionBar LI.sub { POSITION: relative } .subActionBar FIELDSET LEGEND + DIV.block { BORDER-LEFT: 0px } .subActionBar SELECT { MAX-WIDTH: 180px; VERTICAL-ALIGN: middle } .subActionBar DIV.button { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .subActionBar DIV.last { BORDER-RIGHT: medium none } .subActionBar FIELDSET { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .subActionBar OPTGROUP { FONT-STYLE: normal; MARGIN-TOP: 6px; COLOR: #777; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal } .subActionBar OPTGROUP OPTION { COLOR: #000 } .subActionBar UL LI.sortableSelector A { PADDING-LEFT: 18px } .navPageHeader { TEXT-ALIGN: center; MARGIN: 1em 0px } .navPageHeader H3 { DISPLAY: inline; MARGIN-LEFT: 12px } .navPageHeader SPAN { MARGIN: 0px 6px 0px 0px; COLOR: #888; FONT-WEIGHT: normal } FIELDSET.secondaryActions { FLOAT: right } DIV.secondaryBlock { FLOAT: right } .cellInfoPanel { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #eee 1px solid; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid } .cellStatus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #f6f6f6; FONT-SIZE: 85%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .cellStatus DIV { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 2px } .statusTitle { BACKGROUND: #eee; COLOR: #666 } .statdata { COLOR: #000; OVERFLOW: hidden } .cellStatus DIV.gbTableTimeStamp { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; FLOAT: right; COLOR: #666; PADDING-TOP: 2px } .sortImage { POSITION: absolute; TOP: 9px; LEFT: 6px } .bubble { Z-INDEX: 1000; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } .bubble UL { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #e2eefe; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; OVERFLOW: hidden; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid; PADDING-TOP: 6px } .bubble UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 4px; PADDING-LEFT: 0px; WIDTH: 174px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #666; CLEAR: left; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .bubble UL LI SPAN { WIDTH: 80px; DISPLAY: block; FLOAT: left; COLOR: #666; FONT-WEIGHT: normal; MARGIN-RIGHT: 3px } .bubble UL LI SPAN.icon { WIDTH: 20px; FLOAT: left; OVERFLOW: hidden } .bubble UL LI SPAN.label { WIDTH: 147px; FONT-SIZE: 100%; FONT-WEIGHT: normal } .bubbleStem { POSITION: relative; WIDTH: 190px; HEIGHT: 14px } .bottom .bubbleStem { BOTTOM: 4px } .top .bubbleStem { TOP: -2px } .left .bubbleStem { PADDING-LEFT: 24px } .right .bubbleStem { TEXT-ALIGN: right; RIGHT: 24px } .selectList { Z-INDEX: 100; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #viewList { Z-INDEX: 1000 !important } .selectList LI { Z-INDEX: 101; MARGIN: 0px 4px 0px 0px; FLOAT: left } .selectList .sub A { DISPLAY: block; TEXT-DECORATION: none } .selectList .sub:hover UL { TOP: 20px !important; LEFT: 0px } .selectList .sub UL LI { POSITION: static !important; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .selectList .sub UL LI H4 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #888; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .selectList .sub UL LI H4 { WIDTH: 152px } .selectList .sub UL LI A { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:hover { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:focus { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub A #currentView { BACKGROUND-IMAGE: none } .selectList .sub A #currentSortBy { BACKGROUND-IMAGE: none } .selectList .sub A #currentColSortDir { BACKGROUND-IMAGE: none } UL.selectList LI.sub UL LI.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } UL.selectList LI.sub UL LI.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } DIV.gradeDetails { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 6px } DIV.gradeDetails DIV.label { WIDTH: 15% } SPAN.unstyled { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 0px } @media Print { DIV.hideOnPrint { DISPLAY: none } } DIV.gradeDetailsStep { BORDER-BOTTOM: #ccc 2px solid; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px 0px 6px } .gradeInfoHeader { PADDING-BOTTOM: 3px; MARGIN: 0px -12px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3 { PADDING-BOTTOM: 3px; MARGIN: 0px 4px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 3px } .gradeInfoHeader H3 SPAN { COLOR: #000; FONT-WEIGHT: bold } .gradeInfoHeader H3.root { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #888; COLOR: #fff; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3.root SPAN { COLOR: #fff } UL.gb_currView LI.sub UL LI.favorite A { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } UL.gb_currView LI.sub UL LI.favorite A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } .navStatusButtons .taskbuttondiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.staticFooter DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader { MARGIN: 10px 0px 0px } DIV.staticFooter DIV.details { BORDER-BOTTOM: #ddd 1px solid } .gbColumns_rumble { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ddd 1px solid } .staticHeader { POSITION: relative; ZOOM: 1; CLEAR: both } .staticFooter { POSITION: relative; ZOOM: 1; CLEAR: both } .staticHeader DIV.itemHeaderControl { RIGHT: 0px } .staticFooter DIV.itemHeaderControl { RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { RIGHT: 0px } .staticHeader DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticFooter DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticHeader DIV.itemHeaderControl A { DISPLAY: inline-block } .staticFooter DIV.itemHeaderControl A { DISPLAY: inline-block } UL.gbCategories LI DIV.itemHeaderControl A { DISPLAY: inline-block } UL.dragableHighlight { BORDER-BOTTOM: #999 1px dashed; PADDING-BOTTOM: 3px; MARGIN: 12px -30px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; BORDER-TOP: #999 1px dashed; PADDING-TOP: 12px } UL.gbCategories LI H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticHeader H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticFooter H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } UL.gbCategories LI H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticHeader H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticFooter H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.areaHighlight DIV.container { BACKGROUND: #f9f9f9 } DIV.areaHighlight DIV.bottomRound B { BACKGROUND: #f9f9f9 } UL.dragableHighlight LI H3.item { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .dragableHighlight DIV.details { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } .dbThreadInfo DL { MARGIN: 1em } .dbThreadInfo DT { PADDING-BOTTOM: 0.1em; MARGIN: 0px; PADDING-LEFT: 0.1em; WIDTH: 8em; PADDING-RIGHT: 0.1em; FLOAT: left; COLOR: #999; CLEAR: left; FONT-WEIGHT: bold; PADDING-TOP: 0.1em } .dbThreadInfo DD { PADDING-BOTTOM: 0.1em; MARGIN: 0px 0px 0px 9em; PADDING-LEFT: 0.1em; PADDING-RIGHT: 0.1em; PADDING-TOP: 0.1em } .rating { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 80px; PADDING-RIGHT: 0px; BACKGROUND: url(images/controls.png) no-repeat 0px -20px; HEIGHT: 16px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .star0 { BACKGROUND-POSITION: 0px -20px } .star1 { BACKGROUND-POSITION: 0px -36px } .star2 { BACKGROUND-POSITION: 0px -52px } .star3 { BACKGROUND-POSITION: 0px -68px } .star4 { BACKGROUND-POSITION: 0px -84px } .star5 { BACKGROUND-POSITION: 0px -100px } UL.rating LI { TEXT-INDENT: -999em; CURSOR: pointer } UL.rating LI A { Z-INDEX: 200; POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 0px; TEXT-DECORATION: none; LEFT: 0px } UL.rating LI.one A { LEFT: 0px } UL.rating LI.two A { LEFT: 16px } UL.rating LI.three A { LEFT: 32px } UL.rating LI.four A { LEFT: 48px } UL.rating LI.five A { LEFT: 64px } UL.rating LI A:hover { Z-INDEX: 2; WIDTH: 80px; BACKGROUND: url(images/controls.png) no-repeat -90px -36px; HEIGHT: 16px; OVERFLOW: hidden; LEFT: 0px } UL.rating LI.one A:hover { BACKGROUND-POSITION: -90px -36px } UL.rating LI.two A:hover { BACKGROUND-POSITION: -90px -52px } UL.rating LI.three A:hover { BACKGROUND-POSITION: -90px -68px } UL.rating LI.four A:hover { BACKGROUND-POSITION: -90px -84px } UL.rating LI.five A:hover { BACKGROUND-POSITION: -90px -100px } DIV.collectionViewReadMessageBorder { BORDER-LEFT: #ccc 1px solid; MARGIN-LEFT: 30px } DIV.collectionViewUnreadMessageBorder { BORDER-BOTTOM: #999 3px solid; BORDER-LEFT: #999 3px solid; MARGIN-LEFT: 30px; BORDER-TOP: #999 3px solid; BORDER-RIGHT: #999 3px solid } TABLE.treeframe TR TD { VERTICAL-ALIGN: middle } TABLE.tree_view TR TD IMG { VERTICAL-ALIGN: middle } TABLE.treeframe { MARGIN: 0px } TABLE.treeframe TBODY TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe THEAD TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe TR.high { BACKGROUND-COLOR: transparent } TR.thread TD { VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid } TR.thread TD IMG { VERTICAL-ALIGN: middle } TABLE.unreadmessageborder { BORDER-BOTTOM: #666 3px solid; BORDER-LEFT: #666 3px solid; BORDER-TOP: #666 3px solid; BORDER-RIGHT: #666 3px solid } TABLE.readmessageborder { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TR.show { DISPLAY: table-row } TR.hide { DISPLAY: none } .loadingelipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #ffc; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .gradefield { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 9px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #000; FONT-SIZE: 120%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 4px } .gradefield INPUT { BORDER-BOTTOM: #666 2px solid; BORDER-LEFT: #666 2px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-FAMILY: arial, sans-serif; BACKGROUND: #fff; FONT-SIZE: 110%; VERTICAL-ALIGN: middle; BORDER-TOP: #666 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #666 2px solid; PADDING-TOP: 1px } .gradefield INPUT.inputtypebutton { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; DISPLAY: inline; BACKGROUND: #ededed; HEIGHT: auto; FONT-SIZE: 80%; OVERFLOW: visible; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .gradefield A { FONT-SIZE: 120%; FONT-WEIGHT: bold } .gradefield SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; COLOR: #555; FONT-SIZE: 80%; PADDING-TOP: 0px } .overridegrade { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 3px 0px 3px 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline; FONT-SIZE: 80%; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .overridegrade INPUT.inputtypebutton { MARGIN-TOP: -3px; FONT-SIZE: 70%; VERTICAL-ALIGN: middle; FONT-WEIGHT: normal } DIV.parentmessage { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #ededed; CLEAR: both; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .availability { PADDING-BOTTOM: 1px; FONT-STYLE: italic; MARGIN: 6px 0px; PADDING-LEFT: 3px; WIDTH: auto; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TD.tag_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.msg_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.checkbox_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } TD.prevnextpostarea { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } H3.dbheading { MARGIN-TOP: 0px; DISPLAY: inline; MARGIN-BOTTOM: 0px; FONT-WEIGHT: normal } .dbThread { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa 1px solid; MARGIN: 24px 30px; BACKGROUND: #eee; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 3px 6px #ccc; -webkit-box-shadow: 0 3px 6px #ccc; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbThreadCheckbox { POSITION: absolute } .dbThreadCheckbox INPUT { MARGIN: 10px } .dbThread .dbThreadInfo { PADDING-BOTTOM: 1em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; COLOR: #555; PADDING-TOP: 1em } .dbThreadInfo DL { MARGIN: 0px; WIDTH: 50%; FLOAT: left; FONT-SIZE: 95% } .dbThreadBody { PADDING-BOTTOM: 2em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; BACKGROUND: #fff; PADDING-TOP: 2em } P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbParentPost P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbThreadHeader { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter { PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadHeader .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadFooter .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } .dbThreadHeader .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } DIV.spacerDiv { CLEAR: both } .threadButtons .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .dbThreadInfo .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo P { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.6em } .dbThreadInfo P.detailButtons { FLOAT: right } .dbThreadTree { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MIN-HEIGHT: 80px; MAX-HEIGHT: 200px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #threadArea { PADDING-BOTTOM: 18px; MARGIN: 0px -30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } #message { MARGIN: 0px -30px -20px; BORDER-TOP: #ccc 1px solid } #message_upper { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: -20px -30px 0px } .dbParentPost { BORDER-BOTTOM: #bbb 1px dashed; BORDER-LEFT: #bbb 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -0.6em 0px 1.2em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #bbb 1px dashed; BORDER-RIGHT: #bbb 1px dashed; PADDING-TOP: 0.6em; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbParentPost H4 { MARGIN: 0px 0px 0.6em } .dbParentPost H4 A { WIDTH: 100%; DISPLAY: block } .dbParentPost P { PADDING-BOTTOM: 1.2em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .dbParentPostBody { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; MARGIN-BOTTOM: 0.6em; BACKGROUND: #fcfcfc; CLEAR: both; PADDING-TOP: 0.6em } .loadingElipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: 12px auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #fff7de; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .unreadmessage { FONT-WEIGHT: bold } H3.unreadmessage { FONT-WEIGHT: bold } .unreadmessage.dbheading { FONT-SIZE: 100% } .unread-count { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #128fa8; COLOR: #fff; PADDING-TOP: 2px; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px } #threadArea DIV.checked { BACKGROUND-COLOR: #eee } #threadArea DIV.checked_top { BACKGROUND-COLOR: #eee } #threadArea DIV.checked { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } #threadArea DIV.checked_top { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } DIV.blogContainer { WIDTH: 74%; FLOAT: left } DIV.blogContainer H3.blogHead { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer DIV.blogEntry { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogContainer DIV.blogEntry H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; WORD-WRAP: break-word; BACKGROUND: url(images/small_discussions.gif) no-repeat 8px 9px; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 9px } DIV.blogContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 3px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } DIV.blogContainer DIV.entryDate { COLOR: #444; FONT-SIZE: 95% } DIV.blogContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.blogContainer DIV.entryFooter { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #eaeaea; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.5% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px -12px; DISPLAY: none; BORDER-TOP: #999 1px solid; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.blogContainer DIV.entryFooter DIV.addBlogComment H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .addBlogComment .stepcontent OL { WIDTH: 100% } .addBlogComment .stepcontent OL LI { WIDTH: 100% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment DIV.controls { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.blogContainer UL.entryComments { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eaeaea; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.blogContainer UL.entryComments LI P { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } DIV.blogContainer UL.entryComments LI P.commentDate { Z-INDEX: 10; BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: right; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; MARGIN: 2px 0px -1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bubble_top_thin.gif) no-repeat 15px 100%; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #444; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.blogContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.blogContainer DIV.blogInstructions H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.journalNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.contentAreaNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } .messageCollectionContainer { FLOAT: left } DIV.blogNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { WORD-WRAP: break-word; OVERFLOW: hidden } DIV.blogNav UL.blogArchiveList LI A { WIDTH: 100%; WORD-WRAP: break-word } .indentedWikiList { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 22px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .indentedWikiList IMG { MARGIN: 0px 3px 0px -22px } .blogNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .journalNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .blogNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } .journalNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogNav LI.currentBlog { FONT-WEIGHT: bold } DIV.blogNav LI.currentBlog SPAN { FONT-WEIGHT: normal } DIV.blogContainer .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.blogNav .newItems { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav .gradeStatus { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.blogNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.blogNav UL UL { MARGIN-LEFT: 9px } DIV.blogNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } DIV.journalContainer { WIDTH: 74%; FLOAT: left; MARGIN-RIGHT: 1% } DIV.journalContainer H3.blogHead { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.journalContainer DIV.blogEntry { BORDER-BOTTOM: #eee 3px solid; POSITION: relative; BORDER-LEFT: #eee 0px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 36px; PADDING-RIGHT: 0px; BACKGROUND: url(images/blog_notebook_paper.gif) #fff repeat-y 0px 0px; BORDER-TOP: #eee 3px solid; BORDER-RIGHT: #eee 3px solid; PADDING-TOP: 0px } DIV.journalContainer DIV.blogEntry H4 { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 12px } DIV.journalContainer DIV.entryDate { Z-INDEX: 100; BORDER-BOTTOM: #c0dace 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; PADDING-TOP: 3px } DIV.journalContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; PADDING-TOP: 12px } DIV.journalContainer DIV.entryFooter { PADDING-BOTTOM: 12px; MARGIN: 0px 0px 0px -31px; PADDING-LEFT: 43px; PADDING-RIGHT: 12px; ZOOM: 1; BACKGROUND: url(images/blog_notebook_paper_bot.gif) repeat-x center bottom; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.35% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment { DISPLAY: none; MARGIN-BOTTOM: 6px } DIV.journalContainer UL.entryComments { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #c0dace 1px solid; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.journalContainer UL.entryComments LI P { PADDING-BOTTOM: 0px; MARGIN: 4px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI P.commentDate { COLOR: #444; MARGIN-LEFT: 19px; FONT-SIZE: 90% } DIV.journalContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: url(images/small_blog_comment.gif) no-repeat 0px 3px; COLOR: #000; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 3px } DIV.journalContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.journalContainer DIV.blogInstructions H4 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.blogInstructions P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { OVERFLOW: hidden } DIV.journalNav LI.currentBlog { FONT-WEIGHT: bold } DIV.journalNav LI.currentBlog SPAN { FONT-WEIGHT: normal } .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.journalNav .newItems { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.journalContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.journalNav UL UL { MARGIN-LEFT: 9px } DIV.journalNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } #blogNavLinks { POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 6px; RIGHT: 6px; PADDING-TOP: 0px } .contentAreaPalette UL#aboutBlog LI.currentBlogView { BORDER-BOTTOM: #0078cb 2px solid; BORDER-LEFT: #0078cb 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; MARGIN-BOTTOM: 3px; BACKGROUND: #eff6ff; BORDER-TOP: #0078cb 2px solid; BORDER-RIGHT: #0078cb 2px solid; PADDING-TOP: 2px } .currentBlogView A { COLOR: black; TEXT-DECORATION: none } UL.blogArchiveList { MARGIN-LEFT: 16px } UL.blogArchiveList LI { PADDING-BOTTOM: 4px } #gradeWidget SPAN#blogGradeValue { POSITION: relative; PADDING-LEFT: 6px } #blogGradeValue IMG { POSITION: absolute; TOP: 0px; LEFT: 0px } .contentAreaNav A.itemHead { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 6px } .contentAreaPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } DIV.blogNav .contentAreaPalette:first-child { BORDER-TOP: 0px } DIV.journalNav .contentAreaPalette:first-child { BORDER-TOP: 0px } .rightColumn-narrow .contentAreaPalette:first-child { BORDER-TOP: 0px } .contentAreaPalette UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .contentAreaPalette LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 0px } .contentAreaPalette LI LI { FONT-SIZE: 100% } DIV.iconLegendBlog { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .contentAreaNav A#blogListLink { PADDING-RIGHT: 48px } #loginPageContainer { MARGIN: 0px auto; MIN-HEIGHT: 100%; HEIGHT: auto !important } #loginHeader { POSITION: absolute; TOP: 0px; RIGHT: 0px } #loginHeader UL LI { POSITION: relative; MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; BACKGROUND: #888; VERTICAL-ALIGN: top; BORDER-TOP: 0px } #loginHeader UL LI A { PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 12px; WIDTH: 28px; PADDING-RIGHT: 12px; DISPLAY: inline-block; HEIGHT: 18px; PADDING-TOP: 6px } #loginHeader UL LI:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang H2:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang:hover H2 { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginHeader UL LI:first-child { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI:first-child A { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI IMG { DISPLAY: none } #loginHeader UL LI.font-size:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.contrast:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.font-size A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast:before { CONTENT: "c" } #loginHeader UL LI:hover:before { COLOR: #fff; CURSOR: pointer } #loginHeader UL LI.contrast { BORDER-LEFT: #777 1px solid; MARGIN-LEFT: -4px } #loginLang { POSITION: absolute; TOP: 0px; LEFT: 0px } #loginLang H2 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; BACKGROUND: #888; HEIGHT: 17px; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 4px; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0 } #loginLang H2 SPAN { TEXT-INDENT: -999px; WIDTH: 0px; DISPLAY: inline-block; OVERFLOW: hidden } #loginLang H2:before { FONT: 140%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "W"; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginLang H2:hover:before { COLOR: #fff } #loginLang UL { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 150px; PADDING-RIGHT: 6px; TOP: -1000px; PADDING-TOP: 6px; LEFT: -1000px } #loginLang:hover UL { WIDTH: 175px; TOP: 28px; LEFT: 0px; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0 } #loginLang H2:hover:after { Z-INDEX: 100 } #loginLang:hover H2:after { Z-INDEX: 100 } #loginLang UL LI A { WIDTH: auto } DIV.loginBody { PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BACKGROUND: url(images/Bb_learn_small.png) no-repeat 94px 94px; PADDING-TOP: 260px } DIV.loginBody .receipt { PADDING-BOTTOM: 14px; MARGIN: 0px auto 16px; PADDING-LEFT: 19px; WIDTH: 409px; PADDING-RIGHT: 4px; PADDING-TOP: 12px } #loginBox { TEXT-ALIGN: center } #loginBox UL { MARGIN: 0px auto; WIDTH: 415px } #loginBox LI { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #loginBox LI + LI + LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } #loginBox LI + LI + LI + LI { POSITION: relative; TEXT-ALIGN: right; DISPLAY: block } #loginBox LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #loginBox LI INPUT { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100%; PADDING-RIGHT: 10px; FONT-SIZE: 140%; PADDING-TOP: 10px; -moz-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1) } #loginBox INPUT[type='text'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='password'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='text']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox LI INPUT[type='submit'] { PADDING-BOTTOM: 7px; MARGIN: -31px -9px 0px 12px; PADDING-LEFT: 22px; WIDTH: auto; PADDING-RIGHT: 22px; FONT-SIZE: 130%; PADDING-TOP: 7px } #loginFormTitle { POSITION: absolute; DISPLAY: none } #loginFormText { POSITION: absolute; DISPLAY: none } DIV.portlet #loginFormTitle { POSITION: static; DISPLAY: block } DIV.portlet #loginFormText { POSITION: static; DISPLAY: block } #loginOptions { TEXT-ALIGN: center; MARGIN: 38px auto 26px; WIDTH: 600px } #loginOptions H2 { MARGIN: 10px } #loginOptions P { MARGIN: 10px; COLOR: #444; FONT-SIZE: 0.85em } #loginOptions UL LI { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI.subOption { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } #loginOptions UL LI.subOption A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } .forgot A { BORDER-BOTTOM: #0099b6 1px dotted } #loginOptions UL LI A:hover { BORDER-BOTTOM-STYLE: solid } #loginOptions UL LI.subOption A:hover { BORDER-BOTTOM-STYLE: solid } .forgot A:hover { BORDER-BOTTOM-STYLE: solid } #loginText { TEXT-ALIGN: center; PADDING-BOTTOM: 18px; PADDING-LEFT: 80px; PADDING-RIGHT: 80px; DISPLAY: none; BACKGROUND: #5f6062; BORDER-TOP: #777 1px solid; PADDING-TOP: 12px } #loginText P SPAN { COLOR: #fff; FONT-SIZE: 105%; FONT-WEIGHT: bold } #loginText P { MARGIN: 0px; COLOR: #ededed; FONT-SIZE: 95% } #loginImage { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } #loginImage IMG { MARGIN: 0px auto } #loginAnnouncements { PADDING-BOTTOM: 7px; MARGIN: 0px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 24px } #loginAnnouncements H3 { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 9px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: none; COLOR: #555; FONT-SIZE: 110%; PADDING-TOP: 6px } #loginAnnouncements UL { TEXT-ALIGN: center; MARGIN: 0px auto; WIDTH: 800px } #loginAnnouncements UL LI:before { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:after { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:before { LEFT: 8px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } #loginAnnouncements UL LI:after { RIGHT: 8px; -moz-transform: rotate(2deg); -webkit-transform: rotate(2deg) } #loginAnnouncements LI { POSITION: relative; TEXT-ALIGN: justify; PADDING-BOTTOM: 24px; MARGIN: 0px 0px 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; ZOOM: 1; BACKGROUND: #fff; COLOR: #666; FONT-SIZE: 95%; VERTICAL-ALIGN: top; PADDING-TOP: 18px; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15) } #loginAnnouncements UL LI STRONG:first-child { MARGIN: 0px 0px 12px; FONT-FAMILY: Georgia, serif; FLOAT: left; COLOR: #000; FONT-SIZE: 115% } #loginAnnouncements UL LI STRONG + EM { TEXT-ALIGN: right; MARGIN: 0px; DISPLAY: block; FONT-FAMILY: Georgia; FLOAT: right } #loginAnnouncements UL LI STRONG + EM + BR { DISPLAY: none } #loginAnnouncements UL LI .vtbegenerated { LINE-HEIGHT: 1.38; CLEAR: both } #loginAnnouncements UL LI:first-child { BORDER-TOP: 0px } #loginAnnouncements A { BORDER-BOTTOM: #128fa8 1px dotted } #loginAnnouncements A:hover { BORDER-BOTTOM-STYLE: solid } #loginAnnouncements A:focus { BORDER-BOTTOM-STYLE: solid } #loginHeader H1 { DISPLAY: none } #loginHeader H2 { DISPLAY: none } #loginHeader .productLogo { DISPLAY: none } #loginOptions #gatewayButtonsTitle { DISPLAY: none } #loginOptions #gatewayButtonsInstructions { DISPLAY: none } .login-page #copyright { POSITION: absolute; TEXT-ALIGN: center; MARGIN-TOP: 24px; WIDTH: 900px; BOTTOM: 24px; MARGIN-LEFT: -450px; LEFT: 50% } #loginAnnouncements + #copyright { POSITION: relative } .loginCopyright { WIDTH: 580px !important } .login-page #copyright .logo { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; PADDING-TOP: 0px } .login-page #copyright .newCopyright { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .loginCopyright .legal { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .additionalInfo { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .legal { BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; WIDTH: 24.5em; PADDING-RIGHT: 12px; PADDING-TOP: 3px } #loginPane + #copyright .legal P { MARGIN: 0px; DISPLAY: inline } #loginPane + #copyright .additionalInfo P { MARGIN: 0px; DISPLAY: inline } .login-page .copyrightDetailContents { MIN-HEIGHT: 6.5em; MARGIN-LEFT: -394px; LEFT: 50% } H1.pageTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .caliperTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .discoverTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .unitHomePageTitle { MARGIN: -60px -30px 5px } .caliperTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .unitHomePageTitle H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .discoverTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } .unitHomePageTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .caliperTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .unitHomePageTitle A.browseNoImg { PADDING-BOTTOM: 3px; PADDING-TOP: 2px } .reports { MIN-WIDTH: 810px; BACKGROUND: #f0f0f0 } .reports .navigationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .container { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports #dataCollectionContainer { MARGIN: 0px } .reports DIV[id*='step'] { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .reports UL { MARGIN: 12px } .reports .stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports UL LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; PADDING-TOP: 0px } .reports .label { COLOR: #777 } .reports .field { COLOR: #000 } .reports UL LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .reports H1 { PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 9px } .reports H2 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; PADDING-TOP: 3px } .reports H3 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .reports H3 A IMG { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .reports H3.steptitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; LETTER-SPACING: 0px; COLOR: #fff; FONT-SIZE: 110%; PADDING-TOP: 4px } .reports H4 { PADDING-BOTTOM: 3px; MARGIN: 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; COLOR: #fff; FONT-SIZE: 115%; PADDING-TOP: 3px } .reports H5 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 6px; MARGIN: 12px -12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .reports .attachments { MARGIN: 0px } .reports t.wide { MARGIN: 0px; WIDTH: 100% } #toc { LIST-STYLE-POSITION: outside; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: decimal; MARGIN: 12px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #toc UL { MARGIN: 0px 24px 24px } .toc_div { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; PADDING-BOTTOM: 4px; MARGIN: 6px 18px 18px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid; PADDING-TOP: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .toc_div OL LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports .toc_div H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .toc_div H2 A IMG { MARGIN-RIGHT: 6px } .toc_div A.toggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #f6f6f6; FLOAT: right; FONT-SIZE: 95%; TOP: -4px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .toc_div A.toggle:hover { BACKGROUND: #fff } .backtotop { FLOAT: right } .dateofreport { FLOAT: right } .dateofreport { MARGIN: 6px 18px 12px 0px } .reports .block { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 18px 24px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px 4px 0 4px; -webkit-border-radius: 4px 4px 0 4px } .backtotop { POSITION: relative; MARGIN-BOTTOM: -40px; FLOAT: right; MARGIN-RIGHT: -1px } .backtotop A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f6f6f6; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .backtotop A:hover { BACKGROUND: #fff } .backtotop A IMG { MARGIN-RIGHT: 5px } DIV.fontPreview { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 4px; MARGIN: 3px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 4px } .textareaDiv { PADDING-BOTTOM: 6px } .textareaDiv TABLE { WIDTH: 98% } .textareaDiv TABLE TABLE { WIDTH: 100% } .textareaDiv TABLE TABLE TABLE { WIDTH: 100% } .textareaDiv TEXTAREA { WIDTH: 100%; BORDER-TOP: #666 2px solid } DIV.textToolbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 97.7%; PADDING-RIGHT: 0px; BACKGROUND: #f6f6f6; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } DIV.textToolbar A { WHITE-SPACE: nowrap; FONT-SIZE: 90% } DIV.textToolbar LABEL { PADDING-LEFT: 4px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.textToolbar SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } .previewTextArea { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #999 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 459px; PADDING-RIGHT: 0px; DISPLAY: none; BACKGROUND: #fff; HEIGHT: 112px; OVERFLOW: auto; BORDER-TOP: #999 2px solid; BORDER-RIGHT: #999 2px solid; PADDING-TOP: 0px } .previewTextArea DIV.previewTitle { BORDER-BOTTOM: #eee 2px solid; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; PADDING-TOP: 2px } .previewTextArea DIV.previewTitle A { FLOAT: right } .previewTextArea DIV.previewTitle H6 { MARGIN: 0px; FLOAT: left; FONT-SIZE: 90% } .previewTextArea DIV.previewContent { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .messageContainer H6 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .messageContainer P { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .messageVariable { BORDER-BOTTOM: #ed9 1px solid; BORDER-LEFT: #ed9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; BORDER-TOP: #ed9 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ed9 1px solid; PADDING-TOP: 0px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .myPlaces .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .explore .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .myPlaces A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .myPlaces A:hover { TEXT-DECORATION: underline } .myPlaces A:focus { TEXT-DECORATION: underline } .myPlaces A.home { PADDING-RIGHT: 20px } .myPlaces SPAN.homeIconWrap { POSITION: absolute; BACKGROUND: url(/images/ci/icons/clphomepage/home_ti.gif) no-repeat 0px 0px; TOP: 3px; RIGHT: 3px } .myPlaces SPAN.homeIconWrap IMG { WIDTH: 16px; HEIGHT: 16px } .myPlaces A.unit { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.course { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.ee { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.program { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.workspace { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.unit { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.unit:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.course { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.course:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.ee { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.ee:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.program { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.program:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.workspace { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .myPlaces A.workspace:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .explore A { PADDING-LEFT: 30px; BACKGROUND: url(images/indicators.png) no-repeat 9px -1489px } .explore H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .wizardBody .locationPane { MARGIN: 0px; DISPLAY: block } .wizardBody .breadcrumbs .courseName { DISPLAY: none } .wizardBody .breadcrumbs .courseId { DISPLAY: none } .wizardBody .breadcrumbs { HEIGHT: 24px } .wizardBody .path .root A:before { POSITION: relative; FONT-FAMILY: "Pictos"; COLOR: #aaa; FONT-SIZE: 20px; CONTENT: "H"; TOP: -2px; FONT-WEIGHT: normal } .wizardBody .modeSwitchWrap { POSITION: absolute; TOP: 15px; RIGHT: 12px } .wizardBody { BACKGROUND: #fff } .wizardBody .container { POSITION: static } .wizardBody #contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 210px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 10px; PADDING-TOP: 12px } .wizardBody FORM#contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .topRound { DISPLAY: none } .wizardBody > .locationPane > .contentPaneWide > .topRound { POSITION: absolute; DISPLAY: block; TOP: 60px } .wizardBody #pageTitleDiv IMG { DISPLAY: none } .wizardBody .reqfield { MARGIN: 0px 0px 6px -6px; FLOAT: none } .wizardBody #containerdiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardHead H2 { MARGIN: 0px; FONT-SIZE: 110% } .wizardHead .helphelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .contentPaneWide > .contentBox > .pageTitle H1 { FONT-SIZE: 150% } .wizardBody .containerWizard { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .wizardBody .contentPaneWide > .contentBox > .pageTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 18px; MARGIN: -13px -12px 24px -224px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .wizardBody .contentPaneWide > .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .wizardHead { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; MARGIN-BOTTOM: 24px; BACKGROUND: #efede3; PADDING-TOP: 12px } .wizardBody #dataCollectionContainer { MARGIN: 0px } .wizardHead + .container { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px 4px 4px 4px } .wizardBody .containerWizard .container { HEIGHT: auto } .wizardBody .containerWizard .locationPane { MARGIN-TOP: 12px } .wizardBody UL.contentList LI DIV.details { OVERFLOW-X: visible } .wizardFinishText { MARGIN: 6px 0px 150px } .wizardSubmit { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px -79px -210px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #ccc 1px solid; TOP: 18px; PADDING-TOP: 18px } .wizardSubmit INPUT[name='cancel'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='Previous'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='finish'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='cancel']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='cancel']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[type=image] { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .wizardSubmit SPAN { MARGIN: 0px 18px; COLOR: #999 } .wizardSubmit SPAN STRONG { COLOR: #000 } .wizardBottomRound B.inner { BACKGROUND: #fff1c5 } .wizardBottomRound B.outer { BACKGROUND: #fff1c5 } .wizardBottomRound B.middle { BACKGROUND: #fff1c5 } .navigationPaneWizard { PADDING-BOTTOM: 0px; MARGIN-TOP: 63px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .navigationPaneWizard DIV B.inner { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.middle { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.outer { MARGIN-RIGHT: 0px !important } .navigationPaneWizard .navPalette { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .wizardBody #courseMenuPalette { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .wizardBody #courseMenuPalette DIV.navPaletteContent { -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navigationPaneWizard H2 { PADDING-BOTTOM: 6px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; LETTER-SPACING: 0.2em; COLOR: #00add0; FONT-SIZE: 90%; FONT-WEIGHT: 100; PADDING-TOP: 6px } .navigationPaneWizard .navPalette SPAN { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #ededed; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .navigationPaneWizard .navPalette LI { PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #777; FONT-SIZE: 95%; PADDING-TOP: 6px } .navigationPaneWizard .navPalette UL LI:first-child { POSITION: relative; BORDER-TOP: medium none } .navigationPaneWizard .navPalette UL LI.currentStep { COLOR: #000; FONT-WEIGHT: bold } .navigationPaneWizard .navPalette UL LI.currentStep:after { POSITION: absolute; LINE-HEIGHT: 0.5; COLOR: #999; FONT-SIZE: 18px; CONTENT: "?"; TOP: 9px; RIGHT: 0px } .containerWizard .controlPanel .navPaletteContent A { PADDING-BOTTOM: 4px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(../../../images/ci/ng/portlet_expand.gif) no-repeat 2px 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 4px } .containerWizard .navPaletteContent H2 { MARGIN: 0px; FONT-SIZE: 105% } .containerWizard .navPaletteContent H2 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px } .containerWizard .controlpanel LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #logDetail { OVERFLOW-Y: auto; HEIGHT: 300px } .totalMsgs { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 14px !important; PADDING-RIGHT: 6px !important; COLOR: #555; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 11px !important } .latestEntry { FLOAT: right !important; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal } .log-summary { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } .log-summary A { MARGIN: 0px 3px; DISPLAY: inline-block } .log-summary LI { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .sis-seperator { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .log-summary LI:first-child { BORDER-LEFT: medium none } .log-type { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; COLOR: #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .log-summary .log-type { FONT-SIZE: 120% } .log-error { BACKGROUND: #ef3e36 } .log-warning { BACKGROUND: #fcb040 } .log-message { BACKGROUND: #0b9444 } .log-debug { BACKGROUND: #00aeef } .log-header { MARGIN: 0px 0px 9px } .attachments .log-type { MIN-WIDTH: 6em; TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; LETTER-SPACING: 0.1em; FONT-SIZE: 90%; FONT-WEIGHT: normal } .table-scroll-wrapper TABLE { MARGIN: 0px } .table-scroll-wrapper TBODY { OVERFLOW-Y: auto; HEIGHT: 200px; OVERFLOW: hidden } .row-selected { BACKGROUND-COLOR: #e2eefe !important } .log-search > DIV > DIV { PADDING-BOTTOM: 0px !important; MARGIN: 6px 6px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 9px !important; DISPLAY: inline-block; BORDER-RIGHT: #bbb 1px dotted; PADDING-TOP: 0px !important } .answerSavedButton { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavingButton { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .timeUpWarning { COLOR: #cf0c0c } .thirtySecondWarning { COLOR: #cf0c0c } .oneMinuteWarning { COLOR: #cf0c0c } .fiveMinuteWarning { COLOR: #000 } .halfTimeWarning { COLOR: #000 } .headerForProgressBar { Z-INDEX: 100; POSITION: relative } DIV.assessmentPortletBlock H3.headerForProgressBar A { BACKGROUND: none transparent scroll repeat 0% 0% } .progressBar { Z-INDEX: 90; POSITION: absolute; BOTTOM: 0px; TOP: 0px; LEFT: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .progressBarStyle { BACKGROUND: #b6f796 } .progressBarStyleOneMin { BACKGROUND: #ffe79f } .progressBarStyleThirtySec { BACKGROUND: #ffafaf } .progressBarStyleOvertime { BACKGROUND: #ffafaf } .timerBar { BORDER-BOTTOM: #fff 2px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: #fff 2px solid; PADDING-BOTTOM: 3px; MARGIN: 4px 14px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; FONT-SIZE: 105%; BORDER-TOP: #fff 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 2px solid; PADDING-TOP: 3px; -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 9px; -webkit-border-radius: 9px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timer STRONG { Z-INDEX: 100; POSITION: relative } .timerText { PADDING-BOTTOM: 6px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; PADDING-TOP: 6px } .liveArea.timer { PADDING-BOTTOM: 9px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 6px } .questionStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 3px } .timedQuestionStatus { PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 2px groove; PADDING-TOP: 3px } .completionContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .questionStatus .questionStatusLabel { MARGIN: 0px; LETTER-SPACING: 0px; FONT-WEIGHT: normal } .questionStatus .questionStatusLabel A { COLOR: #666; TEXT-DECORATION: none } .questionStatus .questionStatusLabel A:hover { COLOR: #000; TEXT-DECORATION: underline } .timerMessage { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 2px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timeLabel { COLOR: #666; FONT-WEIGHT: normal } .timeValue { FONT-SIZE: 120% } .timer-collapsed.timer-toggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 0px 2px; PADDING-TOP: 0px } .timer-expanded.timer-toggle { POSITION: absolute; WIDTH: 20px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 3px 4px; HEIGHT: 20px; TOP: 5px; LEFT: 4px } .timerBar .timerLabel:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .timerMessage:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .progressBarStyleOvertime + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "t" } .progressBarStyleOneMin + .timerLabel:before { COLOR: #7f6b2f; CONTENT: "!" } .progressBarStyleThirtySec + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "!" } .timerMessage:before { CONTENT: "t" } .halfTimeWarning:before { COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } #collabRubricList .collabRubricListTypeContainer { MARGIN: 4px } .rubricGradingTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricGradingTable TH { COLOR: #45586f } .rubricTable TH { COLOR: #45586f } .rubricTable THEAD TH { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .rubricTable THEAD TH:first-child { BORDER-LEFT: medium none } .rubricGradingTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .rubricGradingTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH LABEL { FONT-WEIGHT: normal } .rubricTable TBODY TH INPUT { FONT-WEIGHT: normal } .rubricTable TBODY TH > SPAN { FONT-WEIGHT: normal } .rubricGradingTable .rubricCellHeader { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rubricGradingTable .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricSelectedValue { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricCellDescription { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingList .radioLabel { PADDING-BOTTOM: 3px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT-WEIGHT: bold; PADDING-TOP: 3px } .rubricGradingTable .rubricCellContainer { POSITION: relative; MIN-HEIGHT: 30px; OVERFLOW: hidden } .rubricCellRadio { POSITION: absolute; TOP: 6px } .rubricGradingList .rubricCellRadio { POSITION: absolute; TOP: 2px } .selectedCell .rubricCellRadio { TOP: -60px } .pointContainer { FONT-WEIGHT: bold } .rubricGradingTable .feedback { DISPLAY: none } .rubricGradingTable .selectedCell .feedback { DISPLAY: block } .rubricGradingTable .feedback TEXTAREA { WIDTH: 99% } .rubricGradingTable .selectedCell { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px; COLOR: #000; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .3); box-shadow: 0 0 6px rgba(0, 0, 0, .3) } .rubricGradingList .selectedCell { BACKGROUND: url(images/button_ok_ti.png) no-repeat 4px 3px } .rubricGradingTable TBODY TD:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #d1eaef; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .rubricTable TBODY TD:hover { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricGradingTable TBODY .selectedCell:hover { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px } .rubricCriteriaHead { WIDTH: 15% !important } .rubricInlineEdit { POSITION: relative } .rubricInlineEdit > DIV { Z-INDEX: 100; POSITION: absolute; WHITE-SPACE: nowrap } .gridActionBar { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gridActionBar .data TH { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .stepcontent .gridActionBar LI { PADDING-BOTTOM: 0px; MARGIN-BOTTOM: 0px } .rubricGradingTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricSelectedValue { DISPLAY: block; FONT-SIZE: 130%; FONT-WEIGHT: bold } .rangePercent { COLOR: #666; FONT-SIZE: 90%; FONT-WEIGHT: normal } .selectedCell .rangeValue { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #aaa 1px dashed; PADDING-TOP: 6px } .rubricControlContainer .containerTabs { MARGIN: 0px } .rubricControlContainer .contentAreaBlock { MARGIN: 0px } .rubricGradingList .rubricGradingCell { POSITION: relative; MARGIN: 1px 0px; OVERFLOW: hidden } .rubricGradingList .feedback { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .rubricGradingList .feedback TEXTAREA { WIDTH: 99% !important } .rubricGradingList H4 { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .rubricGradingList H4 SPAN { POSITION: absolute; PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 0px; RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 1px } .rubricGradingTotalPoints { MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingOverride { PADDING-BOTTOM: 6px; MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingComments .editor { MARGIN-TOP: 20px } .rubricGradingComments .rubricVtbeLabel { DISPLAY: block; MARGIN-BOTTOM: 10px } .alignmentPanel TR { COLOR: #555 } .alignmentPanel .gradingRubric { BACKGROUND-COLOR: #ffd; COLOR: #000 } .alignmentPanel .gradingRubric .title { FONT-WEIGHT: bold } .alignmentPanel UL.nav SPAN { PADDING-LEFT: 3px } .rubricPanel THEAD TR TH { WHITE-SPACE: normal !important } .rubricPopupContainer .rubricControlContainer { MARGIN: 0px 0px 10px } .rubricPopupContainer .onlyOne.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .onlyOne.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .last.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricGradingCell .pointRangeEdit { DISPLAY: none } .selectedCell.rubricGradingCell .pointRangeView { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .last.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricGradingTable .pointRangeView { DISPLAY: block; FONT-WEIGHT: bold } .selectedCell.rubricGradingCell .pointRangeEdit { DISPLAY: block; FONT-WEIGHT: bold } TD[align='right'] { TEXT-ALIGN: right !important } TD[align='left'] { TEXT-ALIGN: left !important } TR[align='right'] { TEXT-ALIGN: right !important } TR[align='left'] { TEXT-ALIGN: left !important } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: small; PADDING-TOP: 0px !important } .vtbegenerated P { MARGIN-BOTTOM: 4px } .vtbegenerated ADDRESS { FONT-STYLE: italic; DISPLAY: block } .vtbegenerated IMG { FILTER: alpha(opacity = auto) !important; opacity: auto } .vtbegenerated UL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated OL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated LI { LIST-STYLE-POSITION: inside } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated H5 { FONT-SIZE: 90% } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 35px } .vtbegenerated UL[type='circle'] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type='square'] LI { LIST-STYLE-TYPE: square } .vtbegenerated UL[type='disc'] LI { LIST-STYLE-TYPE: disc } .inlineVtbegenerated { DISPLAY: inline } .tree .treeNodeIcon { WIDTH: 16px; HEIGHT: 16px } .navPaletteContent .submenu LI.favorite { PADDING-LEFT: 10px } .navPaletteContent UL[id*='files_groupContents'] .favorite { PADDING-LEFT: 0px } .columnPalette H5 { MARGIN: 6px 0px 3px; COLOR: #555 } .blogNav .stepcontent { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .button-split-left { DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #f6f6f6 2px solid; -webkit-border-bottom-right-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -moz-border-radius-bottomright: 0 } .button-split-left:hover { BORDER-RIGHT: #555 2px solid } .button-split-right { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FLOAT: left; MARGIN-LEFT: -1px; PADDING-TOP: 4px; -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0 } .full_evaluation_view_component H3 { MARGIN: 18px 0px 3px } .full_evaluation_view_component H3:first-child { MARGIN: 9px 0px 3px } .gradeSide_panel .container { POSITION: relative; PADDING-RIGHT: 45% } .gradeSide_panel .contentListPlain { MARGIN: -20px 0px 0px -30px } .collabContainer { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .gradeSide { WIDTH: 36%; TOP: 20px; RIGHT: 20px } .gradeSide { BORDER-BOTTOM: #555 3px solid; POSITION: absolute; BORDER-LEFT: #555 3px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; BOTTOM: auto; PADDING-RIGHT: 4px; BACKGROUND: #888 0px 0px; BORDER-TOP: #555 3px solid; TOP: 20px; RIGHT: 20px; BORDER-RIGHT: #555 3px solid; PADDING-TOP: 4px; LEFT: auto; border-radius: 4px } .collapseTabsData A.close { TOP: 4px; RIGHT: 4px } .evalColumn .taskbuttondiv { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .gradeItemsWrapper { OVERFLOW: visible } .gradeSide .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .evalColumn { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 18px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2) } .evalColumn .liveArea { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .column-wrapper { POSITION: relative; OVERFLOW: visible !important } .column-nav { WIDTH: 190px; FLOAT: left } .colspan2 { POSITION: relative; MARGIN-LEFT: 190px } .colspan2#standards-column { BORDER-LEFT: #ccc 3px double; PADDING-BOTTOM: 12px; MARGIN-BOTTOM: -41px; TOP: -20px; LEFT: -3px } .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; COLOR: #555; PADDING-TOP: 18px } .column-nav .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; PADDING-TOP: 18px } .pageHead-2 H2 { MARGIN: 0px; FONT-SIZE: 120%; FONT-WEIGHT: normal } .pageHead-2 SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .pageHead-2 SPAN:first-child { BORDER-RIGHT: #aaa 1px dotted } .column-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .column-nav-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .category-column .column-nav-inner { BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee',endColorstr = '#cccccc',GradientType = 1); BORDER-LEFT: medium none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #column_lrn_std_category { BORDER-RIGHT: #ccc 3px double } .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 18px !important; BACKGROUND: #fff; PADDING-TOP: 6px !important } #standards-column .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 6px !important } .column-nav .column-inner { DISPLAY: none } .navmenu-list-item { BORDER-BOTTOM: #777 1px solid; POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 21px; DISPLAY: block; WORD-WRAP: break-word; PADDING-TOP: 12px } .navmenu-list > LI:hover { BACKGROUND: #777 } .navmenu-list > LI > A { COLOR: #f6f6f6; FONT-SIZE: 110%; FONT-WEIGHT: 200; TEXT-DECORATION: none } .navmenu-list A SPAN { DISPLAY: none } .navmenu-list .active { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active:hover { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active A { COLOR: #000 } .column2-nav .category-column .navmenu-list LI > A { PADDING-LEFT: 24px } .column-wrapper .actionBar > UL > LI > A { PADDING-BOTTOM: 8px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; COLOR: #333; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 8px } .column-wrapper .actionBar > UL > LI > A:hover { BACKGROUND: #ccc } .standards .button-2 { COLOR: #444 } .standards .button-2:hover { BORDER-BOTTOM-COLOR: #aaa; BORDER-TOP-COLOR: #aaa; BORDER-RIGHT-COLOR: #aaa; BORDER-LEFT-COLOR: #aaa } .category-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .category-column .navmenu-list-item { BORDER-BOTTOM-COLOR: #d6d6d6; BORDER-TOP-COLOR: #d6d6d6; BORDER-RIGHT-COLOR: #d6d6d6; BORDER-LEFT-COLOR: #d6d6d6 } .category-column .navmenu-list-item A { COLOR: #333 } .category-column .navmenu-list-item:hover { FILTER: alpha(opacity = 100) !important; BACKGROUND-COLOR: #e0e0e0; opacity: 1 } .category-column .navmenu-list .active { Z-INDEX: 1001; BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; RIGHT: -4px; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; -moz-box-shadow: -4px 3px 5px #DDD; -webkit-box-shadow: -4px 3px 5px #DDD; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #DDD; border-radius: 4px 0 0 4px } .navmenu-list .inactive { FILTER: alpha(opacity = 75); opacity: .75 } .standards .actionBar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 32px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .actionBar#actionbarlrn_std_doc { BORDER-BOTTOM-COLOR: #777 } .actionBar#actionbarlrn_std_doc > UL > LI > A { COLOR: #f0f0f0; -moz-border-radius: 4px 0 0 0; -webkit-border-radius: 4px 0 0 0; border-radius: 4px 0 0 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .actionBar#actionbarlrn_std_doc > UL > LI > A:hover { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_doc > UL > LI:hover > A { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_category > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std_category > UL > LI > A:hover { BACKGROUND: #ccc; COLOR: #000 } .actionBar#actionbarlrn_std { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 9px 0px 20px; BACKGROUND: #f0f0f0; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .actionBar#actionbarlrn_std > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std > UL > LI > A:hover { BACKGROUND: #ddd; COLOR: #000 } .standards .actionBar > UL { MARGIN: 0px; HEIGHT: 32px } .standards .actionBar UL LI { FLOAT: left } .standards .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .standards .searchbar .selectedItem LABEL SPAN { FONT-SIZE: 90% } .navmenu-actions-1 { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #f0f0f0; BORDER-TOP: #ccc 1px solid; TOP: 4px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px; LEFT: -4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .active .navmenu-actions-1 { LEFT: -4px } .navmenu-actions-2 { POSITION: absolute; PADDING-BOTTOM: 1px !important; PADDING-LEFT: 1px !important; PADDING-RIGHT: 1px !important; TOP: 22px; PADDING-TOP: 1px !important; LEFT: -4px } .navmenu-list-item .contextMenuContainer { POSITION: absolute; MARGIN-TOP: -8px; TOP: 50%; RIGHT: 9px; opacity: 0 } .navmenu-list .active .contextMenuContainer { opacity: 1 } .navmenu-list .active:hover .contextMenuContainer { opacity: 1 } .navmenu-list-item:hover .contextMenuContainer { opacity: .5 } .navmenu-list-item:hover .contextMenuContainer:hover { opacity: 1 } .standards .column-1 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-3 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 1%; WIDTH: 46%; PADDING-RIGHT: 1%; PADDING-TOP: 0px } .standards .column-3 { MARGIN: 0px; WIDTH: 31% } .standardForm > H3 + DIV.column-2 { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standards .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .standards .stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standardForm { POSITION: absolute !important; TOP: 38px; LEFT: 6px } .inline-form-title { MARGIN: 6px 0px } .docs-column .column-nav-inner { BORDER-BOTTOM: #777 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#999999',endColorstr = '#777777',GradientType = 1); BORDER-LEFT: #777 1px solid; MIN-HEIGHT: 400px; BACKGROUND: #999; COLOR: #fff; BORDER-TOP: #777 1px solid; BORDER-RIGHT: medium none; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px } .docs-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .iconToggleWrapper { ZOOM: 1; DISPLAY: inline-block } .iconToggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px -5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .quickAddPal .iconToggle { MARGIN: 0px 0px 0px -1px } .iconToggle:first-child { MARGIN: 0px; -moz-border-radius: 2px 0 0 2px; -webkit-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px } .iconToggle:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #e8f0fe; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .stepcontent .iconToggle .fieldHelp { Z-INDEX: 100; BORDER-BOTTOM: #555 1px solid; POSITION: absolute; MIN-WIDTH: 200px; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #fff; FONT-SIZE: 90%; BORDER-TOP: #555 1px solid; TOP: 100%; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 3px; LEFT: 0px; -moz-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .iconToggle:hover .fieldHelp { Z-INDEX: 10; DISPLAY: block } .iconToggleWrapper .selectedItem { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #cdcdcd; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset } .iconToggle LABEL SPAN { DISPLAY: none; COLOR: #555 } .selectedItem LABEL SPAN { DISPLAY: inline } .selectedItem .fieldHelp STRONG { DISPLAY: none } #lrn_std .panelHead { PADDING-BOTTOM: 9px; PADDING-LEFT: 25px; PADDING-RIGHT: 16px; PADDING-TOP: 9px } #lrn_std .sHeader { MARGIN-LEFT: -21px } #lrn_std .contextMenuContainer { } .lb-content .itemTray { POSITION: absolute } .lb-drawer { PADDING-BOTTOM: 54px } .lb-noTitleBar #pageTitleBar { DISPLAY: none } .lb-locationPane { MARGIN: 0px } .lb-locationPane #contentPanel { MARGIN: 0px } .lb-contentBox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none; border-radius: 0 } .overSoftLimit { COLOR: red } .autocomplete_pos { TOP: 15px !important; LEFT: 0px !important } .autocomplete { Z-INDEX: 5; BORDER-BOTTOM: #888 1px solid; POSITION: absolute; BORDER-LEFT: #888 1px solid; BACKGROUND-COLOR: #fff; WIDTH: 250px; BORDER-TOP: #888 1px solid; BORDER-RIGHT: #888 1px solid; box-shadow: 0 0 3px rgba(0, 0, 0, .3) } .autocomplete .selected { BACKGROUND-COLOR: #ccc } .autocomplete UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; CURSOR: pointer; PADDING-TOP: 2px } .quickAddPal .field { POSITION: relative } .quickAddPal .noLabelField { POSITION: relative } .renameCategory { Z-INDEX: 1200; POSITION: absolute; BOTTOM: 0px; DISPLAY: block; TOP: 0px; RIGHT: 0px; LEFT: 0px } .renameCategory A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } LI SPAN.labelMenuItem { COLOR: #000; FONT-WEIGHT: bold } #toolSettingsWrapper_table TBODY TR { BORDER-TOP: #ddd 1px dashed } #toolSettingsWrapper_table TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #toolSettingsWrapper_table TBODY TR.rowTitle TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle { BACKGROUND-COLOR: #ebebeb; BORDER-TOP: #ddd 1px solid } #toolSettingsWrapper_table TBODY TR.rowTitle H3 { MARGIN: 0.5em 0px } .tooltipContainer { POSITION: relative; TEXT-DECORATION: none } .tooltip { DISPLAY: none; WORD-WRAP: break-word } .tooltip-top { DISPLAY: none; WORD-WRAP: break-word } .tooltipContainer:hover .tooltip { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltipContainer:hover .tooltip-top { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltip:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip-top:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 1px; COLOR: #3b3b3b; LEFT: 1px; -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); -khtml-transform: rotate(90deg) } .tooltip-top:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: auto; COLOR: #4f4f4f; TOP: 0px; LEFT: -2px; -moz-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -o-transform: rotate(-90deg); -khtml-transform: rotate(-90deg) } .paddedMetadata { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 6px !important; PADDING-TOP: 6px !important } .quickAddPal .colorlist LI A.transparent { BACKGROUND-IMAGE: url(/images/swatches/transparent.gif); BACKGROUND-POSITION: -1px -1px; COLOR: transparent } .quickAddPal .colorlist LI A.transparent:hover { BACKGROUND-POSITION: -2px -2px } DIV.checkListActions { PADDING-BOTTOM: 10px } .quickAddPal .colorlist LI A.transparent:active { BACKGROUND-POSITION: -3px -3px } .quickAddPal .colorlist LI A.transparent:focus { BACKGROUND-POSITION: -3px -3px } .theme_scrollbar_content H2 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; FONT-STYLE: italic; MARGIN: -35px 0px 15px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; LETTER-SPACING: 0.06em; COLOR: #333; FONT-SIZE: 130%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #wizard .theme_scrollbar_content H2 { COLOR: #ccc } .theme-switch-wrapper { DISPLAY: inline-block } .theme-switch { POSITION: relative; MARGIN: -14px 9px -14px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-RIGHT: #ccc 1px solid } .theme-switch .sub > A { PADDING-BOTTOM: 14px; LINE-HEIGHT: 1; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; OVERFLOW: hidden; PADDING-TOP: 14px } .theme-switch .sub > A:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .theme-switch .sub:hover > A { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .dummy-switch.theme-switch:hover { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .theme-switch A SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch SPAN SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:after { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM-COLOR: #999; TOP: -8px } .theme-switch .nav .sub UL { WIDTH: 180px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .theme-switch .nav .sub UL LI H4 { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#999999,endColorstr=#333333); PADDING-BOTTOM: 4px; MARGIN-TOP: 5px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #fff; PADDING-TOP: 4px } .theme-switch .nav .sub UL A { PADDING-BOTTOM: 4px; PADDING-LEFT: 18px; WIDTH: 142px; PADDING-RIGHT: 4px; FONT-SIZE: 95%; PADDING-TOP: 4px } BODY DIV.lb-overlay { BACKGROUND: url(images/reorder_bg.png) #bbb -10px 0px } #wizard { Z-INDEX: 1100; BORDER-BOTTOM: #666 1px solid; POSITION: fixed; BORDER-LEFT: #666 1px solid; WIDTH: 900px; BACKGROUND: #555; MARGIN-LEFT: -450px; BORDER-TOP: #666 1px solid; TOP: 5px; BORDER-RIGHT: #666 1px solid; LEFT: 50%; box-shadow: 0 11px 20px rgba(0, 0, 0, .7); border-radius: 9px; background-clip: content-box } #wizard H1 { BORDER-BOTTOM: #666 1px solid; PADDING-BOTTOM: 10px; MARGIN: 1px 0px 0px 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #494949; COLOR: #bbb; FONT-SIZE: 110%; PADDING-TOP: 10px; box-shadow: 0 -1px 0 #363636 inset; border-radius: 9px 9px 0 0; text-shadow: 0 -1px 0 #111 } #wizard .accordion-wrapper { MARGIN: 0px 30px; BACKGROUND: none transparent scroll repeat 0% 0%; border-radius: 0 0 6px 6px } #wizard .accordion_toggle { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_content { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_toggle { POSITION: relative; TEXT-ALIGN: right; PADDING-RIGHT: 60px; COLOR: #aaa; FONT-SIZE: 90%; BORDER-TOP: #444 1px solid; CURSOR: pointer; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .accordion_toggle .accordionTabLabel { FLOAT: left; COLOR: #eee; FONT-SIZE: 125%; TEXT-DECORATION: none } #wizard .accordion_toggle SPAN#selectedStructureName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle SPAN#selectedThemeName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle_help { TEXT-ALIGN: left } #wizard .accordion_toggle A#unselectStructure { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectTheme { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectStructure:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectTheme:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectStructure:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle A#unselectTheme:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle:first-child { BORDER-TOP: 0px; box-shadow: none } #wizard .accordion_content { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #3d3b3b; HEIGHT: 245px; OVERFLOW: hidden; PADDING-TOP: 0px } #wizard .accordion_content A { COLOR: #1ec8ea } #wizard .accordion_toggle_addstructure .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-1.png) no-repeat } #wizard .accordion_toggle_choosetheme .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-2.png) no-repeat } #wizard .accordion_toggle_help .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-4.png) no-repeat } #wizard .right-image { POSITION: absolute; WIDTH: 30px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center center; HEIGHT: 30px; TOP: 6px; RIGHT: 8px; opacity: .5 } #wizard .previewArea { PADDING-BOTTOM: 5px; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #474747; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 235px; MAX-HEIGHT: 235px; FONT-SIZE: 85%; OVERFLOW: hidden; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 5px } .course_welcome_help_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } .selected.course_welcome_help_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.course_welcome_help_scrollbar_handle { } .course_welcome_help_container { POSITION: relative } #wizard .previewArea .introduction { WIDTH: 80% } #wizard .previewArea .helplink { WIDTH: 80% } #wizard .previewArea .customHelp { WIDTH: 80% } #wizard .previewArea .conclusion { POSITION: absolute; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #3d3b3c; PADDING-LEFT: 10px; WIDTH: 20%; BACKGROUND-ATTACHMENT: fixed; PADDING-RIGHT: 10px; COLOR: #bbb; FONT-SIZE: 90%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } #wizard .previewArea .customHelp { PADDING-BOTTOM: 1em; MARGIN-TOP: 0.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; COLOR: #bbb; FONT-SIZE: 90%; BORDER-TOP: #555 1px dotted; PADDING-TOP: 1em } #wizard .previewArea H3 { MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 3px; FONT-SIZE: 140%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN { TEXT-TRANSFORM: uppercase; DISPLAY: block; COLOR: #888; FONT-SIZE: 65%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN SPAN { TEXT-TRANSFORM: lowercase; FONT-STYLE: italic; DISPLAY: inline; FONT-SIZE: 95% } #wizard .helplink .easylist { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN-TOP: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 0px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } #wizard .helplink .easylist LI { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; WIDTH: 46%; PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #555 2px dotted; PADDING-TOP: 3px } #wizard .helplink .easylist LI H3 { FONT-FAMILY: Georgia, serif } #wizard .helplink .easylist LI P { PADDING-LEFT: 0px } #wizard .helplink .easylist LI P { COLOR: #ddd } #wizard .log-summary { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; box-shadow: 0; border-radius: 0 } #wizard .conclusion H3 { TEXT-TRANSFORM: uppercase; MARGIN-TOP: 10px; COLOR: #888; FONT-SIZE: 100%; FONT-WEIGHT: normal } #wizard .conclusion UL { MARGIN-BOTTOM: 15px } #wizard .conclusion UL LI { MARGIN-BOTTOM: 5px } #wizard .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #wizard .content-inner { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #3d3b3b; BORDER-TOP: 0px; BORDER-RIGHT: 0px } #wizard .introtext { PADDING-BOTTOM: 1em; LINE-HEIGHT: 1.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 2em; FLOAT: left; COLOR: #ccc; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 1em } #wizard .introtext LABEL { FONT-STYLE: italic; DISPLAY: none; MARGIN-LEFT: 15px; FONT-SIZE: 85% } #wizard .introtext INPUT { FONT-STYLE: italic; FONT-FAMILY: Georgia, serif; MARGIN-BOTTOM: 10px; FONT-SIZE: 200% } #wizard .introtext .courseNameAndDescription TABLE TABLE { WIDTH: 99%; MARGIN-LEFT: 7px } #wizard .introtext TEXTAREA { FONT-SIZE: 110% } #wizard .introtext INPUT { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext TEXTAREA { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext .courseNameAndDescription { WIDTH: 60%; PADDING-RIGHT: 0.8em; FLOAT: left; MARGIN-RIGHT: 1em; BORDER-RIGHT: #666 3px dotted } #wizard .introtext P { LINE-HEIGHT: 1.4em; FONT-STYLE: italic; MARGIN: 55px 20px 0px 0px; FONT-FAMILY: Georgia, serif; FONT-SIZE: 90% } .themes .horizontal-block { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 8px; MARGIN: 35px 10px 0px; PADDING-LEFT: 0px; WIDTH: 230px; PADDING-RIGHT: 0px; HEIGHT: 184px; BORDER-TOP: #ddd 1px solid; CURSOR: pointer; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 8px } #wizard .themes .horizontal-block { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555 } .help .horizontal-block { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 250px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .themes .horizontal-block IMG { MARGIN: 0px auto; WIDTH: 203px; HEIGHT: 152px } .theme-selector { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 26px; PADDING-RIGHT: 26px; PADDING-TOP: 10px } .structure .theme-selector { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .theme-selector SPAN { FONT-SIZE: 110%; FONT-WEIGHT: bold } #wizard .selected .theme-selector SPAN { COLOR: #333 } .selected .theme-selector SPAN { COLOR: #fff } .structure .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } .themes .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } #wizard .structure .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard .themes .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected A { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard LI.selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .themes .selected.horizontal-block:hover { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } DIV.scroller { HEIGHT: 200px; OVERFLOW: hidden } .themes DIV.scroller { HEIGHT: 245px } DIV.scroller DIV.section { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: 780px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 225px; OVERFLOW: hidden; PADDING-TOP: 0px } .horizontal-block { TEXT-ALIGN: left; PADDING-BOTTOM: 6px; MARGIN: 8px 0px 0px 7px; PADDING-LEFT: 18px; WIDTH: 167px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: none; HEIGHT: 214px; FONT-SIZE: 80%; VERTICAL-ALIGN: top; PADDING-TOP: 3px; border-radius: 5px } .horizontal-block UL { MARGIN-LEFT: 4px } .structure .horizontal-block { HEIGHT: 178px; CURSOR: pointer } #wizard .gotocourse { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; PADDING-RIGHT: 2px; COLOR: #ccc; BORDER-TOP: #444 1px solid; PADDING-TOP: 10px; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .gotocourse LABEL { WIDTH: auto; DISPLAY: inline-table } #wizard .gotocourse LABEL SPAN { DISPLAY: block; COLOR: #999; FONT-SIZE: 10px } #wizard .gotocourse .button-2 { BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 8px; BORDER-TOP-COLOR: #333; MARGIN-BOTTOM: 7px; BORDER-RIGHT-COLOR: #333; FONT-SIZE: 115%; BORDER-LEFT-COLOR: #333; MARGIN-RIGHT: 25px; PADDING-TOP: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 1px 1px 0 #fefefe inset, -1px -1px 0 #888 inset; text-shadow: 0 1px 0 #BBB } #wizard .gotocourse .button-2:hover { BORDER-BOTTOM-COLOR: #222; BORDER-TOP-COLOR: #222; BORDER-RIGHT-COLOR: #222; BORDER-LEFT-COLOR: #222 } #wizard .number { POSITION: relative; LINE-HEIGHT: 1; FLOAT: left; COLOR: #999; FONT-SIZE: 150%; VERTICAL-ALIGN: middle; TOP: -1px; FONT-WEIGHT: bold; MARGIN-RIGHT: 18px } #wizard .accordion_toggle_help .number { TEXT-INDENT: -9999px; WIDTH: 20px; BACKGROUND: url(/images/ci/icons/step_star_light.png) no-repeat; HEIGHT: 20px; MARGIN-RIGHT: 14px; opacity: .4; background-size: 100% 100% } #wizard .gotocourse .secondary.button-2 { COLOR: #555; FONT-WEIGHT: normal; text-shadow: none } #wizard .gotocourse #welcomePageCancelButton { MARGIN-RIGHT: 10px } #wizard A.wizard-close:before { FONT: 150% "Utilicons"; CONTENT: "X" } #wizard A.wizard-close { POSITION: absolute; COLOR: #888; TOP: 8px; RIGHT: 13px } .theme_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 2px } #wizard .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { } .theme_scrollbar_content { TEXT-ALIGN: center; HEIGHT: 245px; OVERFLOW: hidden } .structure_scrollbar_container { POSITION: relative } .structure_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } DIV.courseStructureDescriptions .structure_scrollbar_track { MARGIN: 1px 3% 1px 0px; TOP: 10px } #wizard .structure_scrollbar_track { MARGIN: 1px 0px; TOP: 0px } #wizard .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } #wizard .selected.structure_scrollbar_handle:hover { BACKGROUND-COLOR: #777 } .selected.structure_scrollbar_handle { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle { } .selected.structure_scrollbar_handle:hover { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle:hover { } .structure_scrollbar_content { MARGIN-TOP: 30px; HEIGHT: 370px; OVERFLOW: hidden } #wizard .structure_scrollbar_content { MARGIN-TOP: 22px; HEIGHT: 200px } .courseStructureOuterDiv { MIN-WIDTH: 800px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 10px; PADDING-TOP: 0px } #wizard .courseStructureOuterDiv { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #3d3b3b; MIN-HEIGHT: 250px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .courseStructureNameScroller { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #fff; MARGIN: 10px 0px 0px; WIDTH: 170px; FLOAT: left; HEIGHT: 400px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; box-shadow: -1px 0 4px #CCC; border-top-left-radius: 4px; border-bottom-left-radius: 4px } #wizard .courseStructureNameScroller { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0px; HEIGHT: 220px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none; border-radius: 0 } .courseStructureNameScroller OL LI { MARGIN-BOTTOM: 3px; CURSOR: pointer } .courseStructureNameScroller OL LI:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .courseStructureNameScroller OL LI.courseStructureChoiceLink:focus { OUTLINE-COLOR: #fff; -moz-box-shadow: inset 0 0 6px #128FA8; -webkit-box-shadow: inset 0 0 6px #128FA8; box-shadow: inset 0 0 6px #128FA8 } #wizard .courseStructureNameScroller OL LI { MARGIN-LEFT: 13px } .courseStructureHeader { PADDING-BOTTOM: 5px; FONT-STYLE: italic; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #999; FONT-SIZE: 85%; CURSOR: default !important; PADDING-TOP: 15px } #structureDescription H3 { TEXT-ALIGN: center; MARGIN-TOP: 110px; FONT: italic 100% Georgia, serif } #wizard .courseStructureHeader { PADDING-LEFT: 0px; COLOR: #aaa; PADDING-TOP: 0px; text-shadow: 0 0 1px #222 } .courseStructureChoiceLink { PADDING-BOTTOM: 5px; PADDING-LEFT: 33px; PADDING-RIGHT: 5px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 5px } #wizard .courseStructureChoiceLink { PADDING-LEFT: 20px } .courseStructureChoiceSelected { BACKGROUND-COLOR: #f5f4ef; COLOR: #3d3b3b; border-top-left-radius: 4px; border-bottom-left-radius: 4px } .courseStructureChoiceSelected A { COLOR: #333 } #wizard .courseStructureChoiceSelected A { COLOR: #333 } .courseStructureDescriptions { POSITION: relative; HEIGHT: 400px; MARGIN-LEFT: 170px } #wizard .courseStructureDescriptions { POSITION: relative; MARGIN: 10px 0px 10px 170px; HEIGHT: 225px } .courseStructureDescriptionAndMenu { BORDER-BOTTOM: #ccc 1px solid; POSITION: static; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; BACKGROUND-COLOR: #f5f4ef; MARGIN: 10px 0px 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 20px; WIDTH: 95%; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 400px; COLOR: #333; FONT-SIZE: 12px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px } #wizard .courseStructureDescriptionAndMenu { BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; MARGIN-TOP: 0px; MIN-HEIGHT: 225px; WIDTH: 635px; HEIGHT: 225px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .courseStructureDescriptions P { MARGIN-BOTTOM: 15px } .courseStructureDescriptions H3 { TEXT-ALIGN: center; MARGIN-TOP: 30px; MARGIN-BOTTOM: 0px; COLOR: #666; FONT-SIZE: 120% } .courseStructureDescriptions BR { DISPLAY: none } .structureIncludeSampleContentCheck { BACKGROUND-COLOR: #f4f1e3; PADDING-LEFT: 15px; WIDTH: 100%; DISPLAY: block; HEIGHT: 40px; MARGIN-LEFT: -20px; PADDING-TOP: 10px; box-shadow: -10px 0 6px #CCC inset } #wizard .structureIncludeSampleContentCheck { Z-INDEX: 1; POSITION: absolute; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 7px; WIDTH: 630px; PADDING-RIGHT: 0px; HEIGHT: 25px; MARGIN-LEFT: -12px; BORDER-TOP: #ccc 1px solid; TOP: 185px; PADDING-TOP: 7px; box-shadow: 0 0 2px #999; border-radius: 5px 5px 0 0 } #wizard .accordion_content .useSelectedStructure { MARGIN-RIGHT: 15px } #wizard .accordion_content .useSelectedStructure { COLOR: #333 } #wizard .accordion_content .useExistingMenu { COLOR: #333 } #wizard .courseStructureDescriptions .structure_scrollbar_track { RIGHT: 15px } .courseStructureMenu { POSITION: relative; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; MARGIN: 0px 0px 0px 20px; MIN-HEIGHT: 400px; PADDING-LEFT: 10px; WIDTH: 200px; PADDING-RIGHT: 10px; FLOAT: right; OVERFLOW: hidden; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-top-right-radius: 5px; border-bottom-right-radius: 5px } #wizard .courseStructureMenu { PADDING-BOTTOM: 35px; MIN-HEIGHT: 265px } .courseStructureMenu .listCm .courseMenu A { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .courseStructureMenu .listCm .courseMenu .divider { PADDING-BOTTOM: 6px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 6px } .courseStructureMenu .topRound { DISPLAY: none } .courseStructureMenu .actionBarMicro { DISPLAY: none } .courseStructureMenu .bottomRound { DISPLAY: none } .courseStructureMenu #courseMenuPalette DIV.navPaletteContent { PADDING-TOP: 0px } .arrow_guide { POSITION: absolute; WIDTH: 156px; BACKGROUND: url(/images/ci/icons/left-arrow-point.png) no-repeat; HEIGHT: 34px; LEFT: 3% } #wizard .arrow_guide { TOP: 81% } .courseStructureDescription IMG { TEXT-ALIGN: center; MARGIN: 10px 0px 5px } .courseStructureDescription P.existing_text { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription P.existing_icon { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription A.button-3 { COLOR: #333; MARGIN-RIGHT: 15px } .courseStructureDescription A.existingstructure.unselectStructureButton { MARGIN-TOP: 5px; MARGIN-RIGHT: 37% } .courseStructureNameScroller .current-value { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png); BORDER-BOTTOM: #555 1px solid; POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 17px; WIDTH: 130px; BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-POSITION: 0px 20%; FONT-SIZE: 85%; TOP: 5px; FONT-WEIGHT: normal; LEFT: 15px; box-shadow: 0 -1px 0 #333 inset } #wizard .courseStructureNameScroller .current-value { TOP: 0px } .noSectionDivider { BORDER-TOP: medium none } .dividerRow { PADDING-BOTTOM: 0px !important; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 5px !important } .keyboardAccess .selectArrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .selectArrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess LABEL { DISPLAY: inline-block; FONT: italic 100% Georgia, serif; MARGIN-BOTTOM: 3px; COLOR: #777 } .keyboardAccess .selectArrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .keyboardAccess .y-arrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .access-reorder-block { MIN-WIDTH: 200px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 0px } .access-reorder-block SELECT { MIN-WIDTH: 200px } .y-arrows { TEXT-ALIGN: center; CLEAR: both } .brandingImgWrap IMG[src*='header_institution'] { POSITION: absolute; MAX-HEIGHT: 60px; TOP: 0px; LEFT: 12px } .sample-content { FONT: 113% Georgia, serif; BACKGROUND: url(images/bg_chalk_dark_s.png) 0px 0px } .sample-content .item H3 SPAN { FONT: bold 120% Georgia, serif; COLOR: #25bfcb !important } .sample-content TABLE { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated UL { MARGIN: 4px 0px } .sample-content .vtbegenerated P { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sample-content .vtbegenerated BR { HEIGHT: 1px } .sample-content.liItem:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } .buildList > LI.sample-content:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } DIV.loading-overwrite { Z-INDEX: 10000; POSITION: absolute; TEXT-ALIGN: center; WIDTH: 100%; BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) white no-repeat center 100px; HEIGHT: 100%; TOP: 0px; LEFT: 0px; opacity: 100 } DIV.loading-overwrite SPAN { POSITION: relative; FONT-SIZE: 200%; TOP: 10px } .sample-content DL { MARGIN: 0px } .sample-content DT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 9em; PADDING-RIGHT: 0px; FLOAT: left; FONT-WEIGHT: bold; PADDING-TOP: 0px } .sample-content DD { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 10em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .dueDate { COLOR: #063 } .dueDatePassed { COLOR: #900 } .inventory_paging A.inactive { opacity: .4 } .inactive { opacity: .4 } .linkLeftSpacesp { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .codeFragment { FONT-FAMILY: "Courier New" } .filteredTextHeader { BORDER-BOTTOM: 1px dotted; TEXT-ALIGN: center; BORDER-LEFT: 1px dotted; PADDING-BOTTOM: 5px; LINE-HEIGHT: 150%; BACKGROUND-COLOR: lightyellow; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline-block; BORDER-TOP: 1px dotted; BORDER-RIGHT: 1px dotted; PADDING-TOP: 5px } .filteredText { BACKGROUND-COLOR: lightyellow; COLOR: red } .floatedReceipt { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 10px !important; LINE-HEIGHT: 1.3em; BACKGROUND-COLOR: #fcfbd1 !important; MARGIN: 0px 0px 6px; PADDING-LEFT: 10px !important; WIDTH: 300px; PADDING-RIGHT: 22px !important; FONT-FAMILY: Helvetica, serif; COLOR: #333 !important; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal !important; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 10px !important; box-shadow: 1px 1px 5px #666; border-radius: 4px } .floatedReceipt A.close:before { } .floatedReceipt A.close:hover:before { } .floatedReceipt EM { FONT-WEIGHT: bold } .floatedReceipt A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: url(none); COLOR: #333 !important; BORDER-TOP: 0px; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important } .floatedReceipt A:hover { TEXT-DECORATION: none !important } .floatedReceipt#receipt_floated_theme { Z-INDEX: 1001; POSITION: absolute; TOP: 50px; RIGHT: 45px } .floatedReceipt#receipt_floated_courseMenu { Z-INDEX: 1201; POSITION: absolute; LEFT: 180px } .floatedReceipt .arrow { BORDER-BOTTOM: transparent 15px dashed; POSITION: absolute; BORDER-LEFT: transparent 15px dashed; HEIGHT: 0px; FONT-SIZE: 0px; BORDER-TOP: transparent 15px dashed; BORDER-RIGHT: transparent 15px dashed } .pointTop.floatedReceipt .arrow { BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #fcfbd1; TOP: -30px; LEFT: 58% } .pointLeft.floatedReceipt .arrow { BORDER-RIGHT-STYLE: solid; BORDER-RIGHT-COLOR: #fcfbd1; TOP: 10px; LEFT: -30px } .nav .sub .flyout .slideoutLink { FONT-WEIGHT: bold } .nav .sub .slideoutLink IMG { WIDTH: 16px; BACKGROUND: url(images/utilicons_arrows_dark.png) 16px 16px; FLOAT: right; HEIGHT: 16px } .nav .sub .slideoutLink-active { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; box-shadow: -3px 0 3px rgba(0, 0, 0, .3); border-radius: 0 } .nav .sub .slideoutLink-active IMG { BACKGROUND: url(images/utilicons_arrows_dark.png) 0px 16px } .slideoutOpen { MARGIN-LEFT: -1px !important; BORDER-RIGHT: #ccc 1px solid } .statusFilter { POSITION: relative; PADDING-LEFT: 8px; FONT-SIZE: 13px } LABEL.statusFilter { TOP: 0px } SPAN.statusFilter { TOP: 1px } .collapsible TABLE.reportcard TR TD:first-child { DISPLAY: block !important } #loginRedirectProviders H3 { MARGIN: 10px } #loginRedirectProviderList LI { MARGIN: 0px 10px 5px 0px; DISPLAY: inline-block } #loginRedirectProviderList LI IMG { WIDTH: 16px; HEIGHT: 16px } .paletteItems LABEL { MAX-WIDTH: 90%; WORD-WRAP: break-word } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems .inactive { MARGIN: 0px; opacity: .4 } DIV.comments DIV DIV.collabComments { BACKGROUND-COLOR: white; MAX-HEIGHT: 100px; OVERFLOW: auto !important } DIV.studentGradesCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetEditTabCommentPreview { WIDTH: 110px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetHistTabCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } .tooltip_show:focus { POSITION: static; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible } .radio-list { PADDING-LEFT: 20px } .radio-list LI { PADDING-BOTTOM: 4px !important; TEXT-INDENT: -26px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .radio-list LI INPUT[type=radio] { VERTICAL-ALIGN: bottom; MARGIN-RIGHT: 6px } .radio-list LI .button-4 { MARGIN-LEFT: 4px } .cartMode.csPicker #copyright { DISPLAY: none } .details .key-valueTable + .vtbegenerated { MARGIN-TOP: 12px !important } .ondemand-module { POSITION: relative; MARGIN: 14px 3px } .ondemand-module DIV { MARGIN-BOTTOM: 12px } .ondemand-module DIV A { PADDING-BOTTOM: 10px; PADDING-LEFT: 4%; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 10px; border-radius: 5px } .ondemand-module DIV A:hover { BACKGROUND: #00b3be; TEXT-DECORATION: none; box-shadow: 0 0 12px #2cb673; text-shadow: 0 -1px 0 rgba(0, 0, 0, .4) } .ondemand-module DIV A > SPAN { DISPLAY: block; MARGIN-BOTTOM: 3px; FONT-SIZE: 80%; FONT-WEIGHT: normal } .ondemand-module SPAN.release { BORDER-BOTTOM: #00add0 1px solid; POSITION: absolute; BORDER-LEFT: #00add0 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 13px; PADDING-RIGHT: 10px; BACKGROUND: #9dddea; COLOR: #000; FONT-SIZE: 85%; BORDER-TOP: #00add0 1px solid; TOP: -7px; RIGHT: -4px; BORDER-RIGHT: #00add0 1px solid; PADDING-TOP: 3px; border-radius: 12px 12px 12px 12px; text-shadow: 0 1px 0 rgba(255, 255, 255, .3) } .ondemand-module P { MARGIN: 0px 13px; FONT: italic 93%/1.45 Georgia, serif; COLOR: #666 }

@import url( theme1.css?v=9.1.90132.0 ); @import url( theme2.css?v=9.1.90132.0 );

BODY { HEIGHT: auto } HTML { HEIGHT: auto } BODY { MIN-WIDTH: 0px } DIV.topGlobalLinks { MIN-WIDTH: 0px } .navigationPane { DISPLAY: none } .contentPane { MARGIN: 0px 14px } .questionDiv .submission_text { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainerLarge { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry H4 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry .entryText { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogContainer .entryComments LI P { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .journalNav UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE THEAD TH { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TBODY TD { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TD DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .modeSwitch { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } A.cmimg-small { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .fileInputWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .field { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .noLabelField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .liveArea .stepcontent TEXTAREA { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonLibrary { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .previewTextArea { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .rating LI A:hover { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .dbThreadTree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .nav .sub UL LI A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmdiv A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .menumini A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .timediv UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentTags { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .auto_complete UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-header H2 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-content { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myPlacesContent { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myavatar { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble .detailComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeDetailsStep { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tableOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .inventory { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .brandingImgWrap { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList-read .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentListPlain .contentListRight + .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .landingPageColumn UL LI UL.datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .panelNested { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .module { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .moduleHeading { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .collapsible { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .imgWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .scroll_div { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .eudModule .eudModule-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .styledModule-dark .module-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet .itemGroups LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet UL.hierarchyList LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .customBanner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .loggedInAs { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #loggedInUserName { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .topTabs .hotItems UL.hotLinks { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmImg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemTray .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemIconHolder A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .title { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .high { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .navPaletteContent A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu H3 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .expTreeContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeContainer .tree LI H4 + UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #pickerPalette .tree > LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeScrollable { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #logDetail { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .table-scroll-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gridOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeItemsWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeSide .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV UL LI DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.comments DIV DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.studentGradesCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetEditTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetHistTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .u_scrollPanel-vertical { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentScore { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable_header DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gc_info UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI SPAN { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cumulativeSelectItems .selected_items .itemList { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .flynav UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .overrow DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .weightField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .criteriaItem { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important }

/* ================================================================== * General i18n functions * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ // internal methods function _escape(string) { // ?= does not seem to work return (''+string).replace(/^'|([^\\])'/g, "$1\\'").replace(/\n/g, "&crlf;"); } function _unescape(string) { return string.replace(/&crlf;/g, "\n"); } function _substitute(string, parameters) { for ( var key in parameters) { if ( parameters.hasOwnProperty( key ) ) { string = eval( "string.replace(/\\{" + key + "\\}/g, '" + _escape(parameters[key]) + "')" ); } } return _unescape(string); } // Public methods: these methods are instance methods of dynamically generated // Javascript bundle objects. See Java class blackboard.platform.intl.JsResource // and Perl module CI::L10n::JsResource. // Get a string from a resource bundle function i18n_get_string(key) { return this[key]; } // Get string and perform substitution using positions (arrays) or names (object) function i18n_get_formatted_string(key, parameters) { var string = this.getString(key); if (string && parameters) { // Convert to object keyed by string representation of array index if ( parameters.constructor.toString() == [].constructor.toString() ) { var array = parameters; parameters = {}; for (var i = 0; i < array.length; ++i) { parameters[''+i] = array[i]; } } string = _substitute(string, parameters); } return string; }

/* Prototype JavaScript framework, version 1.7 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key], type = typeof value; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError(); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (object.hasOwnProperty(property)) { results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toJSONEx: toJSON, // Leaving this in here to assist in debugging odd stringify issues in IE if we see them again in other contexts. toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); } function unescapeHTML() { return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#<Enumerable:' + this.toArray().inspect() + '>'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); }, hasResponder: function( callback ) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { return true; } }); return false; } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState]; // quite a high number of Interactive events can be generated on some browsers // triggering a memory issue in FF3 when building the response object. So if there is no // registered listener, quick return // see https://bugzilla.mozilla.org/show_bug.cgi?id=453709 if ( state == 'Interactive' ) { if ( this.notListeningToInteractive ) { if ( this.notListeningToInteractive.value ) return; } else { this.notListeningToInteractive = new Object(); this.notListeningToInteractive.value = ( !this.options['onInteractive'] && !Ajax.Responders.hasResponder( state ) ); if ( this.notListeningToInteractive.value ) return; } } var response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $s(element) { if (Object.isString(element)) { return document.getElementById(element); } return element; } function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { function shouldUseCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement('<input name="x">'); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCache(tagName, attributes) ? cache[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.idCounter = 1; Element.cache = { }; Element._purgeElement = function(element) { var uid = element._prototypeUID; if (uid) { Element.stopObserving(element); element._prototypeUID = void 0; delete Element.Storage[uid]; } } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, // only extend the element if it is a string - otherwise we don't need to extend the element remove: function(element) { if (Object.isString(element)) { element = $(element); } if (element.parentNode) { element.parentNode.removeChild(element); } return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = "<option value=\"test\">test</option>"; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = "<link>"; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var purgeElement = Element._purgeElement; var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) { while (element.firstChild) { element.removeChild(element.firstChild); } var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); nodes.each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(), value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType == 1) elements.push(Element.extend(element)); if (elements.length == maximumLength) break; } return elements; }, // Collect items without extending them all: rawRecursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) { elements.push(element); } return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === 1) { results.push(Element.extend(child)); } child = child.nextSibling; } return results; }, // Find the immediate descendents of the given element without extending them all rawImmediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).rawNextSiblings()); return []; }, previousSiblings: function(element, maximumLength) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, // Find the next siblings without actually extending them all rawNextSiblings: function(element) { return $(element).rawRecursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Prototype.Selector.find(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.previousSiblings(), expression, index); } else { return element.recursivelyCollect("previousSibling", index + 1)[index]; } }, next: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.nextSiblings(), expression, index); } else { var maximumLength = Object.isNumber(index) ? index + 1 : 1; return element.recursivelyCollect("nextSibling", index + 1)[index]; } }, select: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); }, adjacent: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element.parentNode).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $s(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, makePositioned: function(element) { element = $s(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source), delta = [0, 0], parent = null; element = $(element); if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className', forProp = 'for', el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'), f; el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if (element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(), fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html, force) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; var workaround = false; if (t) workaround = true; else if (force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = '&nbsp;' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) { div = div.firstChild; } } else { div.innerHTML = html; } return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')); Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); if (document.documentElement.hasAttribute) { Element.hasAttribute = function(element, attribute) { return element.hasAttribute(attribute); }; } else { Element.hasAttribute = Element.Methods.Simulated.hasAttribute; } Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = Element.Storage.UID++; uid = element._prototypeUID; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); }, purge: function(element) { if (!(element = $(element))) return; var purgeElement = Element._purgeElement; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } }); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = element.getStyle(property); } if (value === null) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value); var whole = null; var position = element.getStyle('position'); var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) { return number; } return number + 'px'; } function isDisplayed(element) { var originalElement = element; while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._prepared) return; var element = this.element; if (isDisplayed(element)) { this._prepared = true; return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = element.getStyle('position'), width = element.getStyle('width'); if (width === "0px" || width === null) { element.style.display = 'block'; width = element.getStyle('width'); } var context = (position === 'fixed') ? document.viewport : element.parentNode; element.setStyle({ position: 'absolute', visibility: 'hidden', display: 'block' }); var positionedWidth = element.getStyle('width'); var newWidth; if (width && (positionedWidth === width)) { newWidth = getPixelValue(element, 'width', context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getPixelValue(element, 'width', context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._prepared = true; }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._prepared = false; }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#<Element.Layout>"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } // Implementing a new method to avoid retesting the entire application with clientHeight function getDimensionsEx(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display != 'none') { // Safari bug return {width: element.clientWidth, height: element.clientHeight}; } return getDimensions(element); } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { element = $(element); var valueT = 0, valueL = 0, docBody = document.body; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getDimensions: getDimensions, getDimensionsEx: getDimensionsEx, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); Prototype._original_property = window.Sizzle; /*! * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; var origContext = context = context || document; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), soFar = selector; while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) selector += parts.shift(); set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { var ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { var ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { var cur = parts.pop(), pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { throw "Syntax error, unrecognized expression: " + (cur || selector); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set, match; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.match[ type ].exec( expr )) != null ) { var filter = Expr.filter[ type ], found, item; anyFound = false; if ( curLoop == result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr == old ) { if ( anyFound == null ) { throw "Syntax error, unrecognized expression: " + expr; } else { break; } } old = expr; } return curLoop; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part, isXML){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag && !isXML ) { part = part.toUpperCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part, isXML){ var isPartStr = typeof part === "string"; if ( isPartStr && !/\W/.test(part) ) { part = isXML ? part : part.toUpperCase(); for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName === part ? parent : false; } } } else { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context, isXML){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { if ( !inplace ) result.push( elem ); } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ for ( var i = 0; curLoop[i] === false; i++ ){} return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); }, CHILD: function(match){ if ( match[1] == "nth" ) { var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return /h\d/i.test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 == i; }, eq: function(elem, i, match){ return match[3] - 0 == i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } } return true; } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; case 'nth': var first = match[2], last = match[3]; if ( first == 1 && last == 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first == 0 ) { return diff == 0; } else { return ( diff % first == 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value != check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 ); } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return 0; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } (function(){ var form = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = "<a name='" + id + "'/>"; var root = document.documentElement; root.insertBefore( form, root.firstChild ); if ( !!document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = "<a href='#'></a>"; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "<p class='TEST'></p>"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; if ( !seed && context.nodeType === 9 && !isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ var div = document.createElement("div"); div.innerHTML = "<div class='test e'></div><div class='test'></div>"; if ( div.getElementsByClassName("e").length === 0 ) return; div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) return; Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ){ elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ) { elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } var contains = document.compareDocumentPosition ? function(a, b){ return a.compareDocumentPosition(b) & 16; } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; var isXML = function(elem){ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; while (element) { if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { return Element.extend(element); } element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { if (eventName === "beforeunload") { responder = function(event) { Event.extend(event, element); return handler.call(element, event); }; } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K, translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { return (translations[eventName] || eventName); }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (!registry) return element; if (!eventName) { registry.each( function(pair) { var eventName = pair.key; stopObserving(element, eventName); }); return element; } var responders = registry.get(eventName); if (!responders) return element; if (!handler) { responders.each(function(r) { stopObserving(element, eventName, r.handler); }); return element; } var i = responders.length, responder; while (i--) { if (responders[i].handler === handler) { responder = responders[i]; break; } } if (!responder) return element; if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } var _getElementsByClassName = instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return _getElementsByClassName( parentElement || document.body, className ); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#<Selector: " + this.expression + ">"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); /* * * Copyright (c) 2007 Andrew Tetlaw * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * * * * FastInit * http://tetlaw.id.au/view/javascript/fastinit * Andrew Tetlaw * Version 1.4.1 (2007-03-15) * Based on: * http://dean.edwards.name/weblog/2006/03/faster * http://dean.edwards.name/weblog/2006/06/again/ * Help from: * http://www.cherny.com/webdev/26/domloaded-object-literal-updated * */ var FastInit = { onload : function() { if (FastInit.done) { return; } FastInit.done = true; for(var x = 0, al = FastInit.f.length; x < al; x++) { FastInit.f[x](); } }, addOnLoad : function() { var a = arguments; for(var x = 0, al = a.length; x < al; x++) { if(typeof a[x] === 'function') { if (FastInit.done ) { a[x](); } else { FastInit.f.push(a[x]); } } } }, listen : function() { if (/WebKit|khtml/i.test(navigator.userAgent)) { FastInit.timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(FastInit.timer); delete FastInit.timer; FastInit.onload(); }}, 10); } else if (document.addEventListener) { document.addEventListener('DOMContentLoaded', FastInit.onload, false); } else if(!FastInit.iew32) { if(window.addEventListener) { window.addEventListener('load', FastInit.onload, false); } else if (window.attachEvent) { return window.attachEvent('onload', FastInit.onload); } } }, f:[],done:false,timer:null,iew32:false }; /*@cc_on @*/ /*@if (@_win32) FastInit.iew32 = true; document.write('<script id="__ie_onload" defer src="' + ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); document.getElementById('__ie_onload').onreadystatechange = function(){if (this.readyState == 'complete') { FastInit.onload(); }}; /*@end @*/ FastInit.listen(); /** * Only include the contents of this file once - for example, if this is included in a lightbox we don't want to re-run * all of this - just use the loaded version. (i.e. rerunning would clear page.bundle which would remove all the * language strings for the current page) */ if (!window.page) { var page = {}; page.isLoaded = false; /** * Utility for adding and using localized messages on the page. */ page.bundle = {}; page.bundle.messages = {}; page.bundle.addKey = function( key, value ) { page.bundle.messages[key] = value; }; page.bundle.getString = function( key /*, arg1, arg2, ..., argN */ ) { var result = page.bundle.messages[key]; if ( !result ) { return "!!!!" + key + "!!!!!"; } else { if ( arguments.length > 1 ) { for ( var i = 1; i < arguments.length; i++ ) { result = result.replace( new RegExp("\\{"+(i-1)+"\\}","g"), arguments[i] ); } } return result; } }; /** * Provides support for lazy initialization of javascript behavior when a certain * event happens to a certain item. */ page.LazyInit = function( event, eventTypes, initCode ) { var e = event || window.event; var target = Event.element( event ); // This is because events bubble and we want a reference // to the element we registered the handlers on. target = page.util.upToClass(target, "jsInit"); for (var i = 0; i < eventTypes.length; i++ ) { target['on'+eventTypes[i]] = null; } eval( initCode ); //initCode can reference "target" }; /** * Evaluates any <script> tags in the provided string in the global scope. * Useful for evaluating scripts that come back in text from an Ajax call. * If signalObject is passed then signalObject.evaluatingScripts will be set to false when done. */ page.globalEvalScripts = function(str, evalExternalScripts, signalObject) { //Get any external scripts var waitForVars = []; var scriptVars = [ { script: 'bb_htmlarea', variable: ['HTMLArea'] }, { script: 'w_editor', variable: ['WebeqEditors'] }, { script: 'wysiwyg.js', variable: ['vtbe_attchfiles'] }, { script: 'gradebook_utils.js', variable: ['gradebook_utils'] }, { script: 'rubric.js', variable: ['rubricModule'] }, { script: 'gridmgmt.js', variable: ['gridMgmt'] }, { script: 'calendar-time.js', variable: ['calendar'] }, { script: 'widget.js', variable: ['widget'] }, { script: 'vtbeTinymce.js', variable: ['tinyMceWrapper'] }, { script: 'WhatsNewView.js', variable: ['WhatsNewView'] }, { script: 'tiny_mce.js', variable: ['tinymce','tinyMCE'] } ]; if (evalExternalScripts) { var externalScriptRE = '<script[^>]*src=["\']([^>"\']*)["\'][^>]*>([\\S\\s]*?)<\/script>'; var scriptMatches = str.match(new RegExp(externalScriptRE, 'img')); if (scriptMatches && scriptMatches.length > 0) { $A(scriptMatches).each(function(scriptTag) { var matches = scriptTag.match(new RegExp(externalScriptRE, 'im')); if (matches && matches.length > 0 && matches[1] != '') { var scriptSrc = matches[1]; if (scriptSrc.indexOf('/dwr_open/') != -1) { // dwr_open calls will ONLY work if the current page's webapp == the caller's webapp, // otherwise we'll get a session error. THis will happen if a lightbox is loaded with // dynamic content from a different webapp (say /webapps/blackboard) while the main page // is loaded from /webapps/discussionboard. To avoid this, rewrite the url to use the // webapp associated with the current page. var newparts = scriptSrc.split('/'); var oldparts = window.location.pathname.split('/'); newparts[1] = oldparts[1]; newparts[2] = oldparts[2]; scriptSrc = newparts.join('/'); } var scriptElem = new Element('script', { type: 'text/javascript', src: scriptSrc }); var head = $$('head')[0]; head.appendChild(scriptElem); for ( var i = 0; i < scriptVars.length; i++ ) { if ( scriptSrc.indexOf( scriptVars[i].script ) != -1 ) { scriptVars[ i ].variable.each( function( s ) { waitForVars.push( s ); } ); break; } } } }); } } page.delayAddExtractedScripts(str.extractScripts(), waitForVars, signalObject); }; // Evaluate any inline script - delay a bit to give the scripts above time to load // NOTE that this is not guaranteed to work - if there are delays loading and initializing // the scripts required then code in these scripts might fail to find the required variables // If it is for our code then updating waitForVars appropriately per script will work page.delayAddExtractedScripts = function (scripts, waitForVars, signalObject) { var count = 0; if (waitForVars.length === 0) { page.actuallyAddExtractedScripts(scripts, signalObject); } else { new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( page.allVariablesDefined(waitForVars) ) { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } } else // give up if it takes longer than 5s to load { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } }.bind(this), 0.05 ); } }; page.allVariablesDefined = function(vars) { var result = true; for ( var i = 0; i < vars.length; i++ ) { if ( !window[vars[i]] ) { result = false; break; } } return result; }; page.actuallyAddExtractedScripts = function (scripts, signalObject) { var scriptExecutionDelay = 0; if( signalObject ) { scriptExecutionDelay = signalObject.delayScriptExecution; } scripts.each(function(script) { if ( script != '' ) { if ( Prototype.Browser.IE && window.execScript ) { ( function() { window.execScript( script ); }.delay( scriptExecutionDelay ) ); } else { ( function() { var scriptElem = new Element( 'script', { type : 'text/javascript' } ); var head = $$( 'head' )[ 0 ]; script = document.createTextNode( script ); scriptElem.appendChild( script ); head.appendChild( scriptElem ); head.removeChild( scriptElem ); }.delay( scriptExecutionDelay ) ); } } } ); if (signalObject) { signalObject.evaluatingScripts = false; } }; page.setIframeHeight = function () { try { var iframeElements = $$('iframe.cleanSlate'); iframeElements.each( function( iframeElement ) { if ( iframeElement.contentWindow && iframeElement.contentWindow.document && iframeElement.contentWindow.document.body ) { iframeElement.style.height = iframeElement.contentWindow.document.body.scrollHeight + 50 + 'px'; } }); } catch( e ){} }; page.onResizeChannelIframe = function( channelExtRef ) { var frameId = 'iframe' + channelExtRef; var listId = 'list_channel' + channelExtRef; var f = $( frameId ); f.style.height = f.contentWindow.document.getElementById( listId ).scrollHeight + 15 + "px"; }; /** * Contains page-wide utility methods */ page.util = {}; /** * Returns whether the specific element has the specified class name. * Same as prototype's Element.hasClassName, except it doesn't extend the element (which is faster in IE). */ page.util.hasClassName = function ( element, className ) { var elementClassName = element.className; if (elementClassName.length === 0) { return false; } if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) { return true; } return false; }; page.util.fireClick = function ( elem ) { if (Prototype.Browser.IE) { elem.fireEvent("onclick"); } else { var evt = document.createEvent("HTMLEvents"); evt.initEvent("click", true, true); elem.dispatchEvent(evt); } }; page.util.useARIA = function () { if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); var ffversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ffversion >= 1.9) { return true; } } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; var ieversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ieversion>=8) { return true; } } return false; }; // Find an element with the given className, starting with the element passed in page.util.upToClass = function ( element, className ) { while (element && !page.util.hasClassName(element, className)) { element = element.parentNode; } return $(element); }; page.util.isRTL = function () { var els = document.getElementsByTagName("html"); var is_rtl = (typeof(els) != 'undefined' && els && els.length == 1 && els[0].dir == 'rtl' ); return is_rtl ; }; page.util.allImagesLoaded = function (imgList) { var allDone = true; if (imgList) { for ( var i = 0, c = imgList.length; i < c; i++ ) { var animg = imgList[i]; // TODO - this doesn't appear to work on IE. if ( !animg.complete ) { allDone = false; break; } } } return allDone; }; // Exposes (display but keep invisible) an invisible element for measurement // recursively traverses up the DOM looking for // a parent node of element whose display == 'none' // If found, sets its style to: display:block, position:absolute, and visibility:hidden // and saves it as element.hiddenNode so it can be easily unexposed page.util.exposeElementForMeasurement = function ( element ) { element = $(element); var e = element; var hiddenNode; // find parent node that is hidden while ( !hiddenNode && e && e.parentNode) { if ( $(e).getStyle('display') === 'none') { hiddenNode = $(e); } e = $(e.parentNode); } if ( hiddenNode ) { // save original style attributes: visibility, position, & display element.hiddenNode = hiddenNode; var style = hiddenNode.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') { newStyles.position = 'absolute'; } hiddenNode.originalStyles = originalStyles; // set new style for: visibility, position, & display hiddenNode.setStyle( newStyles ); } }; // undo previous call to exposeElementForMeasurement page.util.unExposeElementForMeasurement = function ( element ) { element = $(element); if ( element && element.hiddenNode && element.hiddenNode.originalStyles ) { Element.setStyle( element.hiddenNode, element.hiddenNode.originalStyles ); element.hiddenNode.originalStyles = null; element.hiddenNode = null; } }; /** * Returns whether any part of the two elements overlap each other. */ page.util.elementsOverlap = function ( e1, e2 ) { var pos1 = $(e1).cumulativeOffset(); var a = { x1: pos1.left, y1: pos1.top, x2: pos1.left + e1.getWidth(), y2: pos1.top + e1.getHeight() }; var pos2 = $(e2).cumulativeOffset(); var b = { x1: pos2.left, y1: pos2.top, x2: pos2.left + e2.getWidth(), y2: pos2.top + e2.getHeight() }; return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; }; /** * To handle the case where the focus is visible but too close to the bottom of the page, scroll the page up a bit. */ page.util.focusAndScroll= function(elem) { elem.focus(); return page.util.ensureVisible(elem); }; page.util.ensureVisible= function(elem) { var scrolltop = document.viewport.getScrollOffsets().top; var mytop = elem.cumulativeOffset()[1]; var height = document.viewport.getDimensions().height; var realtop = mytop - scrolltop; var thirty = height * 0.3; if (realtop > (height-thirty)) { window.scrollBy(0,thirty); } return false; }; page.util.processJSProtoString = function (string, checkToken) { // This value must match the value passed as the 2nd parameter to this string. // The goal is to pass a known value, as a constant, through the javascript: pseudo-protocol // handler. We can then examine the result to determine the decoding method used by the current // browser. var sniffToken = '%C3%A9'; // There are three known decoding cases, non-translated, UTF8, and unescape if (checkToken === unescape(sniffToken)) { // Unescape decoded return decodeURIComponent(escape(string)); } else if (checkToken === sniffToken) { // Non-translated return decodeURIComponent(string); } else { // UTF8 Decoded/Unknown return string; } }; /** * Find the first action bar that precedes sourceElement * Returns the action bar div element if found, null otherwise * * @param sourceElement */ page.util.findPrecedingActionBar = function( sourceElement ) { var actionBar = null; // Loop through each ancestor of sourceElement, // starting with parent, until an action bar is found sourceElement.ancestors().each( function( item ) { actionBar = item.previous('div.tabActionBar') || item.previous('div.actionBarMicro') || item.previous('div.actionBar'); if (actionBar) { throw $break; } }); return actionBar; }; page.util.getLargestDimensions = function (element) { var width = 0; var height = 0; var dim; while (element != document) { dim = $(element).getDimensions(); if (dim.width > width) { width = dim.width; } if (dim.height > height) { height = dim.height; } element = element.up(); } return { width: width, height: height }; }; /* * Resize the current window so that it will fit the largest dimensions found for the given element. * Will also reposition on the screen if required to fit. Will not size larger than the screen. * NOTE that this will only work for popup windows - main windows are typically in a tabset in * the browser and they don't allow resizing like this. That's OK because the main use case * for this method is to make sure popup windows are resized appropriately for their content. */ page.util.resizeToContent = function (startElement) { var dim = page.util.getLargestDimensions(startElement); var newWidth = dim.width; newWidth += 25; // TODO: Haven't figured out why I need this extra space yet... if (window.innerWidth > newWidth) { newWidth = window.innerWidth; } if (newWidth > screen.width) { newWidth = screen.width; } var newHeight = dim.height; newHeight += 100; // TODO: Haven't figured out why I need this extra space yet if (window.innerHeight > newHeight) { newHeight = window.innerHeight; } if (newHeight > screen.height) { newHeight = screen.height; } var left = 0; var top = 0; if ( window.screenLeft ) { left = window.screenLeft; top = window.screenTop; } else if ( window.screenX ) { left = window.screenX; top = window.screenY; } if (left + newWidth > screen.width) { left = screen.width - newWidth; if (left < 0) { left = 0; } } if (top + newHeight > screen.height) { top = screen.height - newHeight; if (top < 0) { top = 0; } } window.moveTo(left,top); window.resizeTo(newWidth,newHeight); }; /** * Sets the css position of all li elements that are contained in action bars on the page. * Since z-index only works on positioned elements, this function can be used to ensure that * divs with a higher z-index will always appear on top of any action bars on the page. * * @param cssPosition */ page.util.setActionBarPosition = function( cssPosition ) { $$( 'div.actionBar', 'div.tabActionBar', 'div.actionBarMicro' ).each( function( actionbar ) { actionbar.select( 'li' ).each( function( li ) { li.setStyle( {position: cssPosition} ); }); }); }; /** * Class for controlling the course menu-collapser. Also ensures the menu is * the right height */ page.PageMenuToggler = Class.create(); page.PageMenuToggler.prototype = { /** * initialize */ initialize: function( isMenuOpen,key,temporaryScope ) { page.PageMenuToggler.toggler = this; this.key = key; if (temporaryScope) { this.temporaryScope = temporaryScope; } else { this.temporaryScope = false; } this.isMenuOpen = isMenuOpen; this.puller = $('puller'); this.menuPullerLink = $(this.puller.getElementsByTagName('a')[0]); this.menuContainerDiv = $('menuWrap'); this.navigationPane = $('navigationPane'); this.contentPane = $('contentPanel') || $('contentPane'); this.navigationPane = $('navigationPane'); this.locationPane = $(this.navigationPane.parentNode); this.breadcrumbBar = $('breadcrumbs'); this.menu_pTop = parseInt(this.menuContainerDiv.getStyle('paddingTop'), 10); this.menu_pBottom = parseInt(this.menuContainerDiv.getStyle('paddingBottom'), 10); this.loc_pTop = parseInt(this.locationPane.getStyle('paddingTop'), 10); if ( this.breadcrumbBar ) { this.bc_pTop = parseInt(this.breadcrumbBar.getStyle('paddingTop'), 10); this.bc_pBottom = parseInt(this.breadcrumbBar.getStyle('paddingBottom'), 10); } else { this.bc_pTop = 0; this.bc_pBottom = 0; } this.toggleListeners = []; this.onResize( null ); // fix the menu size // Doesn't work in IE or Safari.. //Event.observe( window, 'resize', this.onResize.bindAsEventListener( this ) ); Event.observe( this.menuPullerLink, 'click', this.onToggleClick.bindAsEventListener( this ) ); }, /** * Adds a listener for course menu toggle events */ addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, /** * Notifies all registered toggle event listeners that a toggle has occurred. */ _notifyToggleListeners: function( isOpen ) { this.toggleListeners.each( function( listener ) { listener( isOpen ); }); }, notifyToggleListeners: function( isOpen ) { // we call once the toggle is complete and the DOM in its new state. 2012 themes add transition, which seems // to collide with the logic to get dimensions of dom element, so the delay is a 1 sec to let time for those // transitions to be done. this._notifyToggleListeners.bind( this, isOpen ).delay( 1 ); }, /** * getAvailableResponse */ getAvailableResponse : function ( req ) { var originalMenuOpen = this.isMenuOpen ; if ( req.responseText.length > 0 ) { if ( req.responseText == 'true' ) { this.isMenuOpen = true; } else { this.isMenuOpen = false; } } if ( originalMenuOpen != this.isMenuOpen ) { this.notifyToggleListeners( this.isMenuOpen ); this.menuContainerDiv.toggle(); this.puller.toggleClassName("pullcollapsed"); this.contentPane.toggleClassName("contcollapsed"); this.navigationPane.toggleClassName("navcollapsed"); } }, /** * Expands the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ expand : function () { this.menuContainerDiv.show(); this.puller.removeClassName("pullcollapsed"); this.contentPane.removeClassName("contcollapsed"); this.navigationPane.removeClassName("navcollapsed"); this.isMenuOpen = true; var msg = page.bundle.messages[ "coursemenu.hide" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( true ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, true ); } else { UserDataDWRFacade.setStringPermScope( this.key, true ); } }, /** * Collapses the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ collapse : function () { this.menuContainerDiv.hide(); this.puller.addClassName("pullcollapsed"); this.contentPane.addClassName("contcollapsed"); this.navigationPane.addClassName("navcollapsed"); this.isMenuOpen = false; var msg = page.bundle.messages[ "coursemenu.show" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( false ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, false ); } else { UserDataDWRFacade.setStringPermScope( this.key, false ); } }, /** * Event triggered when the puller toggle control is clicked. Changes the * menu from open to closed or closed to open depending on existing state. */ onToggleClick: function( event ) { if ( this.isMenuOpen ) { this.collapse(); } else { this.expand(); } Event.stop( event ); }, /** * onResize */ onResize: function( event ) { var menuHeight = this.menuContainerDiv.getHeight(); var contentHeight = this.contentPane.getHeight(); var maxHeight = ( menuHeight > contentHeight ) ? menuHeight : contentHeight; this.contentPane.setStyle({height: maxHeight + 'px'}); this.navigationPane.setStyle({height: maxHeight + 'px'}); } }; page.PageMenuToggler.toggler = null; /** * Class for controlling the page help toggler in the view toggle area */ page.PageHelpToggler = Class.create(); page.PageHelpToggler.prototype = { initialize: function( isHelpEnabled, showHelpText, hideHelpText, assumeThereIsHelp ) { page.PageHelpToggler.toggler = this; this.toggleListeners = []; this.isHelpEnabled = isHelpEnabled; this.showText = showHelpText; this.hideText = hideHelpText; this.contentPanel = $('contentPanel') || $('contentPane'); var helperList = []; if ( this.contentPanel && !assumeThereIsHelp) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { helperList.push( $(el) ); } } } var helpTextToggleLink = $('helpTextToggleLink'); if ( ( !helperList || helperList.length === 0) && !assumeThereIsHelp ) { if ( helpTextToggleLink ) { helpTextToggleLink.remove(); } } else { if ( !isHelpEnabled ) { helperList.invoke( "toggle" ); } if ( !this.showText ) { this.showText = page.bundle.getString("viewtoggle.editmode.showHelp"); } if ( !this.hideText ) { this.hideText = page.bundle.getString("viewtoggle.editmode.hideHelp"); } this.toggleLink = helpTextToggleLink; this.toggleImage = $(this.toggleLink.getElementsByTagName('img')[0]); Event.observe( this.toggleLink, "click", this.onToggleClick.bindAsEventListener( this ) ); $(this.toggleLink.parentNode).removeClassName('hidden'); this.updateUI(); } }, addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, _notifyToggleListeners: function() { this.toggleListeners.each( function( listener ) { listener( this.isHelpEnabled ); }); }, notifyToggleListeners: function() { // we notify once the whole menu collapse/expand is done, so the DOM is in final state this._notifyToggleListeners.bind( this ).delay( ); }, updateUI: function( ) { if ( this.isHelpEnabled ) { $("showHelperSetting").value = 'true'; this.toggleImage.src = "/images/ci/ng/small_help_on2.gif"; this.toggleLink.setAttribute( "title", this.showText ); this.toggleImage.setAttribute( "alt", this.showText ); } else { $("showHelperSetting").value = 'false'; this.toggleImage.src = "/images/ci/ng/small_help_off2.gif"; this.toggleLink.setAttribute( "title", this.hideText ); this.toggleImage.setAttribute( "alt", this.hideText ); } }, onToggleClick: function( event ) { // Toggle all elements that have the css class "helphelp" var helperList = []; if ( this.contentPanel ) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { $(el).toggle(); } } } if ( this.isHelpEnabled ) { this.isHelpEnabled = false; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "false" ); } else { this.isHelpEnabled = true; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "true" ); } this.updateUI(); this.notifyToggleListeners(); Event.stop( event ); } }; /** * Class for controlling the display of a context menu. */ page.ContextMenu = Class.create(); page.ContextMenu.prototype = { initialize: function( contextMenuContainer, divId, forceMenuRefresh ) { this.displayContextMenuLink = contextMenuContainer.down("a"); this.contextMenuContainer = contextMenuContainer; this.forceMenuRefresh = forceMenuRefresh; this.uniqueId = this.displayContextMenuLink.id.split('_')[1]; this.contextMenuDiv = this.displayContextMenuLink.savedDiv; if ( !this.contextMenuDiv ) { this.contextMenuDiv = contextMenuContainer.down("div");//$('cmdiv_' + this.uniqueId); this.displayContextMenuLink.savedDiv = this.contextMenuDiv; page.ContextMenu.hiddenDivs.set(divId,this.contextMenuDiv); } this.originalContextMenuDiv = this.contextMenuDiv.cloneNode(true); $(this.contextMenuDiv).setStyle({zIndex: 200}); this.displayContextMenuLink.appendChild( this.contextMenuDiv ); // Temporarily add the menu back where it started this.closeContextMenuLink = contextMenuContainer.down(".contextmenubar_top").down(0); this.contextParameters = contextMenuContainer.readAttribute("bb:contextParameters"); this.menuGeneratorURL = contextMenuContainer.readAttribute("bb:menuGeneratorURL"); this.nav = contextMenuContainer.readAttribute("bb:navItem"); this.enclosingTableCell = contextMenuContainer.up("td"); this.menuOrder = contextMenuContainer.readAttribute("bb:menuOrder"); this.overwriteNavItems = contextMenuContainer.readAttribute("bb:overwriteNavItems"); this.beforeShowFunc = contextMenuContainer.readAttribute("bb:beforeShowFunc"); if (this.beforeShowFunc) { this.beforeShowFunc = eval(this.beforeShowFunc); } if ( this.menuOrder ) { this.menuOrder = this.menuOrder.split(','); } if ( !this.contextParameters ) { this.contextParameters = ""; } if ( !this.menuGeneratorURL ) { this.menuGeneratorURL = ""; } if ( !this.nav ) { this.nav = ""; } this.dynamicMenu = false; if ( this.menuGeneratorURL ) { this.dynamicMenu = true; } if (this.dynamicMenu) { Event.observe( this.displayContextMenuLink, "click", this.generateDynamicMenu.bindAsEventListener( this ) ); } else { Event.observe( this.displayContextMenuLink, "click", this.onDisplayLinkClick.bindAsEventListener( this ) ); } Event.observe( this.closeContextMenuLink, "click", this.onCloseLinkClick.bindAsEventListener( this ) ); Event.observe( this.contextMenuDiv, "keydown", this.onKeyPress.bindAsEventListener( this ) ); // adding nowrap to table cell containing context menu // If no enclosing td is found, try th if ( !this.enclosingTableCell ) { this.enclosingTableCell = contextMenuContainer.up("th"); } if ( this.enclosingTableCell ) { if ( !this.enclosingTableCell.hasClassName("nowrapCell") ) { this.enclosingTableCell.addClassName("nowrapCell"); } // if label tag is an immediate parent of context menu span tag, it needs nowrap as well if ( this.enclosingTableCell.down("label") && !this.enclosingTableCell.down("label").hasClassName("nowrapLabel")) { this.enclosingTableCell.down("label").addClassName("nowrapLabel"); } } if ( !this.dynamicMenu ) { var contexMenuItems = contextMenuContainer.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; // remove the context menu div from the page for performance reasons - add it back when we need to show it Element.remove( this.contextMenuDiv ); }, onKeyPress: function( event ) { var elem, children, index; var key = event.keyCode || event.which; if ( key == Event.KEY_UP ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_ESC ) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_TAB ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( (!event.shiftKey && index == children.length - 1) || (event.shiftKey && index === 0)) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } } else if ( key == Event.KEY_RETURN ) { if ( this.useARIA ) { elem = Event.element ( event ); (function() { page.util.fireClick( elem ); }.bind(this).defer()); Event.stop( event ); } } }, onAnchorFocus: function ( event ) { Event.element( event ).setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { Event.element( event ).setStyle({ backgroundColor: '' }); }, afterMenuGeneration: function( req ) { if ( this.dynamicMenu ) { var result; this.dynamicMenu = this.forceMenuRefresh; try { result = req.responseText.evalJSON( true ); if ( result.success == "true" ) { // append uniqueId to each li var menuHTML = result.contentMenuHTMLList.replace(/(<li.*?id=")(.*?)(".*?>)/g,"$1$2_"+this.uniqueId+"$3"); if ( this.forceMenuRefresh ) { this.contextMenuDiv.innerHTML = this.originalContextMenuDiv.innerHTML; } this.contextMenuDiv.insert({bottom:menuHTML}); $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); var contexMenuItems = this.contextMenuDiv.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } else { new page.InlineConfirmation("error", result.errorMessage, false ); } } catch ( e ) { new page.InlineConfirmation("error", result.errorMessage, false ); } } this.showMenu(); //focus on the first menu item (function() { this.contextMenuDiv.down("a").focus(); }.bind(this).defer()); }, appendItems: function( items, menuItemContainer ) { if (!menuItemContainer) { var uls = this.contextMenuDiv.getElementsBySelector("ul"); menuItemContainer = uls[uls.length-1]; } items.each( function ( item ) { if ( item.type == "seperator" ) { if (menuItemContainer.getElementsBySelector("li").length === 0) { return; } var ul = new Element('ul'); menuItemContainer.parentNode.appendChild( ul ); menuItemContainer = ul; return; } if ( !this.menuItemTempate ) { var menuItems = this.contextMenuDiv.getElementsBySelector("li"); this.menuItemTempate = menuItems[menuItems.length-1]; } var mi = this.menuItemTempate.cloneNode( true ); var a = mi.down('a'); var name = item.key ? page.bundle.getString( item.key ) : item.name ? item.name : "?"; a.update( name ); a.title = item.title ? item.title : name; a.href = "#"; menuItemContainer.appendChild( mi ); Event.observe( a, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( a, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( a, 'click', this.onItemClick.bindAsEventListener( this, item.onclick ) ); }.bind( this ) ); }, onItemClick: function( evt, func ) { this.onCloseLinkClick(); func(); Event.stop( evt ); }, setItems: function( items ) { // rather than try to match up new items with existing items, it's easier to delete the existing items // (except for the close item) and then add the new items // remove existing menu items, except close menu var menuItems = this.contextMenuDiv.getElementsBySelector("li").each( function (li ) { if ( !li.hasClassName("contextmenubar_top") ) { if (!this.menuItemTempate) { this.menuItemTempate = li; } li.stopObserving(); li.remove(); } }.bind( this ) ); // should only be one menuItemContainer var menuItemContainers = this.contextMenuDiv.getElementsBySelector("ul").each( function (ul) { if ( !ul.down("li") ) { ul.remove(); } }.bind( this ) ); this.appendItems(items, menuItems[0].parentNode); }, showMenu : function() { if (this.beforeShowFunc) { this.beforeShowFunc(this); } page.ContextMenu.registerContextMenu( this ); this.reorderMenuItems(); if ( this.useARIA ) { this.initARIA(); } var offset = this.displayContextMenuLink.cumulativeOffset(); var scrollOffset = this.displayContextMenuLink.cumulativeScrollOffset(); var viewportScrollOffset = document.viewport.getScrollOffsets(); if ( this.displayContextMenuLink.up( 'div.lb-content' ) ) { // Fix offset for context menu link inside a lightbox offset[0] = offset[0] + viewportScrollOffset[0]; offset[1] = offset[1] + viewportScrollOffset[1]; } else { // Fix the offset if the item is in a scrolled container offset[0] = offset[0] - scrollOffset[0] + viewportScrollOffset[0]; offset[1] = offset[1] - scrollOffset[1] + viewportScrollOffset[1]; } document.body.appendChild( this.contextMenuDiv ); this.contextMenuDiv.setStyle({display: "block"}); var width = this.contextMenuDiv.getWidth(); var bodyWidth = $(document.body).getWidth(); if ( page.util.isRTL() ) { offset[0] = offset[0] + this.displayContextMenuLink.getWidth() - width; } if ( offset[0] + width > bodyWidth ) { offset[0] = offset[0] - width + 30; } if ( this.keepMenuToRight ) { // In case the link is very wide (i.e. gradecenter accessible mode cell link for really wide cell) // make sure the menu renders to the right side of the link var linkWidth = this.displayContextMenuLink.getDimensions().width; if (linkWidth > width) { // Only worry if the link is actually wider than the menu offset[0] += (linkWidth-width); } } // Don't start the menu off the left side of the window if ( offset[0] < 0 ) { offset[0] = 0; } var height = this.contextMenuDiv.getHeight(); var bodyHeight = $(document.body).getHeight(); var ypos = offset[1] + this.displayContextMenuLink.getHeight() + 17; if ( ( height + ypos ) > bodyHeight ) { ypos -= height; ypos -= 34; } // Don't start the menu off the top of the screen if (ypos < 0 ) { ypos = 0; } if (height > bodyHeight) { // If the menu is too big to fit on the screen, set it to the height of the screen and allow scrollbars inside the menu this.contextMenuDiv.setStyle({ height: bodyHeight + "px", overflowY: "auto", overflowX: "hidden", left: offset[0] + "px", top: ypos + "px" }); } else { this.contextMenuDiv.setStyle({ left: offset[0] + "px", top: ypos + "px"}); } if ( !this.shim ) { this.shim = new page.popupShim( this.contextMenuDiv ); } this.shim.open(); }, initARIA: function() { if ( !this.initializedARIA ) { this.displayContextMenuLink.setAttribute( "aria-haspopup", "true" ); this.displayContextMenuLink.setAttribute( "role", "menubutton" ); this.contextMenuDiv.setAttribute( "role", "menu" ); this.contextMenuDiv.down( "ul" ).setAttribute( "role", "presentation" ); $A( this.contextMenuDiv.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval( decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "0"; link.setStyle( {cursor: 'pointer'} ); // make it look like a link. } }); this.initializedARIA = true; // Only initialize once. } }, reorderMenuItems : function() { if ( !this.menuOrder || this.menuOrder.length < 2 ) { return; } var orderMap = {}; var closeItem = null; var extraItems = []; // items not in order // Gather up all of the <li> tags in the menu and stick them in a map/object of id to the li object $A(this.contextMenuDiv.getElementsByTagName("li")).each( function( listItem ) { if (listItem.hasClassName("contextmenubar_top")) { closeItem = listItem; } else { if (this.menuOrder.indexOf(listItem.id) > -1) { orderMap[listItem.id] = listItem; // add item to map } else { extraItems.push(listItem); // listItem id not specified in menuOrder, so add listItem to extraItems } } }.bind(this) ); // Remove all the content from the context menu div $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list ) { Element.remove(list); }.bind(this) ); // Re-add the special "close" item as the first item. var ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); ulElement.insert({bottom:closeItem}); // Loop through the order, adding a <ul> at the start, and starting a new <ul> whenever a "*separator*" // is encountered, and adding the corresponding <li> for each of the ids in the order using the map/object this.menuOrder.each( function( id ) { if (id == "*separator*") { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); } else { ulElement.insert({bottom:orderMap[id]}); } }.bind(this) ); // Add any extraItems to thier own ul if (extraItems.length > 0) { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); extraItems.each( function( lineItem ) { ulElement.insert({bottom:lineItem}); }.bind(this) ); } // Remove any empty ULs and ensure that the added <ul>s have id of form "cmul${num}_${uniqueId}" $A(this.contextMenuDiv.getElementsByTagName("ul")).findAll( function( list ) { if ( list.childElements().length === 0 ) { list.remove(); return false; } else { return true; } }).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); this.menuOrder = null; // only re-order once }, generateDynamicMenu : function(event) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { var context_parameters = this.contextParameters; var menu_generator_url = this.menuGeneratorURL; var nav = this.nav; var overwriteNavItems = this.overwriteNavItems; if ( context_parameters ) { context_parameters = context_parameters.toQueryParams(); } else { context_parameters = {}; } var params = Object.extend({nav_item: nav }, context_parameters ); params = Object.extend( params, { overwriteNavItems : overwriteNavItems } ); new Ajax.Request(menu_generator_url, { method: 'post', parameters: params, onSuccess: this.afterMenuGeneration.bind( this ) }); } else { this.afterMenuGeneration(this); } $(event).preventDefault(); }, onDisplayLinkClick: function( event ) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { this.generateDynamicMenu(event); this.dynamicMenu = false; } else { this.showMenu(); //focus on the first menu item (function() { if (this.contextMenuDiv.style.display != 'none') { this.contextMenuDiv.down("a").focus(); } }.bind(this).defer()); $(event).preventDefault(); } }, onCloseLinkClick: function( event ) { this.close(); // grade center hides displayContextMenuLink onMouseOut, so we need to check if it is visible // before setting focus or IE will complain. Need to do funky visibility check because IE8 // sets display to empty string when removing parent container class (bug?) var disp = this.displayContextMenuLink.style.display; if ( disp != 'none' && disp != '' ) { this.displayContextMenuLink.focus(); } if (event) { Event.stop( event ); } }, close: function() { this.contextMenuDiv.style.display = "none"; // Delay the removal of the element from the page so firefox will continue to process // the click on the menu item chosen (otherwise it stops processing as soon as we remove the // element resulting in the menu not actually working) (function() { Element.remove( this.contextMenuDiv ); }.bind(this).delay(0.1)); if ( this.shim ) { this.shim.close(); } }, closeNow: function() { if (this.contextMenuDiv.style.display != "none") { this.contextMenuDiv.style.display = "none"; Element.remove( this.contextMenuDiv ); if ( this.shim ) { this.shim.close(); } } } }; /** * Function called to change the 'arrow' of a breadcrumb to face downward when they are clicked for the * contextual menu. * @param uniqId - unique number which identifies the crumb which was clicked * @param size - the size of the breadcrumb * @return */ page.ContextMenu.changeArrowInBreadcrumb = function (uniqId, event) { page.ContextMenu.alignArrowsInBreadcrumb(event); $('arrowContext_'+uniqId).addClassName('contextArrowDown').removeClassName('contextArrow'); //Stop the click event to propagate anymore -else all arrows will be aligned again Event.stop( event ); return false; }; //To align all breadcrumb arrows in one direction page.ContextMenu.alignArrowsInBreadcrumb = function (event) { if ($('breadcrumbs') !== null){ var bList = $($('breadcrumbs').getElementsByTagName('ol')[0]); var bs = bList.immediateDescendants(); if (bs.length !== null && bs.length >1){ for (var i = 2; i <= bs.length; i++) { var arrowSpan = $('arrowContext_'+i); if (arrowSpan !== null ){ $('arrowContext_'+i).addClassName('contextArrow').removeClassName('contextArrowDown'); } } } } return false; }; // "static" methods page.ContextMenu.LI = function(event, divId, forceMenuRefresh) { page.LazyInit(event,['focus','mouseover'],'new page.ContextMenu(page.util.upToClass(target,\'contextMenuContainer\'), \'' + divId + '\',' + forceMenuRefresh + ');'); }; page.ContextMenu.contextMenus = []; // _Open_ context menus page.ContextMenu.registerContextMenu = function( menu ) { page.ContextMenu.contextMenus.push( menu ); }; page.ContextMenu.hiddenDivs = $H(); // All the menu divs on the page - only needed for cases such as view_spreadsheet2.js where we try to modify the menus outside this framework page.ContextMenu.hideMenuDiv = function( uniqueId) { var linkId = 'cmlink_' + uniqueId; var link = document.getElementById(linkId); if (link && !link.savedDiv ) { var elementId = 'cmdiv_' + uniqueId; var element = link.nextSibling; // Should be the text between the link and div but check anyways if ( !element || element.id != elementId) { element = element.nextSibling; if ( !element || element.id != elementId) { element = document.getElementById(elementId); } } if (element) { link.savedDiv = element; page.ContextMenu.hiddenDivs.set(uniqueId,element); Element.remove( element ); } } }; page.ContextMenu.addDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { document.body.appendChild(ele); }); }; page.ContextMenu.removeDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { Element.remove(ele); }); }; page.ContextMenu.closeAllContextMenus = function( event ) { var deferClose = false; if ( event ) { var e = Event.findElement( event, 'a' ); if ( e && e.href.indexOf("#contextMenu") >= 0 ) { Event.stop( event ); return; } deferClose = true; } page.ContextMenu.contextMenus.each( function( menu ) { if ( menu != this ) { if (deferClose) { menu.close(); } else { menu.closeNow(); } } }); page.ContextMenu.contextMenus = []; }; /** * Enables flyout menus to be opened using a keyboard or mouse. Enables * them to be viewed properly in IE as well. */ page.FlyoutMenu = Class.create(); page.FlyoutMenu.prototype = { initialize: function( subMenuListItem ) { this.subMenuListItem = $(subMenuListItem); this.menuLink = $(subMenuListItem.getElementsByTagName('a')[0]); //special case to render iframe shim under new course content build menu if (this.subMenuListItem.hasClassName('bcContent')) { var buildContentDiv = this.subMenuListItem.down("div.flyout"); if ( !buildContentDiv ) { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } else { this.subMenu = buildContentDiv; } } else { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } this.menuLink.flyoutMenu = this; // calculate the next/previous tab stops this.previousSibling = this.subMenuListItem.previous(); while ( this.previousSibling && (!this.previousSibling.down('a') || !this.previousSibling.visible()) ) { this.previousSibling = this.previousSibling.previous(); } this.nextSibling = this.subMenuListItem.next(); while ( this.nextSibling && (!this.nextSibling.down('a') || !this.nextSibling.visible()) ) { this.nextSibling = this.nextSibling.next(); } var rumble = $(this.subMenuListItem.parentNode.parentNode); this.inListActionBar = rumble && ( rumble.hasClassName("rumble_top") || rumble.hasClassName("rumble") ); Event.observe( this.menuLink, 'mouseover', this.onOpen.bindAsEventListener( this ) ); Event.observe( subMenuListItem, 'mouseout', this.onClose.bindAsEventListener( this ) ); Event.observe( this.menuLink, 'click', this.onLinkOpen.bindAsEventListener( this ) ); Event.observe( this.subMenuListItem, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); $A( this.subMenu.getElementsByTagName('li') ).each ( function( li ) { $A(li.getElementsByTagName('a')).each( function( link ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( link, 'click', this.onLinkClick.bindAsEventListener( this, link ) ); }.bind( this ) ); }.bind( this ) ); // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; if ( this.useARIA ) { this.initARIA(); } this.enabled = true; }, initARIA: function() { var inListActionBar = this.inListActionBar; if ( inListActionBar ) { this.subMenuListItem.up('ul').setAttribute( "role", "menubar" ); } this.subMenuListItem.setAttribute( "role", "menuitem" ); this.subMenu.setAttribute( "role", "menu" ); if ( !this.menuLink.hasClassName("notMenuLabel") ) { this.subMenu.setAttribute( "aria-labelledby", this.menuLink.id ); } $A( this.subMenu.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); // List action bars have onclick handlers that prevent submission of the page // if no items are selected, so we can't register new onclicks here because // otherwise we can't stop them from executing. if ( !inListActionBar ) { if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval(decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "-1"; link.style.cursor = 'pointer'; // make it look like a link. } } }); }, setEnabled: function( enabled ) { this.enabled = enabled; if ( !enabled ) { this.subMenu.setStyle({ display: '' }); } }, onKeyPress: function( event ) { if (!this.enabled) { return; } var key = event.keyCode || event.which; var elem = Event.element ( event ); var children, index, link; if ( key == Event.KEY_UP ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } else if ( index === 0 ) { children[children.length - 1].focus(); // wrap to bottom } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index == -1 ) { this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); } else if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } else if ( index == ( children.length - 1 ) ) { children[0].focus(); // wrap to top } Event.stop( event ); } else if ( key == Event.KEY_LEFT ) { if ( !this.previousSibling || ( this.previousSibling.hasClassName("mainButton") || this.previousSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, true ); } else if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( !link || !this.previousSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_RIGHT ) { if ( !this.nextSibling || ( this.nextSibling.hasClassName("mainButton") || this.nextSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, false ); } else if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( !link || !this.nextSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_ESC ) { this.close(); this.menuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_RETURN && this.useARIA && !this.inListActionBar ) { page.util.fireClick( elem ); Event.stop( event ); } else if ( key == Event.KEY_TAB && this.useARIA ) { this.executeTab( event, false, event.shiftKey ); } }, executeTab: function( event, forceMenuLinkTab, shift ) { var elem = Event.element ( event ); var link; if ( ( elem != this.menuLink ) || forceMenuLinkTab ) { if ( shift ) { // Go to previous menu if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } else { // Go to next menu if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } this.close(); Event.stop( event ); } }, onOpen: function( event ) { if (!this.enabled) { return; } this.open(); }, onClose: function( event ) { var to = $(event.relatedTarget || event.toElement); if ( !to || to.up('li.sub') != this.subMenuListItem ) { this.close(); } }, onLinkOpen: function( event ) { if (!this.enabled) { return; } this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); Event.stop( event ); }, resizeAfterShowHide: function() { // TODO - ideally this would just resize the outer div, but closing and opening 'works' this.close(); this.open(); }, open: function() { var alreadyShown = this.subMenu.getStyle('display') === 'block'; // If the menu is already showing (i.e. as_ce4 theme, we don't need to position it) if ( !alreadyShown ) { // Set position of action bar elements to static to enable z-index stack order page.util.setActionBarPosition( 'static' ); var menuTop = this.subMenuListItem.getHeight(); if ( this.subMenu.hasClassName( 'narrow' ) ) { menuTop = 0; } this.subMenuListItem.setStyle( {position: 'relative'} ); this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: menuTop+'px', left: '0px', width: '', height: '', overflowY: '' }); var offset = Position.cumulativeOffset( this.subMenuListItem ); var menuDims = this.subMenu.getDimensionsEx(); var menuHeight = menuDims.height; var popupWidth = this.subMenu.getWidth(); var subListItemDims = this.subMenuListItem.getDimensions(); var menuWidth = subListItemDims.width; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); var offsetTop = offset[1] - scrollOffsets.top; this.subMenu.flyoutMenu = this; if ( (offsetTop + menuHeight + subListItemDims.height) > viewportDimensions.height) { if ( (offsetTop - menuHeight) > 0 ) { // if menu goes below viewport but still fits on-page, show it above button this.subMenu.setStyle({ top: '-'+menuHeight+'px' }); } else { // we need to create scrollbars var newWidth = this.subMenu.getWidth() + 15; popupWidth = newWidth + 5; var newMenuHeight = viewportDimensions.height - (offsetTop + subListItemDims.height) - 20; var newMenuTop = menuTop; if (newMenuHeight < offsetTop) { // More space above than below newMenuHeight = offsetTop; newMenuTop = -offsetTop; } this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: newMenuTop+'px', left: '0px', width: newWidth + 'px', height: newMenuHeight + 'px', overflowY: 'auto' }); } } var offsetLeft = offset[0] - scrollOffsets.left; if ( (offsetLeft + popupWidth) > viewportDimensions.width ) { var subMenuWidth = this.subMenuListItem.getWidth(); var newLeft = popupWidth - (viewportDimensions.width-offsetLeft); if ((newLeft > 0) && (newLeft < offsetLeft)) { newLeft = -newLeft; } else { newLeft = -offsetLeft; } this.subMenu.setStyle({ left: newLeft+'px' }); } if ( page.util.isRTL() ) { var newRight = 0; if ( (offsetLeft + menuWidth) - popupWidth < 0 ) { newRight = (offsetLeft + menuWidth) - popupWidth; } this.subMenu.setStyle({ left: '', right: newRight+'px'}); } if (!this.shim) { this.shim = new page.popupShim( this.subMenu); } this.shim.open(); } }, close: function() { // Reset position of action bar elements to relative page.util.setActionBarPosition( 'relative' ); this.subMenuListItem.setStyle({position: ''}); this.subMenu.setStyle({ display: '', top: '', left: '', width: '', height: '', overflowY: '' }); if ( this.shim ) { this.shim.close(); } }, onLinkClick: function( event, link ) { if (!this.enabled) { return; } setTimeout( this.blurLink.bind( this, link), 100); }, blurLink: function( link ) { link.blur(); if (page.util.hasClassName( link, "donotclose" )) { link.focus(); } else { this.close(); } }, onAnchorFocus: function ( event ) { if (!this.enabled) { return; } var link = Event.element( event ); link.setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { var link = Event.element( event ); link.setStyle({ backgroundColor: '' }); } }; /** * Class for providing functionality to menu palettes */ page.PaletteController = Class.create(); page.PaletteController.prototype = { /** * Constructor * * @param paletteIdStr Unique string identifier for a palette * @param expandCollapseIdStr Id value of anchor tag to be assigned * the palette expand/collapse functionality * @param closeOtherPalettesWhenOpen Whether to close all other palettes when this one is open */ initialize: function( paletteIdStr, expandCollapseIdStr, closeOtherPalettesWhenOpen, collapsed ) { // palette id string this.paletteItemStr = paletteIdStr; // palette element this.paletteItem = $(this.paletteItemStr); // default id string to palette contents container element this.defaultContentsContainerId = page.PaletteController.getDefaultContentsContainerId(this.paletteItemStr); // the currently active palette contents container element this.activeContentsContainer = $(this.defaultContentsContainerId); // expand/collapse palette toggle element this.paletteToggle = $(expandCollapseIdStr); if (this.paletteToggle) { Event.observe(this.paletteToggle, 'click', this.toggleExpandCollapsePalette.bindAsEventListener(this)); } this.closeOtherPalettesWhenOpen = closeOtherPalettesWhenOpen; page.PaletteController.registerPaletteBox(this); if (collapsed) { this.collapsePalette(true); } }, /** * Set the currently active palette contents container element * * @param container palette contents container element */ setActiveContentsContainer: function ( container ) { this.activeContentsContainer = container; }, /** * Get the currently active palette contents container element * * @return palette contents container element */ getActiveContentsContainer: function () { return this.activeContentsContainer; }, /** * Expands the palette if it's not already expanded. * * @return palette contents container element */ expandPalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display == "none" ) { itemList.style.display = "block"; itemPalClass.length = itemPalClass.length - 1; this.paletteItem.className = itemPalClass.join(" "); lastDiv.className = "bottomRound"; firstDiv.className = "topRound"; h2.className = ""; var itemTitle = expandCollapseLink.innerHTML.stripTags().trim(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_collapse.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.collapse.section.param', itemTitle); } if ( doNotPersist ) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Collapses the palette if it's not already collapsed. * * @return palette contents container element */ collapsePalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display != "none" ) { itemList.style.display = "none"; itemPalClass[itemPalClass.length] = 'navPaletteCol'; this.paletteItem.className = itemPalClass.join(" "); if (itemPalClass.indexOf('controlpanel') != -1) { lastDiv.className = "bottomRound controlpanelCol"; // colors the bottomRound to match the h2 background } if (itemPalClass.indexOf('listCm')!=-1) { lastDiv.className = "bottomRound listCmCol"; // colors the bottomRound to match the h2 background firstDiv.className = "topRound listCmCol"; // colors the topRound to match the h2 background h2.className = "listCmCol"; // colors h2 background (removes background image) } if (itemPalClass.indexOf('tools') != -1) { lastDiv.className = "bottomRound toolsCol"; firstDiv.className = "topRound listCmCol"; h2.className = "toolsCol"; } var itemTitle = expandCollapseLink.innerHTML.stripTags(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags().trim(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_expand.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.expand.section.param', itemTitle); } if (doNotPersist) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Takes in a key value pair to save to the session as sticky data. * * @param key The key that will have the current course id appended to it to be saved to the session. * @param value The value to the key. */ saveSessionStickyInfo: function( key, value ) { /* Get the course id off of the global variable if exists, so that data is saved per * user session per course. If course doesn't exist, use empty string. */ var current_course_id = window.course_id ? window.course_id : ""; UserDataDWRFacade.setStringTempScope( key + current_course_id, value ); }, /** * Whether the first tag has js onclick event binding on it for palette collapse/expand * * @param h2 */ useFirstTagForExpandCollapse: function ( h2 ) { return h2.getElementsByTagName('a')[0].id.indexOf( "noneExpandCollapseTag" ) > -1 ? false : true; }, /** * Toggles a palette from expand to collapse and vice versa. * * @param event Optional event object if this method was bound to event. */ toggleExpandCollapsePalette: function ( event, doNotPersist ) { // To prevent default event behavior if ( event ) { Event.stop( event ); } if ( this.activeContentsContainer.style.display == "none" ) { // palette is currently closed, so we will be expanding it if ( this.closeOtherPalettesWhenOpen ) { // if closeOtherPalettesWhenOpen is set to true for this palette, close all other palettes page.PaletteController.closeAllOtherPalettes(this.paletteItemStr, doNotPersist); } this.expandPalette( doNotPersist ); } else { // palette is currently expanded, so we will be collapsing it this.collapsePalette( doNotPersist ); } } }; // "static" methods page.PaletteController.paletteBoxes = []; page.PaletteController.registerPaletteBox = function( paletteBox ) { page.PaletteController.paletteBoxes.push( paletteBox ); }; /** * Get the palette controller js object by palette id * * @param paletteId */ page.PaletteController.getPaletteControllerObjById = function( paletteId ) { return page.PaletteController.paletteBoxes.find( function( pb ) { return ( pb.paletteItemStr == paletteId ); } ); }; /** * Closes all palettes except the specified one * * @param paletteToKeepOpen */ page.PaletteController.closeAllOtherPalettes = function( paletteToKeepOpen, doNotPersist ) { for(var i = 0; i < page.PaletteController.paletteBoxes.length; i++) { var paletteItem = page.PaletteController.paletteBoxes[i]; if (paletteToKeepOpen !== paletteItem.paletteItemStr) { paletteItem.collapsePalette( doNotPersist ); } } }; /** * Toggles (expand/collapse) the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.toggleExpandCollapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.toggleExpandCollapsePalette( null, doNotPersist); }; /** * Collapses the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.collapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.collapsePalette( doNotPersist); }; /** * Expand the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.expandPalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.expandPalette( doNotPersist); }; /** * Set the active palette contents container (element containing the body * contents of a palette). The active contents container is used to toggle * visibility when expanding and collapsing menu palettes. * * @param paletteId * @param paletteContentsContainer Optional container to set. * If not given, the palette's active * container will not be changed. * @return The new active palette contents container element. * If no paletteContentsContainer element was passed, * The current active palette contents container element * will be returned. */ page.PaletteController.setActivePaletteContentsContainer = function( paletteId, paletteContentsContainer ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); if ( paletteContentsContainer ) { paletteObj.setActiveContentsContainer( paletteContentsContainer ); } return paletteObj.getActiveContentsContainer(); }; /* * Get the default palette contents container id string * * @param paletteId */ page.PaletteController.getDefaultContentsContainerId = function( paletteId ) { return paletteId + "_contents"; }; /** * Class for providing expand/collapse functionality (with dynamic loading) */ page.ItemExpander = Class.create(); page.ItemExpander.prototype = { /** * Constructor * - expandLink - the link that when clicked will expand/collapse the item * - expandArea - the actual area that will get expanded/collapsed (if the item is dynamically loaded, this area will be populated dynamically) * - expandText - the text to show as a tooltip on the link for expanding * - collapseText - the text to show as a tooltip on the link for collapsing * - expandTitleText - the customized text for link title afer expanding the item; if null/undefined, use expandText * - collapseTitleText - the customized text for link title after collapsing the item;if null/undefined, use collapseText * - dynamic - whether the contents are dynamically loaded * - dynamicUrl - the URL to get the contents of the item from * - contextParameters - additional URL parameters to add when calling the dynamicUrl * - sticky - load/save expand state from UserData; true if null/undefined * - expanded - initially expanded; false if null/undefined */ initialize: function( expandLink, expandArea, expandText, collapseText, dynamic, dynamicUrl, contextParameters, expandTitleText, collapseTitleText, sticky, expanded ) { this.expandLink = $(expandLink); this.expandLinkImage = this.expandLink.down('img'); this.expandArea = $s(expandArea); // Register the expander so it can be found page.ItemExpander.itemExpanderMap[this.expandLink.id] = this; this.expandText = expandText.unescapeHTML(); this.collapseText = collapseText.unescapeHTML(); if ( expandTitleText !== null && expandTitleText !== undefined ) { this.expandTitleText = expandTitleText.unescapeHTML(); } else { this.expandTitleText = this.expandText; } if ( collapseTitleText !== null && collapseTitleText !== undefined ) { this.collapseTitleText = collapseTitleText.unescapeHTML(); } else { this.collapseTitleText = this.collapseText; } this.dynamic = dynamic; this.dynamicUrl = dynamicUrl; if ( contextParameters !== null && contextParameters !== undefined ) { this.contextParameters = contextParameters.toQueryParams(); } else { this.contextParameters = {}; } this.sticky = ( sticky !== null && sticky !== undefined ) ? sticky : true; this.expanded = ( expanded !== null && expanded !== undefined ) ? expanded : false; this.hasContents = !this.dynamic; if ( this.sticky ) { // get the course id off of the global variable if exists, because data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.getStringTempScope( this.expandLink.id + current_course_id, this.getAvailableResponse.bind( this ) ); } this.expandCollapse( !this.expanded ); Event.observe( this.expandLink, "click", this.onToggleClick.bindAsEventListener( this ) ); }, getAvailableResponse : function ( response ) { var originalExpanded = this.expanded ; var cachedExpanded = false; if ( response.length > 0 ) { if ( response == 'true' ) { cachedExpanded = true; } else { cachedExpanded = false; } } if ( originalExpanded != cachedExpanded ) { //because we want the menu to be in the cached state, //we pass in the opposite so that expandCollapse changes the menu state. this.expandCollapse(originalExpanded); } }, onToggleClick: function( event ) { if ( event ) { Event.stop( event ); } this.expandCollapse(this.expanded); if ( this.sticky ) { // get the course id off of the global variable if exists, so that data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.setStringTempScope( this.expandLink.id + current_course_id, this.expanded ); } }, expandCollapse: function(shouldCollapse) { var combo; if ( shouldCollapse ) //Collapse the item { $(this.expandArea).hide(); this.expandLink.title = this.expandTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.expandText; this.expandLinkImage.src = "/images/ci/icons/generic_expand.gif"; } if ( this.expandLink.hasClassName("comboLink_active") ) { combo = this.expandLink.up("li").down(".submenuLink_active"); this.expandLink.removeClassName("comboLink_active"); this.expandLink.addClassName("comboLink"); if ( combo ) { combo.removeClassName("submenuLink_active"); combo.addClassName("submenuLink"); } } else { this.expandLink.removeClassName("open"); } this.expanded = false; } else //Expand the item { if ( this.hasContents ) { $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.collapseText; this.expandLinkImage.src = "/images/ci/icons/generic_collapse.gif"; } if ( this.expandLink.hasClassName("comboLink") ) { combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } } else if ( this.dynamic ) { this.loadData(); } this.expanded = true; } }, loadData: function() { new Ajax.Request( this.dynamicUrl, { method: "post", parameters: this.contextParameters, requestHeaders: { cookie: document.cookie }, onSuccess: this.afterLoadData.bind( this ) }); }, afterLoadData: function( req ) { try { var result = req.responseText.evalJSON( true ); if ( result.success != "true" ) { new page.InlineConfirmation("error", result.errorMessage, false ); } else { this.hasContents = true; this.expandArea.innerHTML = result.itemContents; $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; this.expandLinkImage.alt = this.collapseText; if ( this.expandLink.hasClassName("comboLink") ) { var combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } this.expanded = true; } } catch ( e ) { //Invalid response } } }; page.ItemExpander.itemExpanderMap = {}; /** * Class for controlling the "breadcrumb expansion" (i.e. the "..." hiding the inner * breadcrumbs) */ page.BreadcrumbExpander = Class.create(); page.BreadcrumbExpander.prototype = { initialize: function( breadcrumbBar ) { var breadcrumbListElement = $(breadcrumbBar.getElementsByTagName('ol')[0]); var breadcrumbs = breadcrumbListElement.immediateDescendants(); if ( breadcrumbs.length > 4 ) { this.ellipsis = document.createElement("li"); var ellipsisLink = document.createElement("a"); ellipsisLink.setAttribute("href", "#"); ellipsisLink.setAttribute("title", page.bundle.getString('breadcrumbs.expand') ); ellipsisLink.innerHTML = "..."; this.ellipsis.appendChild( ellipsisLink ); this.ellipsis = Element.extend( this.ellipsis ); Event.observe( ellipsisLink, "click", this.onEllipsisClick.bindAsEventListener( this ) ); this.hiddenItems = $A(breadcrumbs.slice(2,breadcrumbs.length - 2)); breadcrumbListElement.insertBefore( this.ellipsis, this.hiddenItems[0] ); this.hiddenItems.invoke( "hide" ); } // Make sure the breadcrumbs don't run into the mode switcher var breadcrumbContainer = $(breadcrumbListElement.parentNode); var modeSwitcher = breadcrumbBar.down('.modeSwitchWrap'); if ( modeSwitcher ) { var containerWidth = breadcrumbContainer.getWidth(); var containerOffset = breadcrumbContainer.cumulativeOffset(); var modeSwitcherOffset = modeSwitcher.cumulativeOffset(); var modeSwitcherWidth = modeSwitcher.getWidth(); if ( page.util.isRTL() ) { if ( modeSwitcherOffset[0] + modeSwitcherWidth > containerOffset[0] ) { breadcrumbContainer.setStyle({ paddingLeft: ( modeSwitcherOffset[0] + modeSwitcherWidth ) + 'px'} ); } } // else //{ // breadcrumbContainer.setStyle({ paddingRight: ( containerWidth - ( modeSwitcherOffset[0] - containerOffset[0] ) ) + 'px'} ); //} } }, onEllipsisClick: function( event ) { this.hiddenItems.invoke( "show" ); this.ellipsis.hide(); Event.stop( event ); } }; /** * Dynamically creates an inline confirmation. */ page.InlineConfirmation = Class.create(); page.InlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, oneReceiptPerPage ) { var receiptId = $s('receipt_id'); // do not insert a duplicate receipt, if one already exists if(receiptId && oneReceiptPerPage) { return; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if ( type == "warning" ) { cssClass = "warningReceipt"; } var contentPane = $('contentPanel') || $('portalPane'); var receiptHtml = '<div id="receipt_id" class="receipt '+ cssClass +'">'+ '<a name="inlineReceipt" tabindex="-1" style="color:#FFFFFF">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } receiptHtml += '<a class="close" href="#close" title="'+ page.bundle.getString("inlineconfirmation.close") +'" onClick="Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="'+ page.bundle.getString("inlineconfirmation.close") +'" src="/images/ci/ng/close_mini.gif"></a></div>'; contentPane.insert({top:receiptHtml}); // use aria live region to announce this confirmation message rather than setting focus to it. (Too many things are fighting over setting focus) // Note: if this confirmation is invoked from a menu handler, it may not announce if focus is lost when the menu closes. See how courseTheme.js sets focus before invoking. var insertedA = contentPane.down('a[name="inlineReceipt"]'); insertedA.setAttribute("aria-live","assertive"); insertedA.parentNode.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced } }; page.NestedInlineConfirmationIdCounter = 0; page.NestedInlineConfirmation = Class.create(); page.NestedInlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, previousElement,showCloseLink, extracss, insertBefore, oneReceiptPerPage, fadeAway, focusDiv, fadingTime, insertTop, receiptDivId, focusOnRender ) { if ( Object.isUndefined( focusOnRender ) ) { focusOnRender = true; } var receiptId = $s('receipt_nested_id'); // do not insert a duplicate receipt, if one already exists var newDivId = 'receipt_nested_id'; if(receiptId) { if (oneReceiptPerPage) { return; } newDivId = newDivId + (page.NestedInlineConfirmationIdCounter++); } if (receiptDivId) { // Remove the old message with the same receiptDivId if there is one before adding a new one if ( $( receiptDivId ) != null ) $( receiptDivId ).remove(); newDivId = receiptDivId; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if (type == "warning") { cssClass = "warningReceipt"; } if (!extracss) { extracss = ""; } var arrowSpan = ''; if (extracss.indexOf( "point", 0 ) != -1) { arrowSpan = '<span class="arrow"></span>'; } var contentPane = $(previousElement); if (!contentPane) { // TODO - if we can't find the element we wanted to insert before, is it OK to just drop the notification? return; } var receiptHtml = '<div id="'+newDivId+'" style="display:none" class="receipt '+ cssClass +' '+extracss +'">'+arrowSpan+ '<a name="inlineReceipt" class="areceipt" tabindex="-1">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } if (showCloseLink) { // either this is a JS Snippet to execute on close or a simple true in which case we do nothing extra var onCloseFunction = ""; if ( typeof showCloseLink === "string" || showCloseLink instanceof String ) { if ( !page.closeReceiptLinkCounter ) { page.closeReceiptLinkCounter = 0; } else { ++page.closeReceiptLinkCounter; } onCloseFunction = "onReceiptClosed" + page.closeReceiptLinkCounter; receiptHtml += "<script type='text/javascript'>window." + onCloseFunction + " = function( ) { " + showCloseLink + " ; }; </script>"; onCloseFunction += "( );" } receiptHtml += '<a class="close" href="#close" style="z-index:1000" title="' + page.bundle.getString("inlineconfirmation.close") + '" onClick="' + onCloseFunction + 'Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="' + page.bundle.getString("inlineconfirmation.close") + '" src="/images/ci/ng/close_mini.gif"></a></div>'; } if ( insertBefore ) { contentPane.insert({before:receiptHtml}); } else if (insertTop) { contentPane.insert({top:receiptHtml}); } else { contentPane.insert({after:receiptHtml}); } this.insertedDiv = insertBefore?contentPane.previousSibling:(insertTop?contentPane.firstChild:contentPane.nextSibling); $(this.insertedDiv).show(); var insertedA = $(this.insertedDiv).down('a[name="inlineReceipt"]'); var fadingDuration = fadingTime ? fadingTime : 5000; if ( focusOnRender ) { try { ( function() { try { if ( focusDiv ) { page.util.focusAndScroll( $( focusDiv ) ); } else { page.util.focusAndScroll( insertedA ); } } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } }.defer() ); } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } } else { // not setting focus to this confirmation, so we make it an aria live region so it will be announced to the screen reader if ( focusDiv ) { page.util.ensureVisible( $( focusDiv ) ); } else { page.util.ensureVisible( insertedA ); } insertedA.setAttribute("aria-live","assertive"); this.insertedDiv.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced (needed for jaws 12) } if ( fadeAway ) { setTimeout( function() { Element.fade( contentPane.nextSibling, { duration : 0.3 } ); }, fadingDuration ); } }, close: function() { if ( this.insertedDiv ) { this.insertedDiv.remove(); } } }; page.NestedInlineFadeAwayConfirmation = Class.create(); page.NestedInlineFadeAwayConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; page.NestedInlineFadeAwaySingleConfirmation = Class.create(); page.NestedInlineFadeAwaySingleConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time, newDivId ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore, false /*only one instance*/, null, null, null, null, newDivId ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; /** * Make sure the container as position: relative so that the offset can work */ page.MiniReceipt = Class.create(); page.MiniReceipt.prototype = { initialize: function( message, containerElement, top, left, time ) { var visibleDuration = time ? time : 2000; var top = top?top:-22; // usually show receipt above var left = left?left:0; var alreadyExistingReceipt = $( containerElement ).down( "div.miniReceipt" ); if ( alreadyExistingReceipt ) { alreadyExistingReceipt.hide( ); } var receiptHtml = '<div class="miniReceipt adding" style="display: none; top:' + top + 'px; left:'+ left + 'px" role="alert" aria-live="assertive">' + message + '</div>'; var receiptElement = $( containerElement ).insert( { top:receiptHtml } ).firstDescendant( ); receiptElement.show( ); setTimeout( function() { Element.fade( receiptElement, {duration:0.3, afterFinish: function() { receiptElement.remove() } } ); }, visibleDuration ); } }; page.extendedHelp = function( helpattributes, windowName ) { window.helpwin = window.open('/webapps/blackboard/execute/viewExtendedHelp?' + helpattributes,windowName,'menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); window.helpwin.focus(); }; page.decoratePageBanner = function() { var bannerDiv = $('pageBanner'); var containerDiv = $('contentPanel') || $('contentPane'); if ( bannerDiv && containerDiv ) { // append hasTopBanner class to container div to hide topRound containerDiv.addClassName('hasTopBanner'); // hide empty title bar if ( !$('pageTitleText') && $('pageTitleDiv') ) { $('pageTitleDiv').hide(); } } }; page.initializeSinglePopupPage = function( pageId ) { // Initialize the single popup page, make sure the window will be closed by clicking submit or cancel, and the parent // window will be refreshed after submit. var items = document.forms; for ( var i = 0; i < items.length; i++ ) { var formItem = items[ i ]; formItem.observe( 'submit', function() { (function() { window.close(); if( window.opener.refreshConfirm ) { window.opener.refreshConfirm(pageId); } }.defer()); } ); if ( formItem.top_Cancel ) { Event.observe( formItem.top_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } if ( formItem.bottom_Cancel ) { Event.observe( formItem.bottom_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } } }; page.openLightbox = function( link, title, url, width, height ) { var lightboxParam = { defaultDimensions : { w : width ? width : 1000, h : height ? height : 800 }, contents : '<iframe src="' + url + '" width="100%" height="100%"/>', title : title, closeOnBodyClick : false, showCloseLink : true, useDefaultDimensionsAsMinimumSize : true }; var lightboxInstance = new lightbox.Lightbox( lightboxParam ); lightboxInstance.open(); }; page.printAndClose = function() { (function() { window.print(); window.close(); }.defer()); }; /** * Utility for data collection step manipulation */ page.steps = {}; page.steps.HIDE = "hide"; page.steps.SHOW = "show"; /** * Hide or show an array of steps given the step ids and * renumber all visible steps on the page. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepIdArr - string array of step ids */ page.steps.hideShowAndRenumber = function ( action, stepIdArr ) { // hide or show each of the step ids given ($A(stepIdArr)).each( function( stepId ) { page.steps.hideShow( action, stepId ); }); // get all H3 elements that contain css class of "steptitle" var stepTitleTags = []; $A(document.getElementsByTagName('h3')).each( function( tag ) { if ( page.util.hasClassName( tag, 'steptitle' ) ) { stepTitleTags.push( $(tag) ); } }); // starting at number 1, renumber all of the visible steps var number = 1; stepTitleTags.each(function( stepTitleTag ) { if ( stepTitleTag.up('div').visible() ) { stepTitleTag.down('span').update(number); number++; } }); }; /** * Hide or show a single step given the step id. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepId - string identifier to a single step */ page.steps.hideShow = function ( action, stepId ) { if ( action == page.steps.SHOW ) { $(stepId).show(); } else if ( action == page.steps.HIDE ) { $(stepId).hide(); } }; page.showChangeTextSizeHelp = function( ) { page.extendedHelp('internalhandle=change_text_size&helpkey=change_text_size','change_text_size' ); return false; }; page.showAccessibilityOptions = function() { var win = window.open('/webapps/portal/execute/changePersonalStyle?cmd=showAccessibilityOptions', 'accessibilityOptions','menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); win.focus(); }; page.toggleContrast = function( ) { new Ajax.Request('/webapps/portal/execute/changePersonalStyle?cmd=toggleContrast', { onSuccess: function(transport, json) { var fsWin; if (window.top.nav) { fsWin = window.top; } else if (window.opener && window.opener.top.nav) { fsWin = window.opener.top; window.close(); } if (fsWin) { fsWin.nav.location.reload(); fsWin.content.location.reload(); } else { window.top.location.reload(); } } }); return false; }; /** * IFrame-based shim used with popups so they render on top of all other page elements (including applets) */ page.popupShim = Class.create(); page.popupShim.prototype = { initialize: function( popup ) { this.popup = popup; }, close: function( ) { this.toggleOverlappingEmbeds( false ); }, open: function( ) { this.toggleOverlappingEmbeds( true ); }, toggleOverlappingEmbeds: function( turnOff ) { ['embed','object','applet','select'].each( function( tag ) { var elems = document.getElementsByTagName( tag ); for ( var i = 0, l = elems.length; i < l; i++ ) { var e = $(elems[i]); if ( !turnOff || ( page.util.elementsOverlap( this.popup, e ) && !e.descendantOf( this.popup ) ) ) { elems[i].style.visibility = ( turnOff ? 'hidden' : '' ); } } }.bind( this ) ); } }; /** * Class for controlling the vtbe enable toggle. */ page.VTBEToggle = Class.create(); page.VTBEToggle.prototype = { initialize: function( vtbeDiv, vtbeOnOffToolKey ) { var toggleFunc = this.toggleVTBE.bindAsEventListener( this ); this.vtbeOnOffToolKey = ( vtbeOnOffToolKey ) ? vtbeOnOffToolKey : "textbox.wysiwyg"; var vtbeDivs = null; if ( vtbeDiv ) { // autowire the specified vtbe vtbeDivs = [ vtbeDiv ]; } else { // autowire all vtbe divs on the page vtbeDivs = document.getElementsByTagName('div'); } $A(vtbeDivs).each( function( div ) { // add toggle listener for each vtbe switch if ( page.util.hasClassName(div, 'vtbeSwitch') ) { div = $(div); if ( div.up('form') ) { var anchor = div.down('a'); page.VTBEToggle.form = div.up('form'); Event.observe( anchor, 'click', toggleFunc ); // save original form data so we can detect unsaved data when toggling VTBE if ( page.VTBEToggle.form && !page.VTBEToggle.origFormData ) { page.VTBEToggle.origFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); } } } }); }, toggleVTBE: function( event ) { // Stop the event to handle firefox behavior when posting into a page. Event.stop(event); // check & warn user of modified form data if ( page.VTBEToggle.form && page.VTBEToggle.origFormData ) { var origFormData = page.VTBEToggle.origFormData; if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var currentFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); for(var i in origFormData) { if ( origFormData.hasOwnProperty( i ) ) { var origVal = origFormData[i]; var currVal = currentFormData[i]; if ( currVal && typeof currVal != 'object' && ( ( typeof currVal != 'string' && origVal != currVal ) || ( typeof currVal == 'string' && origVal.trim() != currVal.trim().replace("&nbsp;","") ) ) ) { if (!confirm( page.bundle.getString("wysiwyg.visual.editor.confirm.unsaved.changes") )) { return; } break; } } } } // get current state of vtbe, toggle it, then reload page UserDataDWRFacade.getStringPermScope( this.vtbeOnOffToolKey, function( wysiwyg ) { UserDataDWRFacade.setStringPermScope( this.vtbeOnOffToolKey, (wysiwyg == 'Y') ? 'N' : 'Y', function() { // If there's a lightbox open, give it a chance to update itself instead of reloading the window if (!window.lightbox || !lightbox.deferUpdateLightboxContent()) { window.location.reload(); } }); }.bind( this )); } }; /** * Looks through the children of the specified element for links with the specified * class name, and if it finds any, autowires lightboxes to them. If lightbox.js/effects.js * hasn't already been loaded, load it. */ page.LightboxInitializer = Class.create( { initialize: function( className, parentElement ) { this.className = className; var links = parentElement.getElementsByTagName('a'); for ( var i = 0, l = links.length; i < l; i++ ) { if ( page.util.hasClassName( links[i], className ) ) { if ( window.lightbox && window.Effect) { this._autowire(); } else { this._load(); } break; } } }, _autowire: function() { lightbox.autowireLightboxes( this.className ); }, _load: function() { var h = $$('head')[0]; var scs = ( !window.lightbox ? ['/javascript/ngui/lightbox.js'] : []).concat( !window.Effect ? ['/javascript/scriptaculous/effects.js'] : [] ); scs.each( function( sc ) { var s = new Element('script', { type: 'text/javascript', src: sc } ); h.appendChild( s ); }); this._wait(); }, _wait: function() { var count = 0; new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( window.lightbox && window.Effect ) { pe.stop(); this._autowire(); } } else // give up if it takes longer than 5s to load lightbox.js/effects.js { pe.stop(); } }.bind(this), 0.05 ); } }); page.YouTubeControls = { toggleAXControls : function( playerid, openYtControlsId, event ) { if( $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display != 'block' ) { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'block'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'block'; $( openYtControlsId ).addClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } else { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'none'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'none'; $( openYtControlsId ).removeClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } Event.stop( event ); }, formatTime : function ( sec ) { var duration = parseInt( sec, 10 ); var totalMinutes = Math.floor( duration / 60 ); var hours = Math.floor( totalMinutes / 60 ); var seconds = duration % 60; var minutes = totalMinutes % 60; if ( hours > 0 ) { return hours + ':' + this.padZero( minutes ) + ':' + this.padZero( seconds ); } else { return this.padZero( minutes ) + ':' + this.padZero( seconds ); } }, padZero : function ( number ) { if (number < 10) { return "0" + number; } else { return number; } }, updateButtonLabels : function ( ytplayer, muteBtnId, playBtnId, status ) { if( ytplayer.isMuted() ) { $( muteBtnId ).update( page.bundle.getString( 'yt.unmute' ) ); } else { $( muteBtnId ).update( page.bundle.getString( 'yt.mute' ) ); } if( status == 1 ) { $( playBtnId ).update( page.bundle.getString( 'yt.pause' ) ); } else { $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); } } }; function onYouTubePlayerReady( playerid ) { var ytplayer = $( playerid ); if( !ytplayer ) { //ie fix: grab object tag instead of embed tag var objTagId = playerid.sub( 'ytEmbed', 'ytObject' ); ytplayer = $( objTagId ); } var playBtnId = playerid.sub( 'ytEmbed', 'playVideo' ); Event.observe( $( playBtnId ), 'click', function( event ) { if( ytplayer.getPlayerState() == 1 ) { ytplayer.pauseVideo(); } else { ytplayer.playVideo(); } Event.stop( event ); } ); var stopBtnId = playerid.sub( 'ytEmbed', 'stopVideo' ); Event.observe( $( stopBtnId ), 'click', function( event ) { ytplayer.pauseVideo(); ytplayer.seekTo( "0" ); $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); Event.stop( event ); } ); var volUpBtnId = playerid.sub( 'ytEmbed', 'volUp' ); Event.observe( $( volUpBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol > 89 ) { ytplayer.setVolume( 100 ); } else { ytplayer.setVolume( currVol + 10 ); } Event.stop( event ); } ); var volDownBtnId = playerid.sub( 'ytEmbed', 'volDown' ); Event.observe( $( volDownBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol < 11 ) { ytplayer.setVolume( 0 ); } else { ytplayer.setVolume( currVol - 10 ); } Event.stop( event ); } ); var muteBtnId = playerid.sub( 'ytEmbed', 'mute' ); Event.observe( $( muteBtnId ), 'click', function( event ) { if( ytplayer.isMuted() ) { ytplayer.unMute(); } else { ytplayer.mute(); } Event.stop( event ); } ); var timeDivId = playerid.sub( 'ytEmbed', 'currentTime' ); var statusDivId = playerid.sub( 'ytEmbed', 'currentStatus'); var dtTime = new Date(); new PeriodicalExecuter( function( pe ) { //lightbox closed, so stop this PeriodicalExecuter if( !$( timeDivId ) ) { pe.stop(); return; } //update the current time $( timeDivId ).update( page.YouTubeControls.formatTime( ytplayer.getCurrentTime() ) ); //update the current status var status = ytplayer.getPlayerState(); var statusStr = page.bundle.getString( 'yt.stopped' ); switch( status ) { case -1 : statusStr = page.bundle.getString( 'yt.stopped' ); break; case 0 : statusStr = page.bundle.getString( 'yt.ended' ); break; case 1 : statusStr = page.bundle.getString( 'yt.playing' ); break; case 2 : statusStr = page.bundle.getString( 'yt.paused' ); break; case 3 : statusStr = page.bundle.getString( 'yt.buffering' ); break; case 5 : statusStr = page.bundle.getString( 'yt.cued' ); break; } page.YouTubeControls.updateButtonLabels( ytplayer, muteBtnId, playBtnId, status ); $( statusDivId ).update( statusStr ); }.bind(this), 0.5 ); //wire the open/close controls wrapper var openYtControlsId = playerid.sub( 'ytEmbed', 'openYtControls' ); Event.observe( $( openYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); var closeYtControlsId = playerid.sub( 'ytEmbed', 'closeYtControls' ); Event.observe( $( closeYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); } page.util.flyoutMenuMainButtonKeyboardHandler = function( event ) { var key = event.keyCode || event.which; if (key == Event.KEY_LEFT || key == Event.KEY_RIGHT) { var elem = Event.element( event ); var target = elem.up( 'li' ); while ( true ) { if ( key == Event.KEY_LEFT ) { target = target.previous(); } else if ( key == Event.KEY_RIGHT ) { target = target.next(); } if ( !target || page.util.hasClassName( target, 'sub' ) || page.util.hasClassName( target, 'mainButton' ) || page.util.hasClassName( target, 'mainButtonType' ) ) { break; } } if ( target ) { var menuLinks = $A( target.getElementsByTagName( 'a' ) ); if ( menuLinks && menuLinks.length > 0 ) { menuLinks[ 0 ].focus(); Event.stop( event ); } } } }; page.util.initFlyoutMenuBehaviourForListActionMenuItems = function( container ) { //Initialize accessible flyout menu behavior if ( !container ) { container = document; } var uls = document.getElementsByTagName('ul'); if (uls) { var numUls = uls.length; for (var i = 0; i < numUls; i++) { var ul = uls[i]; if (page.util.hasClassName(ul, 'nav')) { var lis = ul.getElementsByTagName('li'); if (lis) { var numLis = lis.length; for (var j = 0; j < numLis; j++) { var li = lis[j]; if (page.util.hasClassName(li, 'sub')) { new page.FlyoutMenu($(li)); } else if (page.util.hasClassName(li, 'mainButton') || page.util.hasClassName(li, 'mainButtonType')) { var menuLinks = $A($(li).getElementsByTagName('a')); if (menuLinks && menuLinks.length > 0) { Event.observe(menuLinks[0], 'keydown', page.util.flyoutMenuMainButtonKeyboardHandler.bindAsEventListener(menuLinks[0])); } } } } } } } }; page.subheaderCleaner = { init : function( entityKind ) { var allHidden = true; var firstUl = null; var className = 'portletList-img courseListing ' + entityKind; $A( document.getElementsByClassName( className ) ).each( function( ul ) { if ( !ul.down() ) { ul.previous( 'h3' ).hide(); ul.hide(); if ( !firstUl ) { firstUl = ul; } } else { allHidden = false; } }); if ( allHidden && firstUl ) { firstUl.previous( 'div' ).show(); } } }; /** * Set up any JavaScript that will always be run on load (that doesn't depend on * any application logic / localization) here. * * Please leave this at the bottom of the file so it's easy to find. * */ FastInit.addOnLoad( function() { Event.observe( document.body, "click", page.ContextMenu.closeAllContextMenus.bindAsEventListener( window ) ); Event.observe( document.body, "click", page.ContextMenu.alignArrowsInBreadcrumb.bindAsEventListener( window ) ); Event.observe( document.body, 'keydown', function(event) { var key = event.keyCode || event.which; if ( key == 116 ) // reload current page on F5 key press { Event.stop( event ); // prevent browser from reloading complete frameset if ( Prototype.Browser.IE ) { event.keyCode = 0; } (function() { window.location.reload( true ); }.defer()); return false; } }); page.util.initFlyoutMenuBehaviourForListActionMenuItems(); if ( $('breadcrumbs') ) { new page.BreadcrumbExpander($('breadcrumbs')); // If we're in the content wrapper, hide the content wrapper breadcrumb frame // so that we don't get stacked breadcrumbs. if ( window.name === 'contentFrame' ) { var parent = window.parent; if ( parent ) { var frameset = parent.document.getElementById( 'contentFrameset' ); if ( frameset ) { frameset.rows = "*,100%"; } } } } var contentPane = $('contentPanel') || $('portalPane'); if ( contentPane ) { new page.LightboxInitializer( 'lb', contentPane ); } // add a label for inventory table checkboxes, if needed $A(document.getElementsByTagName("table")).each( function( table ) { if ( !page.util.hasClassName( table, 'inventory' ) ) { return; } var rows = table.rows; if ( rows.length < 2 ) { return; } for (var r = 0, rlen = rows.length - 1; r < rlen; r++) { var cells = rows[r+1].cells; // skip header row for (var c = 0, clen = cells.length; c < clen; c++) { var cell = $(cells[c]); var inp = cell.down('input'); if ( !inp || ( inp.type != 'checkbox' && inp.type != 'radio' ) ) { // We're only looking for checkbox/radio cells to label, so move on continue; } var lbl = cell.down('label'); if (lbl && !lbl.innerHTML.blank()) { break; // skip cells that already have a non-blank label } if ( !lbl ) { // add new label to checkbox lbl = new Element('label', {htmlFor: inp.id} ); lbl.addClassName('hideoff'); cell.insert({bottom:lbl}); } var headerCell = $(cell.parentNode).down('th'); if ( !headerCell ) { break; // skip rows without header cell } // create a temporary clone of the header cell and remove any hidden divs I.e. context menus var tempCell = $(headerCell.cloneNode(true)); var tempCellDivs = tempCell.getElementsByTagName("div"); for ( var i = 0; i < tempCellDivs.length; i++ ) { var d = tempCellDivs[i]; if ( d && !$(d).visible() ) { d.remove(); } } var lblBody = tempCell.innerHTML.replace( /<\/?[^>]*>/g, '' ); // strip html tags from header lblBody = page.bundle.getString('inventoryList.select.item', lblBody); lbl.update( lblBody ); // set label to header contents (minus tags) break; } } }); //set default font sizes to display text. hack to fix IE7 default font size issue. var sizes = {1:'xx-small', 2:'x-small', 3:'small', 4:'medium', 5:'large', 6:'x-large', 7:'xx-large'}; var fonts = document.getElementsByTagName('font'); for ( var i = 0; i < fonts.length; i++ ) { var font = fonts[i]; if ( font.size ) { // Since some font elements may be manually created by end users we have to handle random // values in here. if (!font.size.startsWith("+") && !font.size.startsWith("-")) { var fsize = parseInt(font.size, 10); if (fsize > 0 && fsize < 8) { font.style.fontSize = sizes[fsize]; } } } } try { if ( top && top.document.getElementById( 'bbFrameset' ) && window.name != 'nav' ) { top.document.getElementsByName('content')[0].title = page.bundle.getString( "frameset.contentframe.title" ) + " : " + document.title; } } catch ( err ) { // When Content System is loaded within a Vista popup window, cross-site security will prevent // accesses to top.document. Ignore this error and continue } page.scrollToEnsureVisibleElement(); page.isLoaded = true; }); /** * Class for adding an insertion marker within a list */ page.ListInsertionMarker = Class.create(); page.ListInsertionMarker.prototype = { initialize: function( listId, position, key, text ) { var list = $(listId); var listElements = list.childElements(); // create a marker list item var marker = new Element('li',{'id':listId+':'+key, 'class':'clearfix separator' }); marker.update('<h3 class="item" id=""><span class="reorder editmode"><span><img alt="" src="/images/ci/icons/generic_updown.gif"></span></span><span class="line"></span><span class="text">'+text+'</span></h3>'); //marker.setStyle({ position: 'relative', minHeight: '10px', padding: '0px', background: '#CCCCCC' }); position = ( position > listElements.length ) ? listElements.length : position; // add marker to list if (listElements.length == 0) { list.insert({top:marker}); // add marker to top of empty list } else if (listElements.length == position) { list.insert({bottom:marker}); // add marker after last element } else { listElements[position].insert({before:marker}); // add marker before element at position } var select = $('reorderControls'+listId).down('select'); // add a option for the marker to the keyboard repostioning select, if any if (select) { var option = new Element('option',{'value':key}).update( '-- '+text+' --' ); if (listElements.length == 0) { select.insert({top:option}); } else if (listElements.length == position) { select.insert({bottom:option}); } else { $(select.options[position]).insert({before:option}); } } } }; page.scrollToEnsureVisibleElement = function( ) { var params = window.location.search.parseQuery(); var ensureVisibleId = params.ensureVisibleId; if ( !ensureVisibleId ) { return; } var ensureVisibleElement = $(ensureVisibleId); if ( !ensureVisibleElement ) { return; } var pos = ensureVisibleElement.cumulativeOffset(); var scrollY = pos.top; var bodyHeight = $( document.body ).getHeight(); if (scrollY + ensureVisibleElement.getHeight() < bodyHeight) { return; // element is already visible } var receipt = $('inlineReceipt_good'); if ( receipt && receipt.visible() ) // pin receipt to top { var offset = receipt.cumulativeOffset(); offset.top = 0; var w = parseInt(receipt.getStyle('width'), 10); if ( Prototype.Browser.IE ) // width in IE includes border & padding, need to remove it { var bw = parseInt(receipt.getStyle('borderLeftWidth'), 10) + parseInt(receipt.getStyle('borderRightWidth'), 10); var pw = parseInt(receipt.getStyle('paddingLeft'), 10) + parseInt(receipt.getStyle('paddingRight'), 10); w = w - bw - pw; } receipt.setStyle({ position:"fixed", zIndex:"1000", left: offset.left + "px", top: offset.top + "px", width: w + "px"}); scrollY = scrollY - 2 * receipt.getHeight(); } // scroll window to show ensureVisibleElement window.scrollTo(0, scrollY ); }; /** * Recursively walks up the frameset stack asking each window to change their * document.domain attribute in anticipation of making a cross-site scripting * call to an LMS integration. * * <p>This should only be called from popup windows, as changing the document.domain * value of a window that is going to be reused later could do surprising things. * * @param domain Domain name shared by the Learn and LMS servers. */ page.setLmsIntegrationDomain = function( domain ) { if ( '' == domain ) { return; } try { if ( parent.page.setLmsIntegrationDomain ) { parent.page.setLmsIntegrationDomain( domain ); } } catch ( err ) { /* Ignore */ } document.domain = domain; }; page.refreshTopFrame = function() { if ( window.top.nav ) { window.top.nav.location.reload(); } }; page.rewriteTaskStatusUntilDone = function( spanId, taskId) { var theSpan = $(spanId); if (theSpan) { new Ajax.Request("/webapps/blackboard/execute/getSystemTaskStatus?taskId=" + taskId, { method: 'post', onSuccess: function(transport, json) { var result = transport.responseText.evalJSON( true ); theSpan = $(spanId); // reload it just in case it was removed between the request and response if (theSpan) { theSpan.update(result.text); if (result.complete == "false") { setTimeout(function() {page.rewriteTaskStatusUntilDone(spanId, taskId);}, 3000); } } }, onFailure: function(transport, json) { theSpan = $(spanId); //reload the span as above if (theSpan) { theSpan.hide(); $(spanId+'error').show(); } } }); } }; /* * Clean up the task id which associated with the specified course, so that the inline warning does not show up again */ page.cleanTaskId = function( courseId ) { //we don't care about the result, at worse it will display again on the next page new Ajax.Request("/webapps/blackboard/execute/courseMain?action=cleanTaskId&course_id=" + courseId, { method: 'post' }); }; } /* ================================================================== *The JavaScript Validation objects to be used in form validation. * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ /** * General purpose DOM utility methods. There's probably a better place for this. * Private methods and properties have names prefixed with "_". */ var bbDomUtil = { _inputTypes: [ 'input', 'textarea', 'select', 'button' ], _maxRecursion: 500, /** * @param elName name of the form input element (the request parameter name). * @return an array of two or more elements, a single element, or null. */ getInputElementByName: function( elName ) { var elArray = this._getInputElementsByNameInSection( 'dataCollectionContainer', elName ); if ( elArray.length === 0 ) { elArray = this._getInputElementsByName( elName ); } return ( elArray.length === 0 ) ? null : ( elArray.length == 1 ? elArray[ 0 ] : elArray ); }, /* * @param sectionId the ID of any element inside a form * @return the enclosing form element or null */ getEnclosingForm: function( sectionId ) { var form = null; if ( sectionId ) { var count; var section = document.getElementById( sectionId ); while ( section ) { ++count; if ( count > this._maxRecursion ) { break; } if ( section.tagName && section.tagName.toLowerCase() == "form" ) { form = section; break; } section = section.parentNode; } } return ( !form ) ? ( document.forms.length === 0 ? null : document.forms[ 0 ] ) : form; }, /** * Adds some additional processing to account for an IE bug * @param id the ID of an element */ getElementById: function( id ) { var el = $( id ); try { if ( el && /msie|internet explorer/i.test( navigator.userAgent ) && el.attributes.id && el.attributes.id.value != id && document.all ) { // IE usually returns item at 0 for ( var i = 0; i < document.all[ id ].length; ++i ) { if ( document.all[ id ][ i ].attributes.id && document.all[ id ][ i ].attributes.id.value == id ) { return $( document.all[ id ][ i ] ); } } } } catch ( e ) { // Ignore all exceptions } return el; }, syncCheckboxToInput: function( checkboxElement, inputElement ) { var checkbox = $( checkboxElement ); var input = $( inputElement ); if ( checkbox && input ) { var checkIfNotEmpty = function( ) { checkbox.checked = ( input.value.strip?input.value.strip( ):input.value )?true:false; } input.observe( 'change', checkIfNotEmpty ); input.observe( 'blur', checkIfNotEmpty ); } }, /** * @param sectionId the ID of an element that restricts the scope of elements. Cannot be null. * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name in the scope of the specified parent element. */ _getInputElementsByNameInSection: function( sectionId, elName ) { var result = []; if ( sectionId ) { var section = document.getElementById( sectionId ); if ( section ) { for ( var i = 0; i < this._inputTypes.length; ++i ) { var elements = section.getElementsByTagName( this._inputTypes[ i ] ); for ( var j = 0; j < elements.length; ++j ) { if ( elements[ j ].name == elName ) { result.push( elements[ j ] ); } } } } } return result; }, /** * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name. */ _getInputElementsByName: function( elName ) { var result = []; var elArray = document.getElementsByName( elName ); var formName = null; for ( var i = 0; i < elArray.length; ++i ) { if ( elArray[ i ].tagName.match( /^(input|select|textarea|button)$/i ) ) { if ( elArray[ i ].form !== null ) { if ( !formName ) { formName = elArray[ i ].form.name; } else if ( formName != elArray[ i ] .form.name ) { // Ignore elements that don't belong to the same form as the first one found. continue; } result.push( elArray[ i ] ); } } } return result; } }; /************************************************************ * Object formCheckList. Use this object to hold form objects * to be validated and perform form validation ************************************************************/ var addElement, removeElement, removeAllElements, getElement, checkForm, CheckGroup; var formCheckList = new formCheckList(); var dblSubmit = false; var skipValidation=false; function formCheckList() { this.checkList = []; this.addElement = addElement; this.removeElement = removeElement; this.removeAllElements = removeAllElements; this.getElement = getElement; this.check = checkForm; } function addElement(element) { if ( typeof element.group != 'undefined' ) { for ( var i=0; i < this.checkList.length;i++ ) { if ( this.checkList[i].name == element.group ) { this.checkList[i].addElement(element); return; } } var grp = new CheckGroup(element); grp.addElement(element); this.checkList[this.checkList.length] = grp; return; } this.checkList[this.checkList.length] = element; } function removeElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { this.checkList.splice(i, 1); } } } function getElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { return this.checkList[i]; } } } function removeAllElements() { var valSize = this.checkList.length; this.checkList.splice(0, valSize); } function checkForm() { if ( typeof(window.invalidAnswersTmp)!='undefined' ) { window.invalidAnswersTmp=[]; } var valid =true; for ( var i=0;i<this.checkList.length;i++ ) { if ( this.checkList[i].canValidate && !this.checkList[i].canValidate() ) { // cannot validate the input so skip it and continue onto the next input continue; } if ( !this.checkList[i].check() ) { if ( this.checkList[i].answerChk ) { valid=false; } else { return false; } } } return valid; } ///////////////////End of object formCheckList//////////////// /************************************************************ * Object: inputText. Use this object to validate text input in * your form (for input type == text|password|textarea|BUT NOT FILE!!! (FILE IS READ-ONLY)) ************************************************************/ function inputText(h) { if (h.id) { this.element = bbDomUtil.getElementById( h.id ); } else { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; } this.shouldFocus = h.shouldFocus; if ( h.shouldFocus === undefined ) { this.shouldFocus = true; } if ( this.shouldFocus ) { this.formatElement = 'bbDomUtil.getInputElementByName("'+h.display_format+'")'; this.focusElement = h.focus_element; // override element for focus in case of error } this.fieldName = h.name; this.disable_script = h.disable_script; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.minlength = h.minlength; this.maxlength = h.maxlength; this.trim = h.trim; this.regex = h.regex; this.regex_msg = h.regex_msg; this.regex_match = h.regex_match; this.verify = h.verify; this.check = inputTextCheck; this.valid_number = h.valid_number; this.min_value = h.min_value; this.max_value = h.max_value; this.nonnegative = h.nonnegative; this.valid_float = h.valid_float; this.allow_negative_float = h.allow_negative_float; this.valid_percent = h.valid_percent; this.allow_negative_percent = h.allow_negative_percent; this.valid_efloat = h.valid_efloat; // float with optional exponent this.valid_email = h.valid_email; this.valid_url = h.valid_url; this.required_url = h.required_url; this.invalid_chars = h.invalid_chars; // eg: /[%&#<>=+,]/g this.cmp_element = 'bbDomUtil.getInputElementByName("'+h.cmp_field+'")'; this.cmp_ref_label = h.cmp_ref_label; this.xor = h.xor; this.cmp_required = h.cmp_required; this.activeX = h.activeX; // synch activeX to hidden field before submission this.isHtmlDoc = h.isHtmlDoc; // is portfolio with body and html this.img_check = h.img_check; this.empty_value_warn = h.empty_value_warn; this.valid_system_role_id = h.valid_system_role_id; this.required = h.required; this.canValidate = h.canValidate; // callback function to determine whether the inputtext should be validated if (h.ref_and_regex === undefined) { this.ref_and_regex = true; } else { this.ref_and_regex = h.ref_and_regex; } if ( document.all && document.getElementById(h.name+'_ax') ) { this.axobj = document.getElementById(h.name+'_ax'); } // Add here anything you need to validate } function isAnEmptyVtbe(val) { // Different browsers populate an 'empty' VTBE with a different blank line - look for any of the known combinations and ignore them. // NOTE: Changes to this method need to be reflected in AssessmentDisplayControl.isAnEmptyVtbe return ( !val || !val.replace(/<p><\/p>/gi,'').trim() || !val.replace(/<br \/>/gi,'').trim() || !val.replace(/&nbsp;/gi,'').trim()); } // Do actual check here function inputTextCheck() { if ( this.shouldFocus === undefined ) { this.shouldFocus = true; } var element = eval(this.element); var cmp_element = eval(this.cmp_element); if ( element ) { // don't validate disabled elements if (element.disabled) { return true; } var focusElement = element; if ( this.axobj ) { focusElement = this.axobj; } this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.custom_alert_cmp = (typeof this.custom_alert_cmp != 'undefined') ? this.custom_alert_cmp : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( isAnEmptyVtbe(val) ) { val=''; } var trimmedVal, numVal, isValidNum, re; if ( this.activeX && isEmptyWysiwyg(element) ) { element.value = ''; val = ''; } if ( typeof eval(this.formatElement) != "undefined" && eval(this.formatElement) !== null ) { //Check if it is a mathml where; if ( /<APPLET ID="(\d+)" NAME="(\w+)"/.test(element.value) ) { if ( getRadioValue(eval(this.formatElement)) == 'P' ) { if ( !confirm(JS_RESOURCES.getString('validation.plain_text.confirm')) ) { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } } if ( this.trim ) { val = val.trim(); element.value = val; } //Remove leading & trailing spaces if needed if ( typeof cmp_element != 'undefined' ) { if ( this.xor ) { if ( val.trim()=='' ^ cmp_element.value.trim()=='' ) { if ( val.trim()=='' ) { alert( this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } } else { alert(this.custom_alert_cmp ? this.custom_alert_cmp : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.cmp_ref_label, this.ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } } return false; } } } if ( this.disable_script ) { if ( typeof eval(this.formatElement) == "undefined" || getRadioValue(eval(this.formatElement)) != 'P' ) { re = /<\s*script/ig; var re1 = /<\s*\/\s*script\s*>/ig; val = val.replace(re,'<disabled-script'); val = val.replace(re1,'</disabled-script>'); var re2 = /href\s*=\s*(['"]*)\s*javascript\s*:/ig; val = val.replace(re2,"href=$1disabled-javascript:"); element.value = val; } } if ( this.valid_number ) { trimmedVal = val.trim(); //added this check bcoz for numeric fields which are not required, this function was not working if ( trimmedVal!="" ) { var numLocalizer = new NumberLocalizer(); if ( numLocalizer === undefined ) { numVal = parseInt(trimmedVal, 10); } else { numVal = numLocalizer.parseNumber( trimmedVal ); } isValidNum = !isNaN(numVal); if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if (this.nonnegative && numVal<0) { alert(JS_RESOURCES.getFormattedString('validation.negative', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if ( ( (this.min_value || this.min_value === 0) && numVal < this.min_value ) || ( this.max_value && ( numVal > this.max_value ) ) ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_value', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_float ) { trimmedVal = val.trim(); var numFormat; if ( this.allow_negative_float ) { numFormat = LOCALE_SETTINGS.getString('float.allow.negative.format'); } else { numFormat = LOCALE_SETTINGS.getString('float.format'); } if ( numFormat ) { //hand parse for l10n re = new RegExp( numFormat ); isValidNum = trimmedVal.search( re ) === 0; } else { //try to use platform native (non-localized) numVal = parseFloat(trimmedVal); isValidNum = !isNaN(numVal); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test(trimmedVal.substring(numVal.toString().length)); } } if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_percent ) { if ( this.allow_negative_percent ) { if ( !isValidNegativePercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.allow_negtive.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { if ( !isPercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_efloat ) { if ( !isNumeric(val) ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { focusElement = (this.focusElement ? this.focusElement : this.element); if ( focusElement.focus ) { safeFocus( focusElement ); } } return false; } } if ( this.valid_email ) { if ( val.trim() == '' ) { if ( confirm(JS_RESOURCES.getString('warning.email')) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { re = /^(['`a-zA-Z0-9_+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; if ( !re.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.email', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } // confirms via javascript pop-up if input field is empty; // user can click Ok to proceed or cancel to go back with the element focused // the message that pops up is the message passed in with ref_label if ( this.empty_value_warn ) { if ( val.trim() == '' ) { if ( confirm(this.ref_label) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } var extra = 0; if (navigator.appName=="Netscape" && parseInt(navigator.appVersion, 10 )>=5) { var index = val.indexOf('\n'); while(index != -1) { extra += 1; index = val.indexOf('\n',index+1); } } if ( this.maxlength < val.length + extra ) { var newlength = val.length + extra; if ( (newlength - this.maxlength) > 1 ) { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.plural', [this.ref_label,this.maxlength,(newlength-this.maxlength)])); } else { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.singular', [this.ref_label,this.maxlength])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } // required_url, unlike valid_url, flags empty strings as invalid URLs. if ( this.required_url ) { if ( val.trim() == '' ) { alert(JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } if ( !isValidUrl(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_url ) { if ( val.trim()=='' ) { return true; } var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; if ( !oRegExp.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( typeof(this.regex) == 'string' ) { this.regex=eval(this.regex); } if ( (typeof(this.regex) == 'object' || typeof(this.regex) == 'function') && val.trim() != '' ) { re =this.regex; if ( this.regex_match && val.search(re) == -1 ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } if ( !this.regex_match && re.test(val) ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.invalid_chars ) { // if string was passed, convert to regular expression object if( Object.isString( this.invalid_chars ) ) { var stringToParse = this.invalid_chars; var firstSlashPos = stringToParse.indexOf("/"); var lastSlashPos = stringToParse.lastIndexOf("/"); var pattern = stringToParse.substring( ++firstSlashPos, lastSlashPos ); var modifier = stringToParse.substring( ++lastSlashPos, stringToParse.length ); this.invalid_chars = new RegExp( pattern, modifier ); } var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.verify ) { var chk_field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'_chk')); var field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'')); if ( chk_field.value != val ) { alert(JS_RESOURCES.getFormattedString('validation.mismatch', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( chk_field ); } return false; } // Encode password if ( element.type == 'password' ) { element.value = element.value.trim(); if ( element.value != '' ) { element.value = field.value = chk_field.value = calcMD5(element.value); } else { alert(JS_RESOURCES.getString('validation.password')); element.value = field.value =''; if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.cmp_required && element.value.trim()!='' ) { if ( !cmp_element.value.trim().length ) { alert(JS_RESOURCES.getFormattedString('validation.cmp_field.rejected', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } return false; } } if ( this.img_check ) { return image_check(element); } //AS-102122, if a image tag without ALT properties <img src="1.jpg">, add a null ALT for it. <img src="1.jpg" alt=""> imgTag_check(element,0); // System role ids cannot begin with "BB" as of 7.2; such ids are reserved for solely for Blackboard use // Checks field to see if string begins with "BB" case-insensitive and if so, alert the user if ( this.valid_system_role_id ) { if ( element.value.indexOf('BB') === 0 || element.value.indexOf('bb') === 0 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.system_role.reserve', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } else { return true; } } } return true; } ///////////////////End of object inputText/////////////////// //check ALT propertity for <img tag, if there isn't ALT propertiry, add ALT="" for this tag function imgTag_check(element , start){ var imgStart = element.value.indexOf("<img",start); // img: <img src=... > if (imgStart > -1 ){ var end = element.value.indexOf(">",imgStart); if (end == -1 ){ return; } var imgData = element.value.substring(imgStart, end+1); // <img src=... > if(imgData.indexOf("alt") == -1){ imgData = "<img alt=\"\" " + imgData.substring(4); element.value = element.value.substring(0,imgStart) + imgData + element.value.substring(end+1); } imgTag_check(element, end); } } function image_check(element) { var ext = element.value.match(/.*\.(.*)/); ext = ext ? ext[1] :''; var re = /gif|jpeg|png|tif|bmp|jpg/i; if ( ! re.test(ext) && element.value ) { if ( ! confirm(JS_RESOURCES.getFormattedString('validation.image_type', [ext])) ) { element.focus(); return false; } } return true; } /************************************************************ * Object: inputDate. Use this object to validate that the * associated date fields are not empty ************************************************************/ var inputDateCheck; function inputDate(h) { this.element_mm = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mm")'; this.element_dd = 'bbDomUtil.getInputElementByName("'+h.name+'_0_dd")'; this.element_yyyy = 'bbDomUtil.getInputElementByName("'+h.name+'_0_yyyy")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputDateCheck; // Add here anything you need to validate } // Do actual check here function inputDateCheck() { var element_mm = eval(this.element_mm); var element_dd = eval(this.element_dd); var element_yyyy = eval(this.element_yyyy); if ( typeof element_mm != 'undefined' && element_dd !='undefined' && element_yyyy !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = ( this.ref_label ) ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_mm.name]); if ( element_mm.selectedIndex == -1 || element_dd.selectedIndex == -1 || element_yyyy == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.date.required', [this.ref_label])); if ( element_mm.selectedIndex == -1 ) { element_mm.focus(); } else if ( element_dd.selectedIndex == -1 ) { element_dd.focus(); } else { element_yyyy.focus(); } return false; } } return true; } ///////////////////End of object inputDate/////////////////// /************************************************************ * Object: inputTime. Use this object to validate that the * associated time fields are not empty ************************************************************/ var inputTimeCheck; function inputTime(h) { this.element_hh = 'bbDomUtil.getInputElementByName("'+h.name+'_0_hh")'; this.element_mi = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mi")'; this.element_am = 'bbDomUtil.getInputElementByName("'+h.name+'_0_am")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputTimeCheck; // Add here anything you need to validate } // Do actual check here function inputTimeCheck() { var element_hh = eval(this.element_hh); var element_mi = eval(this.element_mi); var element_am = eval(this.element_am); if ( typeof element_hh != 'undefined' && element_mi !='undefined' && element_am !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_hh.name]); if ( element_hh.selectedIndex == -1 || element_mi.selectedIndex == -1 || element_am == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.time.required', [this.ref_label])); if ( element_hh.selectedIndex == -1 ) { element_hh.focus(); } else if ( element_mi.selectedIndex == -1 ) { element_mi.focus(); } else { element_am.focus(); } return false; } } return true; } ///////////////////End of object inputTime/////////////////// /************************************************************ * Object: inputSelect. Use this object to validate that the * associated select field is not empty ************************************************************/ var inputSelectCheck; function inputSelect(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.minSelected = h.minSelected; this.maxSelected = h.maxSelected; this.title = h.title; this.isMultiSelect = h.isMultiSelect; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputSelectCheck; // Add here anything you need to validate } // Do actual check here function inputSelectCheck() { var element = eval(this.element); var checked = 0; if ( typeof element != 'undefined' ) { if ( this.isMultiSelect) { if( this.minSelected ) { //check that at least minSelected number of options is selected //bsomala checked = element.options.length; if(checked < this.minSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.minItems', [this.minSelected])); element.focus(); return false; } } checked = 0; if ( this.maxSelected ) { checked = element.options.length; if(checked > this.maxSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.maxItems', [this.maxSelected])); element.focus(); return false; } } } else { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); if ( (element.selectedIndex == -1) || (element.options[element.selectedIndex].value == "") ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); element.focus(); return false; } } } return true; } ///////////////////End of object inputSelect/////////////////// /************************************************************ * Object: inputFile. Use this object to validate that the file upload is not empty. IMPORTANT: file type is READ ONLY ************************************************************/ var inputFileCheck; function inputFile(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.invalid_chars = h.invalid_chars; this.minlength = h.minlength; this.img_check = h.img_check; this.check = inputFileCheck; // Add here anything you need to validate } // Do actual check here function inputFileCheck() { var element = eval(this.element); if ( typeof element != 'undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( this.invalid_chars ) { var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); shiftFocus( element, false); return false; } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } return false; } if ( this.img_check ) { return image_check(element); } } return true; } ///////////////////End of object inputFile/////////////////// /************************************************************ * Object: Check_EventTime. Use this object to make sure * that the end time is not before the start time, confirm pastdue time, * check duration of the event. *************************************************************/ var Check_EventTime_check; function Check_EventTime(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check; } function Check_EventTime_check() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( (document.forms[0].restrict_start && document.forms[0].restrict_end)|| (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end) ) { if ( (document.forms[0].restrict_start && document.forms[0].restrict_end && document.forms[0].restrict_start.checked && document.forms[0].restrict_end.checked) || (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end && document.forms[1].restrict_start.checked && document.forms[1].restrict_end.checked) ) { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } } else { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end && end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /* * SCR 17696 * This validation check should be used in the date widgets instead of the earlier one * as that has the chackboxes names hardcoded in them. The existing date wodgets * use it, but going ahead this should be the used. It helps specially when there are * multiple date widgets on the same page. */ var Check_EventTime_check_multiple; function Check_EventTime_multiple(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check_multiple; } function Check_EventTime_check_multiple() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( restr && cmp_restr ) { //This block has been aded due to SCR 17696. //Reason : if this method is directly called from a JSP page which is not a part of // the existing date widgets, and the parameters of stsrt date, end date, start checkbox and // end checkbox are passed, and additionally the page has another if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /*We always need time in our favorite format */ function sql_datetime(dat) { var year = dat.getFullYear(); var mon = dat.getMonth(); mon++; mon = (mon<10)?'0'+mon:mon; var day = dat.getDate(); day = (day<10)?'0'+day:day; var hh = dat.getHours(); hh = (hh<10)?'0'+hh:hh; var mi = dat.getMinutes(); mi = (mi<10)?'0'+mi:mi; var ss = dat.getSeconds(); ss = (ss<10)?'0'+ss:ss; return year+'-'+mon+'-'+day+' '+hh+':'+mi+':'+ss; } ///////////////////End of object Check_EventTime///////////// /******************************************************************************** * Object DoubleSubmit(): * Use this object to prevent multiple times form submission * Second argument is wait image source; first argument is image name (string) or * instance of ImageSwapper object created for submit button (if it has rollovers) *********************************************************************************/ var checkDoubleSubmit; // Prevent multiple form submission function DoubleSubmit() { this.submitted = 0; this.check = checkDoubleSubmit; } function checkDoubleSubmit() { if ( this.submitted > 0 ) { alert (JS_RESOURCES.getString('notification.submit')); return false; } else { this.submitted++; } return true; } ///////////////////End of Object DoubleSubmit()////////////////// /******************************************************************************** * Object RadioCheckBox(): * Use this object to make sure that at least one item is selected from the group of * radio/checkbox groups. Just attach this code to checkbox/radio group (refered below as 'element'): * formCheckList.addElement(new RadioCheckBox({name:'element or subgroup name',group:'group name',ref_label:"group label in alerts"})); *********************************************************************************/ var groupAddElement, checkGroupChecked, groupIsChecked; // Constructor function function RadioCheckBox(h) { return h; } function CheckGroup(h) { this.name = h.group; this.ref_label = h.ref_label; this.elements = []; this.addElement = groupAddElement; this.check = checkGroupChecked; } function groupAddElement(h) { this.elements[this.elements.length] = h.name; } function checkGroupChecked() { var list = this.elements; var chk = false; for ( var i = 0; i < list.length; i++ ) { if ( groupIsChecked(list[i]) ) { return true; } } var msg = null; var group = bbDomUtil.getInputElementByName(list[0]); group = (typeof group[0] != 'undefined') ? group[0]:group; if ( group.type == "radio" ) { msg = JS_RESOURCES.getFormattedString('validation.radio.required', [this.ref_label]); } else { msg = JS_RESOURCES.getFormattedString('validation.option.required', [this.ref_label]); } alert(msg); group.focus(); return false; } function groupIsChecked(groupName) { var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var checked = false; if ( typeof group != 'undefined' ) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( group[i].checked ) { checked = true; return checked; } } } else { if ( group.checked ) { checked = true; return checked; } } } return checked; } ///////////////////End of Object CheckGroup()//////////////////// /******************************************************************************** * Object selector(): * Use this object to make sure that at least one item is available in the Selector element (see PickerElement.java) * For use when Selector is marked Required: * formCheckList.addElement(new CheckSelector({name:'element or subgroup name',ref_label:"group label in alerts"})); *********************************************************************************/ var selectorCheck, selectorElementAvailable; // Constructor function function selector(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.required = h.required; this.check = selectorCheck; // Add here anything you need to validate } // Do actual check here function selectorCheck() { if(this.required) { var isAvailable = selectorElementAvailable(this.fieldName); this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element.name]); if ( !isAvailable ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } } return true; } function selectorElementAvailable(groupName) { // we need at least one "Remove" checkbox to be present and unchecked (one element is added but not removed) var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var available = false; if ( typeof group != 'undefined' && group !== null) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( !group[i].checked ) { available = true; return available; } } } else { if ( !group.checked ) { available = true; return available; } } } return available; } ///////////////////End of Object CheckSelector()//////////////////// //////////////// Start some useful generic functions //////////// /* Function ltrim(): Remove leading spaces in strings: Usage:trimmedString = originalString.ltrim(); */ function ltrim() { return this.replace( /^\s+/g,''); } String.prototype.ltrim = ltrim; /* Function rtrim(): Remove trailing spaces in strings: Usage:trimmedString = originalString.rtrim(); */ function rtrim() { return this.replace( /\s+$/g,''); } String.prototype.rtrim = rtrim; /* Function trim(): Remove leading and trailing spaces in strings: Usage:trimmedString = originalString.trim(); */ function trim() { return this.rtrim().ltrim(); } String.prototype.trim = trim; /* Function invalidChars(): Returns an array of illegal chars Usage: var listOfChars = myStringToSearch.invalidChars(regularExpression); regularExpression = /[illegal chars]/g; Sample re = /[! &^$#]/g */ function invalidChars (re) { var chrs = this.match(re); if ( chrs ) { for ( var j=0;j<chrs.length;j++ ) { if ( chrs[j]===' ' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.space'); } else if ( chrs[j]==',' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.comma'); } else if ( chrs[j]=='\\' ) { chrs[j]='\\\\'; } } } return chrs; } String.prototype.invalidChars = invalidChars; /** Function getRadioValue(): Returns selected value for group of radio buttons * Usage: var selectedValue = getRadioValue(radio); radio - reference to radio group */ function getRadioValue(radio) { for ( var i=0;i< radio.length;i++ ) { if ( radio[i].checked ) { return radio[i].value; } } } /** Function isEmptyWysiwyg(): Checks WYSIWYG control for value */ function isEmptyWysiwyg(field) { // first remove any HTML tags from the value, then check if it's empty (all spaces or &nbsp;s) // explicitly adding the unicode non-breaking space and line feed/break since IE and safari // don't seem to include them in \s var EMPTY_REGEXP = /^(\s|\u00A0|\u2028|\u2029|&nbsp;)*$/i; // Input is not empty if it contains one of the following tags: img/object/embed var SPECIALTAGS = /(<\s*(img)|(object)|(embed)|(hr)|(input)|(applet))/i; if ( field && typeof(field.value) == 'string' && field.value ) { var notags = field.value.replace(/<.*?>/g,''); var result = EMPTY_REGEXP.test(notags); return ( result && !SPECIALTAGS.test(field.value) ); } return true; } /** Function isValidUrl(): Checks if given string is in the general URL format */ var VALID_URL_REGEXP = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; function isValidUrl(string) { return( VALID_URL_REGEXP.test(string) ); } /** Numeric */ var EFLOAT_REGEXP = LOCALE_SETTINGS.getString('efloat.format'); var THOUSANDS_SEP = LOCALE_SETTINGS.getString('thousand.sep.format'); /*rejectThousandSep: if true then the presence of the thousands-separator is an error (non-numeric) * e.g. we don't accept it for point, since point/score is rarely in thousands range. */ function isNumeric(string, rejectThousandSep ) { string = string.trim(); if ( rejectThousandSep !== null && rejectThousandSep ) { var hasThousands = ( string.search( new RegExp( THOUSANDS_SEP ) ) !== -1 ) ; if (hasThousands) { return false; } } string = string.replace(new RegExp(THOUSANDS_SEP, 'g'), ''); if ( string.search( new RegExp(EFLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return !isNaN(floatValue); } return false; } /** Float between 0 and 100 */ var FLOAT_REGEXP = LOCALE_SETTINGS.getString('float.format'); function isPercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= 0 && floatValue <= 100 ); } return false; } /** Float between -100 and 100 */ var FLOAT_ALLOW_NEGATIVE_REGEXP = LOCALE_SETTINGS.getString('float.allow.negative.format'); function isValidNegativePercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_ALLOW_NEGATIVE_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= -100 && floatValue <= 100 ); } return false; } /*Function submitForm() Call this function to validate and submit form @param form the name of the form or the DOM object representing the form. If null or undefined, submits first form on page. */ function submitForm(form) { if ( validateForm() ) { if (form) { if ( typeof( form ) == "string" ) { document.forms[ form ].submit(); } else { form.submit(); } } else { document.forms[0].submit(); } } } /* Sort numerical array in ascending order */ function numericalArraySortAscending(a, b) { return (a-b); } /*Function validateForm() * Call this function onSubmit inside <form> tag */ function validateForm() { // Set textarea value to VTBE contents if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if ( skipValidation ) { return true; } /* Validate form */ var valid = formCheckList.check(); var i; /*Check for invalid answers if any present */ var invalidAnswersArray = []; var invAns = window.invalidAnswers; if ( typeof( invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } invAns = window.invalidAnswersTmp; if ( typeof(invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } var stringArg = ''; if ( invalidAnswersArray.length > 0 ) { invalidAnswersArray.sort(numericalArraySortAscending); var lastIndex = invalidAnswersArray.length - 1; for ( var x = 0; x < invalidAnswersArray.length; x++ ) { stringArg += invalidAnswersArray[x]; if ( x < lastIndex ) { if ( ( (x+1) % 10 ) === 0 ) { stringArg += ",\n"; } else { stringArg += ","; } } } } if ( stringArg !== '' && valid ) { var msgKey; if ( !assessment.backtrackProhibited ) { msgKey = 'assessment.incomplete.confirm'; } else { msgKey = 'assessment.incomplete.confirm.backtrackProhibited'; } if (assessment.isSurvey) { msgKey = msgKey + ".survey"; } if ( !confirm( JS_RESOURCES.getFormattedString( msgKey, [stringArg] ) ) ) { valid = false; // User decided not to submit } else { assessment.userReallyWantsToSubmit = true; } window.invalidAnswersTmp = []; // Clearing up } /* Go back to placeholders if validation failed (valid == false) */ if ( ismath && !valid ) { api.setMathmlBoxes(); } /* If everything is OK and ready to go,check that the form was not already submitted */ if ( valid && dblSubmit ) { valid = dblSubmit.check(); } return valid; } /*Function boxSelector() * Use this function to select, unselect or invert selection for specified checkbox groups * Call: boxSelector(['name1','name2',...,'namen'],action), here action is 'select', or 'unselect', or 'invert' */ function boxSelector(list,action) { action = (action == 'select') ? true : (action == 'unselect') ? false : action; for ( var i=0;i<list.length;i++ ) { var group = 'bbDomUtil.getInputElementByName("'+list[i]+'")'; if ( typeof (group = eval(group)) != 'undefined' ) { var j; if ( action == 'invert' ) { for ( j=0;j<group.length;j++ ) { group[j].checked = !group[j].checked; } } else { for ( j=0;j<group.length;j++ ) { group[j].checked = action; } } } } } function setHidden (from,to) { var hide = eval(to); hide.value = from.value; } ////////////////////////////////////////////////////////////////// /** * Check_Answer object was added by request specified in mscr 524 * to provide validation to student answers * Variable invalidAnswers has to be added to the page where assessment is submitted * It should contain the list of unfinished questions excluding question(s) on current page * Check_Answer object will perform final validation and display all unfinished questions in confirm box */ var invalidAnswers = []; // the java code will populate this array on final QbyQ page /** Object constructor for answers walidation * */ var Check_Answer_check; function Check_Answer (vobj) { if ( typeof(window.invalidAnswersTmp)=='undefined' ) { window.invalidAnswersTmp=[]; } this.form = 'document.forms[0]'; this.element = 'bbDomUtil.getInputElementByName("'+vobj.name+'")'; this.name = vobj.name; this.answerChk = true; //Check_Answer is special check, it makes a list of unfinished questions and always return true this.ref_label = vobj.ref_label; this.check = Check_Answer_check; } //Test if at least one member of radio or checkbox group is selected function isChecked(grp) { if (typeof(grp.length) != 'undefined') { for ( var i=0;i< grp.length;i++ ) { if ( grp[i].checked ) { return true; } } return false; } else { return grp.checked; } } function Check_Answer_check() { //create form element object var el = eval(this.element); //Extract question type information from element name var qtype = /^(\w+)-/.exec(this.name); if ( !qtype ) { qtype = /^([^_]+)_/.exec(this.name); } qtype = qtype[1]; if ( qtype == 'ma' ) { qtype = /-\d+$/.test(this.name) ? 'mat' : 'ma'; } // Perform actual check-up if ( qtype == 'tf' || qtype == 'mc' || qtype == 'ma' || qtype == 'eo' ) { if ( !isChecked(el) ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]=this.ref_label; } } else if ( qtype == 'ord' || qtype == 'mat' ) { if ( el.selectedIndex === 0 && this.ref_label != window.invalidAnswersTmp[window.invalidAnswersTmp.length-1] ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'fitb' || qtype == 'essay' || qtype == 'num' || qtype == 'calc' || qtype == 'hs' || qtype == 'jumbled_sentence' || qtype == 'fib_plus' || qtype == 'quiz_bowl' ) { //remove isEmptyWysiwyg for these question types, since they should allow some chars as < > var val = el.value; if ( isAnEmptyVtbe(val) ) { val=''; } if ( val.trim().length < 1 ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'file' ) { var haveFile = false; var hiddenField = eval(this.form + '.elements["' + this.name + '-override"]'); if ( hiddenField && hiddenField.value == "true" ) { haveFile = true; } el = eval(this.form + '.elements["' + this.name + '_attachmentType"]'); if ( !haveFile && el && el.value !== "" ) { haveFile = true; } if ( !haveFile ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } // eliminate duplicates // TODO: think of a better way to do this if ( window.invalidAnswersTmp.length > 0 ) { var tmpArray = []; var tmpObject = {}; for ( var i = 0; i < window.invalidAnswersTmp.length; ++i ) { if ( !tmpObject[window.invalidAnswersTmp[i]] ) { tmpObject[window.invalidAnswersTmp[i]] = true; tmpArray[tmpArray.length] = window.invalidAnswersTmp[i]; } } window.invalidAnswersTmp = tmpArray; } return true; //Always true, we can make decision later through confirm } // wrapper function for focus() calls function shiftFocus(el, isVTBE) { if ( el ) { if ( isVTBE && editors && editors[el.name] && typeof(editors[el.name].focusEditor) == 'function' ) { editors[el.name].focusEditor(); } else if ( !el.disabled && !el.readOnly && el.type != "hidden" ) { safeFocus( el ); } } return; } function safeFocus( e ) { try { if ( e && e.focus ) { e.focus(); } } catch (er) { //Ignore, element is hidden in IE and can't be focused. } } /** * A validator that checks to see that a certain radio button in a group is * selected. This is intended to be used for conditional validation -- * validators that only apply when a certain radio button selection is made. * Note that if there are no selected values, this validator will return false * when checked. * - name - radio button group to check * - value - the radio button value to check for selection */ var RadioButtonValueValidator_check; function RadioButtonValueValidator( name, value ) { this.element = bbDomUtil.getInputElementByName(name); this.value = value; this.check = RadioButtonValueValidator_check; } function RadioButtonValueValidator_check() { for ( var i = 0; i < this.element.length; i++ ) { if ( this.element[i].value == this.value ) { return this.element[i].checked; } } return false; } /** * A validator that performs a logical, short-circuit OR on its two arguments. */ var OrValidator_check; function OrValidator( first, second ) { this.first = first; this.second = second; this.check = OrValidator_check; } function OrValidator_check() { return this.first.check() || this.second.check(); } /* This is a sample code that has to be added to every corresponding form element in take assessment page, where you perform question validation for completness; ref_lablel value is used to refer to element, name is field full name: <script type="text/javascript"> formCheckList.addElement(new Check_Answer({ref_label:"Question 3",name:"tf-ans-_190_1"})); </script> */ var nonceUtil = {}; /** * Finds the form element holding the nonceId * @param formId is the id of the form the nonce element exists within */ nonceUtil.getNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce') }; nonceUtil.getAjaxNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce.ajax') }; nonceUtil.getNonceIdEx = function(formId, elName) { var nonceId = null; if(formId && $s(formId) ) { nonceId= $s(formId).elements[elName]; } if( !nonceId ) { // take a cheap shot at retreiving the first nonceId on the page nonceId = document.getElementsByName( elName )[0]; // Note : nonceId can be null if the form does not have a nonce element declared. This should be a sign of a xsrf loophole } return nonceId; }; /** * Finds the form element holding the nonceId * @param formElementId is the id of a form element on the page. It is expected that the nonceId corresponds * to the same form. */ nonceUtil.getNonceIdByFormElementId = function(formElementId) { var nonceId = null; if( formElementId && $s(formElementId) ) { var elementFormId = bbDomUtil.getEnclosingForm(formElementId); nonceId = $s(elementFormId).elements['blackboard.platform.security.NonceUtil.nonce']; } return nonceId; }; nonceUtil.getNonceIdValue = function(formId) { var nonceId = nonceUtil.getNonceId(formId); return nonceId ? nonceId.value : ""; }; /** * Copies the nonceid from one form on the page to another form. Useful when using flyout forms. */ nonceUtil.copyNonceId = function( sourceFormId, targetFormId ) { var nonceId = nonceUtil.getNonceIdValue( sourceFormId ); var targetElem = new Element( 'input', { type: 'hidden', name: 'blackboard.platform.security.NonceUtil.nonce', value: nonceId } ); $( targetFormId ).appendChild( targetElem ); }; /** * Updates the form's nonceId based on the JSON response from an AjaxSecureForm */ nonceUtil.updateFromAjaxRequest = function( headerJSON ) { if ( headerJSON ) { var nonceId = nonceUtil.getNonceId(); if( nonceId ) { nonceId.value = headerJSON.nonceId; } } }; var NumberLocalizer = Class.create(); NumberLocalizer.prototype = { initialize : function() { var thousandsSeparator = LOCALE_SETTINGS[ 'number_format.thousands_sep' ]; var decimalSeparator = LOCALE_SETTINGS[ 'number_format.decimal_point' ]; this.thousandsSeparator = ( thousandsSeparator === null ) ? ',' : thousandsSeparator; this.needToConvertThousands = ( this.thousandsSeparator !== ',' ) ? true : false; this.decimalSeparator = ( decimalSeparator === null ) ? '.' : decimalSeparator; this.needToConvertDecimal = ( this.decimalSeparator !== '.' ) ? true : false; }, // Takes a number that is unlocalized and converts it to // the current locale format. formatNumber : function( f ) { var result; result = f.toString(); // Replace and thousands delimiter with a token so we can // replace it with the final symbol after we replace the decimal symbol. if ( this.needToConvertThousands ) { result = result.replace( ',', '[comma]' ); } if ( this.needToConvertDecimal ) { result = result.replace( '.', this.decimalSeparator ); } if ( this.needToConvertThousands ) { result = result.replace( '[comma]', this.thousandsSeparator ); } return result; }, // Takes a number that is in the current locale format and // converts it back to an unlocalized number. parseNumber : function( num ) { var result; result = num.toString(); // Parsing string to return as a float, so we don't need the thousands // separator anymore. result = result.replace( this.thousandsSeparator, '' ); if ( this.needToConvertDecimal ) { result = result.replace( this.decimalSeparator, '.' ); } return parseFloat( result ); } };var AccessibleSelect = {}; /** * Wire up the accessible event listeners to any <select>s on the page that have an onchange listener already */ AccessibleSelect.initializePage = function() { var selects = document.getElementsByTagName("select"); for ( var i = 0; i < selects.length; i++ ) { var currentSelect = selects[i]; if ( currentSelect.onchange ) { currentSelect.changed = false; currentSelect.onfocus = AccessibleSelect.onfocus; currentSelect.onkeydown = AccessibleSelect.onkeydown; currentSelect.onclick = AccessibleSelect.onclick; currentSelect.onchange = AccessibleSelect.createOnchange( currentSelect.onchange ); } } }; /** * Functor that creates an onchange function which if the <select> has actually been changed, will call the * specified callback (i.e. the original onchange function ) */ AccessibleSelect.createOnchange = function( callback ) { return function( theElement ) { var theSelect; if ( theElement && theElement.value ) { theSelect = theElement; } else { theSelect = this; } if (theSelect.changed) { // bind "theSelect" as the "this" for the callback. callback.apply(theSelect); return true; } else { return false; } }; }; /** * Event listener called when the <select> is clicked */ AccessibleSelect.onclick = function() { this.changed = true; // If the select size is greater than 0, then the onchange event occurs before the onclick event // and the "changed" attribute is false when the onchange event listener method runs and the select // element's onchange method does not get called. Therefore, we are going to call it here. if( this.size > 0 ) { this.onchange(this); } }; /** * Event listener called when the <select> gains focus */ AccessibleSelect.onfocus = function() { this.initValue = this.value; return true; }; /** * Event listener called when a key is pressed in the <select>. */ AccessibleSelect.onkeydown = function(e) { var theEvent; var keyCodeTab = "9"; var keyCodeEnter = "13"; var keyCodeEsc = "27"; if (e) { theEvent = e; } else { theEvent = event; } var largeSize = (this.size > 0); if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && ( largeSize || this.value != this.initValue) ) { this.initValue = this.value; this.changed = true; this.onchange(this); // returning true logically denotes that the change has been made, but more importantly it will make sure the default // behavior (what would have happened without the onkeydown event) is honored. For example, user pressing 'tab' key will // move the focus to the next element on the page return true; } else if (theEvent.keyCode == keyCodeEsc) { this.value = this.initValue; return false; } else { this.changed = false; } return true; }; // This script does not work for Safari. See AS-110404, AS-110426 if (!/webkit|khtml/i.test(navigator.userAgent)) { //When the page is loaded, initialize the select boxes if ( window.addEventListener) { window.addEventListener('load', AccessibleSelect.initializePage, false); } else if ( window.attachEvent ) { window.attachEvent('onload', AccessibleSelect.initializePage); } }var popup = { /** * Launches a new popup window. This method is used for an random popup that * might be necessary (preview window for example). If you are launching a * "picker" window you should use launchPicker() instead. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). This is required. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param resizable whether the new window should be resizable. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @param showStatus whether the new window should be show the status bar. If * not provided a default value will be used. Do not provide unless * your specific requirements dictate it. * @param scrolling whether the new window should allow scrolling. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @return a reference to the popup window generated */ launch: function( url, name, width, height, resizable, showStatus, scrolling ) { if ( typeof( width ) == 'undefined' ) { // for RTL, the width needs to be wider, to prevent vertical line overlapping in the popup if ( page.util.isRTL() ) { width = 890; } else { width = 825; // wide enough to prevent a horizontal scrollbar in most cases } } if ( typeof( height ) == 'undefined' ) { height = 500; } if ( typeof( resizable ) == 'undefined' ) { resizable = 'yes'; } if ( typeof( showStatus ) == 'undefined' ) { showStatus = 'yes'; } if ( typeof( scrolling ) == 'undefined' ) { scrolling = 'yes'; } // figure out placement of the new window we will open. If the desired size // of the new window is bigger than the screen size then make the window // smaller and put it far left. Otherwise, center the window on screen. var screenX = 0; if ( screen.width <= width ) { width = screen.width; // new window should not be wider than the screen } else { screenX = ( screen.width - width ) / 2; // center on the screen } var popup = window.open( url, name, 'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrolling + ',status=' + showStatus + ',top=20' + ',screenY=20' + ',screenX=' + screenX + ',left=' + screenX ); if ( popup ) { popup.focus(); if ( !popup.opener ) { popup.opener = self; } window.top.name = 'bbWin'; } return popup; }, /** * Launches a new "picker" window. * <p> * At the moment the only difference between this method and launch (besides * the inability to specify some advanced and rarely used options) is that * this method will default the {@code name} value if not provided. However, * you should still use this method if you are launching a "picker" type * window as additional differences may be introduced in the future. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). If not provided a default value will be used. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @return a reference to the picker window generated */ launchPicker: function( url, name, width, height ) { if ( typeof( name ) == 'undefined' ) { name = 'picker'; } return popup.launch( url, name, width, height ); }, /** * Launches a new Content System folder "picker" window. * * @param element a reference to the form element into which the value chosen * in the picker should be set. If not provided, the value will not be * set. * @return a reference to the picker window generated */ launchCsDirectoryPicker: function( element ) { var picker = popup.launchPicker( "/webapps/cmsmain/folderpicker" ); if ( picker !== null ) { if ( ( typeof( element ) != 'undefined' ) && ( element !== null ) ) { picker.opener.inputEntryURLToSet = document.getElementById( element ); } picker.opener.returnFullURL = false; } return picker; } }; var BrowserSpecific = { registerListeners: function() { if( Prototype.Browser.IE ) { var inputs = $A(document.getElementsByTagName('input')); //Enter key submit handling added only for IE browser. if( inputs ) { inputs.each( function( input ) { if(input.type === 'text' && !page.util.hasClassName(input,'noFormSubmitIE')) { Event.observe( input, "keypress", this.checkEnterKeyToSubmit.bindAsEventListener( this, input ) ); } }.bind( this ) ); } } }, checkEnterKeyToSubmit: function(event, input) { //if generated character code is equal to ascii 13 (if enter key) if(event.keyCode == 13 && input.form) { var submitButtons = $(input.form).getInputs('submit'); if(submitButtons && submitButtons.size() > 0) { submitButtons.first().click(); } Event.stop(event); } else { return true; } }, // Fix FireFox bug which converts absolute links pasted into a VTBE into relative ones which // start with a variable number of "../". // https://bugzilla.mozilla.org/show_bug.cgi?id=613517 handleFirefoxPastedLinksBug: function( baseUrl, vtbeText ) { if ( !baseUrl || !vtbeText ) { return vtbeText; } if ( Prototype.Browser.Gecko ) { if( !$( baseUrl.empty() ) && !$( vtbeText.empty() ) ) { //e.g. extract out "http://localhost:80" from "http://localhost:80/webapps/Bb-wiki-BBLEARN/" // port is optional var absoluteUrlPrefix = baseUrl.match(/https?:[\d]*\/\/[^\/]+/); // e.g."../../../bbcswebdav/xid-2202_1" into "http://localhost:80/bbcswebdav/xid-2202_1" vtbeText = vtbeText.replace(/(\.\.\/)+(sessions|bbcswebdav|courses|@@)/g, absoluteUrlPrefix + "/" + "$2"); } } return vtbeText; }, disableEnterKeyInTextBoxes: function (document) { var inputs = $A(document.getElementsByTagName('input')); if( inputs ) { inputs.each ( function( input ) { //must add special className for IE textboxes if( Prototype.Browser.IE ) { input.addClassName( 'noFormSubmitIE' ); } Event.observe( input, 'keypress', this.disableEnterKey ); }.bind( this ) ); } }, disableEnterKey: function( event ) { if( event.keyCode != Event.KEY_RETURN ) { return; } Event.stop( event ); return; } };

/** * Inserts the given HTML content into the extra content cell of the standard * title bar. * * @param content The HTML content to place */ function insertTitlebarContent(content) { var contentCell = document.getElementById("_titlebarExtraContent"); contentCell.innerHTML = content; }

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Declare an object to which we can add real functions. */ if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; /** * Set an alternative error handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setErrorHandler = function(handler) { dwr.engine._errorHandler = handler; }; /** * Set an alternative warning handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setWarningHandler = function(handler) { dwr.engine._warningHandler = handler; }; /** * Setter for the text/html handler - what happens if a DWR request gets an HTML * reply rather than the expected Javascript. Often due to login timeout */ dwr.engine.setTextHtmlHandler = function(handler) { dwr.engine._textHtmlHandler = handler; }; /** * Set a default timeout value for all calls. 0 (the default) turns timeouts off. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setTimeout = function(timeout) { dwr.engine._timeout = timeout; }; /** * The Pre-Hook is called before any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPreHook = function(handler) { dwr.engine._preHook = handler; }; /** * The Post-Hook is called after any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPostHook = function(handler) { dwr.engine._postHook = handler; }; /** * Custom headers for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setHeaders = function(headers) { dwr.engine._headers = headers; }; /** * Custom parameters for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setParameters = function(parameters) { dwr.engine._parameters = parameters; }; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.XMLHttpRequest = 1; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.IFrame = 2; /** XHR remoting type constant. See dwr.engine.setRpcType() */ dwr.engine.ScriptTag = 3; /** * Set the preferred remoting type. * @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setRpcType = function(newType) { if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) { dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" }); return; } dwr.engine._rpcType = newType; }; /** * Which HTTP method do we use to send results? Must be one of "GET" or "POST". * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setHttpMethod = function(httpMethod) { if (httpMethod != "GET" && httpMethod != "POST") { dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" }); return; } dwr.engine._httpMethod = httpMethod; }; /** * Ensure that remote calls happen in the order in which they were sent? (Default: false) * @see getahead.org/dwr/browser/engine/ordering */ dwr.engine.setOrdered = function(ordered) { dwr.engine._ordered = ordered; }; /** * Do we ask the XHR object to be asynchronous? (Default: true) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setAsync = function(async) { dwr.engine._async = async; }; /** * Does DWR poll the server for updates? (Default: false) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setActiveReverseAjax = function(activeReverseAjax) { if (activeReverseAjax) { // Bail if we are already started if (dwr.engine._activeReverseAjax) return; dwr.engine._activeReverseAjax = true; dwr.engine._poll(); } else { // Can we cancel an existing request? if (dwr.engine._activeReverseAjax && dwr.engine._pollReq) dwr.engine._pollReq.abort(); dwr.engine._activeReverseAjax = false; } // TODO: in iframe mode, if we start, stop, start then the second start may // well kick off a second iframe while the first is still about to return // we should cope with this but we don't }; /** * The default message handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultErrorHandler = function(message, ex) { dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true); if (message == null || message == "") alert("A server error has occured."); // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message); else alert(message); }; /** * The default warning handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultWarningHandler = function(message, ex) { dwr.engine._debug(message); }; /** * For reduced latency you can group several remote calls together using a batch. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.beginBatch = function() { if (dwr.engine._batch) { dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" }); return; } dwr.engine._batch = dwr.engine._createBatch(); }; /** * Finished grouping a set of remote calls together. Go and execute them all. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.endBatch = function(options) { var batch = dwr.engine._batch; if (batch == null) { dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" }); return; } dwr.engine._batch = null; if (batch.map.callCount == 0) return; // The hooks need to be merged carefully to preserve ordering if (options) dwr.engine._mergeBatch(batch, options); // In ordered mode, we don't send unless the list of sent items is empty if (dwr.engine._ordered && dwr.engine._batchesLength != 0) { dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch; } else { dwr.engine._sendData(batch); } }; /** @deprecated */ dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); }; dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); }; dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); }; dwr.engine.setPollType = function() { dwr.engine._debug("Manually setting the Poll Type is not supported"); }; //============================================================================== // Only private stuff below here //============================================================================== /** The original page id sent from the server */ dwr.engine._origScriptSessionId = "CB2F27ACF1CDDA1452A522EE2311845B"; /** The session cookie name */ dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID /** Is GET enabled for the benefit of Safari? */ dwr.engine._allowGetForSafariButMakeForgeryEasier = "false"; /** The script prefix to strip in the case of scriptTagProtection. */ dwr.engine._scriptTagProtection = "throw 'allowScriptTagRemoting is false.';"; /** The default path to the DWR servlet */ dwr.engine._defaultPath = "/webapps/assessment/dwr_open"; /** Do we use XHR for reverse ajax because we are not streaming? */ dwr.engine._pollWithXhr = "false"; /** The read page id that we calculate */ dwr.engine._scriptSessionId = null; /** The function that we use to fetch/calculate a session id */ dwr.engine._getScriptSessionId = function() { if (dwr.engine._scriptSessionId == null) { dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000); } return dwr.engine._scriptSessionId; }; /** A function to call if something fails. */ dwr.engine._errorHandler = dwr.engine.defaultErrorHandler; /** For debugging when something unexplained happens. */ dwr.engine._warningHandler = dwr.engine.defaultWarningHandler; /** A function to be called before requests are marshalled. Can be null. */ dwr.engine._preHook = null; /** A function to be called after replies are received. Can be null. */ dwr.engine._postHook = null; /** An map of the batches that we have sent and are awaiting a reply on. */ dwr.engine._batches = {}; /** A count of the number of outstanding batches. Should be == to _batches.length unless prototype has messed things up */ dwr.engine._batchesLength = 0; /** In ordered mode, the array of batches waiting to be sent */ dwr.engine._batchQueue = []; /** What is the default rpc type */ dwr.engine._rpcType = dwr.engine.XMLHttpRequest; /** What is the default remoting method (ie GET or POST) */ dwr.engine._httpMethod = "POST"; /** Do we attempt to ensure that calls happen in the order in which they were sent? */ dwr.engine._ordered = false; /** Do we make the calls async? */ dwr.engine._async = true; /** The current batch (if we are in batch mode) */ dwr.engine._batch = null; /** The global timeout */ dwr.engine._timeout = 0; /** ActiveX objects to use when we want to convert an xml string into a DOM object. */ dwr.engine._DOMDocument = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; /** The ActiveX objects to use when we want to do an XMLHttpRequest call. */ dwr.engine._XMLHTTP = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; /** Are we doing comet or polling? */ dwr.engine._activeReverseAjax = false; /** The iframe that we are using to poll */ dwr.engine._outstandingIFrames = []; /** The xhr object that we are using to poll */ dwr.engine._pollReq = null; /** How many milliseconds between internal comet polls */ dwr.engine._pollCometInterval = 200; /** How many times have we re-tried to poll? */ dwr.engine._pollRetries = 0; dwr.engine._maxPollRetries = 0; /** Do we do a document.reload if we get a text/html reply? */ dwr.engine._textHtmlHandler = null; /** If you wish to send custom headers with every request */ dwr.engine._headers = null; /** If you wish to send extra custom request parameters with each request */ dwr.engine._parameters = null; /** Undocumented interceptors - do not use */ dwr.engine._postSeperator = "\n"; dwr.engine._defaultInterceptor = function(data) { return data; }; dwr.engine._urlRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._contentRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._replyRewriteHandler = dwr.engine._defaultInterceptor; /** Batch ids allow us to know which batch the server is answering */ dwr.engine._nextBatchId = 0; /** A list of the properties that need merging from calls to a batch */ dwr.engine._propnames = [ "rpcType", "httpMethod", "async", "timeout", "errorHandler", "warningHandler", "textHtmlHandler" ]; /** Do we stream, or can be hacked to do so? */ dwr.engine._partialResponseNo = 0; dwr.engine._partialResponseYes = 1; dwr.engine._partialResponseFlush = 2; /** Is this page in the process of unloading? */ dwr.engine._unloading = false; /** * @private Send a request. Called by the Javascript interface stub * @param path part of URL after the host and before the exec bit without leading or trailing /s * @param scriptName The class to execute * @param methodName The method on said class to execute * @param func The callback function to which any returned data should be passed * if this is null, any returned data will be ignored * @param vararg_params The parameters to pass to the above class */ dwr.engine._execute = function(path, scriptName, methodName, vararg_params) { var singleShot = false; if (dwr.engine._batch == null) { dwr.engine.beginBatch(); singleShot = true; } var batch = dwr.engine._batch; // To make them easy to manipulate we copy the arguments into an args array var args = []; for (var i = 0; i < arguments.length - 3; i++) { args[i] = arguments[i + 3]; } // All the paths MUST be to the same servlet if (batch.path == null) { batch.path = path; } else { if (batch.path != path) { dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." }); return; } } // From the other params, work out which is the function (or object with // call meta-data) and which is the call parameters var callData; var lastArg = args[args.length - 1]; if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() }; else callData = args.pop(); // Merge from the callData into the batch dwr.engine._mergeBatch(batch, callData); batch.handlers[batch.map.callCount] = { exceptionHandler:callData.exceptionHandler, callback:callData.callback }; // Copy to the map the things that need serializing var prefix = "c" + batch.map.callCount + "-"; batch.map[prefix + "scriptName"] = scriptName; batch.map[prefix + "methodName"] = methodName; batch.map[prefix + "id"] = batch.map.callCount; for (i = 0; i < args.length; i++) { dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i); } // Now we have finished remembering the call, we incr the call count batch.map.callCount++; if (singleShot) dwr.engine.endBatch(); }; /** @private Poll the server to see if there is any data waiting */ dwr.engine._poll = function() { if (!dwr.engine._activeReverseAjax) return; var batch = dwr.engine._createBatch(); batch.map.id = 0; // TODO: Do we need this?? batch.map.callCount = 1; batch.isPoll = true; if (dwr.engine._pollWithXhr == "true") { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } else { if (navigator.userAgent.indexOf("Gecko/") != -1) { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseYes; } else { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } } batch.httpMethod = "POST"; batch.async = true; batch.timeout = 0; batch.path = dwr.engine._defaultPath; batch.preHooks = []; batch.postHooks = []; batch.errorHandler = dwr.engine._pollErrorHandler; batch.warningHandler = dwr.engine._pollErrorHandler; batch.handlers[0] = { callback:function(pause) { dwr.engine._pollRetries = 0; setTimeout(dwr.engine._poll, pause); } }; // Send the data dwr.engine._sendData(batch); if (batch.rpcType == dwr.engine.XMLHttpRequest && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._checkCometPoll(); } }; /** Try to recover from polling errors */ dwr.engine._pollErrorHandler = function(msg, ex) { // if anything goes wrong then just silently try again (up to 3x) after 10s dwr.engine._pollRetries++; dwr.engine._debug("Reverse Ajax poll failed (pollRetries=" + dwr.engine._pollRetries + "): " + ex.name + " : " + ex.message); if (dwr.engine._pollRetries < dwr.engine._maxPollRetries) { setTimeout(dwr.engine._poll, 10000); } else { dwr.engine._activeReverseAjax = false; dwr.engine._debug("Giving up."); } }; /** @private Generate a new standard batch */ dwr.engine._createBatch = function() { var batch = { map:{ callCount:0, page:window.location.pathname + window.location.search, httpSessionId:dwr.engine._getJSessionId(), scriptSessionId:dwr.engine._getScriptSessionId() }, charsProcessed:0, paramCount:0, parameters:{}, headers:{}, isPoll:false, handlers:{}, preHooks:[], postHooks:[], rpcType:dwr.engine._rpcType, httpMethod:dwr.engine._httpMethod, async:dwr.engine._async, timeout:dwr.engine._timeout, errorHandler:dwr.engine._errorHandler, warningHandler:dwr.engine._warningHandler, textHtmlHandler:dwr.engine._textHtmlHandler }; if (dwr.engine._preHook) batch.preHooks.push(dwr.engine._preHook); if (dwr.engine._postHook) batch.postHooks.push(dwr.engine._postHook); var propname, data; if (dwr.engine._headers) { for (propname in dwr.engine._headers) { data = dwr.engine._headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (dwr.engine._parameters) { for (propname in dwr.engine._parameters) { data = dwr.engine._parameters[propname]; if (typeof data != "function") batch.parameters[propname] = data; } } return batch; }; /** @private Take further options and merge them into */ dwr.engine._mergeBatch = function(batch, overrides) { var propname, data; for (var i = 0; i < dwr.engine._propnames.length; i++) { propname = dwr.engine._propnames[i]; if (overrides[propname] != null) batch[propname] = overrides[propname]; } if (overrides.preHook != null) batch.preHooks.unshift(overrides.preHook); if (overrides.postHook != null) batch.postHooks.push(overrides.postHook); if (overrides.headers) { for (propname in overrides.headers) { data = overrides.headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (overrides.parameters) { for (propname in overrides.parameters) { data = overrides.parameters[propname]; if (typeof data != "function") batch.map["p-" + propname] = "" + data; } } }; /** @private What is our session id? */ dwr.engine._getJSessionId = function() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length); if (cookie.indexOf(dwr.engine._sessionCookieName + "=") == 0) { return cookie.substring(dwr.engine._sessionCookieName.length + 1, cookie.length); } } return ""; }; /** @private Check for reverse Ajax activity */ dwr.engine._checkCometPoll = function() { for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { var text = ""; var iframe = dwr.engine._outstandingIFrames[i]; try { text = dwr.engine._getTextFromCometIFrame(iframe); } catch (ex) { dwr.engine._handleWarning(iframe.batch, ex); } if (text != "") dwr.engine._processCometResponse(text, iframe.batch); } if (dwr.engine._pollReq) { var req = dwr.engine._pollReq; var text = req.responseText; if (text != null) dwr.engine._processCometResponse(text, req.batch); } // If the poll resources are still there, come back again if (dwr.engine._outstandingIFrames.length > 0 || dwr.engine._pollReq) { setTimeout(dwr.engine._checkCometPoll, dwr.engine._pollCometInterval); } }; /** @private Extract the whole (executed an all) text from the current iframe */ dwr.engine._getTextFromCometIFrame = function(frameEle) { var body = frameEle.contentWindow.document.body; if (body == null) return ""; var text = body.innerHTML; // We need to prevent IE from stripping line feeds if (text.indexOf("<PRE>") == 0 || text.indexOf("<pre>") == 0) { text = text.substring(5, text.length - 7); } return text; }; /** @private Some more text might have come in, test and execute the new stuff */ dwr.engine._processCometResponse = function(response, batch) { if (batch.charsProcessed == response.length) return; if (response.length == 0) { batch.charsProcessed = 0; return; } var firstStartTag = response.indexOf("//#DWR-START#", batch.charsProcessed); if (firstStartTag == -1) { // dwr.engine._debug("No start tag (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed) + "'"); batch.charsProcessed = response.length; return; } // if (firstStartTag > 0) { // dwr.engine._debug("Start tag not at start (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed, firstStartTag) + "'"); // } var lastEndTag = response.lastIndexOf("//#DWR-END#"); if (lastEndTag == -1) { // dwr.engine._debug("No end tag. unchanged charsProcessed=" + batch.charsProcessed); return; } // Skip the end tag too for next time, remembering CR and LF if (response.charCodeAt(lastEndTag + 11) == 13 && response.charCodeAt(lastEndTag + 12) == 10) { batch.charsProcessed = lastEndTag + 13; } else { batch.charsProcessed = lastEndTag + 11; } var exec = response.substring(firstStartTag + 13, lastEndTag); dwr.engine._receivedBatch = batch; dwr.engine._eval(exec); dwr.engine._receivedBatch = null; }; /** @private Actually send the block of data in the batch object. */ dwr.engine._sendData = function(batch) { batch.map.batchId = dwr.engine._nextBatchId; dwr.engine._nextBatchId++; dwr.engine._batches[batch.map.batchId] = batch; dwr.engine._batchesLength++; batch.completed = false; for (var i = 0; i < batch.preHooks.length; i++) { batch.preHooks[i](); } batch.preHooks = null; // Set a timeout if (batch.timeout && batch.timeout != 0) { batch.timeoutId = setTimeout(function() { dwr.engine._abortRequest(batch); }, batch.timeout); } // Get setup for XMLHttpRequest if possible if (batch.rpcType == dwr.engine.XMLHttpRequest) { if (window.XMLHttpRequest) { batch.req = new XMLHttpRequest(); } // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) { batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP); } } var prop, request; if (batch.req) { // Proceed using XMLHttpRequest if (batch.async) { batch.req.onreadystatechange = function() { if (typeof dwr != 'undefined') dwr.engine._stateChange(batch); }; } // If we're polling, record this for monitoring if (batch.isPoll) { dwr.engine._pollReq = batch.req; // In IE XHR is an ActiveX control so you can't augment it like this if (!(document.all && !window.opera)) batch.req.batch = batch; } // Workaround for Safari 1.x POST bug var indexSafari = navigator.userAgent.indexOf("Safari/"); if (indexSafari >= 0) { var version = navigator.userAgent.substring(indexSafari + 7); if (parseInt(version, 10) < 400) { if (dwr.engine._allowGetForSafariButMakeForgeryEasier == "true") batch.httpMethod = "GET"; else dwr.engine._handleWarning(batch, { name:"dwr.engine.oldSafari", message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier." }); } } batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); try { batch.req.open(batch.httpMethod, request.url, batch.async); try { for (prop in batch.headers) { var value = batch.headers[prop]; if (typeof value == "string") batch.req.setRequestHeader(prop, value); } if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain"); } catch (ex) { dwr.engine._handleWarning(batch, ex); } batch.req.send(request.body); if (!batch.async) dwr.engine._stateChange(batch); } catch (ex) { dwr.engine._handleError(batch, ex); } } else if (batch.rpcType != dwr.engine.ScriptTag) { var idname = batch.isPoll ? "dwr-if-poll-" + batch.map.batchId : "dwr-if-" + batch.map.batchId; // Removed htmlfile implementation. Don't expect it to return before v3 batch.div = document.createElement("div"); // Add the div to the document first, otherwise IE 6 will ignore onload handler. document.body.appendChild(batch.div); batch.div.innerHTML = "<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='" + idname + "' name='" + idname + "' onload='dwr.engine._iframeLoadingComplete (" + batch.map.batchId + ");'></iframe>"; batch.document = document; batch.iframe = batch.document.getElementById(idname); batch.iframe.batch = batch; batch.mode = batch.isPoll ? dwr.engine._ModeHtmlPoll : dwr.engine._ModeHtmlCall; if (batch.isPoll) dwr.engine._outstandingIFrames.push(batch.iframe); request = dwr.engine._constructRequest(batch); if (batch.httpMethod == "GET") { batch.iframe.setAttribute("src", request.url); } else { batch.form = batch.document.createElement("form"); batch.form.setAttribute("id", "dwr-form"); batch.form.setAttribute("action", request.url); batch.form.setAttribute("style", "display:none;"); batch.form.setAttribute("target", idname); batch.form.target = idname; batch.form.setAttribute("method", batch.httpMethod); for (prop in batch.map) { var value = batch.map[prop]; if (typeof value != "function") { var formInput = batch.document.createElement("input"); formInput.setAttribute("type", "hidden"); formInput.setAttribute("name", prop); formInput.setAttribute("value", value); batch.form.appendChild(formInput); } } batch.document.body.appendChild(batch.form); batch.form.submit(); } } else { batch.httpMethod = "GET"; // There's no such thing as ScriptTag using POST batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); batch.script = document.createElement("script"); batch.script.id = "dwr-st-" + batch.map["c0-id"]; batch.script.src = request.url; document.body.appendChild(batch.script); } }; dwr.engine._ModePlainCall = "/call/plaincall/"; dwr.engine._ModeHtmlCall = "/call/htmlcall/"; dwr.engine._ModePlainPoll = "/call/plainpoll/"; dwr.engine._ModeHtmlPoll = "/call/htmlpoll/"; /** @private Work out what the URL should look like */ dwr.engine._constructRequest = function(batch) { // A quick string to help people that use web log analysers var request = { url:batch.path + batch.mode, body:null }; if (batch.isPoll == true) { request.url += "ReverseAjax.dwr"; } else if (batch.map.callCount == 1) { request.url += batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr"; } else { request.url += "Multiple." + batch.map.callCount + ".dwr"; } // Play nice with url re-writing var sessionMatch = location.href.match(/jsessionid=([^?]+)/); if (sessionMatch != null) { request.url += ";jsessionid=" + sessionMatch[1]; } var prop; if (batch.httpMethod == "GET") { // Some browsers (Opera/Safari2) seem to fail to convert the callCount value // to a string in the loop below so we do it manually here. batch.map.callCount = "" + batch.map.callCount; request.url += "?"; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.url += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&"; } } request.url = request.url.substring(0, request.url.length - 1); } else { // PERFORMANCE: for iframe mode this is thrown away. request.body = ""; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = []; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { buf.push(prop + "=" + batch.map[prop] + dwr.engine._postSeperator); } } request.body = buf.join(""); } else { // Use string concat on other browsers (fastest) for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.body += prop + "=" + batch.map[prop] + dwr.engine._postSeperator; } } } request.body = dwr.engine._contentRewriteHandler(request.body); } request.url = dwr.engine._urlRewriteHandler(request.url); return request; }; /** @private Called by XMLHttpRequest to indicate that something has happened */ dwr.engine._stateChange = function(batch) { var toEval; if (batch.completed) { dwr.engine._debug("Error: _stateChange() with batch.completed"); return; } var req = batch.req; try { if (req.readyState != 4) return; } catch (ex) { dwr.engine._handleWarning(batch, ex); // It's broken - clear up and forget this call dwr.engine._clearUp(batch); return; } if (dwr.engine._unloading) { dwr.engine._debug("Ignoring reply from server as page is unloading."); return; } try { var reply = req.responseText; reply = dwr.engine._replyRewriteHandler(reply); var status = req.status; // causes Mozilla to except on page moves if (reply == null || reply == "") { dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data received from server" }); } else if (status != 200) { dwr.engine._handleError(batch, { name:"dwr.engine.http." + status, message:req.statusText }); } else { var contentType = req.getResponseHeader("Content-Type"); if (!contentType.match(/^text\/plain/) && !contentType.match(/^text\/javascript/)) { if (contentType.match(/^text\/html/) && typeof batch.textHtmlHandler == "function") { batch.textHtmlHandler({ status:status, responseText:reply, contentType:contentType }); } else { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidMimeType", message:"Invalid content type: '" + contentType + "'" }); } } else { // Comet replies might have already partially executed if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._processCometResponse(reply, batch); } else { if (reply.search("//#DWR") == -1) { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" }); } else { toEval = reply; } } } } } catch (ex) { dwr.engine._handleWarning(batch, ex); } dwr.engine._callPostHooks(batch); // Outside of the try/catch so errors propogate normally: dwr.engine._receivedBatch = batch; if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, ""); dwr.engine._eval(toEval); dwr.engine._receivedBatch = null; dwr.engine._validateBatch(batch); if (!batch.completed) dwr.engine._clearUp(batch); }; /** * @private This function is invoked when a batch reply is received. * It checks that there is a response for every call in the batch. Otherwise, * an error will be signaled (a call without a response indicates that the * server failed to send complete batch response). */ dwr.engine._validateBatch = function(batch) { // If some call left unreplied, report an error. if (!batch.completed) { for (var i = 0; i < batch.map.callCount; i++) { if (batch.handlers[i] != null) { dwr.engine._handleWarning(batch, { name:"dwr.engine.incompleteReply", message:"Incomplete reply from server" }); break; } } } } /** @private Called from iframe onload, check batch using batch-id */ dwr.engine._iframeLoadingComplete = function(batchId) { // dwr.engine._checkCometPoll(); var batch = dwr.engine._batches[batchId]; if (batch) dwr.engine._validateBatch(batch); } /** @private Called by the server: Execute a callback */ dwr.engine._remoteHandleCallback = function(batchId, callId, reply) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true); return; } // Error handlers inside here indicate an error that is nothing to do // with DWR so we handle them differently. try { var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (!handlers) { dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true); } else if (typeof handlers.callback == "function") handlers.callback(reply); } catch (ex) { dwr.engine._handleError(batch, ex); } }; /** @private Called by the server: Handle an exception for a call */ dwr.engine._remoteHandleException = function(batchId, callId, ex) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; } var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; } if (ex.message == undefined) ex.message = ""; if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex); else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); }; /** @private Called by the server: The whole batch is broken */ dwr.engine._remoteHandleBatchException = function(ex, batchId) { var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: Reverse ajax should not be used */ dwr.engine._remotePollCometDisabled = function(ex, batchId) { dwr.engine.setActiveReverseAjax(false); var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: An IFrame reply is about to start */ dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) { if (iframe != null) dwr.engine._receivedBatch = iframe.batch; dwr.engine._callPostHooks(dwr.engine._receivedBatch); }; /** @private Called by the server: An IFrame reply is just completing */ dwr.engine._remoteEndIFrameResponse = function(batchId) { dwr.engine._clearUp(dwr.engine._receivedBatch); dwr.engine._receivedBatch = null; }; /** @private This is a hack to make the context be this window */ dwr.engine._eval = function(script) { if (script == null) return null; if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; } // dwr.engine._debug("Exec: [" + script + "]", true); return eval(script); }; /** @private Called as a result of a request timeout */ dwr.engine._abortRequest = function(batch) { if (batch && !batch.completed) { dwr.engine._clearUp(batch); if (batch.req) batch.req.abort(); dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" }); } }; /** @private call all the post hooks for a batch */ dwr.engine._callPostHooks = function(batch) { if (batch.postHooks) { for (var i = 0; i < batch.postHooks.length; i++) { batch.postHooks[i](); } batch.postHooks = null; } }; /** @private A call has finished by whatever means and we need to shut it all down. */ dwr.engine._clearUp = function(batch) { if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; } if (batch.completed) { dwr.engine._debug("Warning: Double complete", true); return; } // IFrame tidyup if (batch.div) batch.div.parentNode.removeChild(batch.div); if (batch.iframe) { // If this is a poll frame then stop comet polling for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { if (dwr.engine._outstandingIFrames[i] == batch.iframe) { dwr.engine._outstandingIFrames.splice(i, 1); } } batch.iframe.parentNode.removeChild(batch.iframe); } if (batch.form) batch.form.parentNode.removeChild(batch.form); // XHR tidyup: avoid IE handles increase if (batch.req) { // If this is a poll frame then stop comet polling if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null; delete batch.req; } // Timeout tidyup if (batch.timeoutId) { clearTimeout(batch.timeoutId); delete batch.timeoutId; } if (batch.map && (batch.map.batchId || batch.map.batchId == 0)) { delete dwr.engine._batches[batch.map.batchId]; dwr.engine._batchesLength--; } batch.completed = true; // If there is anything on the queue waiting to go out, then send it. // We don't need to check for ordered mode, here because when ordered mode // gets turned off, we still process *waiting* batches in an ordered way. if (dwr.engine._batchQueue.length != 0) { var sendbatch = dwr.engine._batchQueue.shift(); dwr.engine._sendData(sendbatch); } }; /** @private Abort any XHRs in progress at page unload (solves zombie socket problems in IE). */ dwr.engine._unloader = function() { dwr.engine._unloading = true; // Empty queue of waiting ordered requests dwr.engine._batchQueue.length = 0; // Abort any ongoing XHRs and clear their batches for (var batchId in dwr.engine._batches) { var batch = dwr.engine._batches[batchId]; // Only process objects that look like batches (avoid prototype additions!) if (batch && batch.map) { if (batch.req) { batch.req.abort(); } dwr.engine._clearUp(batch); } } }; // Now register the unload handler if (window.addEventListener) window.addEventListener('unload', dwr.engine._unloader, false); else if (window.attachEvent) window.attachEvent('onunload', dwr.engine._unloader); /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleError = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleWarning = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex); else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** * @private Marshall a data item * @param batch A map of variables to how they have been marshalled * @param referto An array of already marshalled variables to prevent recurrsion * @param data The data to be marshalled * @param name The name of the data being marshalled */ dwr.engine._serializeAll = function(batch, referto, data, name) { if (data == null) { batch.map[name] = "null:null"; return; } switch (typeof data) { case "boolean": batch.map[name] = "boolean:" + data; break; case "number": batch.map[name] = "number:" + data; break; case "string": batch.map[name] = "string:" + encodeURIComponent(data); break; case "object": if (data instanceof String) batch.map[name] = "String:" + encodeURIComponent(data); else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data; else if (data instanceof Number) batch.map[name] = "Number:" + data; else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime(); else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name); else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name); break; case "function": // We just ignore functions. break; default: dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." }); batch.map[name] = "default:" + data; break; } }; /** @private Have we already converted this object? */ dwr.engine._lookup = function(referto, data, name) { var lookup; // Can't use a map: getahead.org/ajax/javascript-gotchas for (var i = 0; i < referto.length; i++) { if (referto[i].data == data) { lookup = referto[i]; break; } } if (lookup) return "reference:" + lookup.name; referto.push({ data:data, name:name }); return null; }; /** @private Marshall an object */ dwr.engine._serializeObject = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; // This check for an HTML is not complete, but is there a better way? // Maybe we should add: data.hasChildNodes typeof "function" == true if (data.nodeName && data.nodeType) { return dwr.engine._serializeXml(batch, referto, data, name); } // treat objects as an associative arrays var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{"; var element; for (element in data) { if (typeof data[element] != "function") { batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[element], childName); reply += encodeURIComponent(element) + ":reference:" + childName + ", "; } } if (reply.substring(reply.length - 2) == ", ") { reply = reply.substring(0, reply.length - 2); } reply += "}"; return reply; }; /** @private Returns the classname of supplied argument obj */ dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError }; dwr.engine._getObjectClassName = function(obj) { // Try to find the classname by stringifying the object's constructor // and extract <class> from "function <class>". if (obj && obj.constructor && obj.constructor.toString) { var str = obj.constructor.toString(); var regexpmatch = str.match(/function\s+(\w+)/); if (regexpmatch && regexpmatch.length == 2) { return regexpmatch[1]; } } // Now manually test against the core Error classes, as these in some // browsers successfully match to the wrong class in the // Object.toString() test we will do later if (obj && obj.constructor) { for (var errorname in dwr.engine._errorClasses) { if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname; } } // Try to find the classname by calling Object.toString() on the object // and extracting <class> from "[object <class>]" if (obj) { var str = Object.prototype.toString.call(obj); var regexpmatch = str.match(/\[object\s+(\w+)/); if (regexpmatch && regexpmatch.length==2) { return regexpmatch[1]; } } // Supplied argument was probably not an object, but what is better? return "Object"; }; /** @private Marshall an object */ dwr.engine._serializeXml = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; var output; if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data); else if (data.toXml) output = data.toXml; else output = data.innerHTML; return "XML:" + encodeURIComponent(output); }; /** @private Marshall an array */ dwr.engine._serializeArray = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = ["Array:["]; for (var i = 0; i < data.length; i++) { if (i != 0) buf.push(","); batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); buf.push("reference:"); buf.push(childName); } buf.push("]"); reply = buf.join(""); } else { // Use string concat on other browsers (fastest) var reply = "Array:["; for (var i = 0; i < data.length; i++) { if (i != 0) reply += ","; batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); reply += "reference:"; reply += childName; } reply += "]"; } return reply; }; /** @private Convert an XML string into a DOM object. */ dwr.engine._unserializeDocument = function(xml) { var dom; if (window.DOMParser) { var parser = new DOMParser(); dom = parser.parseFromString(xml, "text/xml"); if (!dom.documentElement || dom.documentElement.tagName == "parsererror") { var message = dom.documentElement.firstChild.data; message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data; throw message; } return dom; } else if (window.ActiveXObject) { dom = dwr.engine._newActiveXObject(dwr.engine._DOMDocument); dom.loadXML(xml); // What happens on parse fail with IE? return dom; } else { var div = document.createElement("div"); div.innerHTML = xml; return div; } }; /** @param axarray An array of strings to attempt to create ActiveX objects from */ dwr.engine._newActiveXObject = function(axarray) { var returnValue; for (var i = 0; i < axarray.length; i++) { try { returnValue = new ActiveXObject(axarray[i]); break; } catch (ex) { /* ignore */ } } return returnValue; }; /** @private Used internally when some message needs to get to the programmer */ dwr.engine._debug = function(message, stacktrace) { var written = false; try { if (window.console) { if (stacktrace && window.console.trace) window.console.trace(); window.console.log(message); written = true; } else if (window.opera && window.opera.postError) { window.opera.postError(message); written = true; } } catch (ex) { /* ignore */ } if (!written) { var debug = document.getElementById("dwr-debug"); if (debug) { var contents = message + "<br/>" + debug.innerHTML; if (contents.length > 2048) contents = contents.substring(0, 2048); debug.innerHTML = contents; } } };

// Provide a default path to dwr.engine if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; if (UserDataDWRFacade == null) var UserDataDWRFacade = {}; UserDataDWRFacade._path = '/webapps/assessment/dwr_open'; UserDataDWRFacade.getStringTempScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringTempScope', p0, callback); } UserDataDWRFacade.setStringTempScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringTempScope', p0, p1, callback); } UserDataDWRFacade.getStringPermScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringPermScope', p0, callback); } UserDataDWRFacade.setStringPermScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringPermScope', p0, p1, callback); }

var assessment = {}; assessment.submitDrawerUrl=""; assessment.questionVisibility = true; assessment.blockToLeaveVisible = 'null'; assessment.savingRightNow = false; // aka - might rename to (if not remove eventually): assessment.nonceHasBeenUsed assessment.submittingRightNow = false; // set to true when we're submitting the assessment as a whole - used to block other submits assessment.gotNewNonceIdFlag = false; assessment.userReallyWantsToSubmit = false; assessment.isInUse = false; assessment.safetyNetDelay = 60; // Number of seconds to wait before telling the user that it is taking too long. assessment.alreadySavedSafetyNetId = null; assessment.saveSequence = 0; // TODO: Set from the server based on time when page is loaded assessment.isOneByOne = false; /************************** methods related to pool and test canvas per question add/edit/ copy/ remove********************/ function findAssessmentForm() { var assessmentForm = null; var documentForms = document.getElementsByTagName('form'); assessmentForm = $A( documentForms ).find( function( documentForm ) { var theAction = $( documentForm ).readAttribute( "action" ); return theAction.indexOf( "webapps/assessment/" ) != -1; }); return assessmentForm; } function submit(method, theForm) { if (!validateForm()) { return false; } if ( !theForm ) { // no form specified so try to find it theForm = findAssessmentForm(); } if(method == "createNew") { theForm.elements.assessmentId.value = null; } theForm.elements.method.value = method; theForm.submit(); return false; } function getFormByInputElement( elementName ) { var element = document.getElementsByName( elementName )[0]; return element.form; } // TODO: Rewrite this file to put all these methods into a namespace like assessment.XXX function modifyAssessment() { submit('modifyAssessment'); } function setQuestionId(questionId) { getFormByInputElement("questionId").questionId.value = questionId; } function modifyContentSettings( val ) { // properties|feedback|presentation|metadata submit( val ); } function addQuestionBefore(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated var theForm = getFormByInputElement("relativeId"); assessment.checkTheCheckBox (qId); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionBefore', theForm); } function addQuestionAfter(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (qId); var theForm = getFormByInputElement("relativeId"); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionAfter', theForm); } function addNGQuestion(sectionId, qtype, position) { var theForm = getFormByInputElement("questionType"); theForm.questionType.value = qtype; theForm.sectionId.value = sectionId; theForm.position.value = position; submit('addQuestion', theForm); } function modifyAssessmentInfo() { submit('modifyAssessmentInfo'); } function modifyHelper(questionId, method) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); setQuestionId(questionId); submit(method, theForm); } function modifyQuestion(questionId) { modifyHelper(questionId, 'modifyQuestion'); } function modifyRandomBlock(questionId) { modifyHelper(questionId, 'modifyRandomBlock'); } function modifyLinkQuestion(questionId) { getFormByInputElement("isLinkedQuestion").isLinkedQuestion.value = 'true'; modifyQuestion(questionId); } function copyQuestion(sectionId, questionId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("sectionId"); theForm.sectionId.value = sectionId; setQuestionId(questionId); submit('copyQuestion', theForm); } function copyLinkQuestion(sectionId, questionId, qbId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); theForm.sectionId.value = sectionId; theForm.questionBlockId.value = qbId; setQuestionId(questionId); submit('copyLinkQuestion', theForm); } function remove(id, type ) { if ( assessment.isInUse ) { var suffix = ( assessment.type == 'Survey'?'.survey':''); if ( !type ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_question.regrade" + suffix ) ); } else if ( type == 'question_link' ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.remove_question_link.regrade" + suffix ) ); } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_item.regrade" + suffix ) ); } } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString("confirm.delete_item")); } } assessment.removeEntity= function(id, message) { if (window.confirm(message)) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (id); var theForm = getFormByInputElement("questionId"); setQuestionId(id); submit('remove', theForm); } }; function reposition(id, position) { setQuestionId(id); var theForm = getFormByInputElement("questionId"); theForm.position.value = position; submit('reposition', theForm); } assessment.submitModifyQuestion = function() { submit('modifyQuestion'); }; assessment.cancelWarning = function() { var theForm = getFormByInputElement("methodEx"); theForm.elements.methodEx.value = 'modifyAssessment'; theForm.submit(); return false; }; function isCheckbox(element) { return (element && element.type && element.type == "checkbox"); } /******************* methods related to bulk update logic on the test/pool canvas*********************/ assessment.removeAll= function(container,showCount) { var count = 0; var inputs = list.checkboxes.get(container); for(var i=0; i<inputs.length; i++){ if(isCheckbox(inputs[i]) && inputs[i].checked ) { count ++; } } if (showCount?window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count",[count])):window.confirm(ASSESSMENT_RESOURCES.getString("confirm.delete_items")) ) { submit('removeBulk'); } }; assessment.removeAllPublished= function(message) { if (window.confirm(message)) { submit('removeBulk'); } }; assessment.updatePointsForAll = function(){ var element = document.getElementsByName("points_bulk"); if ( assessment.validatePoints(element) && ( !assessment.isInUse || confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) ) { submit('updatePointsBulk'); } return false; }; assessment.updatePointsInput = function(event) { var elements = document.getElementsByName("points_bulk"); var element = Event.findElement(event); var pointsValue = element.value; if (pointsValue ) { if (elements) { elements[0].value = pointsValue; elements[1].value = pointsValue; } } }; /*************************** common js methods for assessments**********************************************/ /** validate Input Field value **/ assessment.validateMiniFlyoutInputValue = function(element){ var value = null; if($(element) ) { value = $(element).value; } if ( !value ) { return ASSESSMENT_RESOURCES.getString("update.input.value"); } if ( !isNumeric( value, true ) ) { return ASSESSMENT_RESOURCES.getString("update.input.valid.value"); } return ""; }; assessment.validatePoints = function(element){ if (element) { var pointsTextBox = element[0] || element[1]; var pointsValue = pointsTextBox.value; return assessment.validateNumericInput(pointsTextBox, pointsValue, ASSESSMENT_RESOURCES.getString("update.points.value"), ASSESSMENT_RESOURCES.getString("update.points.valid.value"),true); } return true; }; assessment.validateCount = function(element) { if (element) { var countValue = element.value; return assessment.validateNumericInput(element, countValue, ASSESSMENT_RESOURCES.getString("update.count.value"), ASSESSMENT_RESOURCES.getString("update.count.valid.value")); } return true; }; assessment.validateNumericInput = function(textBox, value, blankMsg, badMsg,isFloat) { var checkForFloats = false; var numFormat = LOCALE_SETTINGS.getString('float.format'); var isValidNum = false; var re, trimmedVal; trimmedVal = value.trim(); if(isFloat != 'null') { checkForFloats = true; } if ( !value ) { alert(blankMsg); textBox.focus(); return false; } var numVal = null; if (!checkForFloats) { numVal = parseInt( value, 10); isValidNum = (!isNaN(numVal) && numVal >= 0); } else if ( typeof ( numFormat ) != 'undefined' ) { // hand parse for l10n re = new RegExp( numFormat ); isValidNum = ( trimmedVal.search( re ) === 0 ); } else { // try to use platform native (non-localized) numVal = parseFloat( trimmedVal ); isValidNum = !isNaN( numVal ); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test( trimmedVal.substring( numVal.toString().length ) ); } } if (!isValidNum) { alert(badMsg); textBox.value=""; textBox.focus(); return false; } return true; }; function back() { submit('back'); } function persistDisplayPreference(element, value){ UserDataDWRFacade.setStringTempScope( element, value ); } assessment.refreshParent = function( url ) { if ( window.opener ) { window.opener.location.href = url; if ( window.opener.progressWindow ) { window.opener.progressWindow.close(); } window.close(); } else { // We expected to be in a new window, but aren't. Perhaps this was a link from an announcement? window.location = url; } }; assessment.checkTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = true; } }; assessment.unCheckTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = false; } }; var startX; //set x offset of bar in pixels var startY; var padding = 53; var verticalpos="fromtop"; //enter "fromtop" or "frombottom" function setPadding(pad) { padding = pad; } function iecompattest(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body; } function resetInstructionHeight() { startY = document.getElementById("instructionBlock").offsetTop +document.getElementById("instructionBlock").clientHeight + padding; startX = document.getElementById("instructionBlock").offsetLeft; document.getElementById("dataCollectionContainer").style.position = "relative"; var tbh = document.getElementById("topbar").clientHeight; document.getElementById("containerdiv").style.paddingBottom = (32 + tbh) + "px"; if (document.getElementById("topbar").offsetTop !== 0) { document.getElementById("dataCollectionContainer").style.top=tbh+"px"; } } function staticbar(){ var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera; var d = document; function ml(id){ var el=d.getElementById(id); el.style.visibility="visible"; if(d.layers) { el.style=el; } el.sP=function(x,y,r) { this.style.left=x+"px"; this.style.top=y+6+"px"; if(r>-1) {this.style.right=r+"px";}; }; el.x = startX; el.y = startY; return el; } window.stayTopLeft = function() { var right = -1; var pY = ns ? window.pageYOffset : iecompattest().scrollTop; if (pY < startY) { window.ftlObj.y = startY - pY; document.getElementById("dataCollectionContainer").style.top=document.getElementById("topbar").clientHeight+4+"px"; } else { window.ftlObj.y = 0; } window.ftlObj.x = document.getElementById("instructionBlock").offsetLeft; if(page.util.isRTL()) { right = document.documentElement.clientWidth - (ftlObj.x + document.getElementById("instructionBlock").offsetWidth); } window.ftlObj.sP( window.ftlObj.x, window.ftlObj.y, right); setTimeout("stayTopLeft()", 20); }; resetInstructionHeight(); window.ftlObj = ml("topbar"); window.stayTopLeft(); } var AIM = { frame : function(c) { var n = 'f' + Math.floor(Math.random() * 99999); var d = document.createElement('DIV'); d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>'; document.body.appendChild(d); var i = document.getElementById(n); if (c && typeof(c.onComplete) == 'function') { i.onComplete = c.onComplete; } return n; }, form : function(f, name) { f.setAttribute('target', name); }, submit : function(f, c) { AIM.form(f, AIM.frame(c)); if (c && typeof(c.onStart) == 'function') { return c.onStart(); } else { return true; } }, loaded : function(id) { var i = document.getElementById(id); var d; if (i.contentDocument) { d = i.contentDocument; } else if (i.contentWindow) { d = i.contentWindow.document; } else { d = window.frames[id].document; } if (d.location.href == "about:blank") { return; } if (typeof(i.onComplete) == 'function') { i.onComplete(d.body.innerHTML); } } }; function resetContaindivHeight() { // adjust containdiv height // TODO: I don't see a reason for any of this code anymore... //if (document.getElementById('statusBlock').style.display=="" || document.getElementById('statusBlock').style.display=="inline") { // var statusHeight = document.getElementById('topbar').offsetHeight-22; // 22 is padding - be better to dynamically determine this value. //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight+statusHeight; //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} } function hideElement(element) { var msgspan=element; var msgimg=element+"img"; // TODO: I don't see a reason for any of this code anymore... //if (msgspan=="statusBlock") { // var statusHeight = document.getElementById('topbar').offsetHeight; //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight-statusHeight-22; // 22 is padding - be better to dynamically determine this value. //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} document.getElementById(msgspan).style.display="none"; document.images[msgimg].src="/images/ci/ng/more_options_dark.gif"; var alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; } function showElement(element) { var msgspan=element; var msgimg=element+"img"; document.getElementById(msgspan).style.display="inline"; document.images[msgimg].src="/images/ci/ng/less_options.gif"; var alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; if (msgspan=="statusBlock") { resetContaindivHeight(); } } function toggleElement(element){ var curStyle = document.getElementById(element).style.display; if(curStyle=="" || curStyle=="inline") { hideElement(element); persistDisplayPreference(element,'none'); } else { showElement(element); persistDisplayPreference(element,'inline'); } resetInstructionHeight(); } /********************************************* methods related to lightbox preview in pool/test canvas********************/ assessment.previewLightbox = null; assessment.copyLinkLightbox = null; assessment.showLightBox = function (event,baseContainer,numparents,previewUrl) { var e = event || window.event; // IE does not capture the event if( e && e.type == 'click') { Event.stop(e); } if ( !assessment.previewLightbox ) { assessment.previewLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 500 ,h : 375}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 125, horizontalBorder: 125 }); } assessment.previewLightbox.cfg.ajax={url:previewUrl, loadExternalScripts:true}; assessment.previewLightbox.cfg.content=null; assessment.previewLightbox.open(); }; assessment.showCopyLinkLightBox = function ( url) { var params = url.toQueryParams(); if ( !assessment.copyLinkLightbox ) { assessment.copyLinkLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 150 ,h : 200}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 50, horizontalBorder: 50 }); } assessment.copyLinkLightbox.cfg.ajax={url:'/webapps/assessment/do/authoring/questionSearch?method=copyLink&discoverUrl=' + encodeURIComponent(url) + '&course_id=' + params.course_id }; assessment.copyLinkLightbox.cfg.content=null; assessment.copyLinkLightbox.cfg.closeOnBodyClick=false; assessment.copyLinkLightbox.open(); }; assessment.showDiscover = function(url,title,width,height) { assessment.submitDrawerUrl = url; var screenX=Math.floor((screen.width)/2)-Math.floor(width/2); var screenY=Math.floor((screen.height)/2)-Math.floor(height/2)-20; var top=screenY; var left=screenX; var features="'"+'toolbar=no,scrollbars=yes,status=yes,resizable=yes,top='+ top+',left='+ left+',screenX='+ screenX+',screenY='+ screenY+',width='+ width+',height='+ height+"'"; var discover = window.open(url,title,features); if (window.focus) { if (discover) { discover.focus(); } else { alert(ASSESSMENT_RESOURCES.getString("pop.up.blocker.enabled")); } } }; assessment.discoverOptions = function(url,title,width,height,hideCopyLink){ if(!hideCopyLink) { //check if the UserPreference is set in session UserDataDWRFacade.getStringPermScope( "AssessmentUtils.DISCOVER_MODE_IS_LINKING", function( copyLinkSet ) { if (copyLinkSet == '') { assessment.showCopyLinkLightBox(url); } else{ assessment.showDiscover(url,title,width,height); } }); } else{ assessment.showDiscover(url,title,width,height); } }; assessment.onCloseCopyLinkLightbox = function ( url ) { var copyLinkId = $('copylink_link'); var copyCopyId = $('copylink_copy'); var copyLinkValueSet = false; if(copyLinkId && copyCopyId ) { copyLinkValueSet = copyLinkId.checked || copyCopyId.checked; } if ( !copyLinkValueSet ) { if (window.confirm(ASSESSMENT_RESOURCES.getString("confirm.set_copy_link"))) { assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } } else{ assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } }; /**************************** methods related to question block on the test canvas*************************************/ assessment.createQuestionBlock = function() { }; function addQuestionToBlock(questionId, assessmentType, assessmentId, courseId ) { var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=addQuestionsToQuestionBlock" + "&questionId=" +questionId + "&assessmentType=" +assessmentType + "&assessmentId=" +assessmentId + "&course_id=" +courseId; assessment.discoverOptions(url,'discover','900','675',true); } /********************** methods related to inline pool points flyout***************************/ assessment.poolFlyout = null; assessment.initPoolFlyout = function(title) { if ( !assessment.poolFlyout ) { assessment.poolFlyout = new miniFlyout.MiniFlyout({ title: title, miniFlyoutTemplate: "<label class='hideoff' for='#{inputFieldName}_id'>#{title}</label> <input id='#{inputFieldName}_id'type='text' style='width: 2em;' size='3' value='0' name='#{inputFieldName}'/> <a href='#' title='#{closeButtonName}' bb_flyout_title='Cancel' class='genericButtonImg button-3-img'><img alt='#{closeButtonName}' src='/images/ci/ng/remove_li.png'/></a> <a href='#' title='#{submitButtonName}' bb_flyout_title='Submit' class='genericButtonImg button-3-img'><img alt='#{submitButtonName}' src='/images/ci/ng/checkmark_li.png'/></a>", inputFieldName: "inline_points", errorMessage: page.bundle.getString("points.failure"), miniFlyoutDivClass: "liveArea liveArea-slim", onSubmitValidate : "return assessment.validateMiniFlyoutInputValue('inline_points_id')" }); } miniFlyout.closeCurrentMiniFlyout(); }; assessment.showPoolFlyout = function (event,title,assessmentId,id, courseId) { var e = event || window.event; // IE does not capture the event var aLink = Event.element(e); if( e && e.type == 'click') { Event.stop(e); } assessment.initPoolFlyout(title); assessment.poolFlyout.cfg.openLink = aLink ; assessment.poolFlyout.cfg.containerId = aLink.parentNode.parentNode; assessment.poolFlyout.cfg.inputFieldDefaultSource = "ipoints_" + id; assessment.poolFlyout.cfg.inputFieldName= "inline_points"; assessment.poolFlyout.cfg.onSubmit = "return assessment.saveQuestionPoints('" + assessmentId + "','" + id + "','" + courseId + "',false, false, assessment.poolFlyout.cfg.containerId);"; assessment.poolFlyout.open(); }; /*************************************************** methods related to test canvas selection by type*******************/ assessment.selectByType = function(container) { var selected = document.getElementsByName('selectbyQuestionType')[0];// either use 0 or 1, since both are updated to the same var checkboxes = list.checkboxes.get(container); for ( var i=0; i < checkboxes.length; ++i ) { checkboxes[ i ].checked = false; } var className = selected.options[selected.selectedIndex].value; checkboxes.each( function(e){ if(e.className.trim() ==className.trim()) { e.checked=true; } } ); $('selectbyQuestionType_idTop').options[selected.selectedIndex].selected=true; $('selectbyQuestionType_idBot').options[selected.selectedIndex].selected=true; }; assessment.toggleQuestionBlockDiv = function(rawId){ var ul = $('questionBlockDiv'+rawId); var a = $('questionBlockDivLink'+rawId).getElementsByTagName('a')[0]; Effect.toggle(ul, 'blind', { duration: 0.3 }); if(ul.style.display=="none"){ a.className="itemHead itemHeadOpen"; } else if(ul.style.display=="block" || ul.style.display==""){ a.className="itemHead"; } return false; }; /************************** methods related to discover drawer functionality********************************************/ assessment.inBasicDiscoverMode = function () { if (document.copyQuestionsForm.method.value == 'save') { return true; } return false; }; assessment.cancelDrawer = function() { var myDrawer = drawer.model.getCurrentInstance(); myDrawer.discard(); document.copyQuestionsForm.elements.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener ) { //close question discovery popup window.close(); } return false; }; assessment.cancelRandomBlock = function () { document.copyQuestionsForm.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener !== null) { //close question discovery popup window.close(); } return false; }; function findAndDisableInputElements(el) { if (el === null) { return; } var elems = el.getElementsByTagName('input'); for ( var i = 0; i < elems.length; i++ ) { el.addClassName('disabled'); el.disabled = true; } } /****************** Ajax method related to Test/pool canvas***************************************************/ function postAndUpdateCanvas(form) { var method = form.method.value; var assessmentId = form.assessmentId.value; var courseId = form.course_id.value; var nonceId = nonceUtil.getNonceId('bb-question-discover'); var questionId = ""; if (form.questionId ) { questionId = form.questionId.value; } var url = "/webapps/assessment/do/authoring/copyQuestions?method=" +method + "&assessmentId="+assessmentId + "&course_id=" + courseId + "&sectionId=" + form.sectionId.value + "&assessmentType=" +form.assessmentType.value + "&itemIds=" +form.itemIds.value + "&overridePoints=" +form.overridePoints.value + "&questionId=" +questionId + "&ajaxMode=true" + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (form.searchCriterion !== null) { url = url + "&searchCriterion=" + encodeURIComponent(form.searchCriterion.value); } findAndDisableInputElements( $('cartSubmit') ); var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { window.opener.location="/webapps/assessment/do/authoring/modifyAssessment?method=modifyAssessment&assessmentId="+assessmentId+"&course_id="+courseId; if (json !== null) { // capture any error message and display if (json.errorMessage ) { // exception message looks ugly for the end-user, hence use a more user-friendly message to indicate the ajax refresh failed new page.InlineConfirmation("error", json.errorMessage, false ); } else if (json.successMessage ) { // WIP // var startingEl = window.parent.document.getElementById('blockstart_' + questionId); // new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false ); } } setTimeout('window.close()', 1500); }, onFailure: function(transport, json) { new page.InlineConfirmation("error", "Failure post discover pop-up", false ); } }); } assessment.submitRandomBlock = function () { if ($('listContainer_datatable')) { var searchCriterion = activeFilter.getSearchCriteriaInstance(false).getSearchCriteriaAsXml(); document.copyQuestionsForm.searchCriterion.value = searchCriterion; if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } } else { alert(ASSESSMENT_RESOURCES.getString("cannot.submit.with.no.matching.questions")); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.submitDrawer = function () { var myDrawer = drawer.model.getCurrentInstance(); var selectedItems = myDrawer.getItems(true); var i; var allIds = ""; for (i=0;i<selectedItems.length;i++) { var qId = selectedItems[i].itemId; var mode = selectedItems[i].mode; allIds += qId + ":" + mode + ","; } document.copyQuestionsForm.itemIds.value = allIds; myDrawer.discard(); if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.OnCompleteUpdateCanvas = function(questionId, req, showNestedReceipt) { var json = req.responseText.evalJSON( true ); var pointsEl = $s('ipoints_' + questionId); var totalQuestionsCountEl = $s('totalNoQuestions' + questionId); var currentQuestionCountEl = $s('questionCount' + questionId); var totalBlockPointsEl = $s('totalPoints_' + questionId); var totalTestPointsEl =$s('totalTestPoints'); var totalQuestionsEl = $s('totalQuestions'); var startingEl = $s('blockstart_' + questionId); if( !json.errorMessage && pointsEl && json.points ) { // update per question points pointsEl.childNodes[0].nodeValue = json.points; } if( !json.errorMessage && totalQuestionsCountEl && json.totalQuestionsCount ) { // update per question points totalQuestionsCountEl.childNodes[0].nodeValue = json.totalQuestionsCount; } if( !json.errorMessage && currentQuestionCountEl && json.currentQuestionsCount ) { // update per question points currentQuestionCountEl.childNodes[0].nodeValue = json.currentQuestionsCount; } if( !json.errorMessage && totalBlockPointsEl && json.totalBlockPoints ) { // update the total points totalBlockPointsEl.childNodes[0].nodeValue = json.totalBlockPoints; } if( !json.errorMessage && totalQuestionsEl && json.totalQuestions ) { // update the total questions totalQuestionsEl.innerHTML = json.totalQuestions; } if( !json.errorMessage && totalTestPointsEl && json.totalTestPoints ) { // update total Test points, not for survey or pool totalTestPointsEl.innerHTML = json.totalTestPoints; } if (showNestedReceipt) { if (json.securityErrorMsg ) { new page.NestedInlineConfirmation("error", json.securityErrorMsg, true, startingEl, true); } else if (json.successMessage ) { if (json.successMessage.indexOf('regrading_queued_status')> 0) { // If we are displaying a confirmation including regrading status then DO NOT fade it away - let it stay and get updated. new page.NestedInlineConfirmation("success", json.successMessage, false, startingEl, true); } else { new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false); } } } assessment.result = json.errorMessage; assessment.setQuestionNumbers(); }; assessment.removeQuestionsFromBlock= function(listId, questionBlockId, courseId,assessmentId) { var allcheckBoxes = list.checkboxes.get(listId); var checkedCount = 0; var ids = ""; for (var i = 0; i < allcheckBoxes.length; i++) { var separator = (i == (allcheckBoxes.length - 1)) ? " " : ','; if (allcheckBoxes[i].checked ) { checkedCount ++; ids = ids + allcheckBoxes[i].value + separator; } } if (window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count", [checkedCount]))) { // ajax request var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + questionBlockId); var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=removeQuestionsFromQuestionBlock" + "&block_id=" + questionBlockId + "&course_id=" + courseId + "&assessment_id=" + assessmentId + "&questionIds=" + ids + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; nonceId.value = json.nonceId; inventoryList.ajaxPostOnClick(null, listId); if(json.errorMessage ) { new page.NestedInlineConfirmation("error", json.errorMessage, false, startingEl, false); } }, onSuccess: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); }, onFailure: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); } }); } }; assessment.result = ""; assessment.saveQuestionCount = function(assessmentId, blockId, courseId, forRandomBlock ) { var countEl = document.getElementsByName('question_count')[0]; var originalCountEl = document.getElementById('questionCount' + blockId); var originalCount = originalCountEl.childNodes[0].nodeValue; var newCount = countEl.value; if (newCount == originalCount) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + blockId); var url = "/webapps/assessment/do/authoring/modify"+(forRandomBlock?"Random":"Question")+"Block?method=saveQuestionCount" + "&block_id="+blockId + "&course_id=" + courseId + "&new_count=" + newCount + "&assessment_id=" + assessmentId + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(req) { var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); }, onFailure: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); } }); return assessment.result; }; assessment.updateExtraCredit = function (newExtraCreditValue, questionId) { var extraCreditDiv = $('extra_credit_' + questionId); if (extraCreditDiv) { if (newExtraCreditValue) { extraCreditDiv.removeClassName('hidden'); extraCreditDiv.addClassName('extraCredit'); } else { extraCreditDiv.addClassName('hidden'); extraCreditDiv.removeClassName('extraCredit'); } } }; assessment.updateFullCredit = function (newFullCredit, questionId) { document.getElementById('original_fullCredit_value_' + questionId).value = newFullCredit.toString(); if (newFullCredit) { document.getElementById('full_credit_' + questionId).show(); } else { document.getElementById('full_credit_' + questionId).hide(); } }; // copied or linked question assessment.saveQuestionPoints = function(assessmentId, questionId, courseId, isBlock, isInUse, containerId ) { var pointsToSave = document.getElementsByName('inline_points'); var extraCredit =$s('inline_points_extra_credit_id'); var newExtraCreditValue = false; if(extraCredit) { newExtraCreditValue = extraCredit.checked; } var newPoints = pointsToSave[0].value; var originalPointsEl = document.getElementById('ipoints_' + questionId); var originalExtraCreditValue = false; var originalExtraCreditEl = $('extra_credit_' + questionId); if(originalExtraCreditEl) { originalExtraCreditValue = !originalExtraCreditEl.hasClassName('hidden'); } var originalPoints; if( originalPointsEl.childNodes ) { originalPoints = originalPointsEl.childNodes[0].nodeValue; } var originalFullCredit; var newFullCredit; var fullCreditCheckbox = document.getElementById('inline_points_full_credit_' + questionId); if (fullCreditCheckbox !== null) { newFullCredit = fullCreditCheckbox.checked; originalFullCredit = document.getElementById('original_fullCredit_value_' + questionId).value; } if ( (newPoints == originalPoints ) && ( originalExtraCreditValue == newExtraCreditValue ) && (!fullCreditCheckbox || (originalFullCredit == newFullCredit.toString())) ) { return ""; } if ( isInUse && !confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); if( !extraCredit ) { newExtraCreditValue = ""; } if( !isBlock) { isBlock = false; } else { isBlock = true; } var url = "/webapps/assessment/do/authoring/modifyAssessment?method=updateQuestionPoints" + "&question_id=" + questionId + "&course_id=" + courseId + "&points_value=" + newPoints + "&extra_credit=" + newExtraCreditValue + "&assessment_id=" + assessmentId + "&is_Block=" + isBlock + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (fullCreditCheckbox) { url = url + "&full_credit=" + newFullCredit; } new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req){ var json = req.responseText.evalJSON( true ); var showNestedReceipt = false; if( !containerId ) { showNestedReceipt = true; } assessment.OnCompleteUpdateCanvas(questionId,req,showNestedReceipt); if(extraCredit) { assessment.updateExtraCredit(newExtraCreditValue,questionId); } if (fullCreditCheckbox) { assessment.updateFullCredit(newFullCredit,questionId); } if (!showNestedReceipt) { // show receipt in pool , table cell var status_msg = null; if (json.successMessage != "") { status_msg = $('status_msg_succ'); } var link = containerId.down(1); link.hide(); containerId.appendChild(status_msg); (status_msg).show(); setTimeout( function(){ (status_msg).fade({ duration: 0.5 }); },500); setTimeout( function(){ link.appear({duration:0.5}); },1000); link.focus(); } }, onFailure: function(req){ new page.InlineConfirmation("error", page.bundle.getString("updatePointsFailed"), false); } }); return assessment.result; }; assessment.setDefaultLinkingMode = function(isLinkingMode, courseIdStr) { var courseId = courseIdStr || document.copyQuestionsForm.course_id.value; var url = "/webapps/assessment/do/authoring/questionSearch?method=saveLinkingMode" + "&linkingMode="+isLinkingMode+ "&course_id=" +courseId ; new Ajax.Request(url, { method: 'post', onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { document.body.style.cursor = 'default'; }, onSuccess: function(transport, json) { }, onFailure: function(transport, json) { } }); }; assessment.setDisplayFullText = function(displayFull, listId) { var extras = []; // Note - Constants.DISPLAY_FULL_TEXT = "displayFullText" extras.displayFullText=displayFull; inventoryList.ajaxPostOnClick(null, listId, extras, true); }; assessment.rewriteSectionForScreenReader = function(elementName) { var element = document.getElementById(elementName); element.setAttribute("aria-live", "assertive"); element.setAttribute("aria-relevant", "all"); element.setAttribute("aria-atomic", "true"); element.setAttribute("aria-busy", "true"); var myContents = element.innerHTML; element.innerHTML = myContents; element.setAttribute("aria-busy", "false"); return false; }; assessment.clearQuestionModifiedStatuses = function() { // Called on page load to make sure we don't have any stranded questions-to-monitor kicking around. assessment.questions_to_monitor = []; assessment.questions_to_monitor_index = 0; }; assessment.QMonitor = Class.create(); assessment.QMonitor.prototype = { initialize: function( entity, index) { this.index = index; Event.observe(entity, 'change', this.onChange.bindAsEventListener(this)); }, onChange: function( event) { assessment.questions_to_monitor[this.index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[this.index].qnum); } }; assessment.getSaveButton = function(questionNum) { var myButton = document.getElementById("saveButton_" + questionNum); if (!myButton) { if (assessment.isOneByOne) { if (questionNum == document.forms.saveAttemptForm.current_question.value) { myButton = document.getElementById("saveAnswerSubmitId"); // for one-at-a-time tests } } } return myButton; }; assessment.setModifiedIcon = function(questionNum) { var saveAnswerLabel = page.bundle.getString('takeSaveAnswer'); var myButton = assessment.getSaveButton(questionNum); if (myButton) { myButton.value = saveAnswerLabel; Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); } // TODO - Either rip this out or put in appropriate image, style, and text // NOTE - can't actually enable this until on-the-fly onchange support in the VTBE is done // (as opposed to the current on-unload check for change) // Also - would need to deal with leaving this image on-page in this scenario: // Save Q1 // Modify Q1 // Save Q2 // -- at this point, we update the status icons and lose the modified icon for Q1 /* var mySpan =document.getElementById("span_"+questionNum); var myImg = document.getElementById("img_"+questionNum); mySpan.className = "qIncomplete"; myImg.src = "/images/ci/icons/needs_grading.gif"; // better icon myImg.alt = "TODO: Incomplete"; myImg.height= "10"; myImg.width= "10"; */ }; assessment.addQuestionToMonitor = function(qid,qnum, isFileUploadQuestion) { var questionBlock = $(qid); assessment.questions_to_monitor[assessment.questions_to_monitor_index] = {}; // TODO - is there a more efficient way to do this? $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, assessment.questions_to_monitor_index); }); assessment.questions_to_monitor[assessment.questions_to_monitor_index].qid = qid; assessment.questions_to_monitor[assessment.questions_to_monitor_index].qnum = qnum; // Status: 0 == not changed, 1 = changed, 2 = attempted to be auto-saved since last change assessment.questions_to_monitor[assessment.questions_to_monitor_index].status = 0; assessment.questions_to_monitor[assessment.questions_to_monitor_index].isFileUploadQuestion = isFileUploadQuestion; assessment.questions_to_monitor_index++; }; assessment.remonitorFileUpload = function(qid, qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { if (assessment.questions_to_monitor[i].isFileUploadQuestion) { var questionBlock = $(qid); $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, i); }); } else { return; } } } } }; assessment.questionBeingSaved = -1; assessment.markQuestionAsSaved = function (qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { assessment.questions_to_monitor[i].status = 0; } } } }; assessment.hasUnsavedAnswers = function() { if (assessment.questions_to_monitor_index > 0) { var i = 0; if (typeof(finalizeEditorsAnyChange) == "function") { finalizeEditorsAnyChange(assessment.vtbeChanged); } for(i=0;i<assessment.questions_to_monitor_index;i++) { //alert("Question " + assessment.questions_to_monitor[i].qid + " number " + assessment.questions_to_monitor[i].qnum + " status " + assessment.questions_to_monitor[i].status); if (assessment.questions_to_monitor[i].status >= 1) { return true; } else if (assessment.questions_to_monitor[i].isFileUploadQuestion) { // In IE, the assessment.QMonitor onchange handle disappears after the first file selection and I can't seem to add it back. // This at least gets the saving to work so it doesn't appear totally broken. The button doesn't change to 'save answer' immediately // after you attach a file a second time though, but we have to live with that for now. var actionDivName = 'file_upload_ans_' + assessment.questions_to_monitor[i].qid + '_selectedFileActions'; var actionDiv = $(actionDivName); if (actionDiv && actionDiv.visible()) { assessment.questions_to_monitor[i].status = 1; return true; } } } } return false; }; assessment.registerVTBEChange = function() { if (typeof(registerOnChangeCallback) == "function") { registerOnChangeCallback(assessment.vtbeChangedCallback, assessment.getVtbeQuestionIndex); } }; assessment.autoSaveExecutor = ''; assessment.autoSaveInterval = 10; // seconds assessment.startAutoSave = function(interval) { assessment.autoSaveInterval = interval; assessment.autoSaveExecutor = new PeriodicalExecuter(assessment.doAutoSave, assessment.autoSaveInterval); }; assessment.stopAutoSave = function() { if (assessment.autoSaveExecutor != '') { assessment.autoSaveExecutor.stop(); } }; assessment.toggleAutoSave = function(interval) { assessment.stopAutoSave(); if ($s('autoSaveCheckbox').checked) { assessment.startAutoSave(interval); } }; assessment.doAutoSave = function(pe) { if (assessment.submittingRightNow) { // Ignore if submitting right now return; } if (assessment.savingRightNow) { // If we are already saving, do nothing right now. return; } var doneOne = false; if (assessment.hasUnsavedAnswers()) { for(var i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].status == 1) // explicitly only check for status 1, skipping status==2 { if (doneOne) { // We can only submit one question per pass because otherwise the nonce fails. Switch // to a higher frequency to save all the outstanding questions faster. pe.stop(); pe.frequency = 1; pe.registerCallback(); return; } assessment.questions_to_monitor[i].status = 2; // flag to indicate we've already tied to auto-save this // Will be reset to 0 after a successful save or 1 if the user modifies their answer again. saveOneItem( assessment.questions_to_monitor[i].qid, assessment.questions_to_monitor[i].qnum, true, false ); doneOne = true; } } } if (!doneOne) { if (pe.frequency != assessment.autoSaveInterval) { pe.stop(); pe.frequency = assessment.autoSaveInterval; pe.registerCallback(); } } }; assessment.vtbeChanged = function(ifr) { var index = assessment.getVtbeQuestionIndex( ifr ); assessment.vtbeChangedCallback(ifr,index); }; assessment.vtbeChangedCallback = function(ifr,index) { if (index != -1) { assessment.questions_to_monitor[index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[index].qnum); } }; assessment.getVtbeQuestionIndex = function(ifr) { var parents = ifr.ancestors(); var num = parents.length; for ( var i = 0; i < num; i++ ) { var parent = parents[i]; if ( page.util.hasClassName(parent, 'takeQuestionDiv') ) { var divid = parent.id; for ( var j = 0; j < assessment.questions_to_monitor_index; j++ ) { if ( assessment.questions_to_monitor[j].qid == divid ) { return j; } } return -1; } } return -1; }; assessment.warnBeforeLeavingIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var prefix = "test"; if (isSurvey) { prefix = "survey"; } var timermsg = ''; if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } if (isForced) { return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.forced.beforeunload.warning"); } return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.beforeunload.warning") + timermsg; }; assessment.queueUpWarning = function(msg, oneByOneAndForceUnload) { var url = assessment.getNextActionUrl() + '&method=queueUpWarning'; var params = Object.extend({ 'msg' : msg, 'oneByOneAndForceUnload' : oneByOneAndForceUnload, 'course_assessment_id' : document.forms.saveAttemptForm.course_assessment_id.value } ); var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, asynchronous: false }); }; assessment.warnOnLeaveIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var timermsg = ''; var prefix = "test"; if (isSurvey) { prefix = "survey"; } if (assessment.hasUnsavedAnswers()) { // Since we are always auto-saving anyways, we might as well just always save unsaved answers here. saveAllQuestions(false); } if (isForced) { assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.forced.warning", assessment.currentTestName), true ); } else { if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.warning", assessment.currentTestName )+timermsg, false); } }; assessment.setDefaultQuestionDisplay = function(blockToLeaveVisible) { assessment.blockToLeaveVisible = blockToLeaveVisible; UserDataDWRFacade.getStringPermScope( "assessment.questionsExpanded", function( questionsExpanded ) { if (questionsExpanded == 'false') { assessment.toggleQuestionDisplay(); } assessment.blockToLeaveVisible = 'null'; }); }; assessment.toggleQuestionDisplay = function() { var newVis = !assessment.questionVisibility; if (newVis) { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", true ); } else { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", false ); } // Note -most of the time this will be "contentListItem:null" - that's OK var idToIgnore = "contentListItem:" + assessment.blockToLeaveVisible; $A(document.getElementsByTagName('li'))._each(function(entity) { // hide|show the given entity if it is one we care about var id = entity.id; if (id.startsWith("contentListItem:") && id != idToIgnore) { $A(entity.getElementsByTagName('div'))._each(function(adiv) { if (page.util.hasClassName(adiv,'details')) { if (newVis) { $(adiv).show(); } else { $(adiv).hide(); } } }); if (newVis) { entity.removeClassName('hideQuestionDetails'); } else { entity.addClassName('hideQuestionDetails'); } } }); var buttonText = page.bundle.getString( newVis ? "hide.question.details" : "show.question.details" ); $('content_listContainer_hideshowQuestions_top').down('a').update( buttonText ); $('content_listContainer_hideshowQuestions_bottom').down('a').update( buttonText ); assessment.questionVisibility = newVis; }; assessment.setDisableFlag = function(questionId, flag) { modifyHelper(questionId, 'setDisableFlag' + flag); }; assessment.questionLabelMap = {}; assessment.dndHooksAdded = false; assessment.setQuestionNumbers = function() { var index = 1; // loop through line items in list of questions var questions = $('content_listContainer'); if (questions) { $A(questions.childElements()).each( function( li ) { var h3 = li.down('h3'); var span = h3.down('span.questionNumber'); if ( !span ) // create & add span for questionNumber if none exists { span = new Element('span',{'class':'questionNumber autoQuestionNumber'}); h3.insert({top:span}); } var id = h3.up('div').id; var qSetSize = $('questionCount'+id); var qNumStr = ''+index; if ( qSetSize ) // show number range for question sets { var s = parseInt(qSetSize.innerHTML, 10); index += s - 1; if ( s > 1 ) { qNumStr += ' - '+index; } else if ( s === 0 ) { qNumStr = ''; } } qNumStr = qNumStr + '.'; index++; span.update(qNumStr); assessment.questionLabelMap[id] = h3.innerHTML.stripTags(); // save numbered label in map for loading accessible reorder select }); } if ( !assessment.dndHooksAdded ) { var dndCtrl = dragdrop.getControllerObjById( 'pageListReorderControls' ); if (dndCtrl) { // Set question numbers in the accessible reorder select before opening it's popup. // Setting the question numbers needs to be defered until the popup is added to the DOM, which // happens just before the popup is opened dndCtrl.extPreOpenCallback = assessment.setAccessibleReorderQuestionNumbers; // call this function to set question numbers after a dnd or accessible reorder happens dndCtrl.extPostOrderCallback = assessment.setQuestionNumbers; assessment.dndHooksAdded = true; } } }; assessment.setAccessibleReorderQuestionNumbers = function() { $A($('pageListReorderControlSelect').options).each( function( option ) { option.text = assessment.questionLabelMap[option.value]; }); }; assessment.viewReferencingCanvases = function(courseId, assessmentId) { var url = "/webapps/assessment/do/authoring/modifyAssessment?course_id=" + courseId + "&method=getReferringCanvases&assessmentId=" + assessmentId; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ document.body.style.cursor = 'default'; }, onSuccess: function(req){ $('referencingCanvasesPlaceholder').update(req.responseText); }, onFailure: function(req){ $('referencingCanvasesPlaceholder').update(ASSESSMENT_RESOURCES.getString("error.loading.referrers")); } }); }; assessment.normalizedWidth = 0; assessment.setNormalizedButtonWidth = function(myButton) { if (assessment.normalizedWidth === 0) { myButton.value = page.bundle.getString('takeSaveAnswer'); Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); assessment.normalizedWidth = myButton.clientWidth; myButton.value = page.bundle.getString('takeSaveAnswerAgain'); Element.addClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } myButton.value = page.bundle.getString('savingAnswer'); Element.addClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } } //myButton.style.width = assessment.normalizedWidth + 'px'; return; }; assessment.resetFields = function() { window.document.assessmentSubmitted = false; window.document.assessmentActuallySubmitted = true; }; assessment.getNextActionUrl = function() { var url = document.forms.saveAttemptForm.action; url = url + '?saveSequence=' + (assessment.saveSequence++); return url; }; assessment.submitAttemptForm = function() { var myForm = document.forms.saveAttemptForm; var origUrl = myForm.action; myForm.action = assessment.getNextActionUrl(); try { myForm.submit(); } catch (err) { // Make sure we get to the next line and reset the url just in case. } myForm.action = origUrl; }; // This is the final save-and-submit request for the test/survey assessment.doConfirmSubmit = function(msg) { document.forms.saveAttemptForm.save_and_submit.value='true'; try { if (confirmSubmit(msg)) { assessment.resetFields(); assessment.submitAttemptForm(); } } catch (err) { // If we had an error, continue to clear the saveandsubmit value } document.forms.saveAttemptForm.save_and_submit.value=''; return false; }; assessment.alertSaveStatus = function (status) { if (status == 'COMPLETED' ) { alert(page.bundle.getString("confirm_saveall_success")); } else if (status == 'PARTIAL' ) { alert(page.bundle.getString("confirm_save_partial")); } else if (status == 'UNANSWERED' ) { alert(page.bundle.getString("confirm_save_empty")); } else { alert(page.bundle.getString("confirm_save_error")); } }; assessment.removeFileUploadAnswer = function (fieldName, divName, questionId, questionNumber, remAnsSuffix, takeDupeSaveMsg) { document.getElementById(divName).style.display = "none"; document.forms.saveAttemptForm.elements.method.value = "fileremove"; document.forms.saveAttemptForm.elements[fieldName + '-override'].value = "false"; document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = "true"; try { if (checkAlreadySaved(takeDupeSaveMsg)) { saveOneItem( questionId, questionNumber, true, false); } } catch (err) { // Ignore - just want to make sure we do the next statement } document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = ""; return false; }; assessment.updateQuestionStatusResponse = function(originalRequest ) { var qnums = originalRequest.responseText; var lines = qnums.split("\n"); var qnum=lines[0].split(","); for (var i=0; i<qnum.length; i++) { var num = qnum[i]; if (num > 0) { setSavedIcon(num); } else { setNotSavedIcon(-num); } } for (var j=1;j<lines.length;j++) { var fileUpload = lines[j].split(":"); if (fileUpload.length == 2) { var divName = "file_upload_div_" + fileUpload[0]; var divElement = document.getElementById(divName); if (fileUpload[1] == "HIDE") { if(divElement !== null) { divElement.style.display = "none"; } } else { var spanName = "file_upload_span_" + fileUpload[0]; var cancelFileButton = "file_upload_ans_" + fileUpload[0] + "_cancelFileButton"; var cancelElement = document.getElementById(cancelFileButton); var overrideName = "file_upload_ans_" + fileUpload[0] + "-override"; var overrideElement = document.forms.saveAttemptForm.elements[overrideName]; var spanElement = document.getElementById(spanName); if(divElement !== null) //we must check if item exists for one question at a time format { divElement.style.display = "block"; } if(spanElement !== null) { spanElement.innerHTML = fileUpload[1]; } if(cancelElement !== null) { cancelElement.click(); } if (typeof overrideElement !== 'undefined' && overrideElement !== null) { overrideElement.value = "true"; } } } } }; assessment.prepareForSubmit = function(doValidation) { // MUST VALIDATE FORM TO PERSIST WYSIWYG // Set textarea value to VTBE contents: if (typeof(finalizeEditors) == "function") { finalizeEditors(); } /* Transform equations place holders into html before validation*/ var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if (doValidation) { /* Validate form TODO: Why not call validateForm()*/ var valid = formCheckList.check(); return valid; } return true; };

var widget = {}; widget.colorPickers = {}; widget.ColorPicker = Class.create(); widget.ColorPicker.prototype = { /** * Constructor * * @param name - id of the color picker * @param initialColor - initial color hex string ("#000000") * @param alertMsg - localized error msg string ("Error: A valid color value must be specified") * @param previewIdStr - optional id string of the color preview DIV container user can specify * @param allowTransparent - optional boolean whether to render an option to select transparent. Default is false. */ initialize : function( name, initialColor, alertMsg, previewIdStr, previewBackgroundIdStr, allowTransparent ) { this.theColorPickerName = name; this.allowTransparent = ( !allowTransparent ) ? false : true; this.theMenu = $( name ); this.alertMsg = alertMsg; this.userPreviewContainer = $( previewIdStr ); // may be undefined this.userPreviewBackgroundContainer = $( previewBackgroundIdStr ); // may be undefined if ( typeof this.userPreviewContainer == "undefined" ) { this.userPreviewContainer = null; } if ( typeof this.userPreviewBackgroundContainer == "undefined" ) { this.userPreviewBackgroundContainer = null; } this.colorListParent = $( name + '_colorlist_parent' ); widget.ColorPicker.registerColorPicker( this ); this.ie = document.all && navigator.userAgent.indexOf( "Opera" ) == -1; this.color_hidden_input = $( name + "_title_color_input" ); this.color_hidden_input.value = initialColor; this.color_hidden_input._defaultValue = initialColor; this.anch_link = $( name + "_link" ); this.color_link = $( name + "_img" ); this.color_name_label = $( name + "_color_name_label" ); this.title_color_input = $( name + "_title_color" ); this.setDisplay( initialColor, this.getDisplayColorInfo( initialColor, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( initialColor, true ); var backgroundStyle = initialColor; if( initialColor === "transparent" ) { backgroundStyle = 'url(/images/swatches/transparent.gif)'; } this.color_link.setStyle( { background : backgroundStyle } ); this.updateUserPreviewContainerColor( initialColor ); if ( this.anch_link ) { Event.observe( this.anch_link, "click", this.onOpen.bindAsEventListener( this ) ); } Event.observe( document.body, "click", this.closeColorPickers.bindAsEventListener( this ) ); Event.observe( this.theMenu, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_previewColorLink', 'click', this.previewListener .bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_cancelButton', 'click', this.onClose.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_submitButton', 'click', this.onApply.bindAsEventListener( this ) ); this.skip_link = $( name + "_skip_link" ); if ( this.skip_link ) { Event.observe( this.skip_link, "click", this.onSkipLinkClick.bindAsEventListener( this ) ); } // relocate color picker popup div to the bottom of the doc b/c of css display issues Element.remove( this.theMenu ); document.body.appendChild( this.theMenu ); widget.colorPickers[ this.theColorPickerName ] = this; }, onSkipLinkClick : function( event ) { $( this.theColorPickerName + '_submitButton' ).focus(); }, onKeyPress : function( event ) { var key = event.keyCode || event.which; if ( key == Event.KEY_ESC ) { this.onClose( event ); } }, closeColorPickers : function( event ) { var element = Event.element( event ); widget.ColorPicker.colorPickers.each( function( cp ) { if ( cp != this && !element.descendantOf( cp.theMenu ) ) { cp.close(); } }.bind( this ) ); }, setOnChangeHandler : function( handler ) { this.onChangeHandler = handler; }, setDefaultColor : function( colorValue ) { this.color_hidden_input.value = colorValue; this.color_hidden_input._defaultValue = colorValue; if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); }, setColor : function( colorValue ) { widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, colorValue ); if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); this.updateUserPreviewContainerColor( colorValue ); if ( this.onChangeHandler ) { this.onChangeHandler(); } }, getPaletteInstance : function() { if ( !this.paletteInstance ) { this.paletteInstance = Element.clone( widget.ColorPicker.colorPalette, true ); } return this.paletteInstance; }, deletePaletteInstance : function() { if ( this.paletteInstance ) { Event.stopObserving( this.paletteInstance, 'click' ); this.paletteInstance.remove(); delete this.paletteInstance; } }, onOpen : function( event ) { this.closeColorPickers( event ); this.colorListParent.appendChild( this.getPaletteInstance() ); this.initializeTransparent(); Event.observe( this.getPaletteInstance(), 'click', this.setColorFromSwatch.bindAsEventListener( this ) ); var offset = Position.cumulativeOffset( this.anch_link ); this.theMenu.setStyle( { display : "block", position : "absolute" } ); var width = this.theMenu.getWidth(); var bodyWidth = $( document.body ).getWidth(); var menuDims = this.theMenu.getDimensionsEx(); var anchorDims = this.anch_link.getDimensionsEx(); var menuHeight = menuDims.height; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); // Use viewport relative offsets to figure out placement within the view var offsetTop = offset[ 1 ] - scrollOffsets.top; var offsetLeft = offset[ 0 ] - scrollOffsets.left; var xpos = offsetLeft; if ( page.util.isRTL() ) { xpos = xpos + this.anch_link.getWidth() - width; } if ( xpos + width > viewportDimensions.width ) { // First try to position it on the left of the link instead of the right xpos = offsetLeft - width + anchorDims.width; if ( xpos < 0 ) { // If we go off the page though, just try our best xpos = viewportDimensions.width - width; } } if ( xpos < 0 ) { xpos = 0; } var ypos = offsetTop + anchorDims.height; if ( ( ypos + menuHeight ) > viewportDimensions.height ) { // Try to position above the color picker first ypos = offsetTop - menuHeight; if ( ypos < 0 ) { // but if it goes off the top of the page just do a best-effort. ypos = ypos - ( ypos + menuHeight - viewportDimensions.height ); if ( ypos < 0 ) { ypos = 0; } } } // The color swatch is positioned absolutely, so adjust offsets to include the scrollofset ypos = ypos + scrollOffsets.top; xpos = xpos + scrollOffsets.left; this.theMenu.setStyle( { left : xpos + "px", top : ypos + "px" } ); this.title_color_input.focus(); ( function() { if ( !this.shim ) { this.shim = new page.popupShim( this.theMenu ); } this.shim.open(); }.bind( this ).defer() ); Event.stop( event ); }, /** * Removes the transparent choice from the palette if the picker is not supposed to support transparency. */ initializeTransparent : function() { if ( !this.allowTransparent ) { var transparentLi = this.colorListParent.down( 'li#colorlist_transparent' ); if ( transparentLi ) { Element.remove( transparentLi ); } } }, /** * Hides the color picker. */ onClose : function() { this.close(); this.anch_link.focus(); }, close : function() { this.deletePaletteInstance(); this.theMenu.setStyle( { display : "none" } ); if ( this.shim ) { this.shim.close(); } }, /** * Sets the preview color and text to the color selected by the user in the palette */ setColorFromSwatch : function( event ) { var element = Event.element( event ); if ( element.hasClassName( 'transparent' ) ) { this.setDisplay( "transparent", page.bundle.getString( "colorpicker.color.transparent" ) ); } else { var text = element.childNodes[ 0 ].nodeValue; if ( text ) { this.setDisplay( text.substring( 0, 7 ), this.getDisplayColorInfo( text.substring( 0, 7 ), false ) ); } } Event.stop( event ); }, getDisplayColorInfo : function( hexValue, onlyColorName ) { var transparent = false; var localizedName; var safeColorCode; if ( hexValue === "transparent" ) { transparent = true; localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ hexValue ]; } else { safeColorCode = this.getSafeColorCode( hexValue ).toUpperCase(); //The keys in ColorPickerMap are all 6 digit safe color codes, that's we need to make sure that we're using the correct key to lookup the color. localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ safeColorCode ]; } if ( !localizedName ) { localizedName = ''; } var colorName; colorName = localizedName + ' (' + hexValue + ')'; if ( onlyColorName || transparent ) { colorName = localizedName; } return colorName; }, /** * Returns a Six digit Hexadecimal Color Code. */ getSafeColorCode : function( hexValue ) { return hexValue.replace( /#([\d0-9A-Fa-f])([\d0-9A-Fa-f])([\d0-9A-Fa-f])$/,'#$1$1$2$2$3$3'); }, /** * Handles the Preview functionality on the swatch. If an inappropriate color is choosen, a msg is displayed to the * user. Else updates the color preview with the manually entered color. */ previewListener : function( event ) { if ( !this.isValidColor( this.title_color_input.value ) ) { alert( this.alertMsg ); return; } if ( this.title_color_input.value.length != 6 ) { return; } var prevCol; if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { prevCol = "transparent"; this.setDisplay( prevCol, page.bundle.getString( 'colorpicker.color.transparent' ) ); } else { prevCol = '#' + this.title_color_input.value; this.setDisplay( prevCol, this.getDisplayColorInfo( prevCol, false ) ); } Event.stop( event ); }, /** * Updates the color preview panel in the picker pop up */ setDisplay : function( col, text ) { if ( col === "transparent" ) { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : 'url(/images/swatches/transparent_lrg.gif)' } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : '#ffffff' } ); this.title_color_input.value = 'XXXXXX'; } else { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : col } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : col } ); this.title_color_input.value = ( col.startsWith( '#' ) ) ? col.substr( 1 ) : col; } $( this.theColorPickerName + '_title_color_name' ).innerHTML = text; }, /** * Checks for a valid color value. */ isValidColor : function( color_value ) { var isValid = false; isValid = ( /^[0-9A-Fa-f]{6}/ ).test( color_value ); if ( !isValid && this.allowTransparent ) { isValid = color_value.toLowerCase() === "xxxxxx"; } return isValid; }, /** * Manages the functionality for the Apply button the swatch. */ onApply : function( event ) { var color = this.title_color_input.value; if ( !this.isValidColor( color ) ) { return; } if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); color = "transparent"; this.color_name_label.innerHTML = page.bundle.getString( "colorpicker.color.transparent" ); } else { color = '#' + color; this.color_link.setStyle( { background : color } ); this.color_name_label.innerHTML = this.getDisplayColorInfo( color, true ); } widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, color ); this.updateUserPreviewContainerColor( color ); this.onClose(); if ( this.onChangeHandler ) { this.onChangeHandler(); } Event.stop( event ); }, /** * If the user specified preview container element exists, update its color style to the color given. * * @param color - color hex string */ updateUserPreviewContainerColor : function( color ) { if ( this.userPreviewContainer ) { this.userPreviewContainer.style.color = color; } else if ( this.userPreviewBackgroundContainer ) { this.userPreviewBackgroundContainer.style.background = color; } } }; // end widget.ColorPicker.prototype widget.ColorPicker.colorPickers = []; widget.ColorPicker.colorPickerMap = {}; widget.ColorPicker.colorPickerPaletteMap = {}; widget.ColorPicker.registerColorPicker = function( cp ) { widget.ColorPicker.colorPickers.push( cp ); widget.ColorPicker.colorPickerMap[ cp.theColorPickerName ] = cp; // grab the color definition and remove it from the DOM for the time being if ( !widget.ColorPicker.colorPalette ) { var colorPalette = $( 'picker_colorlist' ); // Store the colors and their localized names so we can look them up later. widget.ColorPicker.colorPickerPaletteMap[ "default" ] = {}; var arrColors = Element.getElementsBySelector( colorPalette, "a" ); for ( var i = 0; i < arrColors.length; i++ ) { if ( !arrColors[ i ].hasClassName( "transparent" ) ) { widget.ColorPicker.colorPickerPaletteMap[ "default" ][ arrColors[ i ].innerHTML.substring( 0, 7 ).toUpperCase() ] = arrColors[ i ].innerHTML .substring( 8 ); } } widget.ColorPicker.colorPickerPaletteMap[ "default" ].transparent = page.bundle .getString( "colorpicker.color.transparent" ); widget.ColorPicker.colorPalette = colorPalette; // deferring so that the name lookup for colors can succeed during init ( function() { Element.remove( colorPalette ); }.defer() ); } }; widget.ColorPicker.closeAllColorPickers = function() { widget.ColorPicker.colorPickers.each( function( cp ) { cp.close(); } ); }; widget.MultiSelect = Class.create(); widget.MultiSelect.multiselectBoxes = []; // ---------------- "static" methods widget.MultiSelect.registerMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.push( ms ); }; widget.MultiSelect.unRegisterMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.remove( ms ); }; widget.MultiSelect.prototype = { initialize : function( multiSelectDiv, formName ) { this.multiSelectDiv = $( multiSelectDiv ); this.formName = formName; if ( this.multiSelectDiv ) { this.leftClickListeners = []; this.rightClickListeners = []; var divs = this.multiSelectDiv.getElementsByTagName( 'div' ); var leftDiv = $( divs[ 0 ] ); var buttonDiv = $( divs[ 1 ] ); var rightDiv = $( divs[ 2 ] ); var inputs = this.multiSelectDiv.getElementsByTagName( 'input' ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); var leftSelects = leftDiv.getElementsByTagName( 'select' ); var rightSelects = rightDiv.getElementsByTagName( 'select' ); this.leftSelectBox = $( leftSelects[ 0 ] ); this.rightSelectBox = $( rightSelects[ 0 ] ); var buttons = buttonDiv.getElementsByTagName( 'button' ); var moveRightButton = $( buttons[ 0 ] ); var moveLeftButton = $( buttons[ 1 ] ); var leftInputs = leftDiv.getElementsByTagName( 'input' ); var leftInvertSelectionButton = $( leftInputs[ 0 ] ); var leftSelectAllButton = $( leftInputs[ 1 ] ); var rightInputs = rightDiv.getElementsByTagName( 'input' ); var rightInvertSelectionButton = $( rightInputs[ 0 ] ); var rightSelectAllButton = $( rightInputs[ 1 ] ); widget.MultiSelect.registerMultiSelect( this ); Event.observe( moveLeftButton, "click", this.onMoveLeftClick.bindAsEventListener( this ) ); Event.observe( moveRightButton, "click", this.onMoveRightClick.bindAsEventListener( this ) ); Event.observe( leftInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, true ) ); Event.observe( rightInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, false ) ); Event.observe( leftSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, true ) ); Event.observe( rightSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, false ) ); // This for the MultiSelectAction Bean. // If actionBean list is less than 1, button is displayed and not the dropdown if ( leftSelects.length > 1 ) { this.actionBeanLeftSelect = $( leftSelects[ 1 ] ); this.actionBeanRightSelect = $( rightSelects[ 1 ] ); var actionBeanLeftGoBox = $( leftInputs[ 2 ] ); var actionBeanRightGoBox = $( leftInputs[ 2 ] ); Event.observe( actionBeanLeftGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, true ) ); Event.observe( actionBeanRightGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, false ) ); } } }, actionBeanFunc : function( event, leftSelect ) { var destination = this.actionBeanLeftSelect; var selectedBox = this.leftSelectBox; if ( !leftSelect ) { destination = this.actionBeanRightSelect; selectedBox = this.rightSelectBox; } var myindex = destination.selectedIndex; if ( myindex == -1 || myindex > destination.length - 1 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return false; } var sFunctionName = destination.options[ myindex ].value; var oFunc = window[ sFunctionName ]; oFunc( selectedBox.name, this.formName ); this.setHiddenValues(); }, /* * listener registration for leftmove and rightmove clicks */ addToLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.push( listenerFunc ); } }, addToRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.push( listenerFunc ); } }, removeFromLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.remove( listenerFunc ); } }, removeFromRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.remove( listenerFunc ); } }, removeAllLeftClickListeners : function() { this.leftClickListeners = []; }, removeAllRightClickListeners : function() { this.rightClickListeners = []; }, removeFromLeft : function( id ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var toRemoveElement = leftItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToLeft : function( id, value, sortString ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var returnItem = leftItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { this.rawAddToLeft( id, value, sortString ); this.setHiddenValues(); } } }, rawAddToLeft : function( id, value, sortString ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.leftSelectBox.appendChild( item ); }, removeFromRight : function( id ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var toRemoveElement = rightItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToRight : function( id, value, sortString ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var returnItem = rightItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.rightSelectBox.appendChild( item ); this.setHiddenValues(); } } }, resetRightBox : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); rightItems.invoke( "remove" ); this.setHiddenValues(); } }, resetLeftBox : function() { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); leftItems.invoke( "remove" ); this.setHiddenValues(); } }, getAllLeftAvailableElements : function() { if ( this.leftSelectBox ) { return this.leftSelectBox.immediateDescendants(); } else { return []; } }, getAllRightElements : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); return rightItems; } else { return []; } }, onMoveLeftClick : function( event ) { var rightItems = this.rightSelectBox.immediateDescendants(); var selectedItems = rightItems.findAll( function( item ) { return item.selected; } ); var leftItems = this.leftSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { leftItems.push( item ); } ); leftItems = leftItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); leftItems.each( function( item ) { this.leftSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.leftClickListeners ) { this.leftClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, onMoveRightClick : function( event ) { var leftItems = this.leftSelectBox.immediateDescendants(); var selectedItems = leftItems.findAll( function( item ) { return item.selected; } ); var rightItems = this.rightSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { rightItems.push( item ); } ); rightItems = rightItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); rightItems.each( function( item ) { this.rightSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.rightClickListeners ) { this.rightClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, setHiddenValues : function() { var leftString; var rightString; var temp = ""; // Populate select box values comma separated into leftString,rightString. if ( this.leftSelectBox ) { this.leftSelectBox.immediateDescendants().each( function( option ) { leftString = option.value; temp += leftString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.leftValues.value = temp; temp = ""; } if ( this.rightSelectBox ) { this.rightSelectBox.immediateDescendants().each( function( option ) { rightString = option.value; temp += rightString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.rightValues.value = temp; temp = ""; } }, onSelectAllClick : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } Event.stop( event ); }, onInvertSelection : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } } }; /** * A dynamic picker list */ widget.PickerList = Class.create(); widget.PickerList.prototype = { /** * Creates a new picker list * * @param id id of the picker list table * @param cellGenerators an array of functions to be called to generate the HTML for the cells for a new row in the * table. * @param columnAlignments an array of the alignments of the columns * @param columnStyles optional styles to applied to columns * @param reorderable whether the table is to be reorderable * @param reorderingUrl url that reordering changes will be persisted to (can be null) * @param contextParameters parameters that are passed along with the reordering action. */ initialize : function( id, cellGenerators, columnAlignments, columnStyles, reorderable, reorderingUrl, contextParameters ) { this.table = $( id ); this.reorderable = reorderable; if ( this.table ) { this.tableBody = $( this.table.getElementsByTagName( 'tbody' )[ 0 ] ); if ( reorderable ) { this.dragDrop = new dragdrop.ListReordering( this.tableBody, this.table.id + '_reorderControls', false, 'tr', 'dndHandle', 'span', reorderingUrl, contextParameters, new Date().getTime(), null ); } } this.cellGenerators = cellGenerators; this.columnAlignments = columnAlignments; this.columnStyles = columnStyles; }, /** * This function takes any number of arguments. They will be passed directly to the generator functions. If this * list is reorderable, the first two arguments must be: - id of the item added. - name of the item added. */ addRow : function() { var generatorArgs = arguments; var row = $( document.createElement( "tr" ) ); if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var id = arguments[ 0 ]; var name = arguments[ 1 ]; // Set the row id so that the drag and drop code can identify the row row.id = this.table.id + '_row:' + id; // Add the reordering handle. var cell = document.createElement( "td" ); cell.className = 'smallCell dndHandle'; cell.valign = 'top'; cell.innerHTML = '<span class="reorder"><span><img src="/images/ci/icons/generic_updown.gif" alt="" /></span></span>'; row.appendChild( cell ); // Add the item to the accessible controls. var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); accessibleSelect.options[ accessibleSelect.length ] = new Option( name, id ); dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } this.cellGenerators.each( function( generator, index ) { var alignment = this.columnAlignments[ index ]; var cell = $( document.createElement( "td" ) ); cell.setAttribute( "align", alignment ); var columnStyle = this.columnStyles[ index ]; if ( '' != columnStyle ) { cell.addClassName( columnStyle ); } cell.innerHTML = generator.apply( window, generatorArgs ); row.appendChild( cell ); }.bind( this ) ); if ( generatorArgs[ 0 ] && generatorArgs[ 0 ].incompatibleFile ) { return; } else { this.tableBody.appendChild( row ); } if ( this.reorderable ) { // Toggle drag and drop so that it picks up the new item. this.dragDrop.disableDragAndDrop(); this.dragDrop.enableDragAndDrop(); this.dragDrop.calculateItemOrder(); } return row; }, /** * Removes the row with the specified id or index * * @param idOrIndex - if the argument is a string - it is taken as the id of one of the rows in the table - if the * argument is a number - the row at the specified index will be removed. */ removeRow : function( idOrIndex ) { var rowToRemove = null; if ( Object.isString( idOrIndex ) ) { rowToRemove = $( this.table.id + "_row:" + idOrIndex ); } else { rowToRemove = this.tableBody.childElements()[ idOrIndex ]; } if ( rowToRemove ) { // Remove the row from the accessible repositioning controls if applicable if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var idToCheck = rowToRemove.id.split( ':' )[ 1 ]; var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); var options = accessibleSelect.childElements(); for ( var i = 0; i < options.length; i++ ) { if ( options[ i ].value == idToCheck ) { Element.remove( options[ i ] ); break; } } dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } Element.remove( rowToRemove ); if ( this.reorderable ) { this.dragDrop.calculateItemOrder(); } } } }; widget.PickerList.noopGenerator = function() { return '&nbsp;'; }; /** * File picker */ widget.FilePicker = Class.create(); widget.FilePicker.prototype = { /** * Creates a new file picker * * @param pickerList the javascript object representing the picker list (of currently attached files) * @param baseElementName the base name for the file picker elements * @param required whether a file is required to be chosen * @param overrideLocalBehavior whether the CS options to override local behavior should be shown * @param csPickerUrl url to the CS file picker * @param showAddMetadata whether the "submit and add metadata" content system functionality should be enabled. * @param onAttachFile Optional callback function triggered when a new file is attached */ initialize : function( pickerList, baseElementName, required, overrideLocalBehavior, csPickerUrl, showAddMetadata, showSpecialAction, allowMultipleFiles, onAttachFile ) { this.pickerList = pickerList; this.baseElementName = baseElementName; this.required = required; this.overrideLocalBehavior = overrideLocalBehavior; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.allowMultipleFiles = allowMultipleFiles; this.onAttachFile = onAttachFile; this.pickCSButton = $( this.baseElementName + '_csBrowse' ); this.pickLocalButton = $( this.baseElementName + '_localBrowse' ); this.localFilePicker = $( this.baseElementName + '_chooseLocalFile' ); this.pickURLButton = $( this.baseElementName + '_urlBrowse' ); this.selectedCSFile = $( this.baseElementName + '_selectedCSFile' ); this.selectedCSFileName = $( this.baseElementName + '_selectedCSFileName' ); this.selectedCSFilePath = $( this.baseElementName + '_selectedCSFilePath' ); this.selectedCSFileSize = $( this.baseElementName + '_selectedCSFileSize' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_selectedCSFileMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_selectedCSFileMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_selectedCSFileMetadataFormat' ); } // single file selected area this.selectedFileActionsArea = $( this.baseElementName + '_selectedFileActions' ); this.selectedFileName = $( this.baseElementName + '_selectedFileName' ); this.selectedFileSource = $( this.baseElementName + '_selectedFileSource' ); this.selectedFileLinkTitle = $( this.baseElementName + '_selectedFileLinkTitle' ); this.selectedFileSpecialAction = $( this.baseElementName + '_selectedFileSpecialAction' ); this.attachFileButton = $( this.baseElementName + '_attachFileButton' ); this.cancelFileButton = $( this.baseElementName + '_cancelFileButton' ); this.allowCS = this.pickCSButton ? true : false; this.allowLocal = this.pickLocalButton ? true : false; this.allowURL = this.pickURLButton ? true : false; // Wire up events if ( this.overrideLocalBehavior ) { this.pickTargetButton = $( this.baseElementName + '_CSTargetButton' ); this.targetCSLocation = $( this.baseElementName + '_CSTarget' ); Event.observe( this.pickTargetButton, "click", this.onPickTargetClick.bindAsEventListener( this ) ); } this.pickMDButton = $( this.baseElementName + '_CSTargetMetaButton' ); if ( this.pickMDButton ) { window.CSMetadataPickerCallBack = this.afterPickMD.bind( this ); Event.observe( this.pickMDButton, "click", this.onPickMDClick.bindAsEventListener( this ) ); } if ( $( this.baseElementName + '_permissionPickerButton0' ) ) { Event.observe( $( this.baseElementName + '_permissionPickerButton0' ), "click", widget.FilePicker.openPermPicker .bindAsEventListener( this, this.csPickerUrl, this.baseElementName + "_permissions0_manual", "", this.selectedCSFilePath, widget.FilePicker.permPickerCallback .curry( this.baseElementName, this.baseElementName + '_csPermFileList0', 0 ) ) ); } if ( this.allowCS ) { Event.observe( this.pickCSButton, "click", this.onCSBrowse.bindAsEventListener( this ) ); Event.observe( this.selectedCSFile, "change", this.onCSPick.bindAsEventListener( this ) ); } if ( this.allowLocal ) { this.localFileContainer = this.localFilePicker.up(); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } if ( this.allowURL ) { this.linkId = $( this.baseElementName + "_urlBrowse" ); this.formDivId = $( this.baseElementName + "_addUrlForm" ); this.formContainerId = $( this.baseElementName + "_urlContainerDiv" ); var flyout = new flyoutform.FlyoutForm( { linkId : this.linkId, formDivId : this.formDivId, inlineFormContainerId : this.formContainerId, customCallbackObject : this, customOnSubmitHandler : this.onURLPick } ); this.flyout = flyout; } if ( this.cancelFileButton ) { Event.observe( this.cancelFileButton, "click", this.onCancelClick.bindAsEventListener( this ) ); } Event.observe( this.allowLocal ? this.pickLocalButton.form : this.pickCSButton.form, "submit", this.onSubmit .bindAsEventListener( this ) ); this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv && this.pickerList && this.pickerList.tableBody && ( this.pickerList.tableBody .getElementsBySelector( 'input[type="hidden"]' ).length > 0 || this.pickerList.tableBody .getElementsBySelector( 'input[type="file"]' ).length > 0 ) ) { this.listHtmlDiv.show(); } if ( !this.allowMultipleFiles && this.selectedFileSource.value != '' ) { // A file is already attached, so show the selected files area and // turn off the file choosing button (and metadata button if any). this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } } widget.FilePicker.registerFilePicker( this ); }, /** * For the override local behavior: show the picker to pick the location */ onPickTargetClick : function( event ) { var remote = popop.launchPicker( '/webapps/cmsmain/folderpicker/', 'picker_browse' ); if ( remote ) { remote.opener.inputEntryURLToSet = this.targetCSLocation; remote.opener.returnFullURL = false; remote.methodCall = this.onPickMDClick.bind( this ); } }, /** * For the override local behavior: show the picker to pick the metadata */ onPickMDClick : function( event ) { var location = this.targetCSLocation; var file = this.localFilePicker; if ( file.value == '' ) { return; } var url = '/webapps/cmsmain/execute/metadatapicker/manage?action=pick&file=' + file.value; if ( location && location.value != '' ) { url += 'location=' + location.value; } popup.launchPicker( url, 'picker_browse' ); }, /** * For the override local behavior: callback from the metadata picker */ afterPickMD : function( metadata, selection, synchronised, format ) { $( this.baseElementName + '_CSTargetmetadata' ).value = metadata; $( this.baseElementName + '_CSTargetselection' ).value = selection; $( this.baseElementName + '_CSTargetSynchronised' ).value = synchronised; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = format; }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.inputEntryURLToSet = this.selectedCSFile; this.csBrowseWindow.opener.inputFileSizeToSet = this.selectedCSFileSize; this.csBrowseWindow.opener.linkName = this.selectedCSFileName; if ( this.selectedCSFilePath ) { this.csBrowseWindow.opener.filePath = this.selectedCSFilePath; } this.csBrowseWindow.opener.customHandler = this.onCSPick.bind( this ); if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, /** * Called after file has been chosen from CS file picker with metadata added. */ afterMD : function( metadata, synced, format, fileId ) { var metadataString = metadata.join( "#" ); if ( fileId ) { if ( $( this.baseElementName + '_CSMetadata_' + fileId ) ) { $( this.baseElementName + '_CSMetadata_' + fileId ).value = metadataString; } if ( $( this.baseElementName + '_CSMetadataSync_' + fileId ) ) { $( this.baseElementName + '_CSMetadataSync_' + fileId ).value = synced; } if ( $( this.baseElementName + '_CSMetadataFormat_' + fileId ) ) { $( this.baseElementName + '_CSMetadataFormat_' + fileId ).value = format; } } else { if ( this.selectedCSFileMetadata ) { this.selectedCSFileMetadata.value = metadataString; } if ( this.selectedCSFileMetadataSync ) { this.selectedCSFileMetadataSync.value = synced; } if ( this.selectedCSFileMetadataFormat ) { this.selectedCSFileMetadataFormat.value = format; } } }, /** * Callback called after a file has been chosen from the CS file picker in single file mode - updating selected * files section */ onCSPick : function( fileList ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { // picker was opened in multiple mode but one of the legacy page was hit // see how legacy pages with radio buttons submit its selection - pickmultiple.jspf // create object cell generator is expecting using hidden input if ( typeof ( fileList ) == 'string' ) { var filePath = this.selectedCSFilePath ? this.selectedCSFilePath.value : ""; var csFile = { fileName : this.selectedCSFile.value, fullUrlToFile : this.selectedCSFile.value, linkTitle : this.selectedCSFileName.value, filePath : filePath, size : this.selectedCSFileSize.value }; this.onCSPickAllowMultiple( [ csFile ] ); } else { this.onCSPickAllowMultiple( fileList ); } } else { this.csBrowseWindow = null; this.selectedFileSource.value = 'C'; this.selectedFileName.innerHTML = this.selectedCSFileName.value; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = this.selectedCSFileName.value; } this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } if ( $( this.baseElementName + '_csPermissionsLi' ) ) { var fileName = this.selectedCSFileName.value; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. if ( ( /html|htm/i ).test( ext ) ) { $( this.baseElementName + "_permissionOptionsIndex" ).value = 0; $( this.baseElementName + '_csPermissionsLi' ).show(); } } if ( this.onAttachFile ) { this.onAttachFile( this, false ); } } }, /** * Called after a file is chosen from the local file picker in single file mode - updating selected files section */ onLocalPick : function( event ) { if ( this.localFilePicker.value != '' ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { this.onLocalPickAllowMultiple( event ); } else { var localFileName = this.getFileName( this.localFilePicker.value ); this.selectedFileName.innerHTML = localFileName; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = localFileName; } this.selectedFileSource.value = 'L'; this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.show(); } if ( this.onAttachFile ) { this.onAttachFile( this, true ); } } } }, /** * Callback called after files have been chosen from the CS file picker in multiple files mode - updating table */ onCSPickAllowMultiple : function( fileList ) { this.csBrowseWindow = null; fileList.each( function( selectedFile ) { selectedFile.baseElementName = this.baseElementName; selectedFile.showAddMetadata = this.showAddMetadata; selectedFile.csPickerUrl = this.csPickerUrl; this.pickerList.addRow( selectedFile, false ); // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); if ( this.onAttachFile ) { this.onAttachFile( this, false ); } }.bind( this ) ); }, /** * Called after a file is chosen from the local file picker in multiple files mode - updating table */ onLocalPickAllowMultiple : function( event ) { var row = this.pickerList.addRow( this, true ); if ( row === null ) { return; } // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); var cell = $( row.getElementsByTagName( 'td' )[ 0 ] ); var title = this.localFilePicker.title; Element.remove( this.localFilePicker ); this.localFilePicker.removeClassName( "hiddenInput" ); this.localFilePicker.setStyle( { position : "absolute", top : '-10000px' } ); this.localFilePicker.disabled = false; cell.appendChild( this.localFilePicker ); // Set up the names of the local file fields this.pickerList.tableBody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = this.baseElementName + '_LocalFile' + index; }.bind( this ) ); // Create and insert a new local file picker for more local file attaching this.localFilePicker = new Element( 'input', { title : title, type : 'file' } ); this.localFilePicker.addClassName( 'hiddenInput' ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); if ( this.onAttachFile ) { this.onAttachFile( this, true ); } }, /** * If a) Special Actions are enabled, and b) the embed options are configure to show up: - Wires up an on change * even on the special action select box that shows the embed options when the embed action is chosen. */ registerEmbedOptionsListener : function( index ) { if ( this.showSpecialAction ) { var specialAction = $( this.baseElementName + '_specialAction' + index ); var embedOptions = $( this.baseElementName + '_embedOptions' + index ); if ( embedOptions ) { specialAction.observe( 'change', function( event ) { if ( "EMBED" == specialAction.options[ specialAction.selectedIndex ].value ) { embedOptions.show(); } else { embedOptions.hide(); } } ); } } }, /** * Called after a url is chosen from the local file picker in multiple files mode - updating table */ onURLPick : function( widget ) { var selectedURL = document.getElementById( widget.baseElementName + '_newUrlName' ); if (selectedURL.value.blank()) // TODO: More exhaustive URL validation? { alert(page.bundle.getString('filePicker.validate.invalid.url')); return false; } if ( widget.listHtmlDiv ) { widget.listHtmlDiv.show(); } if ( widget.allowMultipleFiles ) { var urlFile = { fileName : selectedURL.value, fullUrlToFile : selectedURL.value, linkTitle : selectedURL.value }; widget.onCSPickAllowMultiple( [ urlFile ] ); } else { widget.selectedFileSource.value = 'C'; widget.selectedFileName.innerHTML = selectedURL.value; if ( widget.selectedFileLinkTitle ) { widget.selectedFileLinkTitle.value = selectedURL.value; } widget.selectedFileActionsArea.show(); widget.togglePickerButtons( false ); if ( widget.pickMDButton ) { widget.pickMDButton.hide(); } if ( widget.onAttachFile ) { widget.onAttachFile( widget, false ); } } // Purge entry widget.flyout.close(); selectedURL.value = ''; return true; }, /** * Called when the "Do not attach file" button is clicked */ onCancelClick : function( event ) { this.selectedFileActionsArea.hide(); this.clearSelectedFileInfo(); this.togglePickerButtons( true ); if ( event ) { Event.stop( event ); } }, /** * Toggles the enabled state of the Local/CS picker buttons to the specified state */ togglePickerButtons : function( enabled ) { if ( this.allowLocal ) { this.pickLocalButton.disabled = !enabled; if ( enabled ) { this.pickLocalButton.className = 'browse visibleInput'; this.localFilePicker.position = 'relative'; this.localFilePicker.style.top = ''; } else { this.pickLocalButton.className = 'disabled'; this.localFilePicker.position = 'absolute'; this.localFilePicker.style.top = '-10000px'; } if ( this.allowMultiple ) { this.localFilePicker.disabled = !enabled; } } if ( this.allowCS ) { this.pickCSButton.disabled = !enabled; if ( enabled ) { this.pickCSButton.className = 'browse visibleInput'; } else { this.pickCSButton.className = 'disabled'; } } if ( this.allowURL ) { this.pickURLButton.disabled = !enabled; if ( enabled ) { this.pickURLButton.className = 'browse visibleInput'; } else { this.pickURLButton.className = 'disabled'; } } }, /** * Clears the info associated to the current attached file (if the user cancelled, or chose to attach another file ) */ clearSelectedFileInfo : function() { var isLocal = this.selectedFileSource.value == 'L'; this.selectedFileName.innerHTML = ""; this.selectedFileSource.value = ""; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = ""; } if ( this.pickMDButton ) { $( this.baseElementName + '_CSTargetmetadata' ).value = ""; $( this.baseElementName + '_CSTargetselection' ).value = ""; $( this.baseElementName + '_CSTargetSynchronised' ).value = ""; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = ""; } if ( $( this.baseElementName + "_permissionOptionsIndex" ) ) { $( this.baseElementName + '_permissionOptionsIndex' ).value = -1; $( this.baseElementName + '_permissions0_all' ).checked = true; } if ( this.selectedFileSpecialAction ) { this.selectedFileSpecialAction.selectedIndex = 0; } if ( isLocal ) { var title = ""; if ( !this.allowMultipleFiles ) { title = this.localFilePicker.title; Element.remove( this.localFilePicker ); } this.localFilePicker = $( document.createElement( "input" ) ); if ( !this.allowMultipleFiles ) { this.localFilePicker.name = this.baseElementName + '_LocalFile0'; } this.localFilePicker.title = title; this.localFilePicker.type = "file"; this.localFilePicker.addClassName( "hiddenInput" ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } else { this.selectedCSFile.value = ""; this.selectedCSFileName.value = ""; if ( this.selectedFilePath ) { this.selectedFilePath = ""; } this.selectedCSFileSize.value = ""; if ( this.showAddMetadata ) { this.selectedCSFileMetadata.value = ""; this.selectedCSFileMetadataSync.value = ""; this.selectedCSFileMetadataFormat.value = ""; } } }, /** * Gets the file name based on the full file path. */ getFileName : function( fullPath ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return result; }, setRequired : function( required ) { this.required = required; }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.allowMultipleFiles ) { if ( this.pickerList.tableBody.immediateDescendants().length === 0 ) { alert( page.bundle.getString( "filePicker.validate.atLeastOne" ) ); if ( event ) { Event.stop( event ); } return false; } } else { if ( ( this.selectedCSFile && this.selectedCSFile.value == '' ) && ( this.localFilePicker && this.localFilePicker.value == '' ) ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); if ( event ) { Event.stop( event ); } return false; } } } return true; } }; // Creates hidden input items for selected files/folders if giving access to additional files/folder // when attaching an HTML file widget.FilePicker.permPickerCallback = function( baseElementName, permFileList, index, itemList ) { if ( itemList && itemList.length > 0 ) { var i; var permFileListElem = $( permFileList ); var hiddenInputs = ""; if ( !permFileListElem ) { return; } hiddenInputs += '<input type="hidden" name="' + baseElementName + '_permittedFiles' + index + '" value="' + itemList[ 0 ].fileName; for ( i = 1; i < itemList.length; i++ ) { hiddenInputs += ':' + itemList[ i ].fileName; } hiddenInputs += '">'; permFileListElem.innerHTML = hiddenInputs; } }; /** * Toggles the "mark for removal" status of an item in the currently attached files table. Should be called from an * onclick attribute on the toggle link in the table. */ widget.FilePicker.toggleForRemove = function( event, removeLink ) { var e = event || window.event; removeLink = $( removeLink ); var tableRow = removeLink.up( "tr" ); var hiddenField = removeLink.up( "td" ).down( 'input[type="hidden"]' ); tableRow.toggleClassName( "removeCell" ); if ( hiddenField.disabled ) { hiddenField.disabled = false; removeLink.innerHTML = page.bundle.getString( "filePicker.unmarkForRemove" ); } else { hiddenField.disabled = true; removeLink.innerHTML = page.bundle.getString( "filePicker.markForRemove" ); } Event.stop( e ); }; widget.FilePicker.togglePickerButton = function( pickerButton, enabled ) { if ( enabled ) { $( pickerButton ).setAttribute( "href", "#" ); $( pickerButton ).removeClassName( "disabled" ); } else { $( pickerButton ).removeAttribute( "href" ); $( pickerButton ).addClassName( "disabled" ); } }; /** * Removes the specified pending attachment. Should be called from an onclick handler on a link in the currently * attached files table */ widget.FilePicker.removePendingAttachment = function( event, removeLink, baseElementName ) { var e = event || window.event; if ( confirm( page.bundle.getString( "filePicker.doNotAttach.confirm" ) ) ) { removeLink = $( removeLink ); var row = removeLink.up( "tr" ); var tbody = row.up( "tbody" ); // Remove the pending row Element.remove( row ); // Re-index the local file inputs. tbody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = baseElementName + '_LocalFile' + index; } ); // Hide the whole attached files table if there are no more attached files. var rowTotal = tbody.getElementsByTagName( 'tr' ).length; if ( rowTotal === 0 ) { var listHtmlDiv = $( baseElementName + "_listHtmlDiv" ); if ( listHtmlDiv ) { listHtmlDiv.hide(); } } } Event.stop( e ); }; widget.FilePicker.getPermPickerUrl = function( csPickerUrl, path, pathElement ) { // reuse current file picker's url as fall back plan var baseUrl = csPickerUrl.split( "?" )[ 0 ]; var queryParams = csPickerUrl.toQueryParams(); if ( !queryParams.multipicker ) { queryParams.multipicker = 'true'; } if ( !path && pathElement ) { path = pathElement.value; } // if we have path, construct proper full url from scratch using the provided path & extracted principalId if ( path ) { var principalId = baseUrl.match( /\/webapps\/cmsmain\/.*picker\/([^\/]*)\/?/ ); baseUrl = "/webapps/cmsmain/picker"; if ( principalId ) { baseUrl += "/" + principalId[ 1 ]; } if ( baseUrl.charAt( baseUrl.length - 1 ) === '/' ) { baseUrl = baseUrl.slice( 0, baseUrl.length - 1 ); } baseUrl += path; } return baseUrl + "?" + $H( queryParams ).toQueryString(); }; widget.FilePicker.openPermPicker = function( event, csPickerUrl, pid, path, pathElement, callback ) { if ( !( pid && $( pid ) && $( pid ).type == 'radio' && $( pid ).checked ) ) { return false; } var permPickerUrl = widget.FilePicker.getPermPickerUrl( csPickerUrl, path, pathElement ); var remote = popup.launchPicker( permPickerUrl ); if ( remote ) { if ( callback ) { remote.opener.customHandler = callback; } else { remote.opener.customHandler = null; } } var e = event || window.event; if ( e ) { var eventElement = Event.element( e ); Event.stop( e ); } return false; }; /** * A registry of defined file pickers and methods to access this registry */ widget.FilePicker.filePickers = {}; widget.FilePicker.registerFilePicker = function( filePicker ) { widget.FilePicker.filePickers[ filePicker.baseElementName ] = filePicker; }; widget.FilePicker.unRegisterFilePicker = function( filePicker ) { delete widget.FilePicker.filePickers[ filePicker.baseElementName ]; }; widget.FilePicker.getFilePicker = function( baseElementName ) { return widget.FilePicker.filePickers[ baseElementName ]; }; /** * Cell generators for the current attached files table */ widget.FilePicker.cellGenerators = { fileName : function( filePicker, isLocal ) { var result = '<input type="hidden" name="' + filePicker.baseElementName + '_attachmentType" value="' + ( isLocal ? 'L' : 'C' ) + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_fileId" value="new">'; if ( isLocal ) { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.getFileName( filePicker.localFilePicker.value ) + '</span>'; } else { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.linkTitle + '</span>'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFile" value="' + filePicker.fileName + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFileUrl" value="' + filePicker.fullUrlToFile + '">'; if ( filePicker.showAddMetadata ) { result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadata" id="' + filePicker.baseElementName + '_CSMetadata_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataSync" id="' + filePicker.baseElementName + '_CSMetadataSync_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataFormat" id="' + filePicker.baseElementName + '_CSMetadataFormat_' + filePicker.xythosId + '" value="">'; } } return result; }, fileType : function( filePicker, isLocal ) { var result = null; if ( isLocal ) { result = page.bundle.getString( "filePicker.fileType.attachment" ); } else { result = page.bundle.getString( "filePicker.fileType.content" ); } return result; }, linkTitle : function( filePicker, isLocal ) { var linkTitle = ""; if ( isLocal ) { linkTitle = filePicker.getFileName( filePicker.localFilePicker.value ); } else { if ( filePicker.linkTitle ) { linkTitle = filePicker.linkTitle; } } return '<input type="text" name="' + filePicker.baseElementName + '_linkTitle" value="' + linkTitle + '" title="' + page.bundle .getString( "filePicker.nameOfLink" ) + " " + linkTitle + '">'; }, size : function( filePicker, isLocal ) { if ( !isLocal && filePicker.size ) { return '<input type="hidden" name="' + filePicker.baseElementName + '_size" value="' + filePicker.size + '"> ' + filePicker.size; } else { return ""; } }, fileAction : function( filePicker, isLocal ) { return widget.FilePicker.cellGenerators.fileActionEmbedOptions( filePicker, isLocal, true ); }, fileActionEmbedOptions_index : 0, // used to uniquely identify embed options form elements on the page. fileActionEmbedOptions : function( filePicker, isLocal, suppressOptions ) { var index = widget.FilePicker.cellGenerators.fileActionEmbedOptions_index++; var baseName = filePicker.baseElementName; var fileName = isLocal ? filePicker.getFileName( filePicker.localFilePicker.value ) : filePicker.linkTitle; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. var isType = { image : ( /gif|jpeg|png|tif|bmp|jpg/i ).test( ext ), videoQt : ( /qt|mov|moov|movie/i ).test( ext ), videoOther : ( /avi|mpg|mpeg|wmv|asf|wma|mpe/i ).test( ext ), real : ( /ra|ram|rm/i ).test( ext ), flash : ( /swa|swf/i ).test( ext ), audio : ( /aif|aiff|au|mp3|wav/i ).test( ext ), html : ( /html|htm/i ).test( ext ) }; var isMedia = isType.image || isType.videoQt || isType.videoOther || isType.flash || isType.audio; var result = ''; if ( isMedia ) { result += '<select id="' + baseName + '_specialAction' + index + '" name="' + baseName + '_specialAction"'; result += ' title="' + page.bundle.getString( "filePicker.specialAction.for" ) + " " + fileName + '">'; result += '<option value="LINK">' + page.bundle.getString( "filePicker.specialAction.link" ) + '</option>'; result += '<option value="EMBED">' + page.bundle.getString( "filePicker.specialAction.embed" ) + '</option>'; result += '</select>'; // Render the embed options (if not suppressed) if ( !suppressOptions ) { result += '<ul style="display: none;" class="nestedList smallControls liveArea liveArea-slim" id="' + baseName + '_embedOptions' + index + '">'; // Alignment var fid = baseName + 'align' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.alignment' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_l" name="' + fid + '" value="Left" checked> <label for="' + fid + '_l">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.left' ) + '</label>' + '<input type="radio" id="' + fid + '_c" name="' + fid + '" value="Center"> <label for="' + fid + '_c">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.center' ) + '</label>' + '<input type="radio" id="' + fid + '_r" name="' + fid + '" value="Right"> <label for="' + fid + '_r">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.right' ) + '</label></fieldset></div></li>'; // Placement fid = baseName + 'placement' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.placement' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.placement' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_a" name="' + fid + '" value="Above"> <label for="' + fid + '_a">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.above' ) + '</label>' + '<input type="radio" id="' + fid + '_b" name="' + fid + '" value="Below" checked> <label for="' + fid + '_b">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.below' ) + '</label></fieldset></div></li>'; // Dimensions if ( !isType.audio ) { fid = baseName + 'width' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.width' ) + '</label></div><div class="field"><input class="width" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; fid = baseName + 'height' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.height' ) + '</label></div><div class="field"><input class="height" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; } // Autoplay if ( !isType.image ) { fid = baseName + 'autostart' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.autostart' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.autostart' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Loop if ( !isType.image && !isType.real ) { fid = baseName + 'loop' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.loop' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.loop' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + baseName + 'loop' + index + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Control (radio) if ( isType.videoQt || isType.real ) { fid = baseName + 'controls' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.controls' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="Full" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="None"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Controls (drop down) if ( isType.videoOther || isType.audio ) { fid = baseName + 'controls' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="controls">' + '<option value="None">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_none' ) + '</option>' + '<option value="Mini">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_mini' ) + '</option>' + '<option value="Full" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.controls_full' ) + '</option>' + '</select></div></li>'; } // Quality if ( isType.flash ) { fid = baseName + 'quality' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.set_quality' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="quality">' + '<option value="Low">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_low' ) + '</option>' + '<option value="Medium">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_med' ) + '</option>' + '<option value="High">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_high' ) + '</option>' + '<option value="Best" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.quality_best' ) + '</option>' + '</select></div></li>'; } if ( isType.image ) { // URL fid = baseName + 'url' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.url' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25">' + '</div></li>'; // New Window fid = baseName + 'newwin' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.new_window' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.new_window' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label>' + '</fieldset></div></li>'; // Border fid = baseName + 'border' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.border' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="border">' + '<option value="0" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.none' ) + '</option>' + '<option value="1>1</option><option value="2">2</option><option value="3">3</option>' + '<option value="4">4</option></select></div></li>'; } // Alt text fid = baseName + 'alttext' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25" value=""></div><span class="fieldHelp clearfloats">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text.instructions' ) + '</span></li>'; result += '</ul>'; } } else { result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialAction" value="LINK">'; result += page.bundle.getString( "filePicker.specialAction.link" ); } // The index is used to find the correct request parameters on the backend. result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialActionIndex" value="' + ( isMedia && !suppressOptions ? index : -1 ) + '">'; if ( filePicker.shouldManagePermission && !isLocal ) { // permission management options var permissionCsPickerUrl = filePicker.csPickerUrl; if ( permissionCsPickerUrl.indexOf( 'multipicker=true' ) != -1 ) { var xythosId = filePicker.fileName.sub( '/xid-', '' ).strip(); if ( xythosId ) { permissionCsPickerUrl = permissionCsPickerUrl + '&preselectedItemId=' + xythosId; } } result += '<ul id="' + filePicker.baseElementName + '_imgSpecOptions" class="nestedList smallControls liveArea liveArea-slim">'; result += '<li>'; var pid = baseName + "_permissions" + index; var pickerButtonId = baseName + "_permissionPickerButton" + index; var permFileListName = baseName + '_csPermFileList' + index; result += '<input type="radio" name="' + pid + '" value="A" id="' + pid + '_all" checked="checked" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.all" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="O" id="' + pid + '_this" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.this" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="S" id="' + pid + '_manual" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', true)" />' + page.bundle .getString( "fm.permission.grant.manual" ); result += '<a id="' + pickerButtonId + '" class="button-4 disabled" style="margin:0 3px" onclick="widget.FilePicker.openPermPicker( event, \'' + permissionCsPickerUrl + '\', \'' + pid + '_manual\',\'' + filePicker.filePath + '\', null, widget.FilePicker.permPickerCallback.curry( \'' + baseName + '\', \'' + permFileListName + '\', ' + index + ' ) );">' + page.bundle .getString( "filePicker.browse" ) + '</a>'; result += '</li>'; result += '</ul>'; result += '<div id="' + permFileListName + '" style="display: none;"></div>'; } result += '<input type="hidden" name="' + baseName + '_permissionOptionsIndex" value="' + ( isType.html && !isLocal ? index : -1 ) + '">'; return result; }, remove : function( filePicker, isLocal ) { var result = '<a href="#" onclick="widget.FilePicker.removePendingAttachment(event, this, '; result += "'" + filePicker.baseElementName + "'"; result += ');">' + page.bundle.getString( "filePicker.doNotAttach" ) + '</a>'; return result; }, // attach CS file alignment to course item align : function(filePicker, isLocal) { var alignOptionsName = "csAlignedResources"; var html = '<label for="csAlignedResources" style="white-space:nowrap">' + '<input type="checkbox" id="' + alignOptionsName + '"' + ' name="' + alignOptionsName + '"' + ' value="' + filePicker.filePath + '"' + '/>' + ' ' + page.bundle.getString('wysiwyg.insert_picture.csalign') + '</label>'; return html; } }; widget.InlineSingleCSFilePicker = Class.create(); widget.InlineSingleCSFilePicker.prototype = { initialize : function( baseElementName, csPickerUrl, showAddMetadata, showSpecialAction ) { this.baseElementName = baseElementName; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.browseButton = $( baseElementName + '_csBrowse' ); this.fileEntry = $( baseElementName + '_CSFile' ); this.fileId = $( baseElementName + '_fileId' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_CSMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_CSMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_CSFileMetadataFormat' ); } Event.observe( this.browseButton, 'click', this.onCSBrowse.bindAsEventListener( this ) ); }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = "picker" + new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.inputEntryURLToSet = this.fileEntry; this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.linkName = this.fileId; if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, afterMD : function( metadata, synced, format ) { var metadataString = metadata.join( "#" ); this.selectedCSFileMetadata.value = metadataString; this.selectedCSFileMetadataSync.value = synced; this.selectedCSFileMetadataFormat.value = format; } }; /** * Inline single local file picker - $baseElementName_attachmentType - 'AL' or 'L' or '' - $baseElementName_localBrowse - * $baseElementName_fileId */ widget.InlineSingleLocalFilePicker = Class.create(); widget.InlineSingleLocalFilePicker.prototype = { initialize : function( baseElementName, currentAttachedFile, required, showSpecialAction ) { this.baseElementName = baseElementName; this.fileInput = $( baseElementName + '_chooseLocalFile' ); this.fileInputWrapper = $( this.fileInput.parentNode ); this.attachmentType = $( baseElementName + '_attachmentType' ); this.fullFileName = $( baseElementName + '_fileId' ); this.attachmentNameSpan = $( baseElementName + '_attachmentName' ); this.removeLink = $( baseElementName + '_removeLink' ); this.inputArea = $( baseElementName + '_inputArea' ); this.attachedFileArea = $( baseElementName + '_attachedFileArea' ); this.required = required; this.showSpecialAction = showSpecialAction; // Wire up events Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); Event.observe( this.removeLink, "click", this.onRemoveClick.bindAsEventListener( this ) ); Event.observe( this.fileInput.form, "submit", this.onSubmit.bindAsEventListener( this ) ); // Set up initial values if ( currentAttachedFile ) { this.setDefaultCurrentAttachedFile( currentAttachedFile ); } widget.InlineSingleLocalFilePicker.pickerMap[ baseElementName ] = this; }, setCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, file ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, setDefaultCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentType._defaultValue = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } this.fullFileName.value = file; this.fullFileName._defaultValue = file; this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; this.fullFileName.value = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, onAfterChooseFile : function( event ) { this.attachmentNameSpan.innerHTML = this.getFileName( this.fileInput.value, true ); this.attachmentType.value = 'L'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fileInput.value ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); Event.stop( event ); }, onRemoveClick : function( event ) { this.clearFileInput(); if ( this.attachmentType.value == 'AL' ) { this.removeHiddenField = document.createElement( 'input' ); this.removeHiddenField.type = 'hidden'; this.removeHiddenField.name = this.baseElementName + '_remove'; this.removeHiddenField.id = this.baseElementName + '_remove'; this.removeHiddenField.value = this.fullFileName.value; this.attachedFileArea.insertBefore( this.removeHiddenField, this.attachedFileArea.firstChild ); widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fullFileName.value ); } else { this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); } this.attachmentNameSpan.innerHTML = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); Event.stop( event ); }, clearFileInput : function() { var title = this.fileInput.title; Element.remove( this.fileInput ); this.fileInput = $( document.createElement( "input" ) ); this.fileInput.title = title; this.fileInput.type = "file"; this.fileInput.addClassName( "hiddenInput" ); this.fileInput.name = this.baseElementName + '_LocalFile0'; this.fileInput._defaultValue = ''; this.fileInputWrapper.insertBefore( this.fileInput, this.fileInputWrapper.firstChild ); Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); }, /** * Gets the file name based on the full file path. * * @param fullPath Fully-qualified path of file * @param isDecodedName (optional) Indicates that the filename has already been URL decoded */ getFileName : function( fullPath, isDecodedName ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return isDecodedName ? result : decodeURI( result ); }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.fullFileName.value == '' ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); Event.stop( event ); return; } } } }; widget.InlineSingleLocalFilePicker.pickerMap = {}; /** * Read Only File picker */ widget.ReadOnlyFilePicker = Class.create(); widget.ReadOnlyFilePicker.prototype = { /** * Creates a new file picker * * @param baseElementName the base name for the file picker elements */ initialize : function( baseElementName ) { this.baseElementName = baseElementName; this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } widget.ReadOnlyFilePicker.pickerMap[ baseElementName ] = this; } }; widget.ReadOnlyFilePicker.pickerMap = {}; widget.UserRoleSelect = Class.create(); widget.UserRoleSelect.prototype = { initialize : function( userSelectRoleDivStr, moveMsgJS, noRoleMsgJs ) { this.sourceValueName = "_left_values"; this.secondaryValueName = "_right_values"; this.primaryValueName = "_primary_value"; this.userSelectRoleDiv = $( userSelectRoleDivStr ); if ( this.userSelectRoleDiv ) { var selects = this.userSelectRoleDiv.getElementsByTagName( 'select' ); var inputs = this.userSelectRoleDiv.getElementsByTagName( 'input' ); var links = this.userSelectRoleDiv.getElementsByTagName( 'a' ); this.source = $( selects[ 0 ] ); this.primary = $( inputs[ 3 ] ); this.secondary = $( selects[ 1 ] ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); this.primaryValue = $( inputs[ 2 ] ); this.toPrimaryMove = $( links[ 0 ] ); this.toSecondaryMove = $( links[ 1 ] ); this.toSourceMove = $( links[ 2 ] ); Event.observe( this.toSourceMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, false, moveMsgJS, noRoleMsgJs ) ); Event.observe( this.toPrimaryMove, "click", this.switchPrimary.bindAsEventListener( this, moveMsgJS ) ); Event.observe( this.toSecondaryMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, true, moveMsgJS, noRoleMsgJs ) ); } }, switchPrimary : function( event, msg ) { var indx; indx = 0; var sourceArray = this.source; if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } if ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.getFromPrimary(); this.primaryValue.value = sourceArray.options[ indx ].value; this.primary.value = sourceArray.options[ indx ].text; sourceArray.options[ indx ].selected = false; sourceArray.options[ indx ] = null; sourceArray.options[ sourceArray.length ] = tmpOpt; } this.writeToSelectBoxValues( this.source, this.leftValues ); return false; }, getFromPrimary : function() { var primaryRoleField = this.primaryValue; var primaryField = this.primary; return new Option( primaryField.value, primaryRoleField.value ); }, writeToSelectBoxValues : function( selectBox, hiddenName ) { var i = 0; var values = ""; while ( i < selectBox.length ) { if ( i > 0 ) { values += ","; } values += selectBox.options[ i ].value; i++; } hiddenName.value = values; return true; }, switchUserRoleColumns : function( event, isSourceDest, msg, noRoleMsg ) { var indx; indx = 0; var sourceArray = this.source; var targetArray = this.secondary; if ( !isSourceDest ) // If we are moving from Dest to Source { var temp = sourceArray; sourceArray = targetArray; targetArray = temp; } if ( sourceArray.length <= 0 ) { alert( noRoleMsg ); return false; } if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } var rightIndex = 0; var targetLength = targetArray.length; while ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.cloneMultipleRows( sourceArray.options[ indx ] ); if ( targetLength > 0 ) { var i = targetLength; while ( i > 0 ) { var tmpOpt1 = this.cloneMultipleRows( targetArray.options[ i + rightIndex - 1 ] ); targetArray.options[ i + rightIndex ] = tmpOpt1; i--; } } sourceArray.options[ indx ].selected = false; targetArray.options[ rightIndex ] = tmpOpt; // targetArray.options[rigthIndex].selected=true; rightIndex = rightIndex + 1; sourceArray.options[ indx ] = null; } // end of while this.writeToSelectBoxValues( this.source, this.leftValues ); this.writeToSelectBoxValues( this.secondary, this.rightValues ); return false; }, cloneMultipleRows : function( opt ) { return new Option( opt.text, opt.value, opt.defaultSelected, opt.selected ); } }; widget.StepGroup = {}; widget.StepGroup.toggleStepGroup = function( e, activeTabStr ) { var event = e || window.event; var target = Event.findElement( event, 'li' ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); $( 'activeTabSpanId_' + tab.id ).innerHTML = activeTabStr; } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); $( 'activeTabSpanId_' + tab.id ).innerHTML = ""; } } ); Event.stop( event ); }; /** * Show a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.showStepGroup = function( number ) { var target = $( 'stepGroupTab_' + number ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; /** * Get the content block element to a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.getStepGroupContentBlock = function( number ) { var targetTab = $( 'stepGroupTab_' + number ); return $( targetTab.getAttribute( "bb:groupId" ) ); }; widget.StepGroup.showAllStepGroupsForSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } ); }; widget.StepGroup.revertAllStepGroupsAfterSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { if ( page.util.hasClassName( tab, 'active' ) ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } else { $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; widget.ShowUnsavedChanges = Class.create(); widget.ShowUnsavedChanges.prototype = { initialize : function( dataCollectionContainer, skipTextArea ) { widget.ShowUnsavedChanges.enabled = true; widget.ShowUnsavedChanges.registerOnValueChangeCallback( widget.ShowUnsavedChanges.showIconsForUnsavedChanges ); var container = $( dataCollectionContainer ); var inputs = $A( container.getElementsByTagName( 'input' ) ); var selects = $A( container.getElementsByTagName( 'select' ) ); var textareas = $A( container.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { input = $( input ); var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { input._defaultValue = input.checked; } else if ( type == 'hidden' || type == 'text' ) { input._defaultValue = input.value; } else { input._defaultValue = ''; } if ( type != 'hidden' && type != 'button' && type != 'submit' ) { input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); } }.bind( this ) ); selects.each( function( input ) // TODO: multiselect? { input = $( input ); input._defaultValue = input.selectedIndex; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); if ( !skipTextArea || !skipTextArea ) { textareas.each( function( input ) { input = $( input ); input._defaultValue = input.value; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); } } }; widget.ShowUnsavedChanges.onValueChangeCallback = function() { }; // do nothing widget.ShowUnsavedChanges.registerOnValueChangeCallback = function( callbackFunction ) { widget.ShowUnsavedChanges.onValueChangeCallback = callbackFunction; }; widget.ShowUnsavedChanges.dataElementsByStepGroup = {}; widget.ShowUnsavedChanges.onValueChange = function( event, elem ) { if ( widget.ShowUnsavedChanges.enabled ) { var dataElement = null; if ( event ) { dataElement = Event.findElement( event, 'li' ); } else { dataElement = elem.parentNode; while ( dataElement && dataElement.tagName.toLowerCase() != 'li' ) { dataElement = dataElement.parentNode; if ( dataElement.tagName.toLowerCase() == 'body' ) { dataElement = null; } } if ( dataElement ) { dataElement = $( dataElement ); } } if ( !dataElement ) { return; } var isDefault = true; var inputs = $A( dataElement.getElementsByTagName( 'input' ) ); var selects = $A( dataElement.getElementsByTagName( 'select' ) ); var textareas = $A( dataElement.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { isDefault &= ( input.checked == input._defaultValue ); } else if ( type == 'hidden' || type == 'text' ) { isDefault &= ( input.value == input._defaultValue ); } } ); selects.each( function( input ) // TODO: multiselect? { isDefault &= ( input.selectedIndex == input._defaultValue ); } ); textareas.each( function( input ) { isDefault &= ( input.value == input._defaultValue ); } ); // trigger call back function widget.ShowUnsavedChanges.onValueChangeCallback( isDefault, dataElement ); } }; widget.ShowUnsavedChanges.showIconsForUnsavedChanges = function( isDefault, dataElement ) { var imgs = dataElement.getElementsByTagName( 'img' ); var unsavedImg = null; for ( var i = 0; i < imgs.length; i++ ) { if ( imgs[ i ].className.indexOf( 'unsavedChangeImg' ) >= 0 ) { unsavedImg = $( imgs[ i ] ); break; } } if ( unsavedImg ) { if ( isDefault ) { dataElement.removeClassName( 'dirty' ); unsavedImg.hide(); } else { dataElement.addClassName( 'dirty' ); unsavedImg.show(); } widget.ShowUnsavedChanges.updateStepGroupIndicator(); } }; widget.ShowUnsavedChanges.updateStepGroupIndicator = function() { if ( widget.ShowUnsavedChanges.enabled ) { // Loop through each step group tab, and determine if an icon that indicates // unsaved changes should be displayed in the tab itself $$( '#dataCollectionContainer ul li.stepGroupTab' ).each( function( tab ) { var stepGroup = $( tab.getAttribute( "bb:groupId" ) ); var img = $( tab.getElementsByTagName( 'img' )[ 0 ] ); var link = $( tab.getElementsByTagName( 'a' )[ 0 ] ); var dataElements = widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ]; if ( !dataElements ) { dataElements = stepGroup.getElementsByTagName( 'li' ); widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ] = dataElements; } var dirtyCount = 0; for ( var i = 0; i < dataElements.length; i++ ) { //If the data element is hidden, we do not want to include it in the count of dirty //data elements. Doing so could result in the dirty image on the step group displaying //with no child data elements that display as dirty. if ( dataElements[ i ].hasClassName( "dirty" ) && dataElements[ i ].getStyle( "display" ) !== "none" ) { dirtyCount++; } } if ( dirtyCount > 0 && !tab.isDirty ) { img.show(); link.setStyle( { 'paddingLeft' : '20px' } ); tab.isDirty = true; } else if ( dirtyCount === 0 && tab.isDirty ) { img.hide(); link.setStyle( { 'paddingLeft' : '' } ); tab.isDirty = false; } } ); } }; // Call this when the value of a hidden data element changes that you want to // show an indicator for. Otherwise changing the value of the hidden element directly will // not cause an indicator to show. widget.ShowUnsavedChanges.changeHiddenValue = function( hiddenElem, value ) { hiddenElem.value = value; if ( widget.ShowUnsavedChanges.enabled ) { widget.ShowUnsavedChanges.onValueChange( null, hiddenElem ); } }; widget.ShowUnsavedChanges.enabled = false; /** * Supports a counter widget attached to a textbox -- it keeps track of the number of characters in the text box, and * updates a counter whenever that number changes. The counter turns red, and begins counting backwards, when the max * number of charters is exceeded. */ widget.TextBoxCounter = Class.create(); widget.TextBoxCounter.prototype = { /** * Contructor * * @param textBoxId The id of the textbox we're counting from * @param counterId The id of the element that countains the count * @param maxCharCount The max number of characters supported by this textbox * @param charactersRemainingLabel The label for the character count element * @param charactersOverLimitLabel The alternate label for the character element, for when the max # of characters * has been exceeded. */ initialize : function( textBoxId, counterId, maxCharCount, charactersRemainingLabel, charactersOverLimitLabel ) { this.textBoxElement = $( textBoxId ); this.counterElement = $( counterId ); this.maxCharCount = maxCharCount; this.countLabelElement = this.counterElement.up().childNodes[ 0 ]; this.charactersRemainingLabel = charactersRemainingLabel; this.charactersOverLimitLabel = charactersOverLimitLabel; // watch all keystrokes in the text area, and update the counter accordingly this.textBoxElement.observe( 'keyup', this.updateCount.bindAsEventListener( this ) ); // update the initial count this.updateCount(); this.registerCounter( textBoxId ); }, /** * Registers the current counter with the document, so that it can be accessed from anywhere on the page. * * @param id The id with which this counter can be accessed */ registerCounter : function( id ) { if ( !widget.TextBoxCounter.counters ) { widget.TextBoxCounter.counters = []; } widget.TextBoxCounter.counters[ id ] = this; }, /** * Update the counter. * * @param event The event that prompted this update, if any. */ updateCount : function( event ) { var chars = this.textBoxElement.value.length; // max character count exceeded if ( chars > this.maxCharCount ) { this.counterElement.update( chars - this.maxCharCount ).addClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersOverLimitLabel; } // max character count not exceeded else if ( chars <= this.maxCharCount ) { this.counterElement.update( this.maxCharCount - chars ).removeClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersRemainingLabel; } } }; widget.ColorPalettePicker = Class.create(); widget.ColorPalettePicker.prototype = { initialize : function( onChange, themeChangeElementId ) { widget.ColorPalettePicker.picker = this; this.onChange = onChange; var palettes = []; $A( $( 'paletteLibraryPanel' ).getElementsByTagName( 'li' ) ).each( function( li ) { if ( page.util.hasClassName( li, 'palette' ) ) { palettes.push( $( li ) ); } } ); this.palettes = palettes; this.libraryOpen = false; this.paletteLibraryPanel = $( 'paletteLibraryPanel' ); this.paletteLibraryButton = $( 'paletteLibraryButton' ); var updateHandler = this.updateCurrentSelection.bindAsEventListener( this ); // this.paletteLibraryPanel.toggleLibrary(); if ( this.palettes ) { this.palettes.each( function( palette ) { Event.observe( palette, "click", updateHandler ); } ); } if ( this.paletteLibraryButton ) { Event.observe( 'paletteLibraryButtonLink', "click", this.toggleLibrary.bindAsEventListener( this ) ); } if ( themeChangeElementId !== "" ) { Event.observe( themeChangeElementId, "change", this.changePaletteThemeTypeStyles.bindAsEventListener( this ) ); } }, changePaletteThemeTypeStyles : function( event ) { var dropdown = event.currentTarget; var themeExtRef = $F( dropdown ); var extRefToThemeTypeJson = $F( "themeExtRefToThemeTypeJson" ); var extRefToThemeTypeMap = this.convertJsonToObject( decodeURIComponent( extRefToThemeTypeJson ) ); var themeType = extRefToThemeTypeMap[themeExtRef]; var mapKey = null; this.palettes.each( function( palette ) { if( palette.id === "currentsystemthemecolorpalette" ) { mapKey = "theme_type_" + themeExtRef; } else { if( themeType !== null ) { mapKey = "theme_type_" + themeType; } else { mapKey = "theme_type_"; } } var styleJson = $F( palette.down('input[type=hidden]') ); var styleMap = this.convertJsonToObject( decodeURIComponent( styleJson ) ); var schemePreviewStyle = styleMap[mapKey]['schemePreview']; var schemePreviewHeadStyle = styleMap[mapKey]['schemePreviewHead']; var schemePreviewBodyStyle = styleMap[mapKey]['schemePreviewBody']; var modulePreviewStyle = styleMap[mapKey]['moduleBorder']; var modulePreviewHeadStyle = styleMap[mapKey]['moduleTitle']; var modulePreviewBodyStyle = styleMap[mapKey]['moduleBody']; palette.down('.schemePreview').writeAttribute("style", schemePreviewStyle); palette.down('.schemePreviewHead').writeAttribute("style", schemePreviewHeadStyle); palette.down('.schemePreviewBody').writeAttribute("style", schemePreviewBodyStyle); palette.down('.modulePreview').writeAttribute("style", modulePreviewStyle); palette.down('.modulePreviewHead').writeAttribute("style", modulePreviewHeadStyle); palette.down('.modulePreviewBody').writeAttribute("style", modulePreviewBodyStyle); }, this ); }, convertJsonToObject : function( json ) { if ( typeof ( JSON ) === 'object' && typeof ( JSON.parse ) === 'function' ) { return JSON.parse( json ); } else { return eval( '(' + json + ')' ); } }, toggleLibrary : function( event ) { var img = this.paletteLibraryButton.getElementsByTagName( 'img' )[ 0 ]; if ( this.libraryOpen ) { // Collapse the library. img.src = "/images/db/p.gif"; img.alt = page.bundle.getString( "dynamictree.expand" ); this.paletteLibraryPanel.hide(); this.libraryOpen = false; } else { // Expand the library. img.src = "/images/db/m.gif"; img.alt = page.bundle.getString( "dynamictree.collapse" ); this.paletteLibraryPanel.show(); this.libraryOpen = true; } // stop the event if exists; there will not be an event if called on page onLoad if ( event ) { Event.stop( event ); } }, selectColorPaletteByExtRef : function( extRef ) { var eventElement = $( extRef ); this.selectColorPaletteByElement( eventElement ); }, selectColorPaletteByElement : function( eventElement ) { this.palettes.each( function( p ) { if ( p.hasClassName( "selected" ) ) { p.removeClassName( 'selected' ); } } ); var selPal = eventElement; while ( selPal && selPal.tagName != 'LI' ) { selPal = selPal.parentNode; if ( selPal.tagName == 'BODY' ) { selPal = null; } } selPal.addClassName( 'selected' ); widget.ShowUnsavedChanges.changeHiddenValue( $( 'currentPaletteExtRef' ), selPal.id == 'currentsystemthemecolorpalette' ? '' : selPal.id ); eval( this.onChange ); $( 'currentPaletteLabel' ).update( $( selPal.id + '_label' ).innerHTML ); this.copyStyles( selPal.down( '.schemePreview' ), $( 'currentPalettePreview' ) ); this.copyStyles( selPal.down( '.schemePreviewHead' ), $( 'currentPalettePreviewHead' ) ); this.copyStyles( selPal.down( '.schemePreviewBody' ), $( 'currentPalettePreviewBody' ) ); this.copyStyles( selPal.down( '.modulePreview' ), $( 'currentModulePalettePreview' ) ); this.copyStyles( selPal.down( '.modulePreviewHead' ), $( 'currentModulePalettePreviewHead' ) ); this.copyStyles( selPal.down( '.modulePreviewBody' ), $( 'currentModulePalettePreviewBody' ) ); $( 'selectedPalette' ).show(); }, updateCurrentSelection : function( event ) { var eventElement = Event.element( event ); this.selectColorPaletteByElement( eventElement ); Event.stop( event ); }, copyStyles : function( s, d ) { d.style.cssText = s.style.cssText; } }; widget.ColorPalettePicker.picker = null; /** * node picker */ widget.MINodePicker = Class.create(); /** Constants used for the picker */ widget.MINodePicker.Constants = { EXISTING_NODE_SUFFIX : "", EXISTING_NODE_DELETE_SUFFIX : "", NEW_NODE_SUFFIX : "" }; widget.MINodePicker.prototype = { initConstants : function() { widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeSuffix" ); widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeDeleteSuffix" ); widget.MINodePicker.Constants.NEW_NODE_SUFFIX = page.bundle.getString( "nodePicker.const.newNodeSuffix" ); }, /** * Creates a new node picker * * @param baseElementName the base name for the node picker elements * @param pickerList the javascript object representing the picker list (of currently attached files) * @param allowMultipleSelect boolean indicating whether the picker should allow single or multiple select * @param entitlements comma delimited list of entitlement UIDs in which to check on node search * @param popupInstructions key value pair of bundle name and bundle key for instructions to be displayed in the pop * up * @param addPrimaryEntitlement Entitlement required to display primary radio button. * @param removeNodeEntitlement Entitlement required to display remove node link. */ initialize : function( baseElementName, pickerList, allowMultipleSelect, entitlements, popupInstructions, addPrimaryEntitlement, removeNodeEntitlement ) { this.initConstants(); this.baseElementName = baseElementName; this.allowMultipleSelect = allowMultipleSelect; this.entitlements = entitlements; this.nodePickerPopupButton = $( this.baseElementName + '_nodeBrowseButton' ); this.nodePickerUrl = "/webapps/blackboard/execute/institutionalHierarchy/nodePicker?cmd=openPicker&allowMultipleSelect=" + this.allowMultipleSelect + "&instructionKey=" + popupInstructions + "&entitlements=" + this.entitlements + "&addPrimaryEntitlement=" + addPrimaryEntitlement + "&removeNodeEntitlement=" + removeNodeEntitlement; Event.observe( this.nodePickerPopupButton, "click", this.onNodeBrowse.bindAsEventListener( this ) ); this.pickerList = pickerList; this.selectedNodesListContainer = $( this.baseElementName + '_listHtml' ); // make sure that all removedNodes are hidden var removedNodes = this.selectedNodesListContainer .getElementsBySelector( 'input[name=' + this.baseElementName + widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX + ']' ); removedNodes.each( function( node ) { node.up( 'tr' ).hide(); } ); var showList; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { showList = this.selectedNodesListContainer && this.pickerList && this.pickerList.tableBody && !this.pickerList.tableBody .empty(); } // For single node picker, the attached node is contained within a span element else { showList = this.selectedNodesListContainer && this.selectedNodesListContainer.select( "input.selectedNodeData" ) && this.pickerList; } if ( this.pickerList && this.pickerList.tableBody ) { // If no visible row then hide the table label and headers. if ( !this.pickerList.tableBody.select( "tr" ).any( function( row ) { return row.visible(); } ) ) { showList = false; } } this.showHideSelectedNodesList( showList ); widget.MINodePicker.registerNodePicker( this ); }, /** * Pop up the node search window from which to pick nodes */ onNodeBrowse : function( event ) { this.nodePickerWindow = null; var windowId = new Date().getTime(); if ( $( 'primaryNodeIdStr' ) ) { this.nodePickerUrl += '&primaryNodeIdStr=' + $F( 'primaryNodeIdStr' ); } if ( $( 'objectType' ) ) { this.nodePickerUrl += '&objectType=' + $F( 'objectType' ); } this.nodePickerWindow = popup.launchPicker( this.nodePickerUrl, windowId ); if ( this.nodePickerWindow ) { this.nodePickerWindow.opener.customHandler = this.onNodePick.bind( this ); } Event.stop( event ); }, /** * Callback called after node(s) have been selected from the node picker pop up. This method updates the UI list of * currently select nodes. * * @param selectedNodesObjArr The array of currently selected nodes from the picker */ onNodePick : function( selectedNodesObjArr ) { this.showHideSelectedNodesList( true ); var existingNodes; if ( this.allowMultipleSelect ) { // Array of existing selected nodes in the node picker list existingNodes = this.selectedNodesListContainer.down( "tbody" ).select( "input.selectedNodeData" ); } else { // Existing selected node in the node picker list for single node picker existingNodes = this.selectedNodesListContainer.select( "input.selectedNodeData" ); } // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. if ( selectedNodesObjArr && selectedNodesObjArr.length !== 0 ) { // Switch the radio button selection to Create hierarchy under the specified entity (for single node pickers) if ( $( "selectedRoot" ) ) { $( "selectedRoot" ).checked = true; } } /* * For each selected node, add the node to the list if it is a newly selected node, otherwise unhide the node if * it is an existing selection that has been marked for delete. Specifically: - If node is an existing selected * node and marked for delete and hidden, then unmark and show - If node is an existing selected node and not * marked for delete and showing, then do nothing - If node is a newly selected node and is not already there, add * the row - If node is a newly selected node and is already there, then do nothing */ selectedNodesObjArr.each( function( node ) { // See if the picked node is already in the list of nodes var existingNode; existingNodes.each( function( inputEle ) { if ( node.nodeIdStr === inputEle.value ) { existingNode = inputEle; if ( existingNode.disabled && existingNode.checked ) { // If its a disabled primary node then restore the value of it in hidden param. $( this.baseElementName + '_disabledPrimaryNode' ).value = node.nodeIdStr; } throw $break; } } ); // If not, then add this newly picked node to list if ( !existingNode ) { var primaryRadioChecked; var existingPrimaryNodeRadios = this.selectedNodesListContainer .select( 'input[name=' + this.baseElementName + '_PrimaryNode]' ); if ( existingPrimaryNodeRadios.all( function( radio ) { return !radio.checked; } ) ) { primaryRadioChecked = true; } // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { // This calls the cell generator methods for each column in the "currently selected nodes" list this.pickerList.addRow( this.baseElementName, node, this.nodePickerWindow, primaryRadioChecked ); } // For single node picker, the attached node is contained within a span element else { this.selectedNodesListContainer.innerHTML = ""; this.pickerList.cellGenerators.each( function( generator, index ) { var args = []; args.push( this.baseElementName, node, this.nodePickerWindow ); this.selectedNodesListContainer.innerHTML += generator.apply( window, args ); }.bind( this ) ); } } else { /* * If picked node is already in the list AND is an existing selected node that is marked for delete and * hidden, then unmark node and show in list. */ if ( existingNode.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ) ) { existingNode.name = existingNode.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ); if ( this.allowMultipleSelect ) { existingNode.up( "tr" ).show(); } } } }.bind( this ) ); }, /** * Shows or hides the selected nodes list * * @param show boolean to indicate show or hide */ showHideSelectedNodesList : function( show ) { if ( this.selectedNodesListContainer ) { return show ? this.selectedNodesListContainer.show() : this.selectedNodesListContainer.hide(); } } }; /** * Removes the specified node selection from the list. Should be called from an onclick handler on a link in the * currently selected nodes table. */ widget.MINodePicker.removeSelectedNode = function( event, removeLink, baseElementName ) { var e = event || window.event; // Have user confirm removal of selected node if ( confirm( page.bundle.getString( "nodePicker.nodeRemoveConfirmMsg" ) ) ) { var visibleRows = []; var picker = widget.MINodePicker.getNodePicker( baseElementName ); var hiddenNodeDataEle; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( picker.allowMultipleSelect ) { // Get references to DOM elements in the list removeLink = $( removeLink ); var rowToHideRemove = removeLink.up( "tr" ); var tbodyEle = rowToHideRemove.up( "tbody" ); hiddenNodeDataEle = rowToHideRemove.down( "input.selectedNodeData" ); var primaryNodeRadioSelector = 'input[name=' + baseElementName + '_PrimaryNode]'; var primaryNodeRadioInCurrentRow = rowToHideRemove.down( primaryNodeRadioSelector ); if ( primaryNodeRadioInCurrentRow ) { // Check if removed node is selected as a primary node if ( primaryNodeRadioInCurrentRow.checked ) { if ( primaryNodeRadioInCurrentRow.disabled ) { // A disabled primary node is removed from UI then nullify the value of hidden param storing its value. $( baseElementName + '_disabledPrimaryNode' ).value = ''; } else { // Get the next node which is not checked as primary and is enabled. var nextNode = picker.selectedNodesListContainer.select( primaryNodeRadioSelector ).find( function( radio ) { return ( !radio.checked && !radio.disabled && radio.up( 'tr' ).visible() ); } ); if ( nextNode ) { nextNode.checked = true; } else { // In case there's no next node with primary node radio button, then uncheck current primary manually primaryNodeRadioInCurrentRow.checked = false; } } } } // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); // hide rowToHideRemove.hide(); } // If is a newly selected node else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { // remove the row from the DOM Element.remove( rowToHideRemove ); } tbodyEle.select( "tr" ).each( function( row ) { if ( row.visible() ) { visibleRows.push( row ); } } ); } // For single node picker, the attached node is contained within a span element else { hiddenNodeDataEle = picker.selectedNodesListContainer.down( "input.selectedNodeData" ); // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); } // If is a newly selected node, clear the span content else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { picker.selectedNodesListContainer.innerHTML = ""; } } // If there are no more selected nodes, hide some UI elements if ( visibleRows.length === 0 ) { // Hide the whole selected nodes table picker.showHideSelectedNodesList( false ); // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. // Switch the radio button selection to Create hierarchy under the top level (for single node pickers) if ( $( "topLevelRoot" ) ) { $( "topLevelRoot" ).checked = true; } } } Event.stop( e ); }; /** * A registry of defined node pickers and methods to access this registry */ widget.MINodePicker.nodePickers = {}; widget.MINodePicker.registerNodePicker = function( nodePicker ) { widget.MINodePicker.nodePickers[ nodePicker.baseElementName ] = nodePicker; }; widget.MINodePicker.unRegisterNodePicker = function( nodePicker ) { delete widget.MINodePicker.nodePickers[ nodePicker.baseElementName ]; }; widget.MINodePicker.getNodePicker = function( baseElementName ) { return widget.MINodePicker.nodePickers[ baseElementName ]; }; /** * Cell generators for the currently selected nodes table. Mostly copies what is in multiInstNodePickerListElement.vm. */ widget.MINodePicker.cellGenerators = { /** * Dynamic rendering of a cell in the node "Name" column */ nodeName : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { var result = '<input type="hidden" name="' + pickerNameStr + widget.MINodePicker.Constants.NEW_NODE_SUFFIX + '" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData">'; result += '<img src="/images/ci/ng/entity_small.png" alt="">'; result += selectedNodeObj.nodeName; return result; }, /** * Dynamic rendering of a cell in the node "Primary Node" column */ nodePrimary : function( pickerNameStr, selectedNodeObj, nodePickerWindow, primaryRadioChecked ) { var result = '<input type="radio" id="' + selectedNodeObj.nodeIdStr + '_Primary' + '" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData"'; if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' ) { result += ' disabled'; } if ( primaryRadioChecked ) { result += ' checked'; } result += ' >'; // Since values of disabled radio element doesn't go through the request, adding hidden param here to store its // value. if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' && primaryRadioChecked ) { result += '<input type="hidden" id="' + pickerNameStr + '_disabledPrimaryNode" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" />'; } return result; }, /** * Dynamic rendering of a cell in the remove node column */ nodeRemove : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_canRemoveObject' ).value == 'true' ) { var result = '<img src="/images/ci/icons/x_ia.gif" alt="">'; result += '<a href="#" onclick="widget.MINodePicker.removeSelectedNode(event, this, '; result += "'" + pickerNameStr + "');"; result += '">' + page.bundle.getString( "nodePicker.nodeRemoveLabel" ); result += '</a>'; return result; } else { return ''; } } };

Take Test MC Exercises Sentences Pronoun Reference.mht

Current Location

Take Test: MC Exercises: Sentences: Pronoun Reference

Content

Assistive Technology Tips [opens in new window]

Instructions

Description
Instructions

Read the following instructions carefully!

Some of the following sentences contain problems with pronoun reference. Select the answer that has no such problems. If the original sentence is correct, select c. No change.

Multiple Attempts This Test allows multiple attempts.
Force Completion This Test can be saved and resumed later.

Collapse Question Completion Status:

1Question Incomplete 2Question Incomplete 3Question Incomplete 4Question Incomplete 5Question Incomplete 6Question Incomplete 7Question Incomplete 8Question Incomplete 9Question Incomplete 10Question Incomplete

Question 1

  1.   John told the critic, “A magnanimous review will make me famous.” Answer
    John told the critic that he would be famous if the review were magnanimous.
    John said to the critic that a magnanimous review would make him famous.
    No change

10 points  

Question 2

  1.   In many states, they don’t require motorcyclists to wear helmets. Answer
    In many states, they haven’t passed a law requiring motorcyclists to wear helmets.
    Many states don’t require motorcyclists to wear helmets.
    No change

10 points  

Question 3

  1.   They say that the governor rescinded his job offer to a local politician. Answer
    In the news summary, it says that the governor rescinded his job offer to a local politician.
    The news summary reports that the governor rescinded his job offer to a local politician.
    No change

10 points  

Question 4

  1.   Some historians speak about the collapse of earlier, sophisticated cultures, and they resonate with today’s audiences. Answer
    Some historians speak about the collapse of earlier, sophisticated cultures, a topic that resonates with today’s audiences.
    Some historians speak about sophisticated cultures in the past having collapsed, which resonates with today’s audiences.
    No change

10 points  

Question 5

  1.   Someone who was on the bus left behind their books and lunch. Answer
    Someone who was on the bus left behind her books and lunch.
    Someone who was on the bus left behind his or her books and lunch.
    No change

10 points  

Question 6

  1.   Most economists agree that building a nest egg for retirement is possible if we set aside some money every week. Answer
    Most economists agree that building a nest egg for retirement is possible if he or she sets aside some money every week.
    Most economists agree that building a nest egg for retirement is possible for people who set aside some money every week.
    No change

10 points  

Question 7

  1.   The radio announcer said, “Because of last night’s storm, the high school’s classes will start at 11:00 a.m., but you will be dismissed at the normal time.” Answer
    The radio announcer said, “Because of last night’s storm, the high school’s classes will start at 11:00 a.m., but students will be dismissed at the normal time.”
    The radio announcer said, “Because of last night’s storm, the high school’s classes will start at 11:00 a.m., but it will be dismissed at the normal time.”
    No change

10 points  

Question 8

  1.   The newspaper’s editors should feel guilty about their stance on pollution, but it is probably not going to happen. Answer
    The newspaper’s editors should feel guilty about their stance on pollution, but they probably won’t.
    The newspapers editors should feel guilty about their stance on pollution, which probably won’t happen.
    No change

10 points  

Question 9

  1.   The boss became an object of ridicule because of his outrageous behavior. Answer
    The boss’s outrageous behavior made him an object of ridicule.
    Ridiculing the boss’s outrageous behavior is what he deserved.
    No change

10 points  

Question 10

  1.   A real-estate developer wants to build residences and offices on some vacant land in our town. The community objects to this. Answer
    A real-estate developer wants to build residences and offices on some vacant land in our town. The community objects to this use of the land.
    A real-estate developer wants to build residences and offices on some vacant land in our town, which the community objects to.
    No change

10 points  

 Save and Submit

Click Save and Submit to save and submit. Click Save All Answers to save all answers. Click Close Window to close window.

Links to Test Questions and Answers
Read question 1 Read answers for question 1 Read question 2 Read answers for question 2 Read question 3 Read answers for question 3 Read question 4 Read answers for question 4 Read question 5 Read answers for question 5 Read question 6 Read answers for question 6 Read question 7 Read answers for question 7 Read question 8 Read answers for question 8 Read question 9 Read answers for question 9 Read question 10 Read answers for question 10

@font-face { font-family: Utilicons; src:url(fonts/utilicons/utilicons-web-webfont.eot); } HTML { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } APPLET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OBJECT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IFRAME { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H1 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H2 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H5 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H6 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } P { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ABBR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ACRONYM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ADDRESS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BIG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CITE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CODE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DFN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } EM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } INS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } KBD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } Q { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } S { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SAMP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SMALL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRIKE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRONG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUB { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } VAR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FIELDSET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FORM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LABEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LEGEND { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CAPTION { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TBODY { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TFOOT { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } THEAD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TR { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TH { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } FONT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BACKGROUND: #fff } OL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } UL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } TABLE { BORDER-COLLAPSE: collapse } TH { FONT-WEIGHT: normal } CAPTION { TEXT-ALIGN: left } TH { TEXT-ALIGN: left } TD { TEXT-ALIGN: left } BLOCKQUOTE:before { CONTENT: "" } BLOCKQUOTE:after { CONTENT: "" } Q:before { CONTENT: "" } Q:after { CONTENT: "" } BLOCKQUOTE { QUOTES: "" "" } Q { QUOTES: "" "" } INPUT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } BUTTON { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } SELECT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } .field SELECT { MAX-WIDTH: 100% } .noLabelField SELECT { MAX-WIDTH: 100% } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px !important } .vtbegenerated IMG { FILTER: alpha(opacity=auto) !important; opacity: auto } .vtbegenerated UL { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated OL { LIST-STYLE-TYPE: decimal; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated LI { LIST-STYLE-POSITION: outside; DISPLAY: list-item } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL[type=circle] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type=disc] LI { LIST-STYLE-TYPE: disc } .vtbegenerated UL[type=square] LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 24px } .inlineVtbegenerated { DISPLAY: inline } .hideme { DISPLAY: none !important } .hidden { DISPLAY: none } .clearfloats { CLEAR: both } .hideoff { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; TOP: -1000px; LEFT: -10000px } .altHideoff1 { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; LEFT: -10000px } .boldme { FONT-WEIGHT: bold } .u_inlineStack { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > LI { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > DIV { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStack SELECT { MAX-WIDTH: 300px } .u_resetFont { FONT-SIZE: 100% } .u_reverseAlign { TEXT-ALIGN: right } .u_centerAlign { TEXT-ALIGN: center } .u_normalAlign { TEXT-ALIGN: left } .u_floatThis-right { FLOAT: right } .u_floatThis-left { FLOAT: left } .u_floatWrapper-right > DIV { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-right > LI { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-left > DIV { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LI { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LABEL { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_floatWrapper-right:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_controlsWrapper:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_clearFloatsWrapper > DIV { FLOAT: none !important } .u_clearFloatsWrapper > LI { FLOAT: none !important } .u_controlsWrapper { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .u_indent { MARGIN-LEFT: 24px !important } .u_scrollPanel-vertical { OVERFLOW-Y: auto } .u_panel-short { HEIGHT: 70px; MAX-HEIGHT: 100px } .u_panel-medium { HEIGHT: 70px; MAX-HEIGHT: 150px } .u_panel-long { HEIGHT: 70px; MAX-HEIGHT: 200px } HTML { HEIGHT: 100% } BODY { MIN-WIDTH: 1000px; HEIGHT: 100% } BODY.topFrame { OVERFLOW-Y: hidden; HEIGHT: 89px } BODY.filePicker { MIN-WIDTH: 400px } BODY.popup { MIN-WIDTH: 100% } .content-system-page { MIN-WIDTH: 780px } BODY.popup DIV.locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.csMenuFrame { MIN-WIDTH: 210px; WIDTH: 100% } BODY.popupMenu { MIN-WIDTH: 210px; WIDTH: 100% } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } H1 { FONT-WEIGHT: bold } H2 { FONT-WEIGHT: bold } H3 { FONT-WEIGHT: bold } H4 { FONT-WEIGHT: bold } H5 { FONT-WEIGHT: bold } H6 { FONT-WEIGHT: bold } STRONG { FONT-WEIGHT: bold } B { FONT-WEIGHT: bold } EM { FONT-STYLE: italic } TABLE.bouncer { WIDTH: 100% } TABLE.bouncer TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .brandingImgWrap { OVERFLOW: hidden } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { POSITION: relative; OVERFLOW-Y: hidden } .topTabs-compact { POSITION: relative } .topTabs .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs-compact .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs .tabWrapper-right .appTabs { FLOAT: right } .topTabs-compact .tabWrapper-right .appTabs { FLOAT: right } .breadcrumbs { POSITION: relative } .locationPane { POSITION: relative; MIN-WIDTH: 100%; ZOOM: 1; DISPLAY: inline-block; OVERFLOW: visible } .navigationPane { POSITION: absolute; WIDTH: 200px; ZOOM: 1; CLEAR: both; OVERFLOW: visible; TOP: 0px; LEFT: 0px } .menuWrap { POSITION: relative; ZOOM: 1 } .contentPane { MIN-WIDTH: auto; MARGIN: 0px 14px 0px 212px; ZOOM: 1; DISPLAY: block; OVERFLOW: visible } #puller { Z-INDEX: 3; POSITION: absolute } #puller A { WIDTH: 15px; DISPLAY: block; BACKGROUND: #ccc; HEIGHT: 30px } .contcollapsed { MARGIN-LEFT: 15px } .content { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .container { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .containerPortal { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .popup .container { MIN-HEIGHT: 400px } .container { OVERFLOW: visible } .containerOptions { OVERFLOW: visible } .column-1 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-2 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-3 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-4 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } column-5 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-1 { WIDTH: 100% } .column-2 { WIDTH: 50% } .column-3 { WIDTH: 33.3% } .column-4 { WIDTH: 25% } .column-5 { WIDTH: 20% } #lightbox .column-3 { MARGIN: 0px; MIN-HEIGHT: 200px !important } #lightbox .column-2 { MARGIN: 0px; MIN-HEIGHT: 200px !important } INPUT[type='submit'].submit { FONT-WEIGHT: bold } .mainButton A { FONT-WEIGHT: bold } .actionBarMicro .mainButton A { FONT-WEIGHT: bold } .rumble .mainButton > A { FONT-WEIGHT: bold } .rumble_top .mainButton > A { FONT-WEIGHT: bold } .button-1 { FONT-WEIGHT: bold } .button-1-img { FONT-WEIGHT: bold } .modeSwitchWrap { TOP: 6px; RIGHT: 0px; LEFT: auto } .modeSwitchWrap DIV { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .modeSwitch { POSITION: relative; DISPLAY: block; OVERFLOW: hidden } .read-on { MARGIN-RIGHT: 0px } A.read-off IMG { POSITION: absolute; BOTTOM: 0px; LEFT: 0px } A.read-on IMG { POSITION: absolute; BOTTOM: 0px; RIGHT: 0px } .switcherLabel { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .helpLink { POSITION: relative; TOP: 1px } .helpLink A.browseIcon { DISPLAY: inline-block } .vtbeSwitch { POSITION: relative; FLOAT: right } .vtbeSwitch SPAN { DISPLAY: inline-block } .fileInputWrapper { POSITION: relative; FLOAT: left; OVERFLOW: hidden } .fileInputWrapper INPUT.hiddenInput { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: right; FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 210%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px; opacity: 0 } .fileInputWrapper INPUT[type='file'] { FILTER: alpha(opacity=0) !important } .fileInputWrapper INPUT.visibleInput { Z-INDEX: 1; POSITION: relative; TOP: 0px; RIGHT: 0px } .frameResizeToggle { POSITION: absolute; BOTTOM: 0px; DISPLAY: block; OVERFLOW: hidden; LEFT: 0px; _top: 68px } A.colorChip { DISPLAY: inline-block } A.colorChip SPAN { DISPLAY: inline-block } .clearfix:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfixParent > *:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfix { DISPLAY: block } .clearfixParent > * { DISPLAY: block } INPUT[type='button'] { } INPUT[type='submit'] { } BUTTON { } FORM#content { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } .reorder { POSITION: absolute; CURSOR: move } .contextMenuContainer { ZOOM: 1 } .gbtable .contextMenuContainer { DISPLAY: inline } .gbtable_header .contextMenuContainer { DISPLAY: inline } .gbtable_header TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } .gbtable THEAD TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } A.cmimg { ZOOM: 1 } HTML { FONT: 300 0.78em "Lucida Grande", Arial, sans-serif } H1 { FONT-SIZE: 148% } H2 { FONT-SIZE: 123.1% } H3 { FONT-SIZE: 110% } H1 { MARGIN: 1em 0px } H2 { MARGIN: 1em 0px } H3 { MARGIN: 1em 0px } A { COLOR: #128fa8; TEXT-DECORATION: none } A:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } TABLE { FONT-SIZE: 100% } THEAD TH { FONT-WEIGHT: bold } #contentFrame { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } #schemePreview { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY.topFrame { BACKGROUND: #f7f7f7 } BODY.login-page { POSITION: relative; MIN-HEIGHT: 800px } BODY.popup { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } BODY.csMenuFrame { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } BODY.popupMenu { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } .csMenuFrame { FONT-SIZE: 95% } BODY.my-places-popup { MIN-WIDTH: 300px; WIDTH: auto; BACKGROUND: #fff } BODY.external-breadcrumbs { BACKGROUND-IMAGE: none } BODY.picker { MIN-WIDTH: 400px; BACKGROUND: #fff } .breadcrumbs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 9px; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .locationPane { MARGIN-TOP: 12px } BODY.picker .locationPane { MARGIN: 0px; DISPLAY: block } .csPicker .locationPane { DISPLAY: block } .navigationPane { MARGIN: 0px; WIDTH: 210px; TOP: 0px; LEFT: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .menuWrap { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .contentPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px 0px 222px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portalPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .popup .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .picker .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .course-tools-page #listContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 0px } .picker .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } .popup .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } #puller { Z-INDEX: 3; POSITION: absolute; BOTTOM: 1px; TOP: -1px; RIGHT: -8px; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A { BORDER-BOTTOM: #777 1px solid; POSITION: relative; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 8px; BACKGROUND: url(images/reorder_bg.png) #bbb repeat-y; HEIGHT: 100%; OVERFLOW: visible; BORDER-TOP: #777 1px solid; BORDER-RIGHT: #777 1px solid; opacity: 0; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0; box-shadow: 1px 0 3px rgba(0, 0, 0, 0.4) inset } .menuWrap:hover #puller A { FILTER: alpha(opacity=100); opacity: 1; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A:after { BORDER-BOTTOM: #666 1px solid; POSITION: absolute; FILTER: alpha(opacity=0) !important; BORDER-LEFT: #666 0px solid; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1; BACKGROUND-COLOR: #777; PADDING-LEFT: 1px; PADDING-RIGHT: 6px; DISPLAY: none !important; COLOR: #fff; FONT-SIZE: 180%; BORDER-TOP: #666 1px solid; CONTENT: "\2190"; TOP: 200px; RIGHT: -30px; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 3px; opacity: 0; -webkit-transition: opacity .5s ease-in-out; -moz-transition: opacity .5s ease-in-out; border-radius: 0 12px 12px 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, .5); transition: opacity .5s ease-in-out } .pullcollapsed#puller A { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #00add0; opacity: 1 } #puller A:hover { BACKGROUND-COLOR: #777 } #puller A IMG { POSITION: relative; FILTER: alpha(opacity=0)\9; PADDING-BOTTOM: 3px; PADDING-LEFT: 1px; WIDTH: 12px; PADDING-RIGHT: 6px; BACKGROUND: url(images/menu_expand_rtl.gif) no-repeat 0px 0px; HEIGHT: 24px; TOP: 200px; RIGHT: -9px; PADDING-TOP: 3px } .pullcollapsed#puller A:hover { BACKGROUND-COLOR: #777; -webkit-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller A:after { CONTENT: "\2192"; opacity: 0 } .pullcollapsed#puller A:hover:after { opacity: 1 } #puller A:hover:after { opacity: 1 } .pullcollapsed#puller A:hover IMG { FILTER: alpha(opacity=100) } #puller A:hover IMG { FILTER: alpha(opacity=100) } .pullcollapsed#puller A:hover IMG { BACKGROUND: url(images/menu_collapse_rtl.gif) no-repeat 0px 0px } .navcollapsed { MARGIN-LEFT: -210px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller { RIGHT: -10px; opacity: 1; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navcollapsed .menuWrap { DISPLAY: block !important } .contcollapsed { MARGIN-LEFT: 12px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #topFrame { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .bgBanner { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .brandingImgWrap { HEIGHT: 46px } .brandingImgWrap A { MARGIN: 8px 12px 0px; DISPLAY: inline-block } .bannerImage { MAX-HEIGHT: 35px } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #555; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 89px; PADDING-TOP: 0px; -moz-box-shadow: 0 -6px 17px #333 inset; -webkit-box-shadow: 0 -6px 17px #333 inset } .topTabs-compact { HEIGHT: 47px } .tabWrapper-left { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-center { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-right { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .appTabs { POSITION: relative; WIDTH: auto } .topTabs-compact .tabWrapper-left { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-center { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-right { PADDING-TOP: 20px } #topTab { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A SPAN { BORDER-BOTTOM: transparent 1px dotted; PADDING-BOTTOM: 1px } .topTabs-compact .appTabs A SPAN { PADDING-BOTTOM: 0px } .appTabs A:hover { COLOR: #fff } .appTabs A:focus { COLOR: #fff } .appTabs A:hover SPAN { BORDER-BOTTOM: #fff 1px double } .appTabs A:focus SPAN { BORDER-BOTTOM: #fff 1px double } #topTabActive { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:hover { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:focus { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:hover SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:focus SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .topTabs-compact .appTabs .active .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs .active A:hover .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs A { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:hover { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:focus { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .round1 A { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .round2 A { -moz-border-radius: 12px 12px 0 0; -webkit-border-radius: 12px 12px 0 0; border-radius: 12px 12px 0 0 } .topGlobalLinks { TEXT-ALIGN: right; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); FLOAT: right; FONT-SIZE: 90%; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .topGlobalLinks UL { Z-INDEX: 1001 } .topGlobalLinks UL LI { MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; COLOR: #ccc } .loggedInAs { POSITION: relative; FONT: italic 100% Georgia; COLOR: #999; BORDER-TOP: 0px } .loggedInAs IMG { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 18px !important; PADDING-RIGHT: 1px; DISPLAY: inline-block; HEIGHT: 18px !important; TOP: -2px; RIGHT: -9px; PADDING-TOP: 1px; LEFT: auto } .loggedInAs SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: inline-block; PADDING-TOP: 6px } .topGlobalLinks A { BACKGROUND-IMAGE: none !important; MIN-WIDTH: 18px; TEXT-ALIGN: left; PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline-block; COLOR: #ccc; PADDING-TOP: 6px } .topGlobalLinks UL LI:first-child A { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks UL LI:first-child { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks A .link-icon { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); WIDTH: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; FLOAT: right; HEIGHT: 16px; OVERFLOW: hidden } .topGlobalLinks .myPlaces .link-icon { BACKGROUND-POSITION: -113px 0px } .topGlobalLinks .myPlaces:hover .link-icon { BACKGROUND-POSITION: -113px -16px } .topGlobalLinks .home .link-icon { BACKGROUND-POSITION: -129px 0px } .topGlobalLinks .home:hover .link-icon { BACKGROUND-POSITION: -129px -16px } .topGlobalLinks .logout .link-icon { DISPLAY: none } .topGlobalLinks .logout { PADDING-BOTTOM: 6px; TEXT-INDENT: 0px; PADDING-LEFT: 9px; WIDTH: auto !important; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .topGlobalLinks .help .link-icon { BACKGROUND-POSITION: -145px 0px } .topGlobalLinks .help:hover .link-icon { BACKGROUND-POSITION: -145px -16px } .topGlobalLinks A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topGlobalLinks A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topTabs-compact .loggedInAs SPAN { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks A { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks .logout { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } UL.nav LI.sub UL.narrow LI A { TEXT-INDENT: -5px; FONT-SIZE: 90% } .hotItems { Z-INDEX: 10000; POSITION: relative; WIDTH: 240px; FLOAT: right; HEIGHT: 28px; COLOR: #666; MARGIN-LEFT: 6px; FONT-SIZE: 90% } .topTabs-compact .hotItems { DISPLAY: none } .hotItems .hotLinks { POSITION: absolute; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; MAX-HEIGHT: 46px; OVERFLOW: auto; RIGHT: 0px; PADDING-TOP: 4px; LEFT: 0px; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; border-radius: 0 0 0 4px } .hotItems .hotLinks LI { DISPLAY: inline } .hotItems .hotLinks A { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT: italic 100% Georgia; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; TEXT-DECORATION: none; PADDING-TOP: 3px } .hotItems .hotLinks LI:after { POSITION: relative; COLOR: #999; CONTENT: "\2022"; RIGHT: 1px } .hotItems .hotLinks LI A:hover { COLOR: #eee; TEXT-DECORATION: underline } .path { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px } .breadcrumbs .noToggle { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .simplePath LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .path .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .path .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .simplePath .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .path A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .simplePath A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .path A:hover { COLOR: #333; TEXT-DECORATION: underline } .simplePath A:hover { COLOR: #333; TEXT-DECORATION: underline } .path .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .simplePath .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .path .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .simplePath .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .path .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='course_id']:before { CONTENT: "H" } .simplePath .root A[href*='course_id']:before { CONTENT: "H" } .path .root A[href*='admin']:before { CONTENT: "S" } .simplePath .root A[href*='admin']:before { CONTENT: "S" } .path .root A[href*='tabId=']:before { CONTENT: "m" } .simplePath .root A[href*='tabId=']:before { CONTENT: "m" } .path .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .simplePath .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .simplePath .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .path .root A:hover:before { COLOR: #888 } .simplePath .root A:hover:before { COLOR: #888 } .path .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .simplePath .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .path LI.contextPath { PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contextPath > DIV { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath > DIV:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath:hover > DIV { opacity: 1 } .contextPath:hover > DIV:hover { opacity: 1 } .contextPath A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .courseArrow A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .contextPath A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .contextPath A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow { DISPLAY: inline-block } .courseArrow A { DISPLAY: inline-block } .coursePath:hover .courseArrow { opacity: 1 } .banner + .breadcrumbs { BACKGROUND-COLOR: inherit; MARGIN: 0px } .breadcrumb-controls { FLOAT: right } .content { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #contentArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } #schemePreviewBody { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .contentBox { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .popup .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .picker .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .portal .contentBox { -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15) } #contentArea { MARGIN: 0px; COLOR: #444 } .container { MARGIN: 0px; COLOR: #444 } .containerOptions { MARGIN: 0px; COLOR: #444 } .containerPortal { MARGIN: 0px; COLOR: #444 } .containerPortal { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .portal .container { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .containerOptions .searchbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } .containerOptions .liveArea { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } #addFolderForm { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } DIV.okContainer { POSITION: relative; PADDING-BOTTOM: 60px } DIV.ok DIV.container { POSITION: relative; PADDING-BOTTOM: 60px } .collabContainer { POSITION: relative; PADDING-BOTTOM: 60px } .column-1 { MARGIN: 6px 0px 0px } .column-2 { MARGIN: 6px 0px 0px } .column-3 { MARGIN: 6px 0px 0px } .column-4 { MARGIN: 6px 0px 0px } .column-5 { MARGIN: 6px 0px 0px } .leftColumn-narrow { MARGIN: -20px 0px 0px -30px; WIDTH: 22%; FLOAT: left; OVERFLOW: auto; BORDER-RIGHT: #ccc 3px double } .picker .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .picker #bb-question-discover .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .rightColumn-narrow { WIDTH: 22%; FLOAT: right; MARGIN-LEFT: 1% } .rightColumn-wide { WIDTH: 74%; FLOAT: right } .leftColumn-wide { BORDER-LEFT: #ccc 3px double; WIDTH: 76%; FLOAT: left; MARGIN-LEFT: -3px } .picker .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker #bb-question-discover .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker .leftColumn-wide H1 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #bb-question-discover .leftColumn-wide { BORDER-LEFT: #ccc 3px double; MARGIN: -20px -20px 0px -3px; WIDTH: 80% } #bb-question-discover .leftColumn-wide + .leftColumn-wide { BORDER-LEFT: medium none; MARGIN: 0px; WIDTH: auto } #bb-question-discover .leftColumn-narrow { WIDTH: 24% } .leftColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .rightColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .leftColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .rightColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .columnPalette H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .leftColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .rightColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .leftColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } .rightColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } A.itemHead:hover { TEXT-DECORATION: underline } .leftColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .rightColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .leftColumn-narrow H3.hideoff { MARGIN: 0px } .leftColumn-narrow .columnPalette:first-child { BORDER-TOP: 0px } .paletteGroup { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .columnPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .paletteGroup DIV.columnPalette { BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .paletteItems { MARGIN: 0px 0px 4px; FONT-SIZE: 95% } .paletteItems LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 16px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } .paletteItems DIV { MARGIN: 0px 0px 0px 16px } #searchForm .paletteItems LI { MARGIN: 0px 0px 0px 24px } .paletteItems LI A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 110%; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .paletteItems LI LABEL { PADDING-LEFT: 21px; DISPLAY: inline-block } .picker .paletteItems LI LABEL { FONT-SIZE: 94% } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } UL.paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI:hover { BACKGROUND: #fff } .paletteItems LI A:hover { TEXT-DECORATION: underline } .paletteItems LI.selectedItem { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.selectedItem:hover { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active:hover { BACKGROUND: #fff4bf; COLOR: #000 } .columnActions UL LI A { DISPLAY: block } #copyright { POSITION: relative; MARGIN: 16px 0px 0px 9px; DISPLAY: inline-block; FONT-SIZE: 82% } .newCopyright { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 12px; PADDING-TOP: 20px } .logo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .legal { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .additionalInfo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 0px; MIN-HEIGHT: auto; PADDING-LEFT: 9px; PADDING-RIGHT: 12px; PADDING-TOP: 9px } .logo { POSITION: absolute; MARGIN-TOP: -20px; LEFT: 0px } .logo IMG { WIDTH: 45px } .additionalInfo { FLOAT: none } .legal P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P:first-child { PADDING-BOTTOM: 0px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } .additionalInfo P:first-child:after { POSITION: relative; COLOR: #ccc; CONTENT: "\2022"; RIGHT: -1px } .additionalInfo P:first-child A { PADDING-RIGHT: 12px } .additionalInfo P:first-child A:hover { BACKGROUND: url(images/micro_popup.png) no-repeat right 2px } .productTitle A { TEXT-ALIGN: right; LINE-HEIGHT: 1.1em; DISPLAY: block; COLOR: #333; FONT-SIZE: 125%; FONT-WEIGHT: bold; TEXT-DECORATION: none } .productTitle A:hover { TEXT-DECORATION: underline } .additionalInfo A:hover { TEXT-DECORATION: underline } .copyrightDetailContents { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #777; MARGIN: 0px; MIN-HEIGHT: 5em; PADDING-LEFT: 24px; WIDTH: 740px; PADDING-RIGHT: 24px; DISPLAY: none; COLOR: #fff; CLEAR: left; BORDER-TOP: #555 1px solid; TOP: 0px; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 12px; LEFT: 0px; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); border-radius: 3px } .productImg { MARGIN-TOP: 5px; FLOAT: left } .copyrightDetailContents UL { TEXT-ALIGN: left; MARGIN: 4px 0px 0px 24px; FLOAT: left } .copyrightDetailContents UL LI SPAN { FONT-WEIGHT: bold } A.closeCopyright { POSITION: relative; FLOAT: right; TOP: -5px; RIGHT: -16px } .contentBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 1em; MARGIN: 0px 1em 0.6em; PADDING-LEFT: 1.4em; PADDING-RIGHT: 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0.6em } .contentBlock H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; MARGIN: 0px 0px 1em; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .contentBlock UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentBlock UL.threeCol { WIDTH: 30%; FLOAT: left } .contentBlock UL.threeCol LI { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px 3px; FLOAT: none; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contentBlock UL.threeCol LI A { BACKGROUND-IMAGE: none } .contentBlock UL.threeCol LI A:hover { TEXT-DECORATION: underline } .contentBlock UL.threeCol LI A:focus { TEXT-DECORATION: underline } .contentBlock H3 INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock H3 SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock OL LI INPUT[type='checkbox'] { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .contentBlock H3 A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock INPUT.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } DIV.landingListWrapper { TEXT-ALIGN: center; MARGIN: 1.6em 0px 0px } DIV.landingListWrapper UL.landingList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI { TEXT-ALIGN: left; MARGIN: 0px 0px 1.6em; WIDTH: 50% } DIV.landingListWrapper UL.landingList-2cols LI { TEXT-ALIGN: left; MARGIN: 0px 3em 1.6em 0px; WIDTH: 45%; FLOAT: left } DIV.landingListWrapper UL.landingList LI.restart { MARGIN-TOP: -13.6em } DIV.landingListWrapper UL.landingList LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList-2cols LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList LI UL { LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em } DIV.landingListWrapper UL.landingList LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; CLEAR: left; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #000; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .containerLanding { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } DIV.landing DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } BODY.landingBody DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } .inst-email DIV.landing DIV.container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } DIV.landingPageColumn { PADDING-BOTTOM: 0px; MARGIN: 1.2em 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .twoCol { MARGIN: 1.2em 0px; WIDTH: 49% } .threeCol { MARGIN: 1.2em 0px; WIDTH: 32.5% } .landingPageColumn UL { MARGIN: 0px 0px 0px 30px } .landingPageColumn .outcomesLanding { PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI { TEXT-ALIGN: left; MARGIN: 0px 0px 2.2em } .inst-email .landingPageColumn UL LI { MARGIN: 0px } .landingPageColumn .outcomesLanding LI { MARGIN: 0px 0px 1.2em } .landingPageColumn UL LI A { TEXT-DECORATION: none } .landingPageColumn UL LI A:hover { TEXT-DECORATION: underline } .landingPageColumn H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI H3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 115%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } .landingPageColumn .outcomesLanding LI P { BORDER-TOP: 0px } .landingPageColumn H3 IMG { MARGIN: 0px 0px 0px -12px } .landingPageColumn H3.hiddenlink IMG { POSITION: absolute; FILTER: alpha(opacity=40); TOP: 0px; LEFT: 1.1em; opacity: .4 } .landingPageColumn UL LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em; PADDING-LEFT: 1.6em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #555; PADDING-TOP: 1px } .landingPageColumn UL LI UL LI.more { PADDING-TOP: 3px } .landingPageColumn UL LI UL LI.more A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; COLOR: #555; PADDING-TOP: 0px } .landingPageColumn UL LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn H3.hiddenlink { POSITION: relative; PADDING-BOTTOM: 0.6em; PADDING-LEFT: 4.2em; PADDING-RIGHT: 1.2em; PADDING-TOP: 1em } .landingPageColumn H3.hiddenlink A { COLOR: #777; TEXT-DECORATION: none } .landingPageColumn H3.hiddenlink A:hover { COLOR: #777; TEXT-DECORATION: none } .subhead_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #333; FONT-SIZE: 90%; PADDING-TOP: 0px } .list_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 1.3em; PADDING-RIGHT: 2px; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .landingPageColumn .outcomesLanding .list_text A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 3px; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; HEIGHT: 360px; OVERFLOW: auto; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.datalist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.landingPageColumn UL LI UL.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 250px; OVERFLOW: auto; BORDER-TOP: medium none; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.datalistScroll LI { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: white; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.datalistScroll LI:hover { BACKGROUND-COLOR: #ffc } DIV.landingPageColumn UL LI UL.datalistScroll LI:focus { BACKGROUND-COLOR: #ffc } DIV.datalist TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } DIV.datalistScroll TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } .emptylist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: white; MARGIN: 6px 0px 0px 1.4em; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 12px } DIV.landingPageColumn UL LI UL.subcaret { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.subcaret LI { PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.complete { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_complete_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.inprogress { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_active_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } .iconLegendLabel { MARGIN: 1px 0px 1px 1.6em; FONT-SIZE: 95% } DIV.landingPageColumn UL LI UL.subcaret LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI UL.datalist LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI DIV A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI TABLE A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI P A { TEXT-DECORATION: underline } .genericButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .genericButtonImg { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browse { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browseIcon { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } INPUT[type='submit'].submit { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble_top A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paging A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .itemHeaderControl A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .actionMenuButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paletteSearch .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } H3#cs_search + UL DIV.none:first-child .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .mainButton H2 { MARGIN: 0px; FONT-SIZE: 100% } .secondaryButton H2 { MARGIN: 0px; FONT-SIZE: 100% } #primaryButton { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble_top .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1 { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1-img { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } #secondaryButton { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2 { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2-img { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } #secondaryButton { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .sub A IMG { MARGIN: -2px -4px 0px 0px } .sub .button-1 IMG { MARGIN: -2px -4px 0px 0px } .sub .button-2 IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton A IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton .button-2 IMG { MARGIN: -2px -4px 0px 0px } .mainButton A { DISPLAY: block } .secondaryButton A { DISPLAY: block } .actionBar .button-1 { DISPLAY: block } .actionBar .button-2 { DISPLAY: block } .mainButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .mainButton H2 > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .secondaryButton > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .secondaryButton H2 > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .sub.mainButton A { PADDING-RIGHT: 12px } .sub.secondaryButton A { PADDING-RIGHT: 12px } .mainButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A { FONT-WEIGHT: 600 } .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 30px } .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 30px } .popup .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .popup .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .genericButtonImg { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } INPUT[type='submit'].genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browse { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browseIcon { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .paging A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .itemHeaderControl > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .actionMenuButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } #toolsSearchBox + .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .treeContainer .tree LI A.button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .threadButtons .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .dbThreadInfo .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .containerOptions INPUT.genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-2 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-3 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-4 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'] { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'].submit { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='button'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .genericButtonImg { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-3-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .itemHeaderControl A { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .browseIcon { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .genericButtonImg { DISPLAY: inline-block !important } INPUT[type='submit'].genericButton { FONT-WEIGHT: bold } .button-3 { FONT-WEIGHT: bold } .searchbar INPUT[type='submit'].genericButton { FONT-WEIGHT: normal } .u_reverseAlign#editGradeActionList A.genericButton { DISPLAY: inline-block; MARGIN-BOTTOM: 5px } .genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .threadButtons .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .dbThreadInfo .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img.contextArrow:hover { box-shadow: none } .button-4-img.contextArrow:focus { box-shadow: none } .paletteSearch .button-4:hover { BACKGROUND-IMAGE: none !important } .paletteSearch .button-4:focus { BACKGROUND-IMAGE: none !important } .button-5 { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5-img { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5:hover { BACKGROUND: #ededed; COLOR: black } .button-5-img:hover { BACKGROUND: #ededed; COLOR: black } .button-6 { TEXT-DECORATION: none } .mainButton A.disabled { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .rumble A { DISPLAY: block } .rumble_top A { DISPLAY: block } .rumble .sub A IMG { MARGIN: -2px -1px 0px 3px } .rumble_top .sub A IMG { MARGIN: -2px -1px 0px 3px } .paging A { DISPLAY: inline-block } .rumble_top .inventory_paging .gotolink { DISPLAY: inline-block } .rumble .inventory_paging .gotolink { DISPLAY: inline-block } .listItemSelect { MARGIN: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #555 } #threadArea .listItemSelect { MARGIN: 0px } .rumble_top .listItemSelect { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 4px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .listItemSelect { PADDING-BOTTOM: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .rumble .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble_top .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble .listItemSelect A:hover { TEXT-DECORATION: none } .rumble_top .listItemSelect A:hover { TEXT-DECORATION: none } .listItemSelect LABEL { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline; PADDING-TOP: 0px } .listItemSelect SELECT { FONT-SIZE: 95% } INPUT.calcButton { MARGIN: 2px 0px; WIDTH: 2em; DISPLAY: inline-block } INPUT#width { WIDTH: 5em } INPUT#height { WIDTH: 5em } SELECT#border { WIDTH: 5em } SELECT#controls { WIDTH: 5em } .smallControls INPUT[type='text'].width { WIDTH: 5em } .smallControls INPUT[type='text'].height { WIDTH: 5em } .smallControls SELECT.quality { WIDTH: auto } .smallControls SELECT.controls { WIDTH: auto } .smallControls SELECT.border { WIDTH: auto } .actionBarMicro .mainButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .secondaryButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .mainButton A IMG { MARGIN: 0px } .actionBarMicro .secondaryButton A IMG { MARGIN: 0px } .actionBarMicro A SPAN IMG { VISIBILITY: hidden } .actionBar A SPAN IMG { VISIBILITY: hidden } .actionBarMicro .access-reorder { -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .actionBarMicro A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBar A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBarMicro #quickViewLink A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #shortcutView A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #quickViewLink A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#quickViewLink A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #shortcutView A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#shortcutView A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #addCmItem > A SPAN { BACKGROUND-POSITION: -16px 0px } .actionBarMicro #detailViewLink2 UL LI A { WIDTH: 90px } .actionBarMicro #addCmItem:hover > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro .active#addCmItem > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro #detailViewLink A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #folderView A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #detailViewLink2 A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #folderView A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#folderView A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #courseMapButton A SPAN { BACKGROUND-POSITION: -48px 0px } .actionBarMicro #courseMapButton A:hover SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro .active#courseMapButton A SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro #refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshView A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshMenuLink A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro #refreshView A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshView A SPAN { BACKGROUND-POSITION: -64px -16px } A.access-reorder SPAN { BACKGROUND-POSITION: -80px 0px } A.access-reorder:hover SPAN { BACKGROUND-POSITION: -80px -16px } A.active.access-reorder SPAN { BACKGROUND-POSITION: -80px -16px } .actionBar .sub A .chevron { BACKGROUND-POSITION: -95px 0px } .actionBar .sub:hover A .chevron { BACKGROUND-POSITION: -95px -16px } .actionBar .sub A:focus .chevron { BACKGROUND-POSITION: -95px -16px } .actionBarMicro .active > A { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:hover { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:focus { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } A.liveAreaTab:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub H2 > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .mainButton.sub:hover H2 > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang H2:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang:hover H2:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub:hover > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .actionBarMicro UL:hover + UL .active A:after { DISPLAY: none } A.liveAreaTab:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang H2:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang:hover H2:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .sub:hover > A:after { BORDER-BOTTOM-COLOR: #d1eaef } .columnActions.actionBarMicro { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 3px } .alignPanel LI.sub { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .alignPanel LI.sub A.button-4:after { CONTENT: none } .columnActions UL { MARGIN: 0px 0px 2px } .columnActions .mainButton A { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .columnActions .mainButton A:hover { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .modeSwitchWrap { DISPLAY: inline-block; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; FONT-WEIGHT: bold; BORDER-RIGHT: transparent 1px dotted } .modeSwitch { PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: #ccc; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -moz-border-radius: 16px; -webkit-border-radius: 16px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); border-radius: 16px } .modeSwitch:before { POSITION: relative; LINE-HEIGHT: 0.9; COLOR: #bbb; FONT-SIZE: 22px; VERTICAL-ALIGN: middle; CONTENT: "\2022"; TOP: -1px; FONT-WEIGHT: normal; MARGIN-RIGHT: 2px; LEFT: 0px; font-effect: outline } .read-on { BACKGROUND-COLOR: #777; MARGIN-RIGHT: 0px } .read-on:hover { BACKGROUND: #555 } .read-on { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .read-on:before { COLOR: lime; text-shadow: 0 0 4px lime } .disabled.read-on:before { COLOR: #999 } .disabled.read-on { COLOR: #999 } .read-off:before { COLOR: #999 } .read-off { COLOR: #999 } .read-off.modeSwitch { TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } A.read-off IMG { DISPLAY: none } A.read-on IMG { DISPLAY: none } A.read-on .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } A.read-off .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } .modeSwitch SPAN { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .switcherLabel { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 4px !important; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 2px !important } .vtbeSwitch { TOP: 2px } .vtbeSwitch SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .legacy .vtbeSwitch { HEIGHT: 2.2em } .vtbeSwitch DIV.modeSwitchWrap { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ccc 1px solid; TOP: 2px; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .vtbeSwitch DIV.modeSwitchWrap A SPAN#statusText { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 0px !important } .vtbeSwitch DIV.modeSwitchWrap A.read-off { BACKGROUND-COLOR: #ddd } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover { BACKGROUND-COLOR: #fff } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover SPAN#statusText { COLOR: #000 } TABLE.vtbeTable-legacy { WIDTH: 100% } .vtbeTable-legacy TEXTAREA { WIDTH: 100% } .helpLink { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .helpLink A.browseIcon { BORDER-BOTTOM: 0px; POSITION: relative; TEXT-ALIGN: center; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#777777); BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; BACKGROUND: #777; FONT-SIZE: 115%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; box-shadow: none; border-radius: 12px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .helpLink A.browseIcon IMG { DISPLAY: none } .helpLink A.browseIcon:before { Z-INDEX: 1; POSITION: relative; WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: #fff; CONTENT: "?"; RIGHT: -4px; FONT-WEIGHT: bold } .helpLink A.browseIcon:hover { box-shadow: none } .helpLink A.browseIcon:focus { box-shadow: none } .helpLink A[title*='Off'].browseIcon:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bbbbbb,endColorstr=#bbbbbb); BACKGROUND: #bbb } .helpLink A[title*='Off'] { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } TABLE.reorder { opacity: 1 } .reorder SPAN { DISPLAY: inline-block; HEIGHT: 20px } TABLE.reorder SPAN { HEIGHT: auto } .item .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } .item .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .liItem .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .subList-reorder .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .buttonCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .dndHandle .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .portlet .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder { WIDTH: 16px } .subList-reorder .reorder { WIDTH: 16px } .buttonCm .reorder { WIDTH: 16px } .portlet .reorder SPAN { DISPLAY: block; BACKGROUND-POSITION: -237px -116px; HEIGHT: 24px } .portlet .reorder { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; BOTTOM: -1px; BORDER-TOP: #555 1px solid; TOP: -1px; BORDER-RIGHT: #555 0px solid; LEFT: -19px; opacity: 0; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px } .module-dragstate.portlet .reorder { BORDER-RIGHT-WIDTH: 0px; BOTTOM: -2px; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-LEFT-WIDTH: 2px; TOP: -2px; LEFT: -20px } .reorder IMG { FILTER: alpha(opacity=0); opacity: 0 } .item .reorder IMG { MARGIN: 6px 3px } .portlet .reorder IMG { WIDTH: 18px; HEIGHT: 20px } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .liItem:focus .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .listCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buttonCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .portlet H2:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentListPlain LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentList > LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg { MARGIN: 0px; WIDTH: 16px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -125px; HEIGHT: 16px } TABLE.inventory A.cmimg { FILTER: alpha(opacity=0); opacity: 0 } TABLE.inventory TR:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg:hover { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg:focus { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg IMG { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 15px; PADDING-RIGHT: 0px; HEIGHT: 15px; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .buttonCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .portlet A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } A.cmimg-small { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .listCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .listCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .courseMenu .subhead A.cmimg { TOP: 9px } .buttonCm .courseMenu .subhead .cmimg { TOP: 2px } .portlet A.cmimg { POSITION: relative; TOP: 2px; RIGHT: 0px } .listCm .courseMenu A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .portlet A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .buildList LI .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .item .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .buildList LI .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .item .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .listCm .courseMenu LI:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 3px; BOTTOM: 0px; PADDING-RIGHT: 4px; PADDING-TOP: 4px; -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); border-radius: 0 3px 0 0 } .frameResizeToggle A { WIDTH: 16px; DISPLAY: block; BACKGROUND: url(images/utilicons_sprite_rev.png) no-repeat -158px 0px; HEIGHT: 16px; OVERFLOW: hidden } .frameResizeToggle:hover { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle A.resize-on { BACKGROUND-POSITION: -175px 0px; opacity: .5 } .frameResizeToggle A.resize-off { BACKGROUND-POSITION: -159px 0px; opacity: .8 } .frameResizeToggle A.resize-on:hover { BACKGROUND-POSITION: -159px -16px; opacity: 1 } .frameResizeToggle A.resize-off:hover { BACKGROUND-POSITION: -175px -16px; opacity: 1 } .frameResizeToggle A IMG { WIDTH: 18px; HEIGHT: 18px } A.close { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close-menu { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close { TOP: 0px; RIGHT: 20px } A.close IMG { DISPLAY: none } A.close-menu IMG { DISPLAY: none } .lbAction IMG { DISPLAY: none } A.close:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } .lbAction:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT-SIZE: 14px } A.close:hover:before { COLOR: #888 } A.close-menu:hover:before { COLOR: #888 } .lbAction:hover:before { COLOR: #888 } .builderItem A.close { FILTER: alpha(opacity:0); opacity: 0 } .builderItem:hover A.close { FILTER: alpha(opacity:100); opacity: 1 } .liveArea A.close { TOP: 6px; RIGHT: 6px } .cmdiv A.close-menu { Z-INDEX: 100; POSITION: relative; FILTER: alpha(opacity=100); TOP: 0px; RIGHT: 0px; opacity: 1 } #bb-assessment-canvas [id*='receipt_nested'].receipt A.close { TOP: 6px; RIGHT: 6px } A.colorChip { PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 1px } .pageTitle A.colorChip { PADDING-BOTTOM: 4px; PADDING-LEFT: 7px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } A.colorChip SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -123px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } A.colorChip:hover SPAN { BACKGROUND-POSITION: -320px -141px } A.colorChip SPAN IMG { FILTER: alpha(opacity=0); WIDTH: 16px; HEIGHT: 16px; opacity: 0 } A.colorChip IMG.chipSwatch { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 16px; HEIGHT: 16px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #aaa 1px solid } SPAN.colorChipName { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: inline-block !important; VERTICAL-ALIGN: middle; PADDING-TOP: 0px !important } INPUT[type='text'] { FONT-SIZE: 90% } INPUT[type='password'] { FONT-SIZE: 90% } SELECT { FONT-SIZE: 90% } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .courseMenu INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .courseMenu INPUT[type='text'] { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { MARGIN-LEFT: 0px } #calculatorValue { MARGIN: 3px 0px; WIDTH: 10em } A.microControl { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A.microControl IMG { WIDTH: 12px; HEIGHT: 12px } A.save { BACKGROUND: url(images/controls.png) no-repeat -50px -123px } A.cancel { BACKGROUND: url(images/controls.png) no-repeat -70px -123px } .fileInputWrapper { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; MARGIN-RIGHT: 9px; PADDING-TOP: 0px } .fileInputWrapper INPUT.hiddenInput { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .backLink { POSITION: absolute; MARGIN: 0px; BOTTOM: 0px; RIGHT: 0px } .tocBottom_min .backLink { BOTTOM: 48px } .tocBottom_max .backLink { BOTTOM: 348px } .tocBottom_open .backLink { BOTTOM: 178px } .shortDoc .backLink { POSITION: relative; TEXT-ALIGN: left; MARGIN-TOP: 15px; BOTTOM: 0px; RIGHT: 0px } .backLink A { BORDER-BOTTOM: #cdcdcd 0px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 18px; DISPLAY: inline-block; BACKGROUND: #eee; COLOR: #888; BORDER-TOP: #cdcdcd 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #cdcdcd 0px solid; TEXT-DECORATION: none; PADDING-TOP: 8px; -moz-box-shadow: 1px 1px 4px #DDD inset; -webkit-box-shadow: 1px 1px 4px #ddd inset; -moz-border-radius: 4px 0 4px 0; -webkit-border-radius: 4px 0 4px 0; text-shadow: 0 1px 0 #fff } .shortDoc .backLink A { BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px } .backLink A:before { LINE-HEIGHT: 1.2; COLOR: #999; FONT-SIZE: 120%; CONTENT: "\2190" } .backLink A:hover { BACKGROUND: #ddd; COLOR: #777 } .backLink A:hover:before { COLOR: #00add0 } .sliderWrapper { BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 0px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 13px; BACKGROUND: #fff; FLOAT: left; FONT-SIZE: 85%; PADDING-TOP: 14px; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0 } #sliderHandle { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: -2px 0px 0px; WIDTH: 4px; DISPLAY: block; BACKGROUND: #999; HEIGHT: 4px; BORDER-TOP: #555 1px solid; CURSOR: ew-resize; BORDER-RIGHT: #555 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } #sliderTrack { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 6px; WIDTH: 60px; DISPLAY: inline-block; BACKGROUND: #ededed; HEIGHT: 2px; BORDER-TOP: #ccc 1px solid; TOP: -2px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .itemCounter { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #cdcdcd; FONT-SIZE: 115%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #pageHeader { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitleSmall { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } #pageHeader { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #schemePreviewHead { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitle H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitleError H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #pageHeader { FONT-SIZE: 185% } .pageTitle H1 { FONT-SIZE: 185% } .pageTitleError H1 { FONT-SIZE: 185% } .picker .pageTitle H1 { FONT-SIZE: 160% } .popup .pageTitle H1 { FONT-SIZE: 160% } .pageTitle #titleicon { DISPLAY: inline-block } .pageTitle H1 { DISPLAY: inline-block } .pageTitle A.cmimg { DISPLAY: inline-block } .pageTitle H1 + .contextMenuContainer { POSITION: relative; MARGIN-LEFT: 2px; VERTICAL-ALIGN: top; TOP: 4px } .pageTitle A.cmimg { MARGIN: 0px } .pageTitle #titleicon { MARGIN: 0px 6px 0px 0px; DISPLAY: none } .pageTitle [src*='slideshare']#titleicon { BORDER-BOTTOM: #dedede 1px solid; POSITION: absolute; BORDER-LEFT: #dedede 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; WIDTH: auto; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #fff; HEIGHT: 39px; BORDER-TOP: #dedede 0px solid; TOP: 1px; RIGHT: 7px; BORDER-RIGHT: #dedede 0px solid; PADDING-TOP: 4px; border-radius: 0 4px 0 4px } .pageTitle [src*='youtube']#titleicon { POSITION: absolute; WIDTH: auto; DISPLAY: block; HEIGHT: 44px; TOP: 8px; RIGHT: 14px } .pageTitleSmall H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #fff; FONT-SIZE: 135%; PADDING-TOP: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.9) } #pageHeader { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } #schemePreviewHead { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .hierarchy-page .pageTitle + .container { MARGIN-TOP: -20px; BACKGROUND: #fff } .picker .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popup .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } #pageHeader { BACKGROUND-COLOR: #dedede } #schemePreviewHead { BACKGROUND-COLOR: #dedede } .pageTitleIcon { DISPLAY: table-row } .pageTitle .details { DISPLAY: none } .pageTitle .contextMenuContainer { DISPLAY: inline-block !important } .pageTitle .titleButtons { DISPLAY: inline-block !important } .pageTitleEdit { DISPLAY: inline-block !important } #pageTitleBar { DISPLAY: inline-block; MARGIN-RIGHT: 6px } .pageTitle H2 { MARGIN: 0px; COLOR: #333; CLEAR: both; FONT-SIZE: 100% } .pageTitle H2 SPAN { FONT-WEIGHT: normal } .contextString { COLOR: #777; FONT-WEIGHT: normal } .pageTitle .label { COLOR: #777; FONT-WEIGHT: normal } .error .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#DB0F0F,endColorstr=#FC0202); box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6) inset } .error .pageTitle H1 { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2) } .customBanner { TEXT-ALIGN: center; BACKGROUND-COLOR: transparent; MARGIN: 0px; OVERFLOW: hidden } DIV.localViewToggle + DIV.pageTitle { PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #fafafa inset; border-radius: 0 } DIV#lightboxContent H2 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; FONT-SIZE: 130%; PADDING-TOP: 18px } .helphelp { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .pageTitle P { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .label.details { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .mapTabs + .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .mapTabs ~ .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .helphelp A { BORDER-BOTTOM: #666 1px dotted; COLOR: #666; TEXT-DECORATION: none } .helphelp A:hover { BORDER-BOTTOM-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-TOP-STYLE: solid; BORDER-LEFT-STYLE: solid } DIV.helphelp UL { MARGIN: 6px 0px } .version { MARGIN-TOP: 6px; DISPLAY: inline-block; COLOR: #666; FONT-SIZE: 60%; FONT-WEIGHT: normal } .version I { FONT-STYLE: normal; FONT-WEIGHT: bold } .version SPAN { POSITION: relative; WIDTH: 13px; DISPLAY: inline-block; OVERFLOW: hidden; TOP: -2px; LEFT: -5px } .version SPAN:before { POSITION: relative; COLOR: #00add0; FONT-SIZE: 105%; CONTENT: "+"; TOP: 0px; FONT-WEIGHT: bold; LEFT: 0px } .colophon { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px 14px; PADDING-LEFT: 55px; WIDTH: 30em; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: right; FONT-SIZE: 85%; OVERFLOW: visible; RIGHT: 0px; PADDING-TOP: 0px } .colophon IMG { POSITION: absolute; LEFT: 0px } .installation { LINE-HEIGHT: 1.3em; COLOR: #666 !important } .installation SPAN { FONT-WEIGHT: bold } .actionBar { Z-INDEX: 110; BORDER-TOP: #444 1px solid; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .hierarchy-page .actionBar { MARGIN-TOP: -21px } .hierarchy-page #toolsTabForm .actionBar { MARGIN: -21px -30px 0px } .actionBar UL LI { POSITION: relative } .actionBar UL LI.mainButton { Z-INDEX: 210 } .actionBar UL LI.secondaryButton { Z-INDEX: 209 } .actionBar UL LI.mainButton:hover { Z-INDEX: 112 } .pageTitle + .actionBar { -moz-border-radius: 0; border-radius: 0 } .actionBar .mainButton { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBar .secondaryButton { MARGIN: 0px; FLOAT: right } .actionMenu { Z-INDEX: 111; POSITION: relative } .actionMenuItem { Z-INDEX: 123; POSITION: relative } .actionBarMicro { -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .csMenuFrame .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popupMenu .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .portlet .actionBarMicro { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .portlet .actionBarMicro UL { MARGIN: 2px } .actionBarMicro UL LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBarMicro .mainButton { Z-INDEX: 1000 } .actionBarMicro .secondaryButton { Z-INDEX: 10; FLOAT: right } .actionBar { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .actionBarMicro { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .searchbar { POSITION: relative } .searchbarPicker { POSITION: relative } .subActionBar { POSITION: relative } .searchbarCanvas.searchbar { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN: -24px -30px 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dfdfdf 0px 0px; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #F0F0F0 inset; -webkit-box-shadow: 1px 0 0 #F0F0F0 inset } .picker .searchbarCanvas.searchbar { MARGIN: -24px -20px 20px } .picker .leftColumn-narrow H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } .picker .leftColumn-wide H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } #bb-question-discover .searchbarCanvas.searchbar FIELDSET H2 { DISPLAY: inline-block; FONT-SIZE: 100%; FONT-WEIGHT: normal } .subActionBar { FONT-SIZE: 95% } .searchbar TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE TD TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE FIELDSET { PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 3px } .searchbar TABLE DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .searchbar FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchbarPicker { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .searchbar:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .searchbarPicker:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .receipt A.close { FILTER: alpha(opacity=70); TOP: 1px; RIGHT: 4px; opacity: .7 } .slideshowControls { TEXT-ALIGN: center; MARGIN: 8px auto 12px; FONT-SIZE: 100% } .searchbar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbarPicker FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .subActionBar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbar H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .searchbarPicker H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .picker .searchbar H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbarPicker H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbar .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbarPicker .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .liveArea FIELDSET .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbar OL LI { MARGIN: 5px; FLOAT: left } .searchbarPicker OL LI { MARGIN: 5px; FLOAT: left } .liveArea FIELDSET OL LI { MARGIN: 5px; FLOAT: left } .searchbar OL LI > DIV { MARGIN: 0px 4px 4px 0px; DISPLAY: inline-block } .searchbar OL LI.options { FLOAT: right } .searchbarPicker OL LI.options { FLOAT: right } .liveArea FIELDSET OL LI.options { FLOAT: right } .searchbarPicker SPAN { DISPLAY: inline } .searchbar SPAN.spacer { MARGIN: 0px 4px } .cmImg { TEXT-ALIGN: center; MARGIN: 0px 0px 6px 12px; WIDTH: 180px; OVERFLOW: hidden } .cmImg IMG { WIDTH: 180px } .navDivider { PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; MARGIN: 0px 0px 4px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; LETTER-SPACING: 2px; COLOR: #999; FONT-SIZE: 80%; FONT-WEIGHT: bold; PADDING-TOP: 18px; text-shadow: 0 1px 0 #f9f9f9 } .cmPreviewWrapper { WIDTH: 212px } .navPalette { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .csMenuFrame .navPalette { MARGIN: 0px 0px 18px } .navPalette H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 105%; PADDING-TOP: 0px } .navPaletteTitle { POSITION: relative } .navPaletteTitle H3 + H3 { POSITION: absolute; TOP: 0px; RIGHT: 0px } .navPaletteCol H3 { BORDER-BOTTOM: 0px } .navPalette H4 { MARGIN: 0px; FONT-SIZE: 100% } .navPaletteContent UL LI { POSITION: relative; ZOOM: 1 } .navPaletteContent { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .listCm .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .singleControl .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .tools .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } #courseMenuPalette DIV.navPaletteContent { PADDING-BOTTOM: 14px; PADDING-TOP: 14px; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset } #courseMenuPalette { MARGIN-BOTTOM: 0px } .singleControl .navPaletteContent { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .singleControl { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPalette .discover { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPaletteContent A { PADDING-BOTTOM: 3px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; WORD-BREAK: normal; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 3px } .navPaletteContent A:hover { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A:focus { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A.comboLink { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.open { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.submenuLink { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink_active { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent A.submenuLink_active IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent UL LI:first-child H4 A { BORDER-TOP: medium none } .navPaletteContent UL LI:first-child A { BORDER-TOP: medium none } .navPaletteContent UL LI H4 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPaletteContent H3 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px; text-shadow: 0 1px 0 #f9f9f9 } .navPaletteContent H3 A:hover { TEXT-DECORATION: none } .navPaletteContent H3 A:focus { TEXT-DECORATION: none } #courseMenu { BACKGROUND-COLOR: #0078cb; COLOR: #fff } .controlpanel UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .controlpanel A { BORDER-TOP: #ccc 1px dotted } .controlpanel A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .controlpanel A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { DISPLAY: inline-block } .navPaletteContent H3 A.submenuLink_active { DISPLAY: inline-block } .controlpanel A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .controlpanel A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink_active:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .navPaletteContent H3 A.submenuLink_active:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .controlpanel A.submenuLink:hover:after { COLOR: #aaa } .controlpanel A.submenuLink_active:hover:after { COLOR: #aaa } .tools A.submenuLink:hover:after { COLOR: #aaa } .tools A.submenuLink_active:hover:after { COLOR: #aaa } .navPaletteContent H3 A.submenuLink:hover:before { COLOR: #aaa } .navPaletteContent H3 A.submenuLink_active:hover:before { COLOR: #aaa } .controlpanel A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .tools A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel H4 A.open { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navPaletteContent UL LI:first-child H4 A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore H4 { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel A.comboLink_active { Z-INDEX: 1; POSITION: relative } .tools A.comboLink_active { Z-INDEX: 1; POSITION: relative } .controlpanel H4 A.open { Z-INDEX: 1; POSITION: relative } .treeViewCs .navPaletteContent { } .treeViewCs .bottomRound B { } .courseFilesPalette { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .paletteSearch { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 6px } .classFiles H4#cs_search + UL LI:first-child { BORDER-BOTTOM: #aaa 1px dotted; PADDING-BOTTOM: 6px; MARGIN: 2px 9px 2px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 95%; PADDING-TOP: 0px } .classFiles H4#cs_search + UL LI { BACKGROUND-IMAGE: none } .classFiles A#filesPaletteContentCollectionLink { BACKGROUND-IMAGE: url(images/indicators.png); PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 98% -143px; COLOR: #aaa; PADDING-TOP: 3px } .navPaletteContent .submenu .paletteSearchElement { PADDING-BOTTOM: 9px; MARGIN: 6px 0px 0px -16px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BORDER-TOP: #bbb 1px dotted; PADDING-TOP: 10px } .paletteSearchElement INPUT { WIDTH: 99px } .classFiles UL.tree > LI { BACKGROUND-IMAGE: none !important } .listCm .courseMenu { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .ineditmode DIV.listCm UL.courseMenu { MARGIN: 0px } .ineditmode DIV.listCm UL.courseMenu LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px -1px 0px 0px; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid } .ineditmode DIV.listCm UL.courseMenu LI:hover { BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff !important; -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -moz-transition: border, margin, background, -moz-box-shadow 500ms cubic-bezier(0.420, 0.000, 1.000, 1.000); box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-transition-property: background, border, -webkit-box-shadow; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000); background-clip: padding-box } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder { -webkit-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder:before { -webkit-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .listCm .courseMenu LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .buttonCm LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .buttonCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .listCm .courseMenu A:hover { TEXT-DECORATION: underline } .listCm .courseMenu A:focus { TEXT-DECORATION: underline } .buttonCm LI A:hover { TEXT-DECORATION: underline } .buttonCm LI:focus { TEXT-DECORATION: underline } .listCm .courseMenu > LI:hover A SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:hover { COLOR: #128fa8 !important } .listCm .courseMenu A:focus { COLOR: #128fa8 !important } .listCm .courseMenu A:hover SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:focus SPAN { COLOR: #128fa8 !important } .listCm .courseMenu .here A { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:hover { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:focus { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A.cmimg { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu .here A.cmimg:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .listCm .subhead H3 { PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #courseMenu_folderView H4 A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } #courseMenu_folderView .subhead { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .navPaletteContent .subhead H3 A { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .navPaletteContent .subhead H3 A:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .listCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { BACKGROUND-IMAGE: none !important } .noteditmode .listCm .courseMenu .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .noteditmode .listCm .buttonCm .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .listCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .buttonCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .listCm .courseMenu .collapsed { PADDING-BOTTOM: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; HEIGHT: 2px; PADDING-TOP: 0px } .buttonCm .navPaletteContent { BACKGROUND: none transparent scroll repeat 0% 0% } .buttonCm LI { BACKGROUND-COLOR: transparent; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 12px 0px } .buttonCm .courseMenu .here A { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .buttonCm .courseMenu .here A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .cmLink-hidden { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-empty { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-hidden IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -123px } .cmLink-hidden { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -138px } .buttonCm .invisible .cmLink-hidden { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { RIGHT: 32px } .buttonCm .bottomRound { DISPLAY: none } .pickerMenu { POSITION: absolute; MARGIN: 0px; WIDTH: 150px; TOP: 0px; LEFT: 14px } .pickerMenu UL LI A { BACKGROUND-IMAGE: none } DIV.pickerMenu A.simpleLink { BACKGROUND-IMAGE: none } .pickerMenu A.open { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:hover { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:focus { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .discover .topRound B { } .discover .bottomRound B { } .discover .navPaletteContent { } .singleControl .topRound B { } .singleControl .bottomRound B { } .singleControl .navPaletteContent { } .discover A IMG { DISPLAY: none } .discover.navPalette { MARGIN-BOTTOM: 0px } .singleControl A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .navPalette .discover A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .singleControl A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A.enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .discover A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { COLOR: #3c0; CONTENT: "+" } .discover A:before { COLOR: #eee; CONTENT: "F" } .navPaletteContent .submenu { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; FONT-SIZE: 90%; PADDING-TOP: 0px; -moz-box-shadow: 0 1px 4px #ccc; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore .submenu { BACKGROUND: #fff; FONT-SIZE: 90% } .navPaletteContent .submenu LI { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent .submenu LI UL LI { PADDING-LEFT: 12px } .navPaletteContent .submenu LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } H4#cs_search + UL DIV A { DISPLAY: block; FONT-SIZE: 90% } .controlpanel .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu .emptyMsg { COLOR: #777 } .controlpanel .submenu A:hover { TEXT-DECORATION: underline } .controlpanel .submenu A.here { TEXT-DECORATION: underline } .controlpanel .submenu A:focus { TEXT-DECORATION: underline } .explore .submenu A:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .explore .submenu A:focus { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .tools .submenu { BACKGROUND: #fff } .controlpanel .submenu { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel .submenu LI UL { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND-COLOR: transparent } .navPalette A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .controlpanel A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPalette A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPalette A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPaletteCol H3 A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol H3 A.comboLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol .navPaletteContent H3 { BACKGROUND-IMAGE: none } .navPaletteCol .actionBarMicro { DISPLAY: none } .shortcutViewCs UL LI A { TEXT-ALIGN: center; BORDER-TOP: #ededed 1px dotted } .shortcuts LI A { BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted } .shortcuts LI A:hover { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .shortcuts LI A:focus { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .treeContainer#courseMenu_folderView { OVERFLOW-X: auto } DIV.expTreeContainer { BACKGROUND: #eee } DIV.treeContainer UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.treeContainer > UL.tree { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree > UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.listCm DIV.treeContainer UL.tree { OVERFLOW-X: auto; ZOOM: 1 } DIV.treeContainer UL.tree LI H4 + UL { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; ZOOM: 1; FONT-SIZE: 90%; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .sideTOC UL.tree > LI { OVERFLOW-X: visible } DIV.treeContainer UL.tree LI.last { BACKGROUND-IMAGE: none } UL.tree LI.last { BACKGROUND-IMAGE: none } DIV.treeContainer UL.tree LI.here A { BACKGROUND-COLOR: #ededed } UL.tree LI.here A { BACKGROUND-COLOR: #ededed } DIV.treeContainer UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.open_folder { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: #ebeffa; FONT-SIZE: 95%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.exp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folder.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI A.collapse { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folderopen.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer H4.treehead { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 2px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.treeContainer H4.first { MARGIN: 0px 0px 2px } DIV#userTreeDiv { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead { BACKGROUND-IMAGE: none; MARGIN: 0px; BORDER-TOP: #ccc 1px dotted } DIV.treeContainer UL.tree LI.subhead H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.first A { BORDER-TOP: medium none } DIV.treeContainer UL.tree LI.subhead H4 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 6px } UL.tree LI.subhead:first-child { MARGIN-TOP: 0px } UL.tree LI.subhead:first-child > A { BORDER-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.treeSubhead-collapsed A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: normal } .tableOverflowControl { OVERFLOW-X: auto } .inventory { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 0px; BORDER-SPACING: 0; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-COLLAPSE: separate; BACKGROUND: #fff; COLOR: #000; CLEAR: both; PADDING-TOP: 0px } .inventory CAPTION { TEXT-ALIGN: left; COLOR: #999; FONT-SIZE: 85% } .inventory > THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .splashTable THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .inventory > THEAD TR TH:first-child { BORDER-LEFT: medium none; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .inventory > TBODY { BORDER-BOTTOM: #ccc 2px solid } .inventory > TBODY TR { BORDER-BOTTOM: #ccc 1px solid } .inventory > TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory > TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory#drawerItems TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory#drawerItems TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory > TBODY TR TH { TEXT-ALIGN: left; FONT-WEIGHT: normal } .inventory > TBODY TR TD:first-child { BORDER-LEFT: medium none } .inventory > TBODY .gray TD { BACKGROUND: #fff4bf } .inventory > TBODY .gray TH { BACKGROUND: #fff4bf } .inventory > THEAD TR TH.sorted { BACKGROUND: #ccc } TH.sorted { BACKGROUND: #ccc } .splashTable THEAD TR TH.sorted { BACKGROUND: #ccc } .inventory > TBODY TR TD.sorted { BACKGROUND: #eee } .inventory > THEAD TR TH.sorted A { COLOR: #000 !important; FONT-WEIGHT: bold } .sortable > THEAD TH A { COLOR: #666; MARGIN-RIGHT: 9px } .sortable > THEAD TH A:hover { COLOR: #333; TEXT-DECORATION: underline } .sortable A.sortheader { POSITION: relative; PADDING-RIGHT: 17px; DISPLAY: block; MARGIN-RIGHT: 0px; text-shadow: 0 1px 0 #fff } .sortable .sortarrow { COLOR: #ff0; TOP: 0px; RIGHT: 0px; TEXT-DECORATION: none; LEFT: auto } TR.high { BACKGROUND: #fff4bf } .high { BACKGROUND: #fff4bf } .disabledCell { BACKGROUND-COLOR: #f0f0f0 } .inventory .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .inventory > TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments { WIDTH: 100% } .inventory .dndHandle { POSITION: static; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 5px } .inventory .dndHandle .reorder IMG { HEIGHT: 20px } .inventory .dndHandle .reorder:hover IMG { HEIGHT: 20px } .inventory .dndHandle .reorder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory .dndHandle .reorder:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory TR:hover .dndHandle { BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px } .reorderable > TBODY TR:hover { -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset } .reorderable > TBODY TR:hover TD { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable > TBODY TR:hover TH { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable TBODY TR TD:first-child { BORDER-LEFT: transparent 1px solid } .inventory TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .inventory > TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .attachments TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .attachments TBODY TR { BORDER-TOP: #eee 1px solid } .inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } .attachments TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .attachments TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory > TBODY UL.subtabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } TABLE.inventory > TBODY UL.subtabs LI { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.status { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; BACKGROUND: #f9f9f9; COLOR: #000; FONT-SIZE: 90%; PADDING-TOP: 1px } DIV.status A IMG { VERTICAL-ALIGN: middle } DIV.status P { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left !important; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; LINE-HEIGHT: 10%; MARGIN: 2px auto 4px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } DIV.status P IMG { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #8dafaf; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 8px; PADDING-TOP: 0px } DIV.stopped P IMG { BACKGROUND: url(images/controls.png) #fff no-repeat -20px -180px } DIV.status A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.status DIV { POSITION: relative; TEXT-ALIGN: center } DIV.status A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } TABLE.inventory-simple { MARGIN: 0px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } TABLE.attachments THEAD TR.warningRow { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TABLE.inventory-simple THEAD TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } TABLE.inventory-simple TBODY TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TH { COLOR: #000 } TABLE.inventory-simple .removeCell { BACKGROUND: #ededed; COLOR: #777 } TABLE.inventory-simple .removeCell TD { COLOR: #999 } TABLE.inventory-simple .removeCell TH { COLOR: #999 } TABLE.inventory-simple .removeCell TD A IMG { FILTER: alpha(opacity=40); opacity: .4 } TABLE.inventory-simple .smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.inventory-simple TBODY TR.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TD { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TH { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.stepItems-reorder { BORDER-SPACING: 0; MARGIN-BOTTOM: 12px; FONT-SIZE: 85% } TABLE.gbColumns { ZOOM: 1; FONT-SIZE: 90% } TABLE.stepItems-reorder TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BACKGROUND: #fff; COLOR: #999 } TABLE.gbColumns THEAD TR TH { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TD { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TH.sorted { BORDER-LEFT: #777 1px solid; BACKGROUND: #999; BORDER-RIGHT: #777 1px solid } TABLE.gbColumns THEAD TR TH A { COLOR: #fff } TABLE.gbColumns THEAD TR TD A { COLOR: #fff } TABLE.stepItems-reorder THEAD TR.lowerHeader TH { BORDER-BOTTOM: #ccc 2px solid; COLOR: #333 } TABLE.stepItems-reorder TBODY TR TD.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder THEAD TR TH.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder TR TH.clearCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TD { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TH { BORDER-TOP: 0px } TABLE.stepItems-reorder THEAD TR:first-child { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; TEXT-ALIGN: right; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD SPAN.reorder { POSITION: relative; FILTER: alpha(opacity=100); WIDTH: 18px !important; DISPLAY: block; BACKGROUND: url(images/controls.png) #ededed no-repeat -177px -122px; HEIGHT: 20px; TOP: 2px; CURSOR: move; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; LEFT: auto; opacity: 1; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } TABLE.gbColumns TBODY TR TD SPAN.reorder { BACKGROUND: url(images/controls.png) #ededed no-repeat -237px -122px } TABLE.stepItems-reorder TBODY TR.frozenbar TD SPAN.reorder { TOP: 1px } TABLE.stepItems-reorder TBODY TR TD INPUT { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: 95%; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } TABLE.stepItems-reorder TBODY TR TD.points INPUT { WIDTH: 3em } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=text] { WIDTH: 90% } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=checkbox] { WIDTH: auto } TABLE.stepItems-reorder TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px 4px 0px 0px } TABLE.gbColumns TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px; WIDTH: auto } TABLE.gbColumns TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; PADDING-TOP: 6px } TABLE.gbColumns TBODY TR.frozenbar TD { BACKGROUND: #ccc; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: 0px } TABLE.gbColumns TFOOT TR.lastRow TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #999; HEIGHT: 2px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.frozen TD { BACKGROUND: #ededed } TABLE.gbColumns THEAD TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } TABLE.gbColumns TBODY TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } DIV.areaHighlight TABLE.gbColumns THEAD TR TD.clear { BACKGROUND: inherit } TD.clear { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozen TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TFOOT TR.lastRow TD.clear { BACKGROUND: inherit } TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.gbColumns TBODY TR.placeholder TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.placeholder TD.clear { BACKGROUND: inherit } UL.dragableHighlight LI TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozen TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TFOOT TR.lastRow TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TR.rowdrag { Z-INDEX: 1; BACKGROUND: #ccc } .insertImg { Z-INDEX: 20; POSITION: relative; TOP: 12px } .insertImgUp { Z-INDEX: 20; POSITION: absolute; RIGHT: -10px } TABLE.inventory > TBODY TR TD.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > THEAD TR TH.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > TBODY TR TD.hideCell { DISPLAY: none } TABLE.inventory > THEAD TR TH.hideCell { DISPLAY: none } .clickOrder { DISPLAY: none } TABLE.inventory > TBODY TR TD.clickOrder { BORDER-LEFT: medium none; BACKGROUND-COLOR: #ddd } TABLE.inventory TR TD.endCell { PADDING-BOTTOM: 0px !important; BACKGROUND-COLOR: #ddd !important; PADDING-LEFT: 0px !important; WIDTH: 1px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.inventory TR.orderRow TD.clickOrder { TEXT-ALIGN: center; BACKGROUND-COLOR: #ddd } TABLE.inventory TR.orderRow TD.clickOrder DIV { POSITION: relative } .sortedplus { BACKGROUND-IMAGE: url(images/controls.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 48% -995px } .dragCol { BACKGROUND-COLOR: #999 } TABLE.splashTable { BORDER-BOTTOM: #ccc 2px solid; MARGIN: 3px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.splashTable THEAD TR { COLOR: #999 } TABLE.splashTable THEAD TR TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } TABLE.splashTable THEAD TR TH A { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #666; TEXT-DECORATION: none } TABLE.splashTable THEAD TR TH A:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; TEXT-DECORATION: underline } TABLE.splashTable TBODY TR { BORDER-TOP: #ddd 1px solid } TABLE.splashTable TBODY TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TH { TEXT-ALIGN: left; COLOR: #000 } TABLE.splashTable TH.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.splashTable TD.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } .contentBlock A { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -450px; TEXT-DECORATION: none } .contentBlock A.collapse { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -1045px; TEXT-DECORATION: none } .contentBlock A.collapse:hover { TEXT-DECORATION: underline } .contentBlock A.hover { TEXT-DECORATION: underline } TABLE.reorderCols { MARGIN: 18px 0px 9px; WIDTH: 100%; BORDER-COLLAPSE: collapse; CLEAR: both; FONT-SIZE: 95% } TABLE.reorderCols THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #ededed; BORDER-TOP: #ccc 1px solid; CURSOR: move; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } TABLE.reorderCols THEAD TR TH.noReorderCol { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; CURSOR: default; BORDER-RIGHT: medium none } TABLE.reorderCols TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed; COLOR: #555 } TABLE.reorderCols THEAD TH SPAN.reorderToolTip { BACKGROUND: url(images/controls.png) #ddd no-repeat -347px -122px } TABLE.reorderCols THEAD TR TH.axis { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed 0px 50%; COLOR: #555 } .ghostTd { BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; FONT: 10px arial; BACKGROUND: #eee; HEIGHT: auto; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 2px } TABLE.reorderCols THEAD TH.dragging { BACKGROUND: #ccc } TABLE.reorderCols THEAD TH.hovering { BACKGROUND: #666 } TABLE.reorderCols THEAD TH.hovering IMG { DISPLAY: none } .rumble { MARGIN: 0px 0px 9px; BACKGROUND: url(images/selected_items.png) no-repeat -1974px center } .rumble_top { MARGIN: 12px 0px 0px; BACKGROUND: url(images/selected_items.png) no-repeat 12px center } #mapCanvasForm .rumble_top { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble_top { BORDER-BOTTOM: #eee 2px solid } .noBatchActions { BACKGROUND-IMAGE: none !important; PADDING-BOTTOM: 5px !important; PADDING-LEFT: 5px !important; PADDING-RIGHT: 5px !important; PADDING-TOP: 5px !important } .rumbleBuildList { MARGIN: 0px 0px 0px 18px; BORDER-TOP: #eee 2px solid } .rumbleBuildList UL LI { Z-INDEX: 1000 } .rumbleBuildListTop UL LI { Z-INDEX: 1000 } .rumble_top UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble_top UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .rumble UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .contentListPlain .rumble LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentListPlain .rumble_top LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble_top LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .selectList .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble_top LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble LI.listActionGroup A { DISPLAY: inline } .rumble_top LI.listActionGroup A { DISPLAY: inline } .paging { TEXT-ALIGN: right; FLOAT: right; CLEAR: left } .pagingprefs { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN-TOP: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 3px } .paging SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BORDER-RIGHT: #ccc 1px dotted; PADDING-TOP: 1px } .rumble_top .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .rumble .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .jumptopage INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } .jumptopage INPUT { WIDTH: 2em; FONT-WEIGHT: normal; -moz-border-radius: 0; -webkit-border-radius: 0 } .rumble_top .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .inventory_paging A { DISPLAY: inline-block } .inventory_paging IMG { DISPLAY: inline-block } .inventory_paging SPAN { DISPLAY: inline-block } .inventory_paging DIV { DISPLAY: inline-block } .jumptopage DIV { DISPLAY: inline-block } .inventory_paging A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px } .inventory_paging IMG { MARGIN: 2px 2px 3px } .inventory_paging A.inactive { FILTER: alpha(opacity=40); opacity: .4 } A.jumpToPageOpen { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } A.jumpToPageOpen:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } DIV.jumptopage INPUT#currentpage_bot { WIDTH: auto } DIV.jumptopage INPUT#currentpage_top { WIDTH: auto } INPUT#currentpage_bot { WIDTH: auto } INPUT#currentpage_top { WIDTH: auto } .jumptopage { FLOAT: right } .jumptopage DIV { MARGIN: 0px 0px 0px 3px } .jumptopage BUTTON { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; TOP: -2px; RIGHT: 0px; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .jumptopage BUTTON IMG { MARGIN: 0px } .rumble_top .secondaryControl { FLOAT: right } .rumble .secondaryControl { FLOAT: right } .key-valueTable TR { BORDER-BOTTOM: medium none } .key-valueTable TH { BORDER-BOTTOM: medium none } .key-valueTable TD { BORDER-BOTTOM: medium none } .key-valueTable TBODY { BORDER-BOTTOM: medium none } .key-valueTable TBODY TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TH { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TR:first-child TH { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TR:first-child TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TH { COLOR: #555 } .infoListWrapper .key-valueTable { MARGIN: 3px 9px 6px } TD.removeCell { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A IMG { FILTER: alpha(opacity=30); opacity: .3 } .contentList { MARGIN: -20px -30px } .buildList { MARGIN: -20px -30px } .contentListPlain { MARGIN: -20px -30px } .announcementList { MARGIN: -20px -30px } #bb-assessment-canvas .contentListPlain { MARGIN: 0px -30px } .gradingList { MARGIN: 0px -30px } .buildList#survey { MARGIN: 0px -30px } #manageFormCanvasForm .buildList { MARGIN: 0px -30px } #mapCanvasForm .buildList { MARGIN: 0px 30px } .hierarchy-page #toolSettingsForm #dataCollectionContainer { MARGIN: -10px -30px } .leftColumn-wide .contentListPlain { MARGIN: 0px } .contentList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .buildList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentListPlain > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .announcementList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPageItem { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentList > LI.read:first-child:hover { BORDER-TOP: transparent 1px solid } .buildList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentListPlain > LI:first-child { BORDER-TOP: transparent 1px solid } .announcementList > LI:first-child { BORDER-TOP: transparent 1px solid } #bb-assessment-canvas .contentListPlain > LI:first-child { BORDER-TOP-COLOR: #ccc } #bb-assessment-canvas .contentListPlain > LI { MIN-HEIGHT: 16px; PADDING-LEFT: 42px } #bb-assessment-canvas .contentListPlain > LI .item { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-assessment-canvas .contentListPlain > LI .details { PADDING-BOTTOM: 5px; PADDING-TOP: 12px } .takeQuestionDiv { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='_'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='step'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer H3.submittitle.steptitle { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } .takeQuestionDiv H3 { MARGIN: 0px } .takeQuestionDiv + H3 { PADDING-LEFT: 28px } #assessmentGradeForm #dataCollectionContainer { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .contentList > LI { MIN-HEIGHT: 50px } .buildList > LI { MIN-HEIGHT: 50px } .contentListPlain > LI { MIN-HEIGHT: 50px } .announcementList > LI { MIN-HEIGHT: 50px } .contentPageItem { MIN-HEIGHT: 50px } .liItem:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList > LI:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList LI:first-child:hover { BORDER-TOP-COLOR: #666 } .contentList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .gradingList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .liItem A[onclick*='toggleDetails'] { POSITION: relative; VISIBILITY: hidden; TOP: -6px; RIGHT: -19px } .liItem:hover A[onclick*='toggleDetails'] { VISIBILITY: visible } .liItem A[onclick*='toggleDetails'] IMG { VISIBILITY: hidden } .liItem A[title*='Hide'] { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 0px 0px } .liItem A[title*='Show'] { BACKGROUND: url(images/portlet_expand_alt_rev.png) no-repeat 0px 0px } .contentListPlain .item_icon { DISPLAY: none } .item { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; CURSOR: move; PADDING-TOP: 0px } .contentList .item { PADDING-BOTTOM: 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .gradingList .item { PADDING-RIGHT: 120px } .announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .announcementList-read .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } #announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .item:hover { CURSOR: move } .item:focus { CURSOR: move } .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .announcementList-read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .contentList-slim .read .item { PADDING-LEFT: 48px } .read .item:hover { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .read .item:focus { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .tab-groups H3.item { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 8px; MARGIN: 0px 11em 8px -12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tab-groups H3.item .reorder + SPAN { FONT-STYLE: italic; MARGIN: 0px 4px 0px 0px; FONT-FAMILY: Georgia; COLOR: #999; FONT-SIZE: 90%; FONT-WEIGHT: normal } .item_icon { POSITION: absolute; MARGIN: 0px; TOP: 12px; LEFT: 24px } .read .item_icon { MARGIN: 0px; LEFT: 18px } .item H3 { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item .contextMenuContainer { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item H3 + .contextMenuContainer { POSITION: relative; TOP: 2px } .tab-groups .item .contextMenuContainer { FLOAT: none } .item INPUT[type=checkbox] { MARGIN: 2px 6px 0px -6px; FLOAT: left } .iconsOnly { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 24px auto; WIDTH: 80% } .iconsOnly LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 0px; FLOAT: left !important; PADDING-TOP: 0px } .iconsOnly > LI:first-child { BORDER-TOP-COLOR: #ccc } .iconsOnly .read { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconsOnly .item_icon { PADDING-BOTTOM: 0px; MIN-HEIGHT: 50px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 12px; LEFT: auto } .iconsOnly .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MIN-HEIGHT: 3em; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .iconsOnly .read .item { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .iconsOnly .item H3 { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly .item .contextMenuContainer { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly LI:hover .item_icon { BACKGROUND: #ededed } .iconsOnly LI:hover .item { BACKGROUND: #ededed } .iconsOnly LI:focus .item_icon { BACKGROUND: #ededed } .iconsOnly LI:focus .item { BACKGROUND: #ededed } .iconsOnly .read .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .read .item_icon { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read:hover .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:hover .item { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item { BACKGROUND: none transparent scroll repeat 0% 0% } .buildList LI INPUT { MARGIN: 2px 8px; FLOAT: left } .buildList INPUT.browse { MARGIN: 0px 0px 6px } .buildList INPUT.genericButton { MARGIN: 0px 0px 6px } .buildList INPUT[type=button] { MARGIN: 0px 0px 6px } .contentListRight { POSITION: absolute; RIGHT: 6px; FONT-WEIGHT: normal; LEFT: auto } .pagedContentListRight { TOP: 4px } .contentListRightOffset { MARGIN-RIGHT: 12em } .contentList .details { PADDING-LEFT: 60px } .contentListPlain .contentListRight + .details { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; PADDING-LEFT: 28px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } .announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } #announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } .contentList-slim .read .details { MARGIN-LEFT: 48px } .staffInfoList .details { MARGIN-RIGHT: 160px } .staffInfoList .hasPhoto .details { MIN-HEIGHT: 135px } .details > P { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .details .note { FONT-WEIGHT: bold } .details > P.important { PADDING-BOTTOM: 0px; MARGIN: 3px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .details > P.important SPAN { COLOR: #888; FONT-WEIGHT: normal } .itemDetails { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .itemDetails P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .announcementInfo P SPAN { COLOR: #999 } .announcementInfo SPAN { COLOR: #999 } .itemDetails SPAN { COLOR: #999 } .announcementInfo P SPAN SPAN { FONT-SIZE: 95% !important } .noItems { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } .additional + P .warnFont { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } #listContainer .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .additional + P .warnFont { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { TEXT-ALIGN: center; PADDING-TOP: 100px } .hierarchy-page .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { MARGIN: 0px auto; DISPLAY: block } .additional + P .warnFont { DISPLAY: block; PADDING-TOP: 100px } .details .attachments { WORD-WRAP: break-word; MARGIN-BOTTOM: 9px; WORD-BREAK: normal } .buildList > LI.separator { Z-INDEX: 0; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; MIN-HEIGHT: 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #ededed; TOP: 0px; PADDING-TOP: 14px; LEFT: 0px } .separator H3.item { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .external-breadcrumbs .receipt { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .separator .line { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: relative; MARGIN: 0px 24px 0px 30px; TOP: 6px; LEFT: 0px } .separator .text { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .external-breadcrumbs .receipt { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .buildList .detailList .hidden { DISPLAY: none } .buildList .detailList .tagContainer { POSITION: relative } .buildList .detailList .tagContainer .hidden { DISPLAY: none } .buildList .detailList .tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer .newTagForm { BORDER-LEFT: #999 1px dotted; MARGIN-LEFT: 6px } .tagContainer .newTagForm LABEL { PADDING-LEFT: 6px } .currentTags { Z-INDEX: 100; POSITION: absolute; LINE-HEIGHT: 1.8; WIDTH: 16em; ZOOM: 1; DISPLAY: none; OVERFLOW: hidden; TOP: 1.2em; RIGHT: 0px } .currentTags SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 18px } .currentTags A { FONT-WEIGHT: bold } .currentTags A.closeCloud { POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 1px; LINE-HEIGHT: 1; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; TOP: 0px; PADDING-TOP: 0px; LEFT: 0px } .auto_complete { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; WIDTH: 12em; BACKGROUND: #e2eefe; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid } .auto_complete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .auto_complete UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3%; WIDTH: 96%; PADDING-RIGHT: 1%; OVERFLOW: hidden; CURSOR: pointer; PADDING-TOP: 2px } .auto_complete UL LI.selected { BACKGROUND-COLOR: #fff } .auto_complete UL STRONG.highlight { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .freq1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 90%; PADDING-TOP: 0px } .freq2 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 105%; PADDING-TOP: 0px } .freq3 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 120%; PADDING-TOP: 0px } .freq4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 135%; PADDING-TOP: 0px } .freq5 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 150%; PADDING-TOP: 0px } .freq6 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 165%; PADDING-TOP: 0px } .freq1:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq2:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq3:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq4:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq5:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq6:hover { BACKGROUND: white; TEXT-DECORATION: none } .currentTags A.tagDisabled { FILTER: alpha(opacity=70); FONT-WEIGHT: normal; TEXT-DECORATION: none; opacity: .7 } .currentTags A.tagDisabled:hover { BACKGROUND: none transparent scroll repeat 0% 0% } .tab-groups .tab-group-label { FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #999 } .subList { MARGIN: 3px 0px 6px } .subList-reorder { MARGIN: 3px 0px 6px } .subList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .buildList .detailList { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .subList-reorder LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 6px } .subList-reorder LI:hover { BORDER-BOTTOM-COLOR: #bbb !important; BORDER-TOP-COLOR: #bbb !important; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #bbb !important; BORDER-LEFT-COLOR: #bbb !important } .subList LI A IMG { VERTICAL-ALIGN: middle } .subList-reorder LI A IMG { VERTICAL-ALIGN: middle } .subList LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList-reorder LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList LI P { VISIBILITY: hidden } .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .buildList .detailList LI .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder .itemDetails { DISPLAY: none } .subList-reorder .details { DISPLAY: none } .subList .details { DISPLAY: none } .itemDetails + .details { OVERFLOW: visible; MARGIN-RIGHT: 13em } .subList LI P SPAN { FONT-WEIGHT: bold } .subListArtifact { CLEAR: both } .detailList .subListArtifact { CLEAR: both } .subListArtifact LI { POSITION: static } .detailList .subListArtifact LI { POSITION: static } .detailList .subListArtifact { ZOOM: 1 } .detailList .subListArtifact LI { ZOOM: 1 } .detailList .subListArtifact LI A { ZOOM: 1 } .buildList .detailList { MARGIN: 0px 0px 0.6em 0.7em } .buildList .detailList .subList { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.buildList UL.detailList OL.subList { LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: decimal } UL.buildList UL.detailList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 0.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: table-row; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } UL.buildList UL.detailList LI SPAN { WIDTH: 135px; DISPLAY: block; FLOAT: left; FONT-WEIGHT: bold } UL.buildList UL LI > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; WIDTH: 79%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: 135px; PADDING-TOP: 0px } UL.buildList UL LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } UL.noimg LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } .buildList .pageBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } .buildList .sectionBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } DIV.itemHeaderControl { POSITION: absolute; TOP: 9px; RIGHT: 14.5em } DIV.itemHeaderControl A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.cartMode { PADDING-BOTTOM: 49px } .addedRow { COLOR: #999 } TABLE.sortable TBODY TR.addedRow TH LABEL A { COLOR: #999 } .addedRow TD A { COLOR: #999 } .addedRow { } .addedRow IMG { FILTER: alpha(opacity=50); opacity: .5 } TABLE#datatable2 TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 THEAD TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .itemSelector { MARGIN: 0px auto; WIDTH: 20px; HEIGHT: 20px } .itemSelector INPUT { FILTER: alpha(opacity=0); opacity: 0 } .available { BACKGROUND: url(../../../images/ci/ng/available_ti.png) no-repeat 0px 0px } .inprogress { BACKGROUND: url(../../../images/ci/ng/progress.png) red no-repeat 0px 0px } .remove { BACKGROUND: url(../../../images/ci/ng/remove_ti.png) no-repeat 0px 0px } .itemTray { Z-INDEX: 10000; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 18px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .picker .itemTray { RIGHT: 12px; LEFT: 12px } DIV.itemTrayContentPane { LEFT: 200px } DIV.itemTrayContentPaneWide { LEFT: 0px } .itemTray H2 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H3 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H2 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H3 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H2 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H3 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H2 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray H3 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray DIV.noItems { TEXT-ALIGN: center; COLOR: #777 } .itemTray #cartList { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .itemTray #selectedItemsWrapper { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #777; PADDING-TOP: 4px } .itemTray .cartTableWrapper { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; OVERFLOW-Y: auto; BACKGROUND: #fff; MAX-HEIGHT: 130px; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .sideTOC .cartTableWrapper { OVERFLOW: auto } #count { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .itemTray #numberOfElements { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #progress { Z-INDEX: 300; POSITION: absolute; MARGIN: 300px 50%; WIDTH: 100px; DISPLAY: none } #progress DIV { MARGIN-LEFT: -100% } #cartSubmit { Z-INDEX: 200 } #cartList FIELDSET { PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #f6f6f6; PADDING-TOP: 3px } #cartList FIELDSET UL LI INPUT[type=text] { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 2.3em; PADDING-RIGHT: 0px; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 0px } .itemGallery { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .itemGallery > LI { TEXT-ALIGN: center; MARGIN: 5px 5px 20px; WIDTH: 1.2em; ZOOM: 1; VERTICAL-ALIGN: top; PADDING-TOP: 0.06em; _height: 130px } .itemGallery .stackFix { WIDTH: 100%; HEIGHT: auto } .itemIconHolder { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px auto 0.05em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 1em; PADDING-TOP: 0px } .itemIconHolder A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; ZOOM: 1; DISPLAY: block; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .itemIconHolder A:hover { BORDER-BOTTOM-COLOR: #777; BORDER-TOP-COLOR: #777; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777 } .itemIconWrapper { BORDER-BOTTOM: #f1f1f1 0.02em solid; POSITION: absolute; BORDER-LEFT: #f1f1f1 0.02em solid; MARGIN: 0px 50%; WIDTH: auto; BOTTOM: 0px; BORDER-TOP: #f1f1f1 0.02em solid; BORDER-RIGHT: #f1f1f1 0.02em solid } .x-small LI { WIDTH: 1.8em; FONT-SIZE: 70px } .small LI { FONT-SIZE: 100px } .normal LI { FONT-SIZE: 140px } .large LI { FONT-SIZE: 180px } .x-large LI { FONT-SIZE: 220px } .u_resetFont-px { FONT-SIZE: 12px } .itemIconLink-vertical A { WIDTH: 0.78em; HEIGHT: 0.9em } .itemIconLink-square A { WIDTH: 0.78em; HEIGHT: 0.78em } .itemIconLink-horizontal A { WIDTH: 1em; HEIGHT: 0.78em } .itemIconLink-vertical IMG { WIDTH: 0.8em; HEIGHT: 0.9em; VERTICAL-ALIGN: top } .itemIconLink-square IMG { WIDTH: 0.8em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-horizontal IMG { WIDTH: 1em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-vertical .itemIconWrapper { LEFT: -0.39em } .itemIconLink-square .itemIconWrapper { LEFT: -0.39em } .itemIconLink-horizontal .itemIconWrapper { LEFT: -0.5em } .itemInfo { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-SIZE: 12px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.2em } .itemInfo LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; LINE-HEIGHT: 1.25em; MARGIN: 0px; WIDTH: 100%; FONT-SIZE: 95%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .itemInfo LI SPAN { VERTICAL-ALIGN: top } .itemInfo LI .label { TEXT-ALIGN: right } .itemInfo .cmimg { WIDTH: 18px } .itemInfo .cmimg IMG { WIDTH: 18px } .itemInfo .title { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .itemInfo INPUT[type='text'] { WIDTH: 100% } .itemInfo .high { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; BACKGROUND: #fff1c5; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .lb-content .itemInfo { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 3px } .lb-content .itemInfo LI { LINE-HEIGHT: 1.45em } .lb-content .itemInfo .title { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .iconGallery > LI { MARGIN: 5px 5px 12px; WIDTH: 75px } .iconGallery .itemIconHolder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; HEIGHT: 60px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemIconHolder A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemTitle { COLOR: #666; FONT-SIZE: 85% } .iconGallery .itemIconWrapper { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: auto; PADDING-RIGHT: 4px; BACKGROUND: #fff; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px; LEFT: -30px } .sideTOC_panelMin .container { POSITION: static !important } .sideTOC_panel .container { POSITION: static !important } .sideTOC_panelMax .container { POSITION: static !important } .tocWrapper { Z-INDEX: 200; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 0px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .tocHidden { TOP: -10000px !important } .tocHead { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #333; PADDING-TOP: 10px } .tocHead H2 { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .tocActions { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .sideTOC H2 { FLOAT: none !important; FONT-SIZE: 110%; text-shadow: 0 1px 0 #f0f0f0 } .tocActions { WHITE-SPACE: nowrap } .tocActions A { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions SPAN { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions > IMG { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .actionBar .tocNavText { PADDING-BOTTOM: 13px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; COLOR: #eee; PADDING-TOP: 13px } .actionBar .tocNavText + A { MARGIN-RIGHT: 12px } .actionBar .tocNavText + IMG { MARGIN-RIGHT: 12px } .tocActions SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .tocTreeWrapper { PADDING-BOTTOM: 0px; OVERFLOW-Y: auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .sideTOC .tocTreeWrapper { OVERFLOW: auto } UL#tocTree LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL#tocTree A.itemActive { FONT-WEIGHT: bold; TEXT-DECORATION: none } UL#tocTree SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; COLOR: #555; PADDING-TOP: 0px } .treeNodeIcon { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .sideTOC { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 200px; BOTTOM: auto; PADDING-RIGHT: 0px; BACKGROUND: #ddd; BORDER-TOP: #aaa 1px solid; TOP: 0px; RIGHT: auto; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -2px 0 2px rgba(0, 0, 0, .2) inset, 0px 3px 2px #ddd inset, 0px -3px 2px #ddd inset; -webkit-box-shadow: none; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: none } .sideTOCMinimize { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 9px !important; BOTTOM: auto; PADDING-RIGHT: 0px; BORDER-TOP: medium none; TOP: 0px; RIGHT: auto; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } .sideTOCMinimize .tocActions { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 1px; LEFT: -24px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .sideTOCMinimize .tocActions A { MARGIN: -1px 0px 0px; DISPLAY: block } .tocBottom_pullExpanded { LEFT: 228px } .tocBottom_pullCollapsed { LEFT: 18px } .tocSide_pullExpanded { TOP: 4px; LEFT: 222px } .tocSide_pullCollapsed { LEFT: 13px } .sideTOC_panel { PADDING-LEFT: 201px } .sideTOC_panelMin { PADDING-LEFT: 21px } .sideTOC_panelMax { PADDING-LEFT: 351px } .tocBottom_min { PADDING-BOTTOM: 30px } .tocBottom_max { PADDING-BOTTOM: 330px } .tocBottom_open { PADDING-BOTTOM: 160px } .tocBottom_open .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_max .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_min .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panel .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMax .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMin .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .localViewToggle { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .localViewToggle UL { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .localViewToggle UL LI { FLOAT: right } .localViewToggle UL LI.active { POSITION: relative } .localViewToggle A { PADDING-BOTTOM: 7px; TEXT-TRANSFORM: inherit; MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; DISPLAY: block; FONT-SIZE: 90%; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .localViewToggle A:hover { TEXT-DECORATION: underline } .localViewToggle .active A:hover { TEXT-DECORATION: none } .localViewToggle A.active { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } DIV.localViewToggle H2 { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } .localViewToggle A.active:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } DIV.localViewToggle H2:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .localViewToggle .separator { BORDER-LEFT: #d7bb66 1px dotted; PADDING-LEFT: 6px; MARGIN-LEFT: 6px } .localViewToggle A.miniComboButton { BORDER-BOTTOM: #d7bb66 1px solid; BORDER-LEFT: #d7bb66 1px solid; PADDING-RIGHT: 16px; BACKGROUND: url(images/controls.png) #f5e7bd no-repeat -1px -500px; COLOR: #444; BORDER-TOP: #d7bb66 1px solid; BORDER-RIGHT: #d7bb66 1px solid; TEXT-DECORATION: none !important } .containerTabs { MARGIN: 6px 24px 0px; FONT-SIZE: 100% } .containerTabs LI { POSITION: relative; FLOAT: left } .containerTabs LI A { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI H3 { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs LI H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs .active A { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:hover { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:focus { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active H3 { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .active H3:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .tabhead H3 { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 18px; COLOR: #555; PADDING-TOP: 9px } .collapseTabs .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #d1eaef } .collapseTabs .containerTabs .active A:before { CONTENT: none } .portlet .containerTabs { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 8px } .portlet .containerTabs LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .containerTabs LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } .portlet .containerTabs .active A { MARGIN: 0px } .collapseTabs .containerTabs { MARGIN: 0px } .portlet .containerTabs .active A:before { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:after { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:before { BORDER-BOTTOM-COLOR: #ddd } .portlet .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #fff4bf; BOTTOM: -1px } .mapTabs { POSITION: relative; MARGIN: 20px -30px 0px; BACKGROUND: #d1eaef; CLEAR: both; BORDER-TOP: #aaa 1px solid; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .lesson-plan-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { BORDER-BOTTOM: #bbb 1px solid } .evidence-page .mapTabs LI:before { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:after { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:before { Z-INDEX: 100; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #bbb 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 1px } .evidence-page .mapTabs LI.active + LI:after { BORDER-LEFT-COLOR: #eaeaea } .evidence-page .mapTabs LI:first-child:before { DISPLAY: none } .evidence-page .mapTabs LI:first-child:after { DISPLAY: none } .evidence-page .mapTabs LI A { PADDING-LEFT: 30px } .evidence-page .mapTabs LI.active H3 { PADDING-LEFT: 30px } .mapTabs UL { MARGIN-TOP: 0px; MARGIN-LEFT: 0px } DIV.mapTabs UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mapTabs UL LI.active H3 { POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; BACKGROUND: #eaeaea; FONT-SIZE: 100%; PADDING-TOP: 14px } .mapTabs UL LI.active H3:before { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #eaeaea; BOTTOM: -1px } .mapTabs UL LI.active:first-child H3:after { MARGIN-LEFT: 0px } .mapTabs UL LI.active:first-child H3:before { MARGIN-LEFT: 0px } .lesson-plan-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .hierarchy-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .lesson-plan-page .mapTabs UL LI.active H3:before { DISPLAY: none } .hierarchy-page .mapTabs UL LI.active H3:before { DISPLAY: none } .evidence-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #fff } .mapTabs UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; COLOR: #01869e; FONT-SIZE: 100%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .mapTabs UL LI A:hover { TEXT-DECORATION: underline } .mapTabs UL LI SPAN:hover { BORDER-BOTTOM-STYLE: solid } .mapTabs A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs LI:first-child A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 54px; BACKGROUND-POSITION: 30px 50% } .mapTabs UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI:first-child H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI DIV { PADDING-BOTTOM: 7px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: none; PADDING-TOP: 7px } .mapTabs UL LI.saveTab A { DISPLAY: none } UL.containerTabs LI.saveTab IMG { DISPLAY: none } .mapTabs UL LI.saveFadeIn { FILTER: alpha(opacity=0); opacity: 0 } .mapTabs UL LI.saveTab DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/tab_receipt_back.gif) #44b10e repeat-x center bottom; COLOR: white; FONT-WEIGHT: bold; PADDING-TOP: 5px } DIV.mapHelp { PADDING-BOTTOM: 0px; MARGIN: -1px 0px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff1c5; PADDING-TOP: 4px } UL.setStatus { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 3px; LIST-STYLE-TYPE: none; MARGIN: 15px 0px 9px 30px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #eee 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 3px } UL.setStatus LI { MARGIN: 0px 6px 0px 0px; FONT-SIZE: 95% } UL.setStatus LI INPUT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.setStatus LI LABEL { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 1px 0px } UL.setStatus LI LABEL.complete { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_complete.gif) no-repeat 1px 0px } FORM.mapCanvasForm DIV.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } FORM.mapCanvasForm H3.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } .mapTabs .containerTabs { BORDER-BOTTOM: 0px } #mapCanvasForm { MARGIN: 0px -30px } #mapCanvasForm #containerDiv { MARGIN: 20px 0px } .evidence-page .infoListWrapper H3 A.itemHead { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .infoListWrapper H3 A.itemHeadOpen { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .leftColumn-narrow { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f9f9f9; MARGIN: 0px; PADDING-LEFT: 6px; WIDTH: 26%; PADDING-RIGHT: 6px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; border-radius: 3px 3px 3px 3px } .evidence-page .leftColumn-wide { WIDTH: 69% } .sessionBox { WIDTH: 95% } .sessionBox .key-valueTable { } .sessionBox .key-valueTable TBODY TD { PADDING-RIGHT: 40px } .sessionBox .key-valueTable TBODY TH { PADDING-RIGHT: 40px } .evidence-page .criteriaSummary { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; MARGIN: 0px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 12px } .evidence-page .paletteItems LI { MARGIN-LEFT: 0px } .paneTabs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: -12px 0px 12px; ZOOM: 1; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .subtabs-framed .paneTabs { -moz-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -webkit-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; border-radius: 0 } .paneTabs UL { CLEAR: both } .paneTabs UL LI { Z-INDEX: 200; POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs .active { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs A { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 12px } .paneTabs UL LI:first-child A { BORDER-LEFT: 0px } .paneTabs A:hover { TEXT-DECORATION: underline } .paneTabs .active A:hover { TEXT-DECORATION: none } .paneTabs .active A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:focus { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active H3 { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:after { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #ccc 8px solid; BOTTOM: 0px } .paneTabs .active A:after { BOTTOM: -1px } .paneTabs .activepersonal A { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .activepersonal A:hover { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .personal A { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dedede; TEXT-DECORATION: none; PADDING-TOP: 3px } .paneTabs .external A { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #dedede no-repeat 2px center } .paneTabs .external A:hover { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #fff1c5 no-repeat 2px center } .paneTabs .activepersonal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs .personal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs A.paneTabOptions { DISPLAY: none } .paneTabs .activepersonal:hover A.paneTabOptions { FILTER: alpha(opacity=100); opacity: 1 } .paneTabs A.hiddenTabsLink { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center 6px } .paneTabs A.hiddenTabsLink IMG { FILTER: alpha(opacity=0); WIDTH: 2px; HEIGHT: 2px; opacity: 0 } .panelTabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .panelTabs LI { BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FLOAT: right; TOP: 2px !important; RIGHT: -3px; PADDING-TOP: 0px !important } .panelTabs LI.active { Z-INDEX: 2 } .panelTabs LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI.active A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI A:hover { BACKGROUND-COLOR: #f6f6f6 } .panelTabs LI.active A { BORDER-BOTTOM: 0px; COLOR: #333; FONT-WEIGHT: bold } .panelTabs LI.active A.preview { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 2px solid; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .panelTabs LI.active A.edit { BORDER-BOTTOM: 0px; MARGIN: 0px } .collapseTabs { MARGIN-BOTTOM: 12px } .collapseTabsData { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; BACKGROUND: #d1eaef; PADDING-TOP: 12px; -moz-border-radius: 3px } .containerTabsCollapsed { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .collapseTabs LI A { TEXT-DECORATION: underline } .collapseTabs LI.active { Z-INDEX: 1000 } .sequenceMapHead { MARGIN: 6px 0px } .sequenceMapHead H3 { MARGIN: 12px 0px 6px } .sequenceMapHead P { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 0px } DIV.sequenceMapHead DIV.actionBar { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #fff7de; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.searchResultList-sortOptions { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: right; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; MIN-HEIGHT: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 15px; PADDING-TOP: 10px } DIV.searchResultList-sortOptionsCount { WIDTH: auto; FLOAT: left } DIV.dropzone { BORDER-BOTTOM: #aaa 2px dashed; BORDER-LEFT: #aaa 2px dashed; BORDER-TOP: #aaa 2px dashed; BORDER-RIGHT: #aaa 2px dashed; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -moz-border-radius: 3px; -webkit-border-radius: 3px } .container DIV.dropzone { TOP: 3px !important } .modalOverlay { Z-INDEX: 90; POSITION: fixed; FILTER: alpha(opacity=1); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .01 } .cmdiv { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .menumini { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.quickAddPal { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.keyboardAccess { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .nav .sub UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .gb_currView.nav .sub > UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .menumini UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .keyboardAccess { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } SPAN.currentTags { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea-slim { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .previewArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .jumptopage { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .bcContent .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI IMG + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } DIV.treeContainer UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #learningUnitToc UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #loginLang UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .actionBar .mainButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .secondaryButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBarMicro .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton:first-child .flyout { MARGIN: 0px 0px 0px -2px } DIV.calPicker.quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI IMG + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } DIV.treeContainer UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } #learningUnitToc UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.nestedList { -moz-box-shadow: none; -webkit-box-shadow: none } .liveArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } .previewArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } #addFolderForm { MARGIN: 0px -30px } UL.tree LI A + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI IMG + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } DIV.treeContainer UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #learningUnitToc UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .builderItem .liveArea { Z-INDEX: 100; POSITION: absolute; TOP: 12px; LEFT: 22px } .previewArea { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; MARGIN-TOP: 0px; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .jumptopage { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 8px } .jumptopage LABEL { FONT-SIZE: 90% } .liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.secondaryButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { OVERFLOW: hidden } .actionBar UL LI.secondaryButton A.liveAreaTab { OVERFLOW: hidden } .liveArea-slim { PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 3px } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .columnActions .nav .sub UL { MARGIN-TOP: 0px } .nav .sub UL { POSITION: absolute; DISPLAY: none } .nav .sub .flyout { POSITION: absolute; DISPLAY: none } .nav .sub UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .nav .sub UL UL { DISPLAY: block } .nav .sub .flyout UL { DISPLAY: block } .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .nav .sub:hover .flyout { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { TOP: 18px } .rumble_top .nav .sub:hover UL { TOP: 18px } .rumble .nav .sub:hover UL { TOP: 18px } .quickAddPal { WIDTH: auto } .quickAddColor { WIDTH: 311px } .quickAddColor A.genericButton { MARGIN: 2px 0px; FLOAT: left } .cmdiv { Z-INDEX: 1150 !important; BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .cmdiv UL { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; WIDTH: 180px; PADDING-RIGHT: 4px; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 3px } .cmdiv UL:first-child { BORDER-TOP: medium none } .menumini UL:first-child { BORDER-TOP: medium none } .cmdiv UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .menumini UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .nav .sub UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .menumini A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } #loginLang UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: auto; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .nav .sub UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .nav LI.sub UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .actionBarMicro .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .actionBarMicro .nav LI.sub UL LI A:focus { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:focus { BACKGROUND-IMAGE: none } .nav LI.sub UL LI A:focus { BACKGROUND-COLOR: #fff !important } .cmdiv A:focus { BACKGROUND-COLOR: #fff !important } .menumini A:focus { BACKGROUND-COLOR: #fff !important } .nav .sub UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .paneTabs .nav .sub UL LI A { TEXT-ALIGN: left } .timediv UL LI A:hover { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { BACKGROUND-COLOR: #369; COLOR: #444 } .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; LEFT: 0px } .topTabs-compact .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; RIGHT: 0px; LEFT: auto } .cmdiv LI.contextmenubar_top { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .menumini LI.contextmenubar { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-border-radius: 0; -webkit-border-radius: 0 } .quickAddPal H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .keyboardAccess H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .quickAddPalHeader { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .comText .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .e_expandArea .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess P.paletteHelp { BORDER-BOTTOM: #fc0 1px solid; BORDER-LEFT: #fc0 1px solid; PADDING-BOTTOM: 3px; MARGIN: 6px 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; WHITE-SPACE: normal; BACKGROUND: #fff1c5; FONT-SIZE: 90%; BORDER-TOP: #fc0 1px solid; BORDER-RIGHT: #fc0 1px solid; PADDING-TOP: 3px } .bcMenuDiv-1 { WIDTH: 190px } .bcMenuDiv-2 { WIDTH: 380px } .bcMenuDiv-3 { WIDTH: 570px } .bcMenuDiv-4 { WIDTH: 760px } .bcMenuDiv-5 { WIDTH: 950px } .flyout { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 12px !important; PADDING-RIGHT: 12px !important; PADDING-TOP: 9px !important } .nav .sub .flyout DIV { POSITION: static; PADDING-BOTTOM: 6px; MARGIN: 0px; MIN-HEIGHT: 1px; FLOAT: left } .flyout H3 { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 95% Georgia, serif; LETTER-SPACING: 2px; PADDING-TOP: 0px } .flyout H3 .line { HEIGHT: 1px; BORDER-TOP: #ccc 1px solid } .flyout H3 .text { BACKGROUND: #d1eaef } .nav .sub .flyout UL { Z-INDEX: 1000; BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted; BORDER-RIGHT: 0px; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .nav .sub .flyout DIV H3 + UL { BORDER-TOP: 0px } .nav .sub .flyout DIV UL:first-child { BORDER-TOP: 0px } .nav .sub .flyout A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .quickAddPal .colorlist { MARGIN: 6px 0px 9px 6px; WIDTH: 288px } .quickAddPal .stepcontent .colorlist LI { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 14px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 14px; OVERFLOW: hidden; BORDER-TOP: #333 1px solid; CURSOR: pointer; BORDER-RIGHT: #333 1px solid; PADDING-TOP: 0px } .quickAddPal .colorlist LI A { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:link { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: 12px; HEIGHT: 12px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .quickAddPal .colorlist LI A:active { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A:focus { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:active { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:focus { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorPreview { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: white; PADDING-TOP: 3px } .quickAddPal .colorPreview IMG { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #444 1px solid; MARGIN: 3px; WIDTH: 42px; DISPLAY: block; BACKGROUND: black; FLOAT: left; HEIGHT: 42px; BORDER-TOP: #444 1px solid; BORDER-RIGHT: #444 1px solid } .quickAddPal .colorPreview DIV { WIDTH: 66%; FLOAT: left; MARGIN-LEFT: 3px } .quickAddPal .colorPreview SPAN { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 0px } SPAN.title_color_name { COLOR: #666 } .receipt { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .warning { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .inlineDialog { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .contentPaneWide.tabbedPane .receipt { Z-INDEX: 201; BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; PADDING-BOTTOM: 12px; MARGIN: -12px 0px 10px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .contentPane .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .contentPaneWide .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .container .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px; box-shadow: none } .receipt ~ #editmodeWrapper { Z-INDEX: 1; POSITION: relative } .receipt ~ .contentBox { Z-INDEX: 1; POSITION: relative } .sideTOC_panel .receipt ~ #editmodeWrapper { POSITION: static } .sideTOC_panel .receipt { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .tabbedPane .receipt A.close IMG { DISPLAY: none } .contentPane .receipt A.close IMG { DISPLAY: none } .contentPaneWide .receipt A.close IMG { DISPLAY: none } A.closeCopyright IMG { DISPLAY: none } .tabbedPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPaneWide .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .receipt A.close:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { } .receipt A.close:hover:before { COLOR: #fff } A.closeCopyright:hover:before { COLOR: #fff } .inlineDialog { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .inlineReceipt { POSITION: absolute; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .miniReceipt { Z-INDEX: 300; BORDER-BOTTOM: #bbb 1px solid; POSITION: absolute; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .bad { COLOR: #fff; FONT-WEIGHT: bold } .good { COLOR: #fff; FONT-WEIGHT: bold } .removing { COLOR: #fff; FONT-WEIGHT: bold } .adding { COLOR: #fff; FONT-WEIGHT: bold } .infoReceipt { COLOR: #fff; FONT-WEIGHT: bold } .brokenFileLink { COLOR: #fff; FONT-WEIGHT: bold } .portlet SPAN.warning.due { COLOR: #fff; FONT-WEIGHT: bold } .good A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .removing { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .brokenFileLink { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .portlet SPAN.warning.due { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .container .warningReceipt { PADDING-RIGHT: 24px } .warningReceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.areceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.close:before { } .contentPane .warningReceipt A.close { TOP: 5px; RIGHT: 5px } .warningReceipt A.close:hover:before { } .good { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .adding { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .infoReceipt { BORDER-BOTTOM-COLOR: #62758f; BORDER-TOP-COLOR: #62758f; BACKGROUND: #6d8aaf; BORDER-RIGHT-COLOR: #62758f; BORDER-LEFT-COLOR: #62758f } .attention { BORDER-BOTTOM-COLOR: #fc3; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #fc3; MARGIN: 0px 0px 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff4bf; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; BORDER-LEFT-WIDTH: 2px; FONT-WEIGHT: normal; PADDING-TOP: 4px } .removing { FONT-WEIGHT: normal } .adding { FONT-WEIGHT: normal } .brokenFileLink { FONT-WEIGHT: normal } .portlet SPAN.warning.due { FONT-WEIGHT: normal } .brokenFileLink { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet SPAN.warning.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .infoBox { BORDER-BOTTOM: #afdf61 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #afdf61 1px solid; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #afdf61 1px solid; BORDER-RIGHT: #afdf61 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .infoBox > .message { DISPLAY: block; MARGIN-BOTTOM: 4px } .info-ok { BORDER-BOTTOM-COLOR: #afdf61; BORDER-TOP-COLOR: #afdf61; BACKGROUND: #d9efa4; COLOR: #360; BORDER-RIGHT-COLOR: #afdf61; BORDER-LEFT-COLOR: #afdf61 } .nestedReceipt { Z-INDEX: 1001; PADDING-BOTTOM: 12px !important; MARGIN: 0px 20% 6px 0px; PADDING-LEFT: 12px !important; PADDING-RIGHT: 30px !important; PADDING-TOP: 6px !important } [id*='receipt_nested'].receipt { PADDING-RIGHT: 28px } .columnMsgWrapper { MARGIN-LEFT: 60% } .columnMsgWrapper .column-2 { MIN-HEIGHT: 1px } .smsIssue { POSITION: relative; MARGIN: 3px 3px 9px } .t2vIssue { POSITION: relative; MARGIN: 3px 3px 9px } .bubbleStem-bottom-center { BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: transparent 10px solid; WIDTH: 0px; BOTTOM: -12px; HEIGHT: 0px; MARGIN-LEFT: -8px; BORDER-TOP: #fc3 12px solid; BORDER-RIGHT: transparent 10px solid; LEFT: 50% } .nextStepsReceipt { BACKGROUND-IMAGE: url(images/reorder_bg.png); POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4; BACKGROUND-COLOR: #eee; MARGIN: 10px -30px -20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #545454; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3) } .nextStepsText { PADDING-BOTTOM: 18px; MARGIN: 0px 0px 0px 20px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fefefe; PADDING-TOP: 18px } .nextStepsText H5 { MIN-WIDTH: 6em; LINE-HEIGHT: 2em; DISPLAY: inline-block; COLOR: #545454; text-shadow: 1px 1px 1px #fff } .receiptCollapsed { POSITION: relative; FONT-SIZE: 90% } .external-breadcrumbs .receipt { BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; BORDER-TOP: 0px; TOP: -9px; BORDER-RIGHT: 0px; box-shadow: none } .stepcontent LI.fieldError { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; BACKGROUND: #fff1c5; PADDING-TOP: 2px } .stepcontent LI.fieldError .fieldErrorText { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { DISPLAY: inline; MARGIN-LEFT: 0px } .criteriaSummary { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px -28px 0px 0px; PADDING-LEFT: 12px; BACKGROUND: #f9f9f9 } #bb-question-discover H2 { FONT-SIZE: 110% } #filterContainer H2 { MARGIN-LEFT: 14px } #filterContainer .columnActions { MARGIN-LEFT: 14px } .criteriaSummary H3 { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .criteriaSummary .hidden { DISPLAY: none; VISIBILITY: hidden } .criteriaSummary UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .criteriaSummary UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FLOAT: left; FONT-SIZE: 90%; PADDING-TOP: 3px; border-radius: 12px } .criteriaSummary UL LI:first-child { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG { MARGIN: 0px; DISPLAY: block; FLOAT: left; COLOR: #aaa; FONT-WEIGHT: normal } .receipt-highlight { BACKGROUND: #fff4bf; box-shadow: 0 0 4px #fff } .receipt-default { BACKGROUND: none transparent scroll repeat 0% 0%; box-shadow: none } .criteriaSummary UL LI STRONG:before { POSITION: relative; LINE-HEIGHT: 1; COLOR: #aaa; FONT-SIZE: 120%; CONTENT: "+"; FONT-WEIGHT: bold; LEFT: -2px } .criteriaSummary UL LI SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI A { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI SPAN { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG + SPAN { MARGIN-LEFT: 3px } .criteriaSummary UL LI A { PADDING-RIGHT: 18px; BACKGROUND: url(../../../images/ci/icons/delete_li.gif) #eee no-repeat 96% 2px; TEXT-DECORATION: none } .search-element { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 18px; PADDING-LEFT: 9px; PADDING-RIGHT: 3px; BACKGROUND: #f9f9f9; PADDING-TOP: 18px } .search-element H2 { LINE-HEIGHT: 1; MARGIN: 0px; WIDTH: 0px; DISPLAY: inline-block; HEIGHT: 22px; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; OVERFLOW: hidden; FONT-WEIGHT: normal } .search-element H2:before { POSITION: relative; MARGIN: 0px 3px 6px 0px; FONT: 17px/1 "Utilicons"; COLOR: #aaa; VERTICAL-ALIGN: middle; CONTENT: "F"; TOP: 2px } .search-element INPUT[type='text'] { WIDTH: 60%; -moz-appearance: searchfield; -webkit-appearance: searchfield } .calPicker { Z-INDEX: 1500 !important } .calPicker .calHead { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .calPicker H3 { BORDER-BOTTOM: medium none; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 40px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .calPicker .previous { POSITION: absolute; TOP: 2px; LEFT: 2px } .calPicker .next { POSITION: absolute; TOP: 2px; RIGHT: 2px } .calPicker DIV.calFoot { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; CLEAR: both; PADDING-TOP: 6px } .calPicker A.contextmenubar { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .calPicker A.contextmenubar:hover { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .timediv { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .timediv UL { WIDTH: 8em; HEIGHT: 200px; OVERFLOW: auto } .timediv UL LI.contextmenubar_top { WIDTH: 114px; TOP: -18px } .timediv UL LI A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .csPicker { MIN-WIDTH: 300px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 12px; FONT-SIZE: 95%; PADDING-TOP: 0px } .csPicker .actionBar { FONT-SIZE: 110% } .csPicker .localViewToggle { FONT-SIZE: 110% } .csPicker .contentPaneWide { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .breadcrumbs { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .itemTray { Z-INDEX: 1000 } .csPicker .itemTray .taskbuttondiv { MARGIN: 0px; FONT-SIZE: 105% } .csPicker .itemTray H3 { FONT-SIZE: 115% } .csPicker #titleicon + H1 { MARGIN-TOP: 2px } .csPicker .itemTray #numberOfElements { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.lb-overlay { Z-INDEX: 1001; POSITION: fixed; BACKGROUND-COLOR: #000; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px } DIV.lb-wrapper { Z-INDEX: 1002; POSITION: fixed; OVERFLOW: hidden } DIV.lb-wrapper DIV.lb-header { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #dedede; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } DIV.lb-wrapper DIV.lb-header H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 15px; HEIGHT: 1.23em; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-header A { POSITION: absolute; DISPLAY: block; TOP: 10px; RIGHT: 10px } DIV.lb-wrapper DIV.lb-header A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; VERTICAL-ALIGN: top; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.lb-wrapper DIV.lb-content { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: auto; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-content DIV.lb-loading { BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) no-repeat center center } DIV.lb-wrapper DIV.topRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #lightbox DIV.bottomRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } DIV.lb-wrapper DIV.topRound B { DISPLAY: block; OVERFLOW: hidden } #lightbox DIV.bottomRound B { DISPLAY: block; OVERFLOW: hidden } DIV.lb-wrapper DIV.topRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } #lightbox DIV.bottomRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } #lightbox DIV.bottomRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightbox DIV.bottomRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightboxWrapper { Z-INDEX: 1001; POSITION: absolute; TOP: 0px; RIGHT: 0px; LEFT: 0px } #lightboxWrapper-inner { Z-INDEX: 1002; POSITION: relative; TEXT-ALIGN: center; WIDTH: 100%; TOP: 0px; LEFT: 0px } #lightbox { Z-INDEX: 1003; POSITION: relative; TEXT-ALIGN: left; MARGIN: 40px 0px 0px; DISPLAY: block; TOP: auto; LEFT: auto } .my-places-popup #lightbox { MARGIN: 0px } .my-places-popup #lightboxWrapper { POSITION: relative } #lightbox #lightboxContent { BORDER-BOTTOM: #333 2px solid; POSITION: relative; BORDER-LEFT: #333 2px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff !important; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP: #333 2px solid; BORDER-RIGHT: #333 2px solid; PADDING-TOP: 1px; -moz-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -moz-border-radius: 5px; -webkit-border-radius: 5px } .my-places-popup #lightbox #lightboxContent { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .lb-container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lb-content .container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lbAction { Z-INDEX: 1005; POSITION: absolute; TOP: 9px; RIGHT: 9px } #overlay { Z-INDEX: 1000; POSITION: fixed; FILTER: alpha(opacity=30); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .30 } .done#lightbox #lbLoadMessage { DISPLAY: none } .done#lightbox #lbContent { DISPLAY: block } .loading#lightbox #lbContent { DISPLAY: none } .loading#lightbox #lbLoadMessage { DISPLAY: block } .myPlacesContent { PADDING-BOTTOM: 16px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; HEIGHT: auto !important; MAX-HEIGHT: 500px !important; FONT-SIZE: 95%; OVERFLOW: auto; PADDING-TOP: 16px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .avatar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .myavatar { MARGIN-BOTTOM: 12px; MAX-HEIGHT: 150px; OVERFLOW: hidden } #lightbox .tallPara { PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 14px } #lightbox UL { MARGIN: 4px 0px 12px } #lightbox UL LI { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } #lightbox UL LI A:hover { TEXT-DECORATION: underline } DIV.lbContainer P.taskButtonsContent { MARGIN: 12px 0px 6px } .toBeRemoved { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .toBeRemoved > TD { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .unsavedItem { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD:first-child { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD { BACKGROUND-IMAGE: none } A.selectedItem { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } A.selectedItem:focus { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } TR.inEditMode-row { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TR.inEditMode-row TD { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 6px !important } #dataCollectionContainer { MARGIN: -20px -30px 0px } .popup #dataCollectionContainer { MARGIN: -12px -20px } DIV#dataCollectionContainer DIV.contentBlock { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-question-discover .inventoryListContainerDiv { PADDING-LEFT: 12px } .picker .inventoryListContainerDiv { PADDING-LEFT: 12px } .blogContainer .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV[id*='step'] { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } .submittitle { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #infoStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #taskStatusStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #linkedContentStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } DIV[id*='stepcontent'] { PADDING-BOTTOM: 0px; PADDING-LEFT: 48px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-TOP: 0px } .steptitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { PADDING-BOTTOM: 18px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .steptitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { MARGIN-RIGHT: 3px } #toolSettingsForm .steptitle SPAN { DISPLAY: none } #toolSettingsForm .stepcontent { PADDING-LEFT: 20px } #toolSettingsForm .steptitle { PADDING-LEFT: 9px } #toolSettingsForm .submittitle.steptitle { PADDING-LEFT: 27px } H3.noNumber { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 4px } .stepcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .stepcontent LI { PADDING-BOTTOM: 6px; MARGIN-BOTTOM: 6px } .stepcontent LI LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .stepcontent LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .stepcontent .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepcontent .stepHelp:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .stepcontent .fieldHelp { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 2px } A.browse + .fieldHelp { PADDING-TOP: 9px } .stepcontent .nonHelp { COLOR: #000; FONT-SIZE: 95% } .stepcontent .nestedList LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .nestedListSmall LI { FONT-SIZE: 90% } .nestedSubList { MARGIN: 6px 6px 6px 30px } .stepLite { PADDING-BOTTOM: 12px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 6px } .columnStep .column-3 { MIN-HEIGHT: 200px } .columnStep .column-3 TABLE.attachments { FONT-SIZE: 90% } .columnStep DIV H3 { MARGIN: 6px } .columnStep DIV DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } OL.nestedList LI DIV.imgLabel { WIDTH: auto } OL.nestedList LI DIV.imgLabel SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } OL.nestedList LI DIV.imgLabel SPAN.control { DISPLAY: inline } #title_color_value { PADDING-TOP: 6px } DIV.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.gb_gridCell_inner H3.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.field { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { WIDTH: 100% } DIV.label SPAN.contextMenuContainer { DISPLAY: inline } DIV.noLabelField BR { DISPLAY: none } SPAN.stepHelp BR { DISPLAY: block } SPAN.fieldHelp BR { DISPLAY: block } DIV.field OL P { PADDING-BOTTOM: 3px } DIV.noLabelField UL P { PADDING-BOTTOM: 3px } DIV.field EM { MARGIN-TOP: 5px; DISPLAY: inline-block; FONT: italic 100% Georgia, serif; COLOR: #888 } FIELDSET.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } DIV.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } FIELDSET.info DIV.label { COLOR: #666 } .reqfield { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 40px; PADDING-RIGHT: 0px; FONT: italic 105% Georgia, serif; FLOAT: left; COLOR: #777; PADDING-TOP: 24px } .reqfield:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .required > .label > LABEL:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .reqfield IMG { DISPLAY: none } .required > .label > LABEL IMG { DISPLAY: none } .requiredField { PADDING-BOTTOM: 6px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(../../../images/ci/icons/required.gif) no-repeat 0px center; PADDING-TOP: 6px } DIV.label IMG.indicator { POSITION: absolute; TOP: 0px; LEFT: -18px } .largeText DIV.label { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText DIV.field { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 75% !important; FONT-WEIGHT: normal } .field A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 95% } DIV.editBlock { FLOAT: left; MARGIN-RIGHT: 12px } .largeText DIV.field DIV.editBlock LABEL { FONT-SIZE: 80%; FONT-WEIGHT: normal } .largeText DIV.field DIV.exemptdiv LABEL { FONT-SIZE: 65% } .largeText TEXTAREA { FONT-SIZE: 80% } LI.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; PADDING-TOP: 3px; -moz-border-radius: 6px; -webkit-border-radius: 6px } .e_expandArea { MARGIN-TOP: 21px } #e_groups_menu { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #ceeaee; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .parent-child-listing { WIDTH: 50% } .parent-child-listing .stepHelp { MARGIN-LEFT: 24px } .parent-child-listing UL { BORDER-LEFT: #ccc 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 12px 10px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .parent-child-listing LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .stepcontent .hierarchy { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .stepcontent .hierarchy LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; PADDING-TOP: 0px } OL.hierarchy LI H5 { POSITION: relative; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 11em; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 8px } OL.hierarchy LI H5 SPAN { BORDER-BOTTOM: medium none; DISPLAY: inline; COLOR: #888; FONT-SIZE: 100% } OL.hierarchy LI H5 A { POSITION: absolute; FONT-SIZE: 90%; TOP: 9px; RIGHT: 0px; FONT-WEIGHT: normal } OL.hierarchy LI DIV { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 2px; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } OL.hierarchy LI DIV.gbData SPAN { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 2px } OL.hierarchy LI DIV.gbData SPAN:first-child { BORDER-LEFT: medium none; PADDING-LEFT: 0px; MARGIN-LEFT: 0px } OL.hierarchy LI DIV INPUT.points { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT.points { WIDTH: 2em } OL.hierarchy LI DIV INPUT.name { WIDTH: 16em } LI.parent { PADDING-BOTTOM: 0px !important } OL.hierarchy LI.parent OL LI H5 { BACKGROUND-IMAGE: none } .stepPanels { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .stepPanels LI { BORDER-BOTTOM: medium none } .panelTitle { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 4px 0px 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; CURSOR: pointer; PADDING-TOP: 3px } .mdHead A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { WIDTH: 100%; DISPLAY: block } .panelTitle .date { POSITION: absolute; COLOR: #666; FONT-SIZE: 95%; TOP: 2px; RIGHT: 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none } .panelTitle A SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 2px } .mdHead A SPAN.date { FONT-WEIGHT: normal } .mdList { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel P SPAN { COLOR: #666 } .mdList H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .mdList P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanelControls { FONT-SIZE: 90% } .contentAreaBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px 24px 24px; BACKGROUND: #fff; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .contentAreaBlock #step1 { BORDER-TOP: 0px } .taskbuttondiv { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .taskButtonsContent { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .okbutton { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .picker .taskbuttondiv { PADDING-BOTTOM: 9px; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .container .taskbuttondiv:first-child { MARGIN-TOP: 0px } DIV#dataCollectionContainer .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#dataCollectionContainer .reqfield + .taskbuttondiv { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#containerdiv .mapCanvasForm .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } #customizeDataCollection .taskbuttonhelp { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px } DIV#dataCollectionContainer .taskbuttonhelp + .taskbuttondiv { PADDING-BOTTOM: 18px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 0px } SPAN.stepTitleRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } SPAN.contentListRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } .taskButtonsContent { PADDING-BOTTOM: 0px; MARGIN: 24px -12px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 9px } P.okbutton INPUT { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 100%; PADDING-TOP: 1px } .taskbuttonhelp { PADDING-BOTTOM: 0px; FONT-STYLE: italic; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } #taskbuttondiv P { BORDER-BOTTOM: red 1px solid; TEXT-ALIGN: left; BORDER-LEFT: red 1px solid; FONT-STYLE: italic; MARGIN: 6px 0px; DISPLAY: block; FONT-SIZE: 90%; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .stepTitleRight { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; TOP: -2px; RIGHT: -2px; PADDING-TOP: 6px; LEFT: auto } LEGEND { POSITION: absolute; LINE-HEIGHT: 0; HEIGHT: 0px; TOP: -10000px } FIELDSET OL LI SPAN.tagContainer INPUT { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer A.browse { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.hidden { DISPLAY: none } .contentBlock OL LI SPAN.hidden { DISPLAY: none } .selectItems { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 639px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .selectItems SELECT { MARGIN: 6px 0px 0px; WIDTH: 300px; DISPLAY: block; MAX-WIDTH: 300px; HEIGHT: 115px; FONT-SIZE: 100% } #dataCollectionContainer .noLabelField > .selectItems { POSITION: relative; PADDING-BOTTOM: 15px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 15px } #dataCollectionContainer .noLabelField > .userRoleSelect:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems.userRoleSelect:before { LEFT: 358px } #dataCollectionContainer .noLabelField > .selectItems.cumulativeSelectItems:before { LEFT: 47% } .selectItems INPUT[type=button] { MARGIN: 6px 0px 0px } .selectItems INPUT[type=text] { MARGIN: 6px 0px; WIDTH: 300px; DISPLAY: block; FONT-SIZE: 100% } .selectArrows { POSITION: relative; MARGIN-TOP: 60px } .selectArrows A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectArrows BUTTON { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectItems H4 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px 56px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .userRoleSelect { WIDTH: auto } .userSelectedRoles { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 56px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .userSelectedRoles .selectArrows { POSITION: absolute; MARGIN: 0px; TOP: 28px; LEFT: 20px } .selectItems .available-roles H4 { MARGIN-LEFT: 0px } .selectItems .available-roles SELECT { HEIGHT: 200px } .multiSelect { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .multiSelect > DIV { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; WIDTH: 46%; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } .multiSelect SELECT { WIDTH: 100% } .multiSelect .selectArrows { TEXT-ALIGN: center; MARGIN: 40px 0px; WIDTH: 5% } .widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: 6px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } .widgetControls { FONT-SIZE: 90% } TABLE .widgetControls { FONT-SIZE: 90% } .widget .spellCheck { FLOAT: right } .widget .textBoxItem { FLOAT: right } DIV.liveArea FIELDSET.stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.liveArea FIELDSET.stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.liveArea FIELDSET.stepcontent TEXTAREA { WIDTH: 100% } DIV.liveArea FIELDSET.stepcontent SPAN.inlineHelp { DISPLAY: inline } .quickAddPal .stepcontent { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; PADDING-TOP: 3px } .quickAddPal .stepcontent LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .quickAddPal .stepcontent .label { WIDTH: 30%; PADDING-RIGHT: 2px; OVERFLOW: visible } .quickAddPal .stepcontent .field { WIDTH: 65% } .quickAddPal LI.fieldError .fieldErrorText { DISPLAY: block; COLOR: red; MARGIN-LEFT: 74px; FONT-SIZE: 85%; FONT-WEIGHT: normal } DIV.quickAddPal DIV.field INPUT[type=text] { WIDTH: 100% } DIV.quickAddPal DIV.field SELECT { WIDTH: 100% } DIV.quickAddPal DIV.field TEXTAREA { WIDTH: 100% } DIV.quickAddPal LI.stepHelp { WIDTH: auto } DIV.quickAddPal LI DIV SPAN { WIDTH: auto } DIV.field SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.field SPAN.control { DISPLAY: inline } DIV.quickAddPal DIV.field INPUT.datePickerInput { WIDTH: 8em } DIV.quickAddPal DIV.field INPUT.timePickerInput { WIDTH: 8em } .dtpickerEndDiv { PADDING-TOP: 10px } DIV#texteditor { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } DIV#texteditor TEXTAREA { WIDTH: 450px; DISPLAY: block; MARGIN-LEFT: 0px } DIV#texteditor A.textBoxItem { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 80%; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 2px } SELECT.survey_question { MAX-WIDTH: 100% } .htmlarea .toolbar DIV > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FLOAT: left; HEIGHT: 22px; PADDING-TOP: 0px } .htmlarea IFRAME { MIN-WIDTH: 300px !important } .htmlarea .toolbar A.wikiButton { WIDTH: auto !important } .htmlarea .toolbar A.wikiButton IMG { WIDTH: auto !important } .vtbe_footer { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .vtbe_footer SPAN { FONT-SIZE: 100% } .vtbe_footer INPUT[type=button] { FONT-SIZE: 95% } .vtbe_footer A { MARGIN: 0px 0px 0px 3px } .resize_handle { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BACKGROUND: url(images/controls.png) #ccc no-repeat 50% -1px; HEIGHT: 12px; BORDER-TOP: #ddd 1px solid; CURSOR: n-resize } .resize_handle:hover { BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #bbb; BORDER-TOP-COLOR: #ccc } .resize_handle IMG { WIDTH: 100%; HEIGHT: 8px } .tabGroupsPreview { MARGIN: -11px -12px 24px; FONT-SIZE: 100% } .previewContent { Z-INDEX: 1; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; BACKGROUND: url(images/backgrounds_h.png) #aaa repeat-x 0px -320px; PADDING-TOP: 14px } .previewContent IFRAME { WIDTH: 100%; HEIGHT: 300px } .previewContent .appTabs { TOP: -3px } .tabGroupsPreview TABLE DIV { DISPLAY: block } .previewOverlay { POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=30); TEXT-TRANSFORM: uppercase; WIDTH: 100%; LETTER-SPACING: 10px; COLOR: #555; FONT-SIZE: 300%; TOP: 130px; FONT-WEIGHT: bold } .tabGroupsPreview .previewOverlay { TOP: 40px } .previewOverlay SPAN { FILTER: alpha(opacity=30); PADDING-BOTTOM: 6px; BACKGROUND-COLOR: white; PADDING-LEFT: 24px; PADDING-RIGHT: 12px; PADDING-TOP: 6px; opacity: .30 } P.warning { PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #cf1d19; MARGIN: 12px 0px 24px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 9px } .warning { BACKGROUND: #a7d0df } DIV.tabPreview { Z-INDEX: 1; BORDER-BOTTOM: #cdcdcd 12px solid; POSITION: relative; BORDER-LEFT: #cdcdcd 12px solid; MARGIN: 0px 6px 6px; WIDTH: auto; BACKGROUND: #cdcdcd; BORDER-TOP: #cdcdcd 12px solid; BORDER-RIGHT: #cdcdcd 12px solid } DIV.tabPreview DIV.paneTabs { MARGIN-TOP: 12px } .buttonLibrary { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 207px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .buttonLibrary LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FLOAT: left; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .buttonLibrary LI A { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 3px } .buttonLibrary LI A.selected { FONT-WEIGHT: bold; TEXT-DECORATION: none } .buttonLibrary LI A:hover { TEXT-DECORATION: underline } DIV.menuStyleStep { MARGIN: 9px 40px 0px 0px; WIDTH: 212px; FLOAT: left } DIV.menuDefaultStyleStep { MARGIN: 9px auto; WIDTH: 212px } .schemeWrapper { MARGIN: 0px 12px 0px 0px; FLOAT: left } .buttonLibrary .schemeWrapper { PADDING-BOTTOM: 10px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #fff; FLOAT: none; PADDING-TOP: 10px; -moz-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); border-radius: 4px } .buttonLibrary .selected .schemeWrapper { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #bbb; PADDING-TOP: 10px } #selectedPalette .schemePreview { BORDER-BOTTOM: #bbb 10px solid; BORDER-LEFT: #bbb 10px solid; BORDER-TOP: #bbb 10px solid; BORDER-RIGHT: #bbb 10px solid; -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); border-radius: 4px } .schemeWrapper SPAN { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: italic 100% Georgia; PADDING-TOP: 6px } UL.buttonLibrary LI.selected { POSITION: absolute; TOP: 6px; LEFT: 0px } UL.buttonLibrary LI.selected A.selected { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A.selected SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .schemePreview { PADDING-BOTTOM: 0px; PADDING-LEFT: 16px; WIDTH: 160px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .modulePreview { BORDER-BOTTOM: 0px solid; POSITION: relative; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px !important; MARGIN: 6px 0px 0px auto; PADDING-LEFT: 0px !important; WIDTH: 140px; BOTTOM: 0px; PADDING-RIGHT: 0px !important; HEIGHT: 57px; FONT-SIZE: 85%; BORDER-TOP: 1px solid; RIGHT: 0px; BORDER-RIGHT: 0px solid; PADDING-TOP: 0px !important; LEFT: auto } .schemePreviewHead { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 6px !important } .modulePreviewHead { PADDING-BOTTOM: 4px !important; MARGIN: 0px; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-WEIGHT: bold; PADDING-TOP: 4px !important } .schemePreviewBody { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 3px } .modulePreviewBody { PADDING-BOTTOM: 3px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 4px !important } .moduleList { BORDER-TOP: #ccc 1px solid } .moduleItem { BORDER-BOTTOM: #ccc 1px solid } .module { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } .moduleHeading { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 10px } .module H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 110% } .moduleDescription { WIDTH: 90% } .more { DISPLAY: none } .moduleAction { MARGIN: 10px 0px } .moduleCategory { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .moduleCategory A { FONT-WEIGHT: bold } .moduleSample { PADDING-LEFT: 10px; DISPLAY: none } .expandedModule { BACKGROUND-COLOR: #efefef } .expandedModule .moduleDetails { WIDTH: 47% } .expandedModule .moduleSample { WIDTH: 47% } .expandedModule .more { DISPLAY: inline } .expandedModule .moduleSample { DISPLAY: block } .leftColumn-wide#moduleList .contentListPlain { PADDING-LEFT: 18px } .moduleListActionBar { PADDING-LEFT: 18px } #moduleList .contentListPlain > LI.expandedModule .moduleSample > DIV { MIN-HEIGHT: 50px !important; WORD-WRAP: normal } #moduleBody { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } #moduleBorder { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .portlet { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #efede3; MARGIN: 0px 10px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #444; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 0 2px 4px rgba(0, 0, 0, .05); border-radius: 3px } .containerPortal > DIV:first-child .portlet { MARGIN: 0px 10px 20px 0px } .reorderableModule:hover { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; -webkit-transition-property: border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border, background; -moz-transition-duration: 200ms; -moz-transition-timing-function: ease-in-out } .reorderableModule:hover H2 { COLOR: #000 } .module-dragstate { BORDER-BOTTOM-COLOR: #555; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: 2px; opacity: .9; -moz-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-transition-property: border-width, border-color, background, -webkit-box-shadow; -webkit-transition-duration: 50ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border-width, border-color, background, -moz-box-shadow; -moz-transition-duration: 50ms; -moz-transition-timing-function: ease-in-out } #moduleTitle { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 .moduleTitle { WORD-WRAP: break-word } .portlet H2.dragHandle { PADDING-LEFT: 20px } .portlet H2.dragHandle:hover { CURSOR: move } .portlet H2 A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; COLOR: #fff; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .portlet H2 A:hover { TEXT-DECORATION: underline } .portlet H2 A IMG { VERTICAL-ALIGN: middle } .portlet H2.noTitle { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 1.4em; PADDING-TOP: 0px } .portlet H2.noTitle:hover { BACKGROUND: #ededed } .portlet A { WORD-WRAP: break-word; TEXT-DECORATION: none } .portlet A:hover { TEXT-DECORATION: underline } .edit_controls { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FLOAT: right; PADDING-TOP: 7px } .portlet .edit_controls { VISIBILITY: hidden } .portlet:hover .edit_controls { VISIBILITY: visible } .edit_controls A { Z-INDEX: 201; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 1px; TEXT-DECORATION: none; PADDING-TOP: 0px; verical-align: top } .portlet .edit_controls A:hover { TEXT-DECORATION: none } .portlet:hover .edit_controls A { TEXT-DECORATION: none } .edit_controls .moduleToggleLink { Z-INDEX: 201; POSITION: absolute; FILTER: alpha(opacity=50); PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 14px; PADDING-RIGHT: 3px; HEIGHT: 14px; TOP: 3px; PADDING-TOP: 3px; LEFT: -4px; opacity: .5 } .edit_controls A IMG { DISPLAY: none } .edit_controls A:before { FONT: 16px/1 "Utilicons"; COLOR: #bcbcbc; text-shadow: 0 1px 0 #fff } .edit_controls A:hover:before { COLOR: #888 } .edit_controls A.moduleToggleLink { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px } .edit_controls A[title*='Expand'].moduleToggleLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .edit_controls A.moduleCloseLink:before { CONTENT: "X" } .edit_controls A.moduleDetachLink:before { FONT: 16px/1 "Utilicons"; CONTENT: "w" } .edit_controls A[href*='edit_module']:before { CONTENT: "S" } .collapsible { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px } .collapsible TABLE { BORDER-SPACING: 3px 2px; BORDER-COLLAPSE: separate; FONT-FAMILY: Helvetica, Arial, sans-serif; COLOR: #333; FONT-SIZE: 90% } .collapsible .help { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .imgWrapper { TEXT-ALIGN: center; MARGIN: 6px auto; OVERFLOW: auto } .portlet H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } #lightbox H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.portletBlock H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.blockContents H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .flyout H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 5px } .portlet H4 { PADDING-BOTTOM: 2px; TEXT-INDENT: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 1px } .portlet .portletList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList LI:first-child { BORDER-TOP: medium none } .portlet .portletList LI IMG { DISPLAY: none } .portlet .courseListing LI > A { FONT-WEIGHT: bold } .portlet .courseRole { COLOR: #777 } .portlet .dataBlockLabel { COLOR: #777 } .portlet .eventDate { COLOR: #777 } .portlet .eventList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .eventList LI .date { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f0f0f0; COLOR: #597298; FONT-WEIGHT: bold; PADDING-TOP: 2px; -moz-border-radius: 1px; -webkit-border-radius: 1px; border-radius: 1px } .portlet .eventList LI .event { PADDING-BOTTOM: 2px; PADDING-LEFT: 18px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .portlet .eventList LI .description { FONT-SIZE: 90% } .portlet .eventDate { FONT-SIZE: 90% } .portlet .eventList LI .event A { FONT-WEIGHT: bold } .portlet SPAN.origin { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #999; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet .portletList-img > LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList-img > LI:first-child { BORDER-TOP: medium none; PADDING-TOP: 0px } .portlet .portletList-img > LI IMG { DISPLAY: none } .portlet .courseInformation { PADDING-BOTTOM: 0px; TEXT-INDENT: -16px; MARGIN: 4px 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock { PADDING-BOTTOM: 0px; TEXT-INDENT: -4px; MARGIN: 4px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock UL { MARGIN-TOP: 5px } .portlet .courseDataBlock UL LI { TEXT-INDENT: 0px } .portlet .calculatorModule { TEXT-ALIGN: center } .portlet .calculator { PADDING-BOTTOM: 6px; MARGIN: 0px auto; PADDING-LEFT: 6px; WIDTH: 10em; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .portlet .portletPath { MARGIN: 4px; BACKGROUND: #f0f0f0; FONT-SIZE: 90%; -moz-border-radius: 1px; -webkit-border-radius: 1px } .portlet .portletPath SPAN { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; DISPLAY: inline-block; BACKGROUND: #ddd; COLOR: #666; FONT-WEIGHT: bold; PADDING-TOP: 1px; -moz-border-radius: 1px 0 0 1px; -webkit-border-radius: 1px 0 0 1px } .portlet .courseDataBlock UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px -895px; PADDING-TOP: 0px } .portlet .courseDataBlock A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock LI A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock A:hover { TEXT-DECORATION: underline } .portlet .courseDataBlock LI A:hover { TEXT-DECORATION: underline } .portletHelp { PADDING-BOTTOM: 2px; MARGIN: 4px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #688ba8; FONT-SIZE: 95%; PADDING-TOP: 1px } DIV.module_actions { PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.8em; MARGIN: 4px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.module_actions A:link { BORDER-BOTTOM: #ccc 1px outset; BORDER-LEFT: #ccc 1px outset; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 5px; COLOR: #036; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px outset; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px outset; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.module_actions A:hover { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions A:active { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions IMG { MARGIN: 0px 3px; VERTICAL-ALIGN: middle } DIV.module_actions SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.module_actions LABEL { FONT-WEIGHT: bold } DIV.scroll_div { MAX-HEIGHT: 300px; OVERFLOW: auto } .portlet DIV.scroll_div { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN-BOTTOM: 3px; BACKGROUND: #fff4bf; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .submission_list { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .submission_list LI { PADDING-BOTTOM: 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; PADDING-TOP: 9px } .submission_list LI:first-child { BORDER-TOP: medium none } .submission_list LI A { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .submission_list LI A.label { MARGIN-LEFT: 0px; FONT-SIZE: 100%; FONT-WEIGHT: bold } .submission_list LI DIV.button { MARGIN: 4px 0px 0px; FLOAT: right } .submission_list LI SPAN { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .eudModule { PADDING-BOTTOM: 24px; MARGIN: 0px } .styledModule-dark { PADDING-BOTTOM: 24px; MARGIN: 0px } .portlet .noItems { TEXT-ALIGN: center; FONT-STYLE: italic } .eudModule .eudModule-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .styledModule-dark .module-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .eud-button-wrap { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } IMG.eud-avatar { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 28px; PADDING-RIGHT: 2px; BACKGROUND: #fff; HEIGHT: 28px; PADDING-TOP: 2px; -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -moz-border-radius: 2px; -webkit-border-radius: 2px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } .actionMenuButton { FILTER: none; PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: block; BACKGROUND: #eee; VERTICAL-ALIGN: middle; PADDING-TOP: 3px } DIV[id*='actionMenu_'] { Z-INDEX: 1000; MARGIN-TOP: -4px; MARGIN-LEFT: -3px } .portlet .portletBlock { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 6px } .portlet .portletBlock:first-child { BORDER-TOP: 0px } .moduleActions + .portletBlock { BORDER-TOP: 0px } .blockGroups LI:first-child { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .portlet .memberList { MARGIN: 0px 0px 5px } .itemGroups { PADDING-BOTTOM: 0px; MARGIN: 4px 9px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .itemGroups .itemGroups { MARGIN-BOTTOM: 4px; MARGIN-LEFT: 0px } .portlet .blockGroups LI { FONT-SIZE: 100% } .portlet .itemGroups LI { PADDING-BOTTOM: 7px; LINE-HEIGHT: 120%; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .memberList LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 14px !important; PADDING-TOP: 0px } .portlet .course { DISPLAY: block; FONT-SIZE: 90% } .portlet UL.memberList { DISPLAY: block; FONT-SIZE: 90% } .portlet SPAN.refresh { DISPLAY: block; FONT-SIZE: 90% } .portlet .course { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet SPAN.noIndent { MARGIN-LEFT: 0px !important } .portlet .whatsNew SPAN.course { MARGIN-LEFT: 0px !important } .portlet SPAN.course { MARGIN-LEFT: 0px !important } .portlet UL.hierarchyList { MARGIN-LEFT: 22px } .portlet UL.hierarchyList LI { OVERFLOW-X: visible; TEXT-INDENT: -18px } .portlet UL.hierarchyList LI * { TEXT-INDENT: 0px } .portlet UL.hierarchyList LI.childless { TEXT-INDENT: 0px } .portlet UL LI UL LI SPAN.warning { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.newItemCount { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .flag { BORDER-BOTTOM: #efa495 1px solid; BORDER-LEFT: #efa495 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; BACKGROUND: #ffe4df; COLOR: #c30; FONT-SIZE: 90%; BORDER-TOP: #efa495 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #efa495 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL.memberList SPAN { FONT-SIZE: 100% } .portlet UL.memberList SPAN.newItemCount { FONT-SIZE: 100% } .portletInfoFooter { POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 9px; BOTTOM: 5px; PADDING-RIGHT: 9px; COLOR: #999; FONT-SIZE: 90%; RIGHT: 0px; PADDING-TOP: 2px } .dateSelector { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .blockGroups LI SPAN.newItemCount { COLOR: #999; FONT-WEIGHT: normal } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHead A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .portlet .portletBlock H4 A:hover { BACKGROUND: #eee } .portlet .portletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .portlet .portletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .portlet .subCategories LI A { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead:hover { CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) #fff no-repeat 1px 9px; COLOR: #0099b6 } .blockGroups .itemHeadOpen:hover { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen:focus { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups LI IMG.spacer { WIDTH: 50px; HEIGHT: 0px } .blockGroups LI SPAN.headerText:hover { CURSOR: pointer; TEXT-DECORATION: underline } .viewHeader { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .viewHeader H3 { COLOR: #666; FONT-WEIGHT: bold } DIV.waitingFrame { BACKGROUND: #fff } .moduleControlWrapper { MARGIN: 6px 0px 0px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 6px } .moduleControlWrapper A { POSITION: relative; MARGIN: 0px 2px } .moduleControlWrapper A:after { POSITION: relative; COLOR: #bbb; FONT-SIZE: 14px; CONTENT: "\2192"; RIGHT: 0px; FONT-WEIGHT: bold } .moduleBlock { MARGIN: 6px } .portlet H1 { MARGIN: 6px; FONT-SIZE: 120% } .assessmentPortlet DIV.assessmentPortletBlock { BORDER-BOTTOM-COLOR: #777; PADDING-BOTTOM: 0px; BORDER-TOP-COLOR: #777; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #f9f9f9; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4 A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4 A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet UL.subCategories { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock UL.subCategories LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet UL.subCategories LI A { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead:hover { BACKGROUND-COLOR: #e3efff; TEXT-DECORATION: underline } UL.assessmentBlockGroups LI A.itemHeadOpen { BACKGROUND: #fff no-repeat 3px center } UL.assessmentBlockGroups LI A.itemHeadOpen:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .assessmentPortlet UL.subCategories LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } UL.assessmentBlockGroups LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .assessmentPortlet UL.subCategories LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } UL.assessmentBlockGroups LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } .assessmentPortlet UL.itemGroup LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.assessmentBlockGroups LI UL.itemGroups LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet UL.itemGroup LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI UL.items { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; FONT-SIZE: 110%; PADDING-TOP: 2px } UL.assessmentBlockGroups LI UL.itemGroups LI A { FONT-WEIGHT: normal } UL.itemGroups LI UL.items LI A { FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H3 { MARGIN: 0px } .assessmentPortlet DIV.assessmentPortletBlock H3 A { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f0f0f0; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet DIV.assessmentPortletBlock H3 A:hover { TEXT-DECORATION: none } .assessmentPortlet DIV.assessmentPortletBlock:first-child H3 A { BORDER-TOP: medium none } .assessmentPortlet DIV.assessmentPortletBlock H3 A.open { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/less_options.gif) #e3efff no-repeat 99% center; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet UL.objectList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortletBlock UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .blockContents UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.memberList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet .blockContents UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet .blockContents UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .portlet #loginBoxFull { PADDING-BOTTOM: 16px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull P { MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; COLOR: #444; FONT-SIZE: 0.95em } .portlet #loginBoxFull P.welcome { PADDING-BOTTOM: 0px; MARGIN: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000; FONT-SIZE: 1em; FONT-WEIGHT: bold; PADDING-TOP: 0px } .portlet #loginBoxFull UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } .portlet #loginBoxFull LI LABEL { FONT-SIZE: 100%; FONT-WEIGHT: normal } .portlet #loginBoxFull INPUT[type='text'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='password'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull A { FONT-SIZE: 0.9em } .portlet #loginBoxFull P A { FONT-SIZE: 1em } .portlet #loginBoxFull P.welcome A { FONT-SIZE: 1em } .portlet #loginBoxFull LI + LI + LI { FLOAT: left } .portlet #loginBoxFull LI + LI + LI + LI { TEXT-ALIGN: right; FLOAT: right } .portlet #loginBoxFull LI INPUT.submit { MARGIN: -14px -3px 0px 0px } #body { PADDING-BOTTOM: 60px } #loadstatus { POSITION: relative; HEIGHT: 180px } FIELDSET.highlight { BACKGROUND: #eee } FIELDSET.highlight DIV.input { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .builderItem .item { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FONT-SIZE: 100%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 12px } .builderItem:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } #lessonPlanForm #dataCollectionContainer .contentListPlain LI:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } LI.builderItem { MIN-HEIGHT: auto } .builderItem .close { POSITION: absolute; TOP: 5px; CURSOR: pointer; RIGHT: 5px } .builderItem IFRAME { WIDTH: 100% !important } DIV.subheading { FONT-WEIGHT: bold } DIV.required DIV.inputField { PADDING-LEFT: 1.5em; BACKGROUND: url(../../images/ci/icons/required.gif) no-repeat left 2px; MARGIN-LEFT: -1.5em } .inputOptions { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.5em } .offscreen { POSITION: absolute; HEIGHT: 0px; LEFT: -999em } .label A:hover { CURSOR: pointer } #lessonPlanForm #customFormBuilderDiv { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer .contentListPlain { MARGIN: 0px } .alignPanelLightbox { MIN-WIDTH: 650px; PADDING-BOTTOM: 10px; MIN-HEIGHT: 250px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .alignHeader { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .alignPanel TABLE TD { FONT-SIZE: 90% } .alignPanel TABLE TH { FONT-SIZE: 90% } .alignPanel TABLE TD.descriptionCell { MIN-WIDTH: 120px; WORD-WRAP: break-word } .alignPanel THEAD TH.smallCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .alignPanel THEAD TH { WHITE-SPACE: nowrap } .alignPanel TD.actionCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 4px } .pageBreadcrumb { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #fff; HEIGHT: 1em; PADDING-TOP: 6px } .pageBreadcrumb UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .pageBreadcrumb LI { FLOAT: left; COLOR: #999; MARGIN-LEFT: 3px; FONT-WEIGHT: bold } .pageBreadcrumb LI A { COLOR: #036; FONT-WEIGHT: bold; MARGIN-RIGHT: 3px; TEXT-DECORATION: none } .pageBreadcrumb LI A.active { COLOR: #036; FONT-WEIGHT: bold; TEXT-DECORATION: none } .sStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #063; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .sStatusI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #c00; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .panelList { PADDING-BOTTOM: 0px; MARGIN: 2px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; PADDING-TOP: 0px } .panelList > LI { MARGIN: 0px 0px 1px } .panelNested { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #fff; MARGIN: 4px 0px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; OVERFLOW: hidden; PADDING-TOP: 4px } .panelHead { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; WORD-WRAP: break-word; BACKGROUND: #efefef; PADDING-TOP: 6px } .panelHead A { COLOR: #000; TEXT-DECORATION: none } .panelItem { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 6px } .panelList_leftCol { POSITION: absolute; TOP: 6px; LEFT: 6px } .panelList_rightCol { POSITION: absolute; TOP: 6px; RIGHT: 6px } .panelList_centerCol { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 0px } UL.logMessages { LIST-STYLE-TYPE: none; TEXT-INDENT: -1em; PADDING-LEFT: 1em; MARGIN-LEFT: 0px; LIST-STYLE-IMAGE: none } LI.logError { COLOR: red } LI.logWarning { COLOR: blue } LI.logMessage { MARGIN-TOP: 0.1em } .connectionWrapper { POSITION: relative; MARGIN-TOP: 1px; PADDING-RIGHT: 30px } .connectionWrapper A { POSITION: absolute; MARGIN-TOP: -14px; TOP: 50%; RIGHT: 0px } .invertItems { POSITION: relative; DISPLAY: block !important; MARGIN-RIGHT: 26px } .invertItems A { POSITION: absolute; TOP: -14px; RIGHT: -33px } .subcategories { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 11px !important; PADDING-RIGHT: 11px !important; PADDING-TOP: 6px !important } .subcategories H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.calendarTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.announcementTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.calendarTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.announcementTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.calMonth { PADDING-BOTTOM: 6px; MARGIN: 10px 4px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; OVERFLOW: auto; PADDING-TOP: 2px } DIV.calMonth TABLE { BORDER-BOTTOM: #a8beda 2px solid; BORDER-LEFT: #a8beda 1px solid; MARGIN: 0px auto; BORDER-COLLAPSE: collapse; BORDER-TOP: #a8beda 2px solid; BORDER-RIGHT: #a8beda 2px solid } DIV.calMonth TABLE THEAD TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE TBODY TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE THEAD TD DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TBODY TH DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE THEAD TH { BORDER-BOTTOM: #a0a0a0 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 8em; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; OVERFLOW: hidden; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } DIV.calMonth TABLE TBODY TD { BORDER-BOTTOM: #a8beda 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 8em; PADDING-RIGHT: 0px; BACKGROUND: url(images/backgrounds_h.png) white repeat-x 0px -400px; HEIGHT: 8em; OVERFLOW: hidden; BORDER-RIGHT: #a8beda 1px solid; PADDING-TOP: 0px } DIV.calMonth TABLE TH:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:focus { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:active { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD A.daylink { BORDER-BOTTOM: #a8beda 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; WIDTH: 1.2em; PADDING-RIGHT: 0.2em; DISPLAY: block; BACKGROUND: #e3efff; FLOAT: left; FONT-SIZE: 110%; FONT-WEIGHT: bold; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0.2em } DIV.calMonth TABLE TD A.daylink:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD A.daylink SPAN { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TD.today { BACKGROUND-COLOR: #fff4bf } DIV.calMonth TABLE TD.today A.daylink { BACKGROUND: #fff4bf; FONT-WEIGHT: bold } DIV.calMonth TABLE TD.today A.daylink:hover { BACKGROUND: url(images/backgrounds_h.png) #fff4bf repeat-x 0px -50px } DIV.calMonth TABLE TD.offday { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:hover { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:focus { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD DIV { WIDTH: 8em; CLEAR: both; OVERFLOW: hidden } DIV.calMonth TABLE TD DIV UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.calMonth TABLE TD DIV UL LI { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FONT-SIZE: 90%; PADDING-TOP: 1px } TABLE.calYear { POSITION: relative; MIN-WIDTH: 200px; MARGIN: 6px; BORDER-COLLAPSE: collapse; FONT-SIZE: 95% } TABLE.calYearFloat { MARGIN: 6px 0.66%; WIDTH: 32%; FLOAT: left } TABLE.calYear THEAD TD { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear TBODY TH { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear CAPTION { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 108%; PADDING-TOP: 2px } TABLE.calYear CAPTION A { FONT-WEIGHT: bold; TEXT-DECORATION: none } TABLE.calYear CAPTION A:hover { TEXT-DECORATION: underline } TABLE.calYear THEAD TH { BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } TABLE.calYear TBODY TD { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; WHITE-SPACE: nowrap; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } TABLE.calYear TD A { POSITION: relative; WIDTH: 100%; DISPLAY: block; TEXT-DECORATION: none } TABLE.calYear TD A IMG { FLOAT: left } TABLE.calYear TD:hover { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:focus { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:active { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TH:hover { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:focus { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:active { BACKGROUND-COLOR: #ccc } TABLE.calYear TD.today { BACKGROUND: #999 } TABLE.calYear TD.today:hover { BACKGROUND: #999 } TABLE.calYear TD.today:focus { BACKGROUND: #999 } TABLE.calYear TD.today A { COLOR: #fff; FONT-WEIGHT: bold; text-shadow: 0 -1px 0 #555 } TABLE.calYear TD.today A:hover { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:active { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:focus { BACKGROUND-IMAGE: none } TABLE.calYear TD.offday { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:hover { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:focus { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.hasEvent { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -50px; FONT-WEIGHT: bold } TABLE.calendarDay { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; MARGIN: 10px 0px 0px; WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #cdcdcd 1px solid; BORDER-RIGHT: #cdcdcd 1px solid } TABLE.calendarDay THEAD { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay THEAD TH { POSITION: absolute; TOP: 0px; LEFT: -1000px } UL.calendarWeek LI TABLE.calendarDay { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } TABLE.calendarDay TBODY TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 3px; WIDTH: 6%; PADDING-RIGHT: 12px; BACKGROUND: #f3f3f3; COLOR: #555; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } TABLE.calendarDay TBODY TH:hover { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:focus { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:active { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #fff; VERTICAL-ALIGN: top; BORDER-TOP: #cdcdcd 1px solid; PADDING-TOP: 0px } TABLE.calendarDay TBODY TD.hasEvent { PADDING-LEFT: 6px } TABLE.calendarDay TBODY TD.hasEvent A.jumpToEvent { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay TBODY TR.halfHour TH { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.halfHour TD { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.midday TH { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TBODY TR.midday TD { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TR.notBusinessHours TH { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #f3f3f3; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TABLE.calendarDay TR.notBusinessHours TD { BACKGROUND: #fafafa } TABLE.calendarDay TBODY TR.notBusinessHours TD.hasEvent { BACKGROUND: #fafafa } TABLE.calendarDay TR TH SPAN.ampm { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #bbb; LETTER-SPACING: 0.1em; COLOR: #fff; FONT-SIZE: 75%; TOP: -1.2em; PADDING-TOP: 0px; LEFT: -4px } TABLE.calendarDay TBODY TR:hover { -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calendarDay TBODY TR:hover TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TD DIV DIV { PADDING-BOTTOM: 1px; MARGIN: 0px 4px 0px -6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: #b5ccea; FLOAT: left; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } TABLE.calendarDay TD DIV DIV.contextMenuContainer { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px -3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: none; PADDING-TOP: 0px } TABLE.calendarDay TD DIV SPAN { COLOR: #555; FONT-SIZE: 90% } UL.calendarWeek { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #cdcdcd 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #cdcdcd 1px solid; PADDING-TOP: 0px } UL.calendarWeek LI { BORDER-BOTTOM: #cdcdcd 1px solid; POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } UL.calendarWeek LI UL:first-child { BORDER-TOP: medium none } UL.calendarWeek UL LI:first-child { BORDER-TOP: medium none } UL.calendarWeek LI H3.weekDay { PADDING-BOTTOM: 0.3em; MARGIN: 0px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BACKGROUND: #e3efff; COLOR: #666; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 0.3em } UL.calendarWeek LI H3.weekDay:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.calendarWeek LI UL LI { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ededed 1px solid; PADDING-TOP: 6px } UL.calendarWeek LI UL LI:hover { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:focus { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:active { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI H4 { PADDING-BOTTOM: 1px; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 3px; WIDTH: 10em; PADDING-RIGHT: 3px; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 1px } UL.calendarWeek LI DIV { MARGIN-LEFT: 11em } UL.calendarWeek LI DIV.contextMenuContainer { MARGIN: 0px 0px 0px -3px } UL.calendarWeek LI UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } .diffbox-wrapper { MARGIN: 9px auto; WIDTH: 80% } .legendbox-wrapper { MARGIN: 9px auto; WIDTH: 90% } .legendbox-wrapper > DIV { BORDER-LEFT: #ddd 1px solid } .legendbox-wrapper > DIV:first-child { BORDER-LEFT: medium none } .diffbox-left { FLOAT: left } .diffbox-right { FLOAT: left } .diffbox-arrow { FLOAT: left } .legendbox { FLOAT: left } .diffbox-left { WIDTH: 44% } .diffbox-right { WIDTH: 44% } .legendbox-3 { WIDTH: 33% } .legendbox-2 { WIDTH: 48% } .diffbox-left > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .diffbox-right > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #fff; PADDING-TOP: 3px } .diffbox-right > DIV { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .diffbox-left UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-right UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .legendbox UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-left UL LI:first-child { BORDER-TOP: 0px } .diffbox-right UL LI:first-child { BORDER-TOP: 0px } .legendbox UL LI:first-child { BORDER-TOP: 0px } .diffbox-left .label { WIDTH: 30%; COLOR: #666 } .diffbox-right .label { WIDTH: 30%; COLOR: #666 } .legendbox .label { WIDTH: 30%; COLOR: #666 } .diffbox-left .field { WIDTH: 59% } .diffbox-right .field { WIDTH: 59% } .legendbox .label { WIDTH: 45%; FONT-SIZE: 90% } .legendbox .field { WIDTH: 55% } .diffbox-arrow { TEXT-ALIGN: center; WIDTH: 6%; PADDING-TOP: 50px } .diffLegend-sample { POSITION: static !important; WIDTH: 90px !important; HEIGHT: 17px !important } .addedImg-sample { HEIGHT: 13px !important } .removedImg-sample { HEIGHT: 13px !important } .changedImg-sample { HEIGHT: 13px !important } .diff-html-added { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-removed { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .added-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .removed-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-added { BACKGROUND-COLOR: #cfc } .added-sample { BACKGROUND-COLOR: #cfc } .diff-html-removed { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .removed-sample { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .diff-html-changed { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .changed-sample { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .diff-html-added IMG { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .addedImg-sample { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .diff-html-removed IMG { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .removedImg-sample { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .diff-html-changed IMG { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } .changedImg-sample { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } DIV.diff-removed-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-added-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } .diff-addedImg-sample { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-removed-image { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } .diff-removedImg-sample { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } DIV.diff-added-image { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } .diff-addedImg-sample { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } DIV.blogContainer DIV.wikiPage { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid } DIV.blogContainer DIV.wikiPage H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; FONT-SIZE: 120%; PADDING-TOP: 9px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryDate { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 6px } .editWiki { MARGIN: 9px } .topRound { DISPLAY: none } .bottomRound { DISPLAY: none } .playerControls { POSITION: relative; PADDING-BOTTOM: 6px !important; MARGIN-TOP: 0px; PADDING-LEFT: 6px !important; PADDING-RIGHT: 6px !important; MARGIN-BOTTOM: 2px; PADDING-TOP: 6px !important } IMG.managedPluginStatusIcon { MARGIN: 1px 7px 3px 0px } UL.metaDataList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.metaDataList LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } UL.metaDataList LI H3 { MARGIN: 0px; DISPLAY: inline } .bb-cpgbtd { FONT-SIZE: 90% } .bb-cpgbth { FONT-SIZE: 90% } .bb-cpmgtd { COLOR: #000; FONT-SIZE: 85% } .bb-cpmgth { FONT-SIZE: 85%; FONT-WEIGHT: bold } #resizeHandle { BORDER-BOTTOM: #999 1px solid; POSITION: absolute; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 0px; WIDTH: 3px; BOTTOM: 0px; BACKGROUND: #ddd; BORDER-TOP: #999 1px solid; TOP: 0px; BORDER-RIGHT: #999 1px solid; LEFT: 200px; -moz-border-radius: 1px; -webkit-border-radius: 1px } #resizeHandle:hover { BACKGROUND: #aaa; CURSOR: e-resize } #resizeHandle .collapseControl { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #resizeHandle .pullcollapsed { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .collapseControl:hover { CURSOR: pointer } .caretTitleModifier { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; COLOR: #444; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } .landingPageColumn H3.hiddenlink .linkStatus { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0.4em } TABLE.inventory .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .additional { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .additional .left { FLOAT: left } .additional .right { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: right; COLOR: #777; PADDING-TOP: 2px } .additional .right SPAN.size { COLOR: #000; FONT-WEIGHT: bold } .additional .left SPAN.suboption { DISPLAY: block } A.add { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #b3efb3; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.add:hover { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #e4ffdf; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.remove { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffc4bf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } A.remove:hover { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffd2cf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .listColumnHead { BORDER-BOTTOM: #ccc 1px dotted; MARGIN-BOTTOM: 3px; COLOR: #555; FONT-SIZE: 90%; FONT-WEIGHT: bold } .customFormBuilderLabel { WIDTH: 88%; DISPLAY: block; WORD-WRAP: break-word } .textareaWrapper TEXTAREA { WIDTH: 100% } .textareaWrapper TABLE { WIDTH: 100% } .tools.navPalette { } DIV.instructionData { MARGIN: 0px 0px 12px } DIV.instructionData UL { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } DIV.instructionData UL LI H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 100% } DIV.instructionData UL LI.instructions { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px } DIV.instructionData UL LI.saving { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.instructionData UL LI.instructions A.browse { BORDER-BOTTOM: medium none; BORDER-LEFT: #ccc 1px solid; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .assessmentInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } .assessmentInstructions H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px }

.assessmentPortlet { Z-INDEX: 1; POSITION: fixed; RIGHT: 43px } .assessmentPortlet H3 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.assessmentPortletBlock H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.blockContents H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .savingQuestion { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: none; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #c03; FONT-SIZE: 150%; PADDING-TOP: 2px } TR.dummyVTBEFooter TD { BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 2px } .qIncomplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; COLOR: #333; BORDER-TOP: #999 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } .qComplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; BACKGROUND-COLOR: #ccc; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; FLOAT: left; COLOR: #888; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } DIV.canvasHead { PADDING-BOTTOM: 12px; MARGIN: 0.6em 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #f6f6f6; PADDING-TOP: 6px } DIV.canvasHead UL LI { BORDER-TOP: #eee 1px solid } DIV.canvasHead UL LI:first-child { BORDER-TOP: medium none } DIV.canvasHead UL LI DIV.label { COLOR: #555 } .peer_instructions { MARGIN: 12px 6px } .peerHelp { COLOR: #555 } H2.evaluator { MARGIN: 1em 0px 0.3em } H2.evaluator SPAN { FONT-SIZE: 90%; FONT-WEIGHT: normal } DIV.peerCriteriaStatus { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; BACKGROUND: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 0.3em } DIV.peerCriteriaStatus A.itemHeadOpen { MARGIN: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 90%; FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV.peerCriteriaStatus A.itemHeadOpen:hover { TEXT-DECORATION: underline } DIV.peerCriteriaStatus TD.qStatus { PADDING-BOTTOM: 4px; PADDING-LEFT: 1px; WIDTH: 5%; PADDING-RIGHT: 1px; PADDING-TOP: 4px } DIV.peerCriteriaStatus TD.qStatus A SPAN { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #fff 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 1px solid; PADDING-TOP: 1px } DIV.peerCriteriaStatus TD.qStatus A SPAN.qComplete { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qComplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qIncomplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus A SPAN IMG { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 12px; PADDING-RIGHT: 2px; HEIGHT: 12px; PADDING-TOP: 2px } .questionNumber { FONT-WEIGHT: bold } .questionType { FONT-WEIGHT: bold } .questionNumber { COLOR: #aaa } .questionDiv { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: -1px 0px 6px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.6em } .questionDiv H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: 0px 0px 0.6em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv P { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv DIV.criteriaText { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .questionDiv DIV.submission_text { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; WIDTH: 100%; PADDING-RIGHT: 4px; HEIGHT: 150px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .questionDiv TABLE { WIDTH: 98% } .questionDiv TABLE TABLE { WIDTH: auto } .questionDiv TD.label { WIDTH: 150px; WHITE-SPACE: nowrap } #creceipt { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: red; FONT-WEIGHT: bold; PADDING-TOP: 4px } UL.fileData { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.fileData LI { BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FLOAT: left; PADDING-TOP: 2px } UL.listNav { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: #ddd; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.listNav LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: #ededed; FLOAT: left; COLOR: #2d2680; PADDING-TOP: 0px } UL.listNav LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.listNav LI A:hover { BACKGROUND-COLOR: #dedede; TEXT-DECORATION: underline } UL.listNav LI A.active { BORDER-BOTTOM: #000 2px solid; BORDER-LEFT: #000 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BACKGROUND: #fff; COLOR: #000; BORDER-TOP: #000 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 2px solid; PADDING-TOP: 2px } UL.evaluation { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.evaluation LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 4px } UL.evaluation LI P { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 0px; WIDTH: 79%; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } UL.evaluation H4 { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 4px; WIDTH: 20%; PADDING-RIGHT: 0px; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } UL.evaluation LI P SPAN { COLOR: #555 } DIV.stepPanel DIV.user_html { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.stepPanels H4.defaultCursor { CURSOR: default } H4.defaultCursor { CURSOR: default } .qShow { DISPLAY: block } .qHide { DISPLAY: none } .completionContainer { PADDING-BOTTOM: 6px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainerLarge { PADDING-BOTTOM: 6px; HEIGHT: 75px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainer A IMG { VERTICAL-ALIGN: baseline } .pagedRumble { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 14px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px } .pagedPointsOutsideBar { POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; TOP: 0px; RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 0px; LEFT: auto } .pagedPoints { PADDING-BOTTOM: 6px; LINE-HEIGHT: 100%; MARGIN: -5px 24px -5px -10px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 5px } .designAreaHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaFooter { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaFooter H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaHeader .headertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .designAreaFooter .footertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV#emptyText { MARGIN: 0.6em 16px } .infoListWrapper { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #assessmentGradeForm .infoListWrapper { MARGIN: 0px -12px 18px } .infoListWrapper H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .infoListWrapper H3 A { PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -443px; PADDING-TOP: 3px } .infoListWrapper H3 A.open { BACKGROUND: url(images/indicators.png) no-repeat 0px -1040px } .infoList { MARGIN: 6px 12px } .infoList > LI { PADDING-BOTTOM: 0px !important; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 3px !important } .infoListWrapper .infoList > LI { BORDER-TOP: #cdcdcd 1px dotted } .infoList LI:first-child { BORDER-TOP: medium none } .infoList LI DIV H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .details .infoList { MARGIN-TOP: 0px !important } .infoListFloat { MARGIN: 0px } .infoListFloat LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 3px !important; PADDING-LEFT: 10px !important; PADDING-RIGHT: 10px !important; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 3px !important } .copyQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .linkQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .copyQuestion { BACKGROUND: url(/images/ci/icons/file_copy_ti.png) no-repeat 1px center } .linkQuestion { BACKGROUND: url(/images/ci/icons/file_link_ti.png) no-repeat 1px center } DIV.contentListRight { Z-INDEX: 1000; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 9px; RIGHT: 9px; FONT-WEIGHT: normal; PADDING-TOP: 4px } DIV.contentListRight A { MARGIN-LEFT: 4px; FONT-WEIGHT: bold } DIV.contentListRight SPAN:first-child + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN[style*='none']:first-child + SPAN { DISPLAY: none } DIV.contentListRight SPAN[style*='none']:first-child + SPAN + SPAN { DISPLAY: none } DIV.contentListRight SPAN SPAN { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 9px } DIV.contentListRight STRONG { PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.assessmentHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } DIV.assessmentHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 3px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.assessmentHeader DIV { MARGIN: 3px; COLOR: #555 } .questionShell { WIDTH: 100% } .questionShell > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TBODY > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell > TBODY > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH.labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell .labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell TD.valueCell { WIDTH: 83% } .questionShell .correctAnswer { WIDTH: 2% } .questionShell .field { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 15px; WIDTH: 95%; PADDING-RIGHT: 15px; PADDING-TOP: 0px } .questionShell .field IMG { POSITION: absolute; TOP: 52%; LEFT: -2px } .questionShell .field .vtbegenerated IMG { POSITION: relative; TOP: auto; LEFT: auto } .questionShell .vtbegenerated { WIDTH: 95%; DISPLAY: inline !important } .questionShell TD.valueCell TABLE .vtbegenerated { DISPLAY: inline !important } .takeQuestionDiv .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } #assessmentGradeForm .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } DIV.multiAssign { MARGIN: 3px 0px 9px } DIV.multiAssign UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; LIST-STYLE-IMAGE: none; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI.read { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI P { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } DIV.multiAssign UL LI.label { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.1em; PADDING-LEFT: 0px; WIDTH: 12em; PADDING-RIGHT: 0px; WHITE-SPACE: normal; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #888; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI P SPAN { COLOR: #888 } DIV.multiAssign A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } H3 A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.multiAssign A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.simpleLink { DISPLAY: block; COLOR: #666; FONT-WEIGHT: normal } H3 SPAN.status A.buttonMicro { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } H3 SPAN.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 DIV.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 SPAN.status SPAN { COLOR: #888 } H3 DIV.status SPAN { COLOR: #888 } H3 DIV.status { DISPLAY: inline } .gbtable_header DIV.gbText { text-shadow: 0 -1px 0 #777 } .gbtable THEAD DIV.gbText { text-shadow: 0 -1px 0 #777 } .subActionBar:hover { Z-INDEX: 1000 } .subActionBar DIV.block { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar DIV.button { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar SPAN.block { FLOAT: none } .subActionBar SPAN.button { FLOAT: none } .subActionBar LI.sub { POSITION: relative } .subActionBar FIELDSET LEGEND + DIV.block { BORDER-LEFT: 0px } .subActionBar SELECT { MAX-WIDTH: 180px; VERTICAL-ALIGN: middle } .subActionBar DIV.button { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .subActionBar DIV.last { BORDER-RIGHT: medium none } .subActionBar FIELDSET { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .subActionBar OPTGROUP { FONT-STYLE: normal; MARGIN-TOP: 6px; COLOR: #777; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal } .subActionBar OPTGROUP OPTION { COLOR: #000 } .subActionBar UL LI.sortableSelector A { PADDING-LEFT: 18px } .navPageHeader { TEXT-ALIGN: center; MARGIN: 1em 0px } .navPageHeader H3 { DISPLAY: inline; MARGIN-LEFT: 12px } .navPageHeader SPAN { MARGIN: 0px 6px 0px 0px; COLOR: #888; FONT-WEIGHT: normal } FIELDSET.secondaryActions { FLOAT: right } DIV.secondaryBlock { FLOAT: right } .cellInfoPanel { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #eee 1px solid; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid } .cellStatus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #f6f6f6; FONT-SIZE: 85%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .cellStatus DIV { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 2px } .statusTitle { BACKGROUND: #eee; COLOR: #666 } .statdata { COLOR: #000; OVERFLOW: hidden } .cellStatus DIV.gbTableTimeStamp { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; FLOAT: right; COLOR: #666; PADDING-TOP: 2px } .sortImage { POSITION: absolute; TOP: 9px; LEFT: 6px } .bubble { Z-INDEX: 1000; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } .bubble UL { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #e2eefe; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; OVERFLOW: hidden; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid; PADDING-TOP: 6px } .bubble UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 4px; PADDING-LEFT: 0px; WIDTH: 174px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #666; CLEAR: left; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .bubble UL LI SPAN { WIDTH: 80px; DISPLAY: block; FLOAT: left; COLOR: #666; FONT-WEIGHT: normal; MARGIN-RIGHT: 3px } .bubble UL LI SPAN.icon { WIDTH: 20px; FLOAT: left; OVERFLOW: hidden } .bubble UL LI SPAN.label { WIDTH: 147px; FONT-SIZE: 100%; FONT-WEIGHT: normal } .bubbleStem { POSITION: relative; WIDTH: 190px; HEIGHT: 14px } .bottom .bubbleStem { BOTTOM: 4px } .top .bubbleStem { TOP: -2px } .left .bubbleStem { PADDING-LEFT: 24px } .right .bubbleStem { TEXT-ALIGN: right; RIGHT: 24px } .selectList { Z-INDEX: 100; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #viewList { Z-INDEX: 1000 !important } .selectList LI { Z-INDEX: 101; MARGIN: 0px 4px 0px 0px; FLOAT: left } .selectList .sub A { DISPLAY: block; TEXT-DECORATION: none } .selectList .sub:hover UL { TOP: 20px !important; LEFT: 0px } .selectList .sub UL LI { POSITION: static !important; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .selectList .sub UL LI H4 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #888; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .selectList .sub UL LI H4 { WIDTH: 152px } .selectList .sub UL LI A { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:hover { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:focus { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub A #currentView { BACKGROUND-IMAGE: none } .selectList .sub A #currentSortBy { BACKGROUND-IMAGE: none } .selectList .sub A #currentColSortDir { BACKGROUND-IMAGE: none } UL.selectList LI.sub UL LI.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } UL.selectList LI.sub UL LI.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } DIV.gradeDetails { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 6px } DIV.gradeDetails DIV.label { WIDTH: 15% } SPAN.unstyled { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 0px } @media Print { DIV.hideOnPrint { DISPLAY: none } } DIV.gradeDetailsStep { BORDER-BOTTOM: #ccc 2px solid; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px 0px 6px } .gradeInfoHeader { PADDING-BOTTOM: 3px; MARGIN: 0px -12px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3 { PADDING-BOTTOM: 3px; MARGIN: 0px 4px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 3px } .gradeInfoHeader H3 SPAN { COLOR: #000; FONT-WEIGHT: bold } .gradeInfoHeader H3.root { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #888; COLOR: #fff; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3.root SPAN { COLOR: #fff } UL.gb_currView LI.sub UL LI.favorite A { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } UL.gb_currView LI.sub UL LI.favorite A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } .navStatusButtons .taskbuttondiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.staticFooter DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader { MARGIN: 10px 0px 0px } DIV.staticFooter DIV.details { BORDER-BOTTOM: #ddd 1px solid } .gbColumns_rumble { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ddd 1px solid } .staticHeader { POSITION: relative; ZOOM: 1; CLEAR: both } .staticFooter { POSITION: relative; ZOOM: 1; CLEAR: both } .staticHeader DIV.itemHeaderControl { RIGHT: 0px } .staticFooter DIV.itemHeaderControl { RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { RIGHT: 0px } .staticHeader DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticFooter DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticHeader DIV.itemHeaderControl A { DISPLAY: inline-block } .staticFooter DIV.itemHeaderControl A { DISPLAY: inline-block } UL.gbCategories LI DIV.itemHeaderControl A { DISPLAY: inline-block } UL.dragableHighlight { BORDER-BOTTOM: #999 1px dashed; PADDING-BOTTOM: 3px; MARGIN: 12px -30px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; BORDER-TOP: #999 1px dashed; PADDING-TOP: 12px } UL.gbCategories LI H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticHeader H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticFooter H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } UL.gbCategories LI H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticHeader H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticFooter H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.areaHighlight DIV.container { BACKGROUND: #f9f9f9 } DIV.areaHighlight DIV.bottomRound B { BACKGROUND: #f9f9f9 } UL.dragableHighlight LI H3.item { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .dragableHighlight DIV.details { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } .dbThreadInfo DL { MARGIN: 1em } .dbThreadInfo DT { PADDING-BOTTOM: 0.1em; MARGIN: 0px; PADDING-LEFT: 0.1em; WIDTH: 8em; PADDING-RIGHT: 0.1em; FLOAT: left; COLOR: #999; CLEAR: left; FONT-WEIGHT: bold; PADDING-TOP: 0.1em } .dbThreadInfo DD { PADDING-BOTTOM: 0.1em; MARGIN: 0px 0px 0px 9em; PADDING-LEFT: 0.1em; PADDING-RIGHT: 0.1em; PADDING-TOP: 0.1em } .rating { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 80px; PADDING-RIGHT: 0px; BACKGROUND: url(images/controls.png) no-repeat 0px -20px; HEIGHT: 16px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .star0 { BACKGROUND-POSITION: 0px -20px } .star1 { BACKGROUND-POSITION: 0px -36px } .star2 { BACKGROUND-POSITION: 0px -52px } .star3 { BACKGROUND-POSITION: 0px -68px } .star4 { BACKGROUND-POSITION: 0px -84px } .star5 { BACKGROUND-POSITION: 0px -100px } UL.rating LI { TEXT-INDENT: -999em; CURSOR: pointer } UL.rating LI A { Z-INDEX: 200; POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 0px; TEXT-DECORATION: none; LEFT: 0px } UL.rating LI.one A { LEFT: 0px } UL.rating LI.two A { LEFT: 16px } UL.rating LI.three A { LEFT: 32px } UL.rating LI.four A { LEFT: 48px } UL.rating LI.five A { LEFT: 64px } UL.rating LI A:hover { Z-INDEX: 2; WIDTH: 80px; BACKGROUND: url(images/controls.png) no-repeat -90px -36px; HEIGHT: 16px; OVERFLOW: hidden; LEFT: 0px } UL.rating LI.one A:hover { BACKGROUND-POSITION: -90px -36px } UL.rating LI.two A:hover { BACKGROUND-POSITION: -90px -52px } UL.rating LI.three A:hover { BACKGROUND-POSITION: -90px -68px } UL.rating LI.four A:hover { BACKGROUND-POSITION: -90px -84px } UL.rating LI.five A:hover { BACKGROUND-POSITION: -90px -100px } DIV.collectionViewReadMessageBorder { BORDER-LEFT: #ccc 1px solid; MARGIN-LEFT: 30px } DIV.collectionViewUnreadMessageBorder { BORDER-BOTTOM: #999 3px solid; BORDER-LEFT: #999 3px solid; MARGIN-LEFT: 30px; BORDER-TOP: #999 3px solid; BORDER-RIGHT: #999 3px solid } TABLE.treeframe TR TD { VERTICAL-ALIGN: middle } TABLE.tree_view TR TD IMG { VERTICAL-ALIGN: middle } TABLE.treeframe { MARGIN: 0px } TABLE.treeframe TBODY TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe THEAD TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe TR.high { BACKGROUND-COLOR: transparent } TR.thread TD { VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid } TR.thread TD IMG { VERTICAL-ALIGN: middle } TABLE.unreadmessageborder { BORDER-BOTTOM: #666 3px solid; BORDER-LEFT: #666 3px solid; BORDER-TOP: #666 3px solid; BORDER-RIGHT: #666 3px solid } TABLE.readmessageborder { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TR.show { DISPLAY: table-row } TR.hide { DISPLAY: none } .loadingelipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #ffc; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .gradefield { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 9px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #000; FONT-SIZE: 120%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 4px } .gradefield INPUT { BORDER-BOTTOM: #666 2px solid; BORDER-LEFT: #666 2px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-FAMILY: arial, sans-serif; BACKGROUND: #fff; FONT-SIZE: 110%; VERTICAL-ALIGN: middle; BORDER-TOP: #666 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #666 2px solid; PADDING-TOP: 1px } .gradefield INPUT.inputtypebutton { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; DISPLAY: inline; BACKGROUND: #ededed; HEIGHT: auto; FONT-SIZE: 80%; OVERFLOW: visible; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .gradefield A { FONT-SIZE: 120%; FONT-WEIGHT: bold } .gradefield SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; COLOR: #555; FONT-SIZE: 80%; PADDING-TOP: 0px } .overridegrade { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 3px 0px 3px 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline; FONT-SIZE: 80%; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .overridegrade INPUT.inputtypebutton { MARGIN-TOP: -3px; FONT-SIZE: 70%; VERTICAL-ALIGN: middle; FONT-WEIGHT: normal } DIV.parentmessage { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #ededed; CLEAR: both; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .availability { PADDING-BOTTOM: 1px; FONT-STYLE: italic; MARGIN: 6px 0px; PADDING-LEFT: 3px; WIDTH: auto; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TD.tag_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.msg_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.checkbox_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } TD.prevnextpostarea { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } H3.dbheading { MARGIN-TOP: 0px; DISPLAY: inline; MARGIN-BOTTOM: 0px; FONT-WEIGHT: normal } .dbThread { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa 1px solid; MARGIN: 24px 30px; BACKGROUND: #eee; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 3px 6px #ccc; -webkit-box-shadow: 0 3px 6px #ccc; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbThreadCheckbox { POSITION: absolute } .dbThreadCheckbox INPUT { MARGIN: 10px } .dbThread .dbThreadInfo { PADDING-BOTTOM: 1em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; COLOR: #555; PADDING-TOP: 1em } .dbThreadInfo DL { MARGIN: 0px; WIDTH: 50%; FLOAT: left; FONT-SIZE: 95% } .dbThreadBody { PADDING-BOTTOM: 2em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; BACKGROUND: #fff; PADDING-TOP: 2em } P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbParentPost P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbThreadHeader { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter { PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadHeader .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadFooter .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } .dbThreadHeader .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } DIV.spacerDiv { CLEAR: both } .threadButtons .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .dbThreadInfo .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo P { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.6em } .dbThreadInfo P.detailButtons { FLOAT: right } .dbThreadTree { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MIN-HEIGHT: 80px; MAX-HEIGHT: 200px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #threadArea { PADDING-BOTTOM: 18px; MARGIN: 0px -30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } #message { MARGIN: 0px -30px -20px; BORDER-TOP: #ccc 1px solid } #message_upper { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: -20px -30px 0px } .dbParentPost { BORDER-BOTTOM: #bbb 1px dashed; BORDER-LEFT: #bbb 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -0.6em 0px 1.2em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #bbb 1px dashed; BORDER-RIGHT: #bbb 1px dashed; PADDING-TOP: 0.6em; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbParentPost H4 { MARGIN: 0px 0px 0.6em } .dbParentPost H4 A { WIDTH: 100%; DISPLAY: block } .dbParentPost P { PADDING-BOTTOM: 1.2em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .dbParentPostBody { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; MARGIN-BOTTOM: 0.6em; BACKGROUND: #fcfcfc; CLEAR: both; PADDING-TOP: 0.6em } .loadingElipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: 12px auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #fff7de; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .unreadmessage { FONT-WEIGHT: bold } H3.unreadmessage { FONT-WEIGHT: bold } .unreadmessage.dbheading { FONT-SIZE: 100% } .unread-count { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #128fa8; COLOR: #fff; PADDING-TOP: 2px; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px } #threadArea DIV.checked { BACKGROUND-COLOR: #eee } #threadArea DIV.checked_top { BACKGROUND-COLOR: #eee } #threadArea DIV.checked { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } #threadArea DIV.checked_top { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } DIV.blogContainer { WIDTH: 74%; FLOAT: left } DIV.blogContainer H3.blogHead { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer DIV.blogEntry { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogContainer DIV.blogEntry H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; WORD-WRAP: break-word; BACKGROUND: url(images/small_discussions.gif) no-repeat 8px 9px; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 9px } DIV.blogContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 3px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } DIV.blogContainer DIV.entryDate { COLOR: #444; FONT-SIZE: 95% } DIV.blogContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.blogContainer DIV.entryFooter { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #eaeaea; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.5% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px -12px; DISPLAY: none; BORDER-TOP: #999 1px solid; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.blogContainer DIV.entryFooter DIV.addBlogComment H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .addBlogComment .stepcontent OL { WIDTH: 100% } .addBlogComment .stepcontent OL LI { WIDTH: 100% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment DIV.controls { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.blogContainer UL.entryComments { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eaeaea; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.blogContainer UL.entryComments LI P { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } DIV.blogContainer UL.entryComments LI P.commentDate { Z-INDEX: 10; BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: right; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; MARGIN: 2px 0px -1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bubble_top_thin.gif) no-repeat 15px 100%; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #444; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.blogContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.blogContainer DIV.blogInstructions H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.journalNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.contentAreaNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } .messageCollectionContainer { FLOAT: left } DIV.blogNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { WORD-WRAP: break-word; OVERFLOW: hidden } DIV.blogNav UL.blogArchiveList LI A { WIDTH: 100%; WORD-WRAP: break-word } .indentedWikiList { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 22px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .indentedWikiList IMG { MARGIN: 0px 3px 0px -22px } .blogNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .journalNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .blogNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } .journalNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogNav LI.currentBlog { FONT-WEIGHT: bold } DIV.blogNav LI.currentBlog SPAN { FONT-WEIGHT: normal } DIV.blogContainer .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.blogNav .newItems { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav .gradeStatus { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.blogNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.blogNav UL UL { MARGIN-LEFT: 9px } DIV.blogNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } DIV.journalContainer { WIDTH: 74%; FLOAT: left; MARGIN-RIGHT: 1% } DIV.journalContainer H3.blogHead { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.journalContainer DIV.blogEntry { BORDER-BOTTOM: #eee 3px solid; POSITION: relative; BORDER-LEFT: #eee 0px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 36px; PADDING-RIGHT: 0px; BACKGROUND: url(images/blog_notebook_paper.gif) #fff repeat-y 0px 0px; BORDER-TOP: #eee 3px solid; BORDER-RIGHT: #eee 3px solid; PADDING-TOP: 0px } DIV.journalContainer DIV.blogEntry H4 { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 12px } DIV.journalContainer DIV.entryDate { Z-INDEX: 100; BORDER-BOTTOM: #c0dace 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; PADDING-TOP: 3px } DIV.journalContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; PADDING-TOP: 12px } DIV.journalContainer DIV.entryFooter { PADDING-BOTTOM: 12px; MARGIN: 0px 0px 0px -31px; PADDING-LEFT: 43px; PADDING-RIGHT: 12px; ZOOM: 1; BACKGROUND: url(images/blog_notebook_paper_bot.gif) repeat-x center bottom; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.35% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment { DISPLAY: none; MARGIN-BOTTOM: 6px } DIV.journalContainer UL.entryComments { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #c0dace 1px solid; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.journalContainer UL.entryComments LI P { PADDING-BOTTOM: 0px; MARGIN: 4px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI P.commentDate { COLOR: #444; MARGIN-LEFT: 19px; FONT-SIZE: 90% } DIV.journalContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: url(images/small_blog_comment.gif) no-repeat 0px 3px; COLOR: #000; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 3px } DIV.journalContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.journalContainer DIV.blogInstructions H4 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.blogInstructions P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { OVERFLOW: hidden } DIV.journalNav LI.currentBlog { FONT-WEIGHT: bold } DIV.journalNav LI.currentBlog SPAN { FONT-WEIGHT: normal } .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.journalNav .newItems { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.journalContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.journalNav UL UL { MARGIN-LEFT: 9px } DIV.journalNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } #blogNavLinks { POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 6px; RIGHT: 6px; PADDING-TOP: 0px } .contentAreaPalette UL#aboutBlog LI.currentBlogView { BORDER-BOTTOM: #0078cb 2px solid; BORDER-LEFT: #0078cb 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; MARGIN-BOTTOM: 3px; BACKGROUND: #eff6ff; BORDER-TOP: #0078cb 2px solid; BORDER-RIGHT: #0078cb 2px solid; PADDING-TOP: 2px } .currentBlogView A { COLOR: black; TEXT-DECORATION: none } UL.blogArchiveList { MARGIN-LEFT: 16px } UL.blogArchiveList LI { PADDING-BOTTOM: 4px } #gradeWidget SPAN#blogGradeValue { POSITION: relative; PADDING-LEFT: 6px } #blogGradeValue IMG { POSITION: absolute; TOP: 0px; LEFT: 0px } .contentAreaNav A.itemHead { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 6px } .contentAreaPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } DIV.blogNav .contentAreaPalette:first-child { BORDER-TOP: 0px } DIV.journalNav .contentAreaPalette:first-child { BORDER-TOP: 0px } .rightColumn-narrow .contentAreaPalette:first-child { BORDER-TOP: 0px } .contentAreaPalette UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .contentAreaPalette LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 0px } .contentAreaPalette LI LI { FONT-SIZE: 100% } DIV.iconLegendBlog { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .contentAreaNav A#blogListLink { PADDING-RIGHT: 48px } #loginPageContainer { MARGIN: 0px auto; MIN-HEIGHT: 100%; HEIGHT: auto !important } #loginHeader { POSITION: absolute; TOP: 0px; RIGHT: 0px } #loginHeader UL LI { POSITION: relative; MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; BACKGROUND: #888; VERTICAL-ALIGN: top; BORDER-TOP: 0px } #loginHeader UL LI A { PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 12px; WIDTH: 28px; PADDING-RIGHT: 12px; DISPLAY: inline-block; HEIGHT: 18px; PADDING-TOP: 6px } #loginHeader UL LI:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang H2:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang:hover H2 { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginHeader UL LI:first-child { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI:first-child A { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI IMG { DISPLAY: none } #loginHeader UL LI.font-size:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.contrast:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.font-size A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast:before { CONTENT: "c" } #loginHeader UL LI:hover:before { COLOR: #fff; CURSOR: pointer } #loginHeader UL LI.contrast { BORDER-LEFT: #777 1px solid; MARGIN-LEFT: -4px } #loginLang { POSITION: absolute; TOP: 0px; LEFT: 0px } #loginLang H2 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; BACKGROUND: #888; HEIGHT: 17px; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 4px; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0 } #loginLang H2 SPAN { TEXT-INDENT: -999px; WIDTH: 0px; DISPLAY: inline-block; OVERFLOW: hidden } #loginLang H2:before { FONT: 140%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "W"; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginLang H2:hover:before { COLOR: #fff } #loginLang UL { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 150px; PADDING-RIGHT: 6px; TOP: -1000px; PADDING-TOP: 6px; LEFT: -1000px } #loginLang:hover UL { WIDTH: 175px; TOP: 28px; LEFT: 0px; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0 } #loginLang H2:hover:after { Z-INDEX: 100 } #loginLang:hover H2:after { Z-INDEX: 100 } #loginLang UL LI A { WIDTH: auto } DIV.loginBody { PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BACKGROUND: url(images/Bb_learn_small.png) no-repeat 94px 94px; PADDING-TOP: 260px } DIV.loginBody .receipt { PADDING-BOTTOM: 14px; MARGIN: 0px auto 16px; PADDING-LEFT: 19px; WIDTH: 409px; PADDING-RIGHT: 4px; PADDING-TOP: 12px } #loginBox { TEXT-ALIGN: center } #loginBox UL { MARGIN: 0px auto; WIDTH: 415px } #loginBox LI { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #loginBox LI + LI + LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } #loginBox LI + LI + LI + LI { POSITION: relative; TEXT-ALIGN: right; DISPLAY: block } #loginBox LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #loginBox LI INPUT { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100%; PADDING-RIGHT: 10px; FONT-SIZE: 140%; PADDING-TOP: 10px; -moz-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1) } #loginBox INPUT[type='text'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='password'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='text']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox LI INPUT[type='submit'] { PADDING-BOTTOM: 7px; MARGIN: -31px -9px 0px 12px; PADDING-LEFT: 22px; WIDTH: auto; PADDING-RIGHT: 22px; FONT-SIZE: 130%; PADDING-TOP: 7px } #loginFormTitle { POSITION: absolute; DISPLAY: none } #loginFormText { POSITION: absolute; DISPLAY: none } DIV.portlet #loginFormTitle { POSITION: static; DISPLAY: block } DIV.portlet #loginFormText { POSITION: static; DISPLAY: block } #loginOptions { TEXT-ALIGN: center; MARGIN: 38px auto 26px; WIDTH: 600px } #loginOptions H2 { MARGIN: 10px } #loginOptions P { MARGIN: 10px; COLOR: #444; FONT-SIZE: 0.85em } #loginOptions UL LI { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI.subOption { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } #loginOptions UL LI.subOption A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } .forgot A { BORDER-BOTTOM: #0099b6 1px dotted } #loginOptions UL LI A:hover { BORDER-BOTTOM-STYLE: solid } #loginOptions UL LI.subOption A:hover { BORDER-BOTTOM-STYLE: solid } .forgot A:hover { BORDER-BOTTOM-STYLE: solid } #loginText { TEXT-ALIGN: center; PADDING-BOTTOM: 18px; PADDING-LEFT: 80px; PADDING-RIGHT: 80px; DISPLAY: none; BACKGROUND: #5f6062; BORDER-TOP: #777 1px solid; PADDING-TOP: 12px } #loginText P SPAN { COLOR: #fff; FONT-SIZE: 105%; FONT-WEIGHT: bold } #loginText P { MARGIN: 0px; COLOR: #ededed; FONT-SIZE: 95% } #loginImage { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } #loginImage IMG { MARGIN: 0px auto } #loginAnnouncements { PADDING-BOTTOM: 7px; MARGIN: 0px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 24px } #loginAnnouncements H3 { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 9px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: none; COLOR: #555; FONT-SIZE: 110%; PADDING-TOP: 6px } #loginAnnouncements UL { TEXT-ALIGN: center; MARGIN: 0px auto; WIDTH: 800px } #loginAnnouncements UL LI:before { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:after { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:before { LEFT: 8px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } #loginAnnouncements UL LI:after { RIGHT: 8px; -moz-transform: rotate(2deg); -webkit-transform: rotate(2deg) } #loginAnnouncements LI { POSITION: relative; TEXT-ALIGN: justify; PADDING-BOTTOM: 24px; MARGIN: 0px 0px 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; ZOOM: 1; BACKGROUND: #fff; COLOR: #666; FONT-SIZE: 95%; VERTICAL-ALIGN: top; PADDING-TOP: 18px; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15) } #loginAnnouncements UL LI STRONG:first-child { MARGIN: 0px 0px 12px; FONT-FAMILY: Georgia, serif; FLOAT: left; COLOR: #000; FONT-SIZE: 115% } #loginAnnouncements UL LI STRONG + EM { TEXT-ALIGN: right; MARGIN: 0px; DISPLAY: block; FONT-FAMILY: Georgia; FLOAT: right } #loginAnnouncements UL LI STRONG + EM + BR { DISPLAY: none } #loginAnnouncements UL LI .vtbegenerated { LINE-HEIGHT: 1.38; CLEAR: both } #loginAnnouncements UL LI:first-child { BORDER-TOP: 0px } #loginAnnouncements A { BORDER-BOTTOM: #128fa8 1px dotted } #loginAnnouncements A:hover { BORDER-BOTTOM-STYLE: solid } #loginAnnouncements A:focus { BORDER-BOTTOM-STYLE: solid } #loginHeader H1 { DISPLAY: none } #loginHeader H2 { DISPLAY: none } #loginHeader .productLogo { DISPLAY: none } #loginOptions #gatewayButtonsTitle { DISPLAY: none } #loginOptions #gatewayButtonsInstructions { DISPLAY: none } .login-page #copyright { POSITION: absolute; TEXT-ALIGN: center; MARGIN-TOP: 24px; WIDTH: 900px; BOTTOM: 24px; MARGIN-LEFT: -450px; LEFT: 50% } #loginAnnouncements + #copyright { POSITION: relative } .loginCopyright { WIDTH: 580px !important } .login-page #copyright .logo { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; PADDING-TOP: 0px } .login-page #copyright .newCopyright { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .loginCopyright .legal { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .additionalInfo { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .legal { BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; WIDTH: 24.5em; PADDING-RIGHT: 12px; PADDING-TOP: 3px } #loginPane + #copyright .legal P { MARGIN: 0px; DISPLAY: inline } #loginPane + #copyright .additionalInfo P { MARGIN: 0px; DISPLAY: inline } .login-page .copyrightDetailContents { MIN-HEIGHT: 6.5em; MARGIN-LEFT: -394px; LEFT: 50% } H1.pageTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .caliperTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .discoverTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .unitHomePageTitle { MARGIN: -60px -30px 5px } .caliperTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .unitHomePageTitle H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .discoverTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } .unitHomePageTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .caliperTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .unitHomePageTitle A.browseNoImg { PADDING-BOTTOM: 3px; PADDING-TOP: 2px } .reports { MIN-WIDTH: 810px; BACKGROUND: #f0f0f0 } .reports .navigationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .container { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports #dataCollectionContainer { MARGIN: 0px } .reports DIV[id*='step'] { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .reports UL { MARGIN: 12px } .reports .stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports UL LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; PADDING-TOP: 0px } .reports .label { COLOR: #777 } .reports .field { COLOR: #000 } .reports UL LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .reports H1 { PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 9px } .reports H2 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; PADDING-TOP: 3px } .reports H3 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .reports H3 A IMG { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .reports H3.steptitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; LETTER-SPACING: 0px; COLOR: #fff; FONT-SIZE: 110%; PADDING-TOP: 4px } .reports H4 { PADDING-BOTTOM: 3px; MARGIN: 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; COLOR: #fff; FONT-SIZE: 115%; PADDING-TOP: 3px } .reports H5 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 6px; MARGIN: 12px -12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .reports .attachments { MARGIN: 0px } .reports t.wide { MARGIN: 0px; WIDTH: 100% } #toc { LIST-STYLE-POSITION: outside; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: decimal; MARGIN: 12px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #toc UL { MARGIN: 0px 24px 24px } .toc_div { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; PADDING-BOTTOM: 4px; MARGIN: 6px 18px 18px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid; PADDING-TOP: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .toc_div OL LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports .toc_div H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .toc_div H2 A IMG { MARGIN-RIGHT: 6px } .toc_div A.toggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #f6f6f6; FLOAT: right; FONT-SIZE: 95%; TOP: -4px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .toc_div A.toggle:hover { BACKGROUND: #fff } .backtotop { FLOAT: right } .dateofreport { FLOAT: right } .dateofreport { MARGIN: 6px 18px 12px 0px } .reports .block { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 18px 24px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px 4px 0 4px; -webkit-border-radius: 4px 4px 0 4px } .backtotop { POSITION: relative; MARGIN-BOTTOM: -40px; FLOAT: right; MARGIN-RIGHT: -1px } .backtotop A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f6f6f6; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .backtotop A:hover { BACKGROUND: #fff } .backtotop A IMG { MARGIN-RIGHT: 5px } DIV.fontPreview { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 4px; MARGIN: 3px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 4px } .textareaDiv { PADDING-BOTTOM: 6px } .textareaDiv TABLE { WIDTH: 98% } .textareaDiv TABLE TABLE { WIDTH: 100% } .textareaDiv TABLE TABLE TABLE { WIDTH: 100% } .textareaDiv TEXTAREA { WIDTH: 100%; BORDER-TOP: #666 2px solid } DIV.textToolbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 97.7%; PADDING-RIGHT: 0px; BACKGROUND: #f6f6f6; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } DIV.textToolbar A { WHITE-SPACE: nowrap; FONT-SIZE: 90% } DIV.textToolbar LABEL { PADDING-LEFT: 4px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.textToolbar SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } .previewTextArea { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #999 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 459px; PADDING-RIGHT: 0px; DISPLAY: none; BACKGROUND: #fff; HEIGHT: 112px; OVERFLOW: auto; BORDER-TOP: #999 2px solid; BORDER-RIGHT: #999 2px solid; PADDING-TOP: 0px } .previewTextArea DIV.previewTitle { BORDER-BOTTOM: #eee 2px solid; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; PADDING-TOP: 2px } .previewTextArea DIV.previewTitle A { FLOAT: right } .previewTextArea DIV.previewTitle H6 { MARGIN: 0px; FLOAT: left; FONT-SIZE: 90% } .previewTextArea DIV.previewContent { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .messageContainer H6 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .messageContainer P { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .messageVariable { BORDER-BOTTOM: #ed9 1px solid; BORDER-LEFT: #ed9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; BORDER-TOP: #ed9 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ed9 1px solid; PADDING-TOP: 0px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .myPlaces .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .explore .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .myPlaces A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .myPlaces A:hover { TEXT-DECORATION: underline } .myPlaces A:focus { TEXT-DECORATION: underline } .myPlaces A.home { PADDING-RIGHT: 20px } .myPlaces SPAN.homeIconWrap { POSITION: absolute; BACKGROUND: url(/images/ci/icons/clphomepage/home_ti.gif) no-repeat 0px 0px; TOP: 3px; RIGHT: 3px } .myPlaces SPAN.homeIconWrap IMG { WIDTH: 16px; HEIGHT: 16px } .myPlaces A.unit { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.course { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.ee { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.program { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.workspace { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.unit { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.unit:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.course { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.course:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.ee { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.ee:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.program { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.program:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.workspace { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .myPlaces A.workspace:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .explore A { PADDING-LEFT: 30px; BACKGROUND: url(images/indicators.png) no-repeat 9px -1489px } .explore H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .wizardBody .locationPane { MARGIN: 0px; DISPLAY: block } .wizardBody .breadcrumbs .courseName { DISPLAY: none } .wizardBody .breadcrumbs .courseId { DISPLAY: none } .wizardBody .breadcrumbs { HEIGHT: 24px } .wizardBody .path .root A:before { POSITION: relative; FONT-FAMILY: "Pictos"; COLOR: #aaa; FONT-SIZE: 20px; CONTENT: "H"; TOP: -2px; FONT-WEIGHT: normal } .wizardBody .modeSwitchWrap { POSITION: absolute; TOP: 15px; RIGHT: 12px } .wizardBody { BACKGROUND: #fff } .wizardBody .container { POSITION: static } .wizardBody #contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 210px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 10px; PADDING-TOP: 12px } .wizardBody FORM#contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .topRound { DISPLAY: none } .wizardBody > .locationPane > .contentPaneWide > .topRound { POSITION: absolute; DISPLAY: block; TOP: 60px } .wizardBody #pageTitleDiv IMG { DISPLAY: none } .wizardBody .reqfield { MARGIN: 0px 0px 6px -6px; FLOAT: none } .wizardBody #containerdiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardHead H2 { MARGIN: 0px; FONT-SIZE: 110% } .wizardHead .helphelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .contentPaneWide > .contentBox > .pageTitle H1 { FONT-SIZE: 150% } .wizardBody .containerWizard { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .wizardBody .contentPaneWide > .contentBox > .pageTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 18px; MARGIN: -13px -12px 24px -224px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .wizardBody .contentPaneWide > .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .wizardHead { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; MARGIN-BOTTOM: 24px; BACKGROUND: #efede3; PADDING-TOP: 12px } .wizardBody #dataCollectionContainer { MARGIN: 0px } .wizardHead + .container { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px 4px 4px 4px } .wizardBody .containerWizard .container { HEIGHT: auto } .wizardBody .containerWizard .locationPane { MARGIN-TOP: 12px } .wizardBody UL.contentList LI DIV.details { OVERFLOW-X: visible } .wizardFinishText { MARGIN: 6px 0px 150px } .wizardSubmit { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px -79px -210px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #ccc 1px solid; TOP: 18px; PADDING-TOP: 18px } .wizardSubmit INPUT[name='cancel'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='Previous'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='finish'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='cancel']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='cancel']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[type=image] { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .wizardSubmit SPAN { MARGIN: 0px 18px; COLOR: #999 } .wizardSubmit SPAN STRONG { COLOR: #000 } .wizardBottomRound B.inner { BACKGROUND: #fff1c5 } .wizardBottomRound B.outer { BACKGROUND: #fff1c5 } .wizardBottomRound B.middle { BACKGROUND: #fff1c5 } .navigationPaneWizard { PADDING-BOTTOM: 0px; MARGIN-TOP: 63px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .navigationPaneWizard DIV B.inner { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.middle { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.outer { MARGIN-RIGHT: 0px !important } .navigationPaneWizard .navPalette { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .wizardBody #courseMenuPalette { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .wizardBody #courseMenuPalette DIV.navPaletteContent { -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navigationPaneWizard H2 { PADDING-BOTTOM: 6px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; LETTER-SPACING: 0.2em; COLOR: #00add0; FONT-SIZE: 90%; FONT-WEIGHT: 100; PADDING-TOP: 6px } .navigationPaneWizard .navPalette SPAN { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #ededed; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .navigationPaneWizard .navPalette LI { PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #777; FONT-SIZE: 95%; PADDING-TOP: 6px } .navigationPaneWizard .navPalette UL LI:first-child { POSITION: relative; BORDER-TOP: medium none } .navigationPaneWizard .navPalette UL LI.currentStep { COLOR: #000; FONT-WEIGHT: bold } .navigationPaneWizard .navPalette UL LI.currentStep:after { POSITION: absolute; LINE-HEIGHT: 0.5; COLOR: #999; FONT-SIZE: 18px; CONTENT: "?"; TOP: 9px; RIGHT: 0px } .containerWizard .controlPanel .navPaletteContent A { PADDING-BOTTOM: 4px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(../../../images/ci/ng/portlet_expand.gif) no-repeat 2px 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 4px } .containerWizard .navPaletteContent H2 { MARGIN: 0px; FONT-SIZE: 105% } .containerWizard .navPaletteContent H2 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px } .containerWizard .controlpanel LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #logDetail { OVERFLOW-Y: auto; HEIGHT: 300px } .totalMsgs { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 14px !important; PADDING-RIGHT: 6px !important; COLOR: #555; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 11px !important } .latestEntry { FLOAT: right !important; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal } .log-summary { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } .log-summary A { MARGIN: 0px 3px; DISPLAY: inline-block } .log-summary LI { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .sis-seperator { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .log-summary LI:first-child { BORDER-LEFT: medium none } .log-type { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; COLOR: #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .log-summary .log-type { FONT-SIZE: 120% } .log-error { BACKGROUND: #ef3e36 } .log-warning { BACKGROUND: #fcb040 } .log-message { BACKGROUND: #0b9444 } .log-debug { BACKGROUND: #00aeef } .log-header { MARGIN: 0px 0px 9px } .attachments .log-type { MIN-WIDTH: 6em; TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; LETTER-SPACING: 0.1em; FONT-SIZE: 90%; FONT-WEIGHT: normal } .table-scroll-wrapper TABLE { MARGIN: 0px } .table-scroll-wrapper TBODY { OVERFLOW-Y: auto; HEIGHT: 200px; OVERFLOW: hidden } .row-selected { BACKGROUND-COLOR: #e2eefe !important } .log-search > DIV > DIV { PADDING-BOTTOM: 0px !important; MARGIN: 6px 6px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 9px !important; DISPLAY: inline-block; BORDER-RIGHT: #bbb 1px dotted; PADDING-TOP: 0px !important } .answerSavedButton { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavingButton { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .timeUpWarning { COLOR: #cf0c0c } .thirtySecondWarning { COLOR: #cf0c0c } .oneMinuteWarning { COLOR: #cf0c0c } .fiveMinuteWarning { COLOR: #000 } .halfTimeWarning { COLOR: #000 } .headerForProgressBar { Z-INDEX: 100; POSITION: relative } DIV.assessmentPortletBlock H3.headerForProgressBar A { BACKGROUND: none transparent scroll repeat 0% 0% } .progressBar { Z-INDEX: 90; POSITION: absolute; BOTTOM: 0px; TOP: 0px; LEFT: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .progressBarStyle { BACKGROUND: #b6f796 } .progressBarStyleOneMin { BACKGROUND: #ffe79f } .progressBarStyleThirtySec { BACKGROUND: #ffafaf } .progressBarStyleOvertime { BACKGROUND: #ffafaf } .timerBar { BORDER-BOTTOM: #fff 2px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: #fff 2px solid; PADDING-BOTTOM: 3px; MARGIN: 4px 14px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; FONT-SIZE: 105%; BORDER-TOP: #fff 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 2px solid; PADDING-TOP: 3px; -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 9px; -webkit-border-radius: 9px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timer STRONG { Z-INDEX: 100; POSITION: relative } .timerText { PADDING-BOTTOM: 6px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; PADDING-TOP: 6px } .liveArea.timer { PADDING-BOTTOM: 9px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 6px } .questionStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 3px } .timedQuestionStatus { PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 2px groove; PADDING-TOP: 3px } .completionContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .questionStatus .questionStatusLabel { MARGIN: 0px; LETTER-SPACING: 0px; FONT-WEIGHT: normal } .questionStatus .questionStatusLabel A { COLOR: #666; TEXT-DECORATION: none } .questionStatus .questionStatusLabel A:hover { COLOR: #000; TEXT-DECORATION: underline } .timerMessage { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 2px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timeLabel { COLOR: #666; FONT-WEIGHT: normal } .timeValue { FONT-SIZE: 120% } .timer-collapsed.timer-toggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 0px 2px; PADDING-TOP: 0px } .timer-expanded.timer-toggle { POSITION: absolute; WIDTH: 20px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 3px 4px; HEIGHT: 20px; TOP: 5px; LEFT: 4px } .timerBar .timerLabel:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .timerMessage:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .progressBarStyleOvertime + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "t" } .progressBarStyleOneMin + .timerLabel:before { COLOR: #7f6b2f; CONTENT: "!" } .progressBarStyleThirtySec + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "!" } .timerMessage:before { CONTENT: "t" } .halfTimeWarning:before { COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } #collabRubricList .collabRubricListTypeContainer { MARGIN: 4px } .rubricGradingTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricGradingTable TH { COLOR: #45586f } .rubricTable TH { COLOR: #45586f } .rubricTable THEAD TH { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .rubricTable THEAD TH:first-child { BORDER-LEFT: medium none } .rubricGradingTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .rubricGradingTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH LABEL { FONT-WEIGHT: normal } .rubricTable TBODY TH INPUT { FONT-WEIGHT: normal } .rubricTable TBODY TH > SPAN { FONT-WEIGHT: normal } .rubricGradingTable .rubricCellHeader { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rubricGradingTable .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricSelectedValue { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricCellDescription { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingList .radioLabel { PADDING-BOTTOM: 3px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT-WEIGHT: bold; PADDING-TOP: 3px } .rubricGradingTable .rubricCellContainer { POSITION: relative; MIN-HEIGHT: 30px; OVERFLOW: hidden } .rubricCellRadio { POSITION: absolute; TOP: 6px } .rubricGradingList .rubricCellRadio { POSITION: absolute; TOP: 2px } .selectedCell .rubricCellRadio { TOP: -60px } .pointContainer { FONT-WEIGHT: bold } .rubricGradingTable .feedback { DISPLAY: none } .rubricGradingTable .selectedCell .feedback { DISPLAY: block } .rubricGradingTable .feedback TEXTAREA { WIDTH: 99% } .rubricGradingTable .selectedCell { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px; COLOR: #000; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .3); box-shadow: 0 0 6px rgba(0, 0, 0, .3) } .rubricGradingList .selectedCell { BACKGROUND: url(images/button_ok_ti.png) no-repeat 4px 3px } .rubricGradingTable TBODY TD:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #d1eaef; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .rubricTable TBODY TD:hover { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricGradingTable TBODY .selectedCell:hover { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px } .rubricCriteriaHead { WIDTH: 15% !important } .rubricInlineEdit { POSITION: relative } .rubricInlineEdit > DIV { Z-INDEX: 100; POSITION: absolute; WHITE-SPACE: nowrap } .gridActionBar { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gridActionBar .data TH { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .stepcontent .gridActionBar LI { PADDING-BOTTOM: 0px; MARGIN-BOTTOM: 0px } .rubricGradingTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricSelectedValue { DISPLAY: block; FONT-SIZE: 130%; FONT-WEIGHT: bold } .rangePercent { COLOR: #666; FONT-SIZE: 90%; FONT-WEIGHT: normal } .selectedCell .rangeValue { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #aaa 1px dashed; PADDING-TOP: 6px } .rubricControlContainer .containerTabs { MARGIN: 0px } .rubricControlContainer .contentAreaBlock { MARGIN: 0px } .rubricGradingList .rubricGradingCell { POSITION: relative; MARGIN: 1px 0px; OVERFLOW: hidden } .rubricGradingList .feedback { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .rubricGradingList .feedback TEXTAREA { WIDTH: 99% !important } .rubricGradingList H4 { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .rubricGradingList H4 SPAN { POSITION: absolute; PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 0px; RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 1px } .rubricGradingTotalPoints { MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingOverride { PADDING-BOTTOM: 6px; MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingComments .editor { MARGIN-TOP: 20px } .rubricGradingComments .rubricVtbeLabel { DISPLAY: block; MARGIN-BOTTOM: 10px } .alignmentPanel TR { COLOR: #555 } .alignmentPanel .gradingRubric { BACKGROUND-COLOR: #ffd; COLOR: #000 } .alignmentPanel .gradingRubric .title { FONT-WEIGHT: bold } .alignmentPanel UL.nav SPAN { PADDING-LEFT: 3px } .rubricPanel THEAD TR TH { WHITE-SPACE: normal !important } .rubricPopupContainer .rubricControlContainer { MARGIN: 0px 0px 10px } .rubricPopupContainer .onlyOne.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .onlyOne.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .last.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricGradingCell .pointRangeEdit { DISPLAY: none } .selectedCell.rubricGradingCell .pointRangeView { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .last.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricGradingTable .pointRangeView { DISPLAY: block; FONT-WEIGHT: bold } .selectedCell.rubricGradingCell .pointRangeEdit { DISPLAY: block; FONT-WEIGHT: bold } TD[align='right'] { TEXT-ALIGN: right !important } TD[align='left'] { TEXT-ALIGN: left !important } TR[align='right'] { TEXT-ALIGN: right !important } TR[align='left'] { TEXT-ALIGN: left !important } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: small; PADDING-TOP: 0px !important } .vtbegenerated P { MARGIN-BOTTOM: 4px } .vtbegenerated ADDRESS { FONT-STYLE: italic; DISPLAY: block } .vtbegenerated IMG { FILTER: alpha(opacity = auto) !important; opacity: auto } .vtbegenerated UL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated OL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated LI { LIST-STYLE-POSITION: inside } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated H5 { FONT-SIZE: 90% } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 35px } .vtbegenerated UL[type='circle'] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type='square'] LI { LIST-STYLE-TYPE: square } .vtbegenerated UL[type='disc'] LI { LIST-STYLE-TYPE: disc } .inlineVtbegenerated { DISPLAY: inline } .tree .treeNodeIcon { WIDTH: 16px; HEIGHT: 16px } .navPaletteContent .submenu LI.favorite { PADDING-LEFT: 10px } .navPaletteContent UL[id*='files_groupContents'] .favorite { PADDING-LEFT: 0px } .columnPalette H5 { MARGIN: 6px 0px 3px; COLOR: #555 } .blogNav .stepcontent { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .button-split-left { DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #f6f6f6 2px solid; -webkit-border-bottom-right-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -moz-border-radius-bottomright: 0 } .button-split-left:hover { BORDER-RIGHT: #555 2px solid } .button-split-right { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FLOAT: left; MARGIN-LEFT: -1px; PADDING-TOP: 4px; -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0 } .full_evaluation_view_component H3 { MARGIN: 18px 0px 3px } .full_evaluation_view_component H3:first-child { MARGIN: 9px 0px 3px } .gradeSide_panel .container { POSITION: relative; PADDING-RIGHT: 45% } .gradeSide_panel .contentListPlain { MARGIN: -20px 0px 0px -30px } .collabContainer { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .gradeSide { WIDTH: 36%; TOP: 20px; RIGHT: 20px } .gradeSide { BORDER-BOTTOM: #555 3px solid; POSITION: absolute; BORDER-LEFT: #555 3px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; BOTTOM: auto; PADDING-RIGHT: 4px; BACKGROUND: #888 0px 0px; BORDER-TOP: #555 3px solid; TOP: 20px; RIGHT: 20px; BORDER-RIGHT: #555 3px solid; PADDING-TOP: 4px; LEFT: auto; border-radius: 4px } .collapseTabsData A.close { TOP: 4px; RIGHT: 4px } .evalColumn .taskbuttondiv { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .gradeItemsWrapper { OVERFLOW: visible } .gradeSide .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .evalColumn { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 18px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2) } .evalColumn .liveArea { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .column-wrapper { POSITION: relative; OVERFLOW: visible !important } .column-nav { WIDTH: 190px; FLOAT: left } .colspan2 { POSITION: relative; MARGIN-LEFT: 190px } .colspan2#standards-column { BORDER-LEFT: #ccc 3px double; PADDING-BOTTOM: 12px; MARGIN-BOTTOM: -41px; TOP: -20px; LEFT: -3px } .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; COLOR: #555; PADDING-TOP: 18px } .column-nav .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; PADDING-TOP: 18px } .pageHead-2 H2 { MARGIN: 0px; FONT-SIZE: 120%; FONT-WEIGHT: normal } .pageHead-2 SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .pageHead-2 SPAN:first-child { BORDER-RIGHT: #aaa 1px dotted } .column-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .column-nav-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .category-column .column-nav-inner { BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee',endColorstr = '#cccccc',GradientType = 1); BORDER-LEFT: medium none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #column_lrn_std_category { BORDER-RIGHT: #ccc 3px double } .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 18px !important; BACKGROUND: #fff; PADDING-TOP: 6px !important } #standards-column .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 6px !important } .column-nav .column-inner { DISPLAY: none } .navmenu-list-item { BORDER-BOTTOM: #777 1px solid; POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 21px; DISPLAY: block; WORD-WRAP: break-word; PADDING-TOP: 12px } .navmenu-list > LI:hover { BACKGROUND: #777 } .navmenu-list > LI > A { COLOR: #f6f6f6; FONT-SIZE: 110%; FONT-WEIGHT: 200; TEXT-DECORATION: none } .navmenu-list A SPAN { DISPLAY: none } .navmenu-list .active { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active:hover { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active A { COLOR: #000 } .column2-nav .category-column .navmenu-list LI > A { PADDING-LEFT: 24px } .column-wrapper .actionBar > UL > LI > A { PADDING-BOTTOM: 8px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; COLOR: #333; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 8px } .column-wrapper .actionBar > UL > LI > A:hover { BACKGROUND: #ccc } .standards .button-2 { COLOR: #444 } .standards .button-2:hover { BORDER-BOTTOM-COLOR: #aaa; BORDER-TOP-COLOR: #aaa; BORDER-RIGHT-COLOR: #aaa; BORDER-LEFT-COLOR: #aaa } .category-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .category-column .navmenu-list-item { BORDER-BOTTOM-COLOR: #d6d6d6; BORDER-TOP-COLOR: #d6d6d6; BORDER-RIGHT-COLOR: #d6d6d6; BORDER-LEFT-COLOR: #d6d6d6 } .category-column .navmenu-list-item A { COLOR: #333 } .category-column .navmenu-list-item:hover { FILTER: alpha(opacity = 100) !important; BACKGROUND-COLOR: #e0e0e0; opacity: 1 } .category-column .navmenu-list .active { Z-INDEX: 1001; BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; RIGHT: -4px; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; -moz-box-shadow: -4px 3px 5px #DDD; -webkit-box-shadow: -4px 3px 5px #DDD; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #DDD; border-radius: 4px 0 0 4px } .navmenu-list .inactive { FILTER: alpha(opacity = 75); opacity: .75 } .standards .actionBar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 32px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .actionBar#actionbarlrn_std_doc { BORDER-BOTTOM-COLOR: #777 } .actionBar#actionbarlrn_std_doc > UL > LI > A { COLOR: #f0f0f0; -moz-border-radius: 4px 0 0 0; -webkit-border-radius: 4px 0 0 0; border-radius: 4px 0 0 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .actionBar#actionbarlrn_std_doc > UL > LI > A:hover { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_doc > UL > LI:hover > A { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_category > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std_category > UL > LI > A:hover { BACKGROUND: #ccc; COLOR: #000 } .actionBar#actionbarlrn_std { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 9px 0px 20px; BACKGROUND: #f0f0f0; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .actionBar#actionbarlrn_std > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std > UL > LI > A:hover { BACKGROUND: #ddd; COLOR: #000 } .standards .actionBar > UL { MARGIN: 0px; HEIGHT: 32px } .standards .actionBar UL LI { FLOAT: left } .standards .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .standards .searchbar .selectedItem LABEL SPAN { FONT-SIZE: 90% } .navmenu-actions-1 { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #f0f0f0; BORDER-TOP: #ccc 1px solid; TOP: 4px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px; LEFT: -4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .active .navmenu-actions-1 { LEFT: -4px } .navmenu-actions-2 { POSITION: absolute; PADDING-BOTTOM: 1px !important; PADDING-LEFT: 1px !important; PADDING-RIGHT: 1px !important; TOP: 22px; PADDING-TOP: 1px !important; LEFT: -4px } .navmenu-list-item .contextMenuContainer { POSITION: absolute; MARGIN-TOP: -8px; TOP: 50%; RIGHT: 9px; opacity: 0 } .navmenu-list .active .contextMenuContainer { opacity: 1 } .navmenu-list .active:hover .contextMenuContainer { opacity: 1 } .navmenu-list-item:hover .contextMenuContainer { opacity: .5 } .navmenu-list-item:hover .contextMenuContainer:hover { opacity: 1 } .standards .column-1 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-3 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 1%; WIDTH: 46%; PADDING-RIGHT: 1%; PADDING-TOP: 0px } .standards .column-3 { MARGIN: 0px; WIDTH: 31% } .standardForm > H3 + DIV.column-2 { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standards .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .standards .stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standardForm { POSITION: absolute !important; TOP: 38px; LEFT: 6px } .inline-form-title { MARGIN: 6px 0px } .docs-column .column-nav-inner { BORDER-BOTTOM: #777 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#999999',endColorstr = '#777777',GradientType = 1); BORDER-LEFT: #777 1px solid; MIN-HEIGHT: 400px; BACKGROUND: #999; COLOR: #fff; BORDER-TOP: #777 1px solid; BORDER-RIGHT: medium none; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px } .docs-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .iconToggleWrapper { ZOOM: 1; DISPLAY: inline-block } .iconToggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px -5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .quickAddPal .iconToggle { MARGIN: 0px 0px 0px -1px } .iconToggle:first-child { MARGIN: 0px; -moz-border-radius: 2px 0 0 2px; -webkit-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px } .iconToggle:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #e8f0fe; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .stepcontent .iconToggle .fieldHelp { Z-INDEX: 100; BORDER-BOTTOM: #555 1px solid; POSITION: absolute; MIN-WIDTH: 200px; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #fff; FONT-SIZE: 90%; BORDER-TOP: #555 1px solid; TOP: 100%; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 3px; LEFT: 0px; -moz-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .iconToggle:hover .fieldHelp { Z-INDEX: 10; DISPLAY: block } .iconToggleWrapper .selectedItem { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #cdcdcd; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset } .iconToggle LABEL SPAN { DISPLAY: none; COLOR: #555 } .selectedItem LABEL SPAN { DISPLAY: inline } .selectedItem .fieldHelp STRONG { DISPLAY: none } #lrn_std .panelHead { PADDING-BOTTOM: 9px; PADDING-LEFT: 25px; PADDING-RIGHT: 16px; PADDING-TOP: 9px } #lrn_std .sHeader { MARGIN-LEFT: -21px } #lrn_std .contextMenuContainer { } .lb-content .itemTray { POSITION: absolute } .lb-drawer { PADDING-BOTTOM: 54px } .lb-noTitleBar #pageTitleBar { DISPLAY: none } .lb-locationPane { MARGIN: 0px } .lb-locationPane #contentPanel { MARGIN: 0px } .lb-contentBox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none; border-radius: 0 } .overSoftLimit { COLOR: red } .autocomplete_pos { TOP: 15px !important; LEFT: 0px !important } .autocomplete { Z-INDEX: 5; BORDER-BOTTOM: #888 1px solid; POSITION: absolute; BORDER-LEFT: #888 1px solid; BACKGROUND-COLOR: #fff; WIDTH: 250px; BORDER-TOP: #888 1px solid; BORDER-RIGHT: #888 1px solid; box-shadow: 0 0 3px rgba(0, 0, 0, .3) } .autocomplete .selected { BACKGROUND-COLOR: #ccc } .autocomplete UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; CURSOR: pointer; PADDING-TOP: 2px } .quickAddPal .field { POSITION: relative } .quickAddPal .noLabelField { POSITION: relative } .renameCategory { Z-INDEX: 1200; POSITION: absolute; BOTTOM: 0px; DISPLAY: block; TOP: 0px; RIGHT: 0px; LEFT: 0px } .renameCategory A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } LI SPAN.labelMenuItem { COLOR: #000; FONT-WEIGHT: bold } #toolSettingsWrapper_table TBODY TR { BORDER-TOP: #ddd 1px dashed } #toolSettingsWrapper_table TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #toolSettingsWrapper_table TBODY TR.rowTitle TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle { BACKGROUND-COLOR: #ebebeb; BORDER-TOP: #ddd 1px solid } #toolSettingsWrapper_table TBODY TR.rowTitle H3 { MARGIN: 0.5em 0px } .tooltipContainer { POSITION: relative; TEXT-DECORATION: none } .tooltip { DISPLAY: none; WORD-WRAP: break-word } .tooltip-top { DISPLAY: none; WORD-WRAP: break-word } .tooltipContainer:hover .tooltip { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltipContainer:hover .tooltip-top { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltip:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip-top:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 1px; COLOR: #3b3b3b; LEFT: 1px; -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); -khtml-transform: rotate(90deg) } .tooltip-top:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: auto; COLOR: #4f4f4f; TOP: 0px; LEFT: -2px; -moz-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -o-transform: rotate(-90deg); -khtml-transform: rotate(-90deg) } .paddedMetadata { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 6px !important; PADDING-TOP: 6px !important } .quickAddPal .colorlist LI A.transparent { BACKGROUND-IMAGE: url(/images/swatches/transparent.gif); BACKGROUND-POSITION: -1px -1px; COLOR: transparent } .quickAddPal .colorlist LI A.transparent:hover { BACKGROUND-POSITION: -2px -2px } DIV.checkListActions { PADDING-BOTTOM: 10px } .quickAddPal .colorlist LI A.transparent:active { BACKGROUND-POSITION: -3px -3px } .quickAddPal .colorlist LI A.transparent:focus { BACKGROUND-POSITION: -3px -3px } .theme_scrollbar_content H2 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; FONT-STYLE: italic; MARGIN: -35px 0px 15px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; LETTER-SPACING: 0.06em; COLOR: #333; FONT-SIZE: 130%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #wizard .theme_scrollbar_content H2 { COLOR: #ccc } .theme-switch-wrapper { DISPLAY: inline-block } .theme-switch { POSITION: relative; MARGIN: -14px 9px -14px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-RIGHT: #ccc 1px solid } .theme-switch .sub > A { PADDING-BOTTOM: 14px; LINE-HEIGHT: 1; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; OVERFLOW: hidden; PADDING-TOP: 14px } .theme-switch .sub > A:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .theme-switch .sub:hover > A { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .dummy-switch.theme-switch:hover { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .theme-switch A SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch SPAN SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:after { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM-COLOR: #999; TOP: -8px } .theme-switch .nav .sub UL { WIDTH: 180px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .theme-switch .nav .sub UL LI H4 { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#999999,endColorstr=#333333); PADDING-BOTTOM: 4px; MARGIN-TOP: 5px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #fff; PADDING-TOP: 4px } .theme-switch .nav .sub UL A { PADDING-BOTTOM: 4px; PADDING-LEFT: 18px; WIDTH: 142px; PADDING-RIGHT: 4px; FONT-SIZE: 95%; PADDING-TOP: 4px } BODY DIV.lb-overlay { BACKGROUND: url(images/reorder_bg.png) #bbb -10px 0px } #wizard { Z-INDEX: 1100; BORDER-BOTTOM: #666 1px solid; POSITION: fixed; BORDER-LEFT: #666 1px solid; WIDTH: 900px; BACKGROUND: #555; MARGIN-LEFT: -450px; BORDER-TOP: #666 1px solid; TOP: 5px; BORDER-RIGHT: #666 1px solid; LEFT: 50%; box-shadow: 0 11px 20px rgba(0, 0, 0, .7); border-radius: 9px; background-clip: content-box } #wizard H1 { BORDER-BOTTOM: #666 1px solid; PADDING-BOTTOM: 10px; MARGIN: 1px 0px 0px 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #494949; COLOR: #bbb; FONT-SIZE: 110%; PADDING-TOP: 10px; box-shadow: 0 -1px 0 #363636 inset; border-radius: 9px 9px 0 0; text-shadow: 0 -1px 0 #111 } #wizard .accordion-wrapper { MARGIN: 0px 30px; BACKGROUND: none transparent scroll repeat 0% 0%; border-radius: 0 0 6px 6px } #wizard .accordion_toggle { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_content { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_toggle { POSITION: relative; TEXT-ALIGN: right; PADDING-RIGHT: 60px; COLOR: #aaa; FONT-SIZE: 90%; BORDER-TOP: #444 1px solid; CURSOR: pointer; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .accordion_toggle .accordionTabLabel { FLOAT: left; COLOR: #eee; FONT-SIZE: 125%; TEXT-DECORATION: none } #wizard .accordion_toggle SPAN#selectedStructureName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle SPAN#selectedThemeName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle_help { TEXT-ALIGN: left } #wizard .accordion_toggle A#unselectStructure { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectTheme { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectStructure:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectTheme:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectStructure:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle A#unselectTheme:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle:first-child { BORDER-TOP: 0px; box-shadow: none } #wizard .accordion_content { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #3d3b3b; HEIGHT: 245px; OVERFLOW: hidden; PADDING-TOP: 0px } #wizard .accordion_content A { COLOR: #1ec8ea } #wizard .accordion_toggle_addstructure .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-1.png) no-repeat } #wizard .accordion_toggle_choosetheme .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-2.png) no-repeat } #wizard .accordion_toggle_help .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-4.png) no-repeat } #wizard .right-image { POSITION: absolute; WIDTH: 30px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center center; HEIGHT: 30px; TOP: 6px; RIGHT: 8px; opacity: .5 } #wizard .previewArea { PADDING-BOTTOM: 5px; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #474747; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 235px; MAX-HEIGHT: 235px; FONT-SIZE: 85%; OVERFLOW: hidden; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 5px } .course_welcome_help_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } .selected.course_welcome_help_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.course_welcome_help_scrollbar_handle { } .course_welcome_help_container { POSITION: relative } #wizard .previewArea .introduction { WIDTH: 80% } #wizard .previewArea .helplink { WIDTH: 80% } #wizard .previewArea .customHelp { WIDTH: 80% } #wizard .previewArea .conclusion { POSITION: absolute; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #3d3b3c; PADDING-LEFT: 10px; WIDTH: 20%; BACKGROUND-ATTACHMENT: fixed; PADDING-RIGHT: 10px; COLOR: #bbb; FONT-SIZE: 90%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } #wizard .previewArea .customHelp { PADDING-BOTTOM: 1em; MARGIN-TOP: 0.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; COLOR: #bbb; FONT-SIZE: 90%; BORDER-TOP: #555 1px dotted; PADDING-TOP: 1em } #wizard .previewArea H3 { MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 3px; FONT-SIZE: 140%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN { TEXT-TRANSFORM: uppercase; DISPLAY: block; COLOR: #888; FONT-SIZE: 65%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN SPAN { TEXT-TRANSFORM: lowercase; FONT-STYLE: italic; DISPLAY: inline; FONT-SIZE: 95% } #wizard .helplink .easylist { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN-TOP: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 0px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } #wizard .helplink .easylist LI { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; WIDTH: 46%; PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #555 2px dotted; PADDING-TOP: 3px } #wizard .helplink .easylist LI H3 { FONT-FAMILY: Georgia, serif } #wizard .helplink .easylist LI P { PADDING-LEFT: 0px } #wizard .helplink .easylist LI P { COLOR: #ddd } #wizard .log-summary { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; box-shadow: 0; border-radius: 0 } #wizard .conclusion H3 { TEXT-TRANSFORM: uppercase; MARGIN-TOP: 10px; COLOR: #888; FONT-SIZE: 100%; FONT-WEIGHT: normal } #wizard .conclusion UL { MARGIN-BOTTOM: 15px } #wizard .conclusion UL LI { MARGIN-BOTTOM: 5px } #wizard .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #wizard .content-inner { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #3d3b3b; BORDER-TOP: 0px; BORDER-RIGHT: 0px } #wizard .introtext { PADDING-BOTTOM: 1em; LINE-HEIGHT: 1.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 2em; FLOAT: left; COLOR: #ccc; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 1em } #wizard .introtext LABEL { FONT-STYLE: italic; DISPLAY: none; MARGIN-LEFT: 15px; FONT-SIZE: 85% } #wizard .introtext INPUT { FONT-STYLE: italic; FONT-FAMILY: Georgia, serif; MARGIN-BOTTOM: 10px; FONT-SIZE: 200% } #wizard .introtext .courseNameAndDescription TABLE TABLE { WIDTH: 99%; MARGIN-LEFT: 7px } #wizard .introtext TEXTAREA { FONT-SIZE: 110% } #wizard .introtext INPUT { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext TEXTAREA { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext .courseNameAndDescription { WIDTH: 60%; PADDING-RIGHT: 0.8em; FLOAT: left; MARGIN-RIGHT: 1em; BORDER-RIGHT: #666 3px dotted } #wizard .introtext P { LINE-HEIGHT: 1.4em; FONT-STYLE: italic; MARGIN: 55px 20px 0px 0px; FONT-FAMILY: Georgia, serif; FONT-SIZE: 90% } .themes .horizontal-block { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 8px; MARGIN: 35px 10px 0px; PADDING-LEFT: 0px; WIDTH: 230px; PADDING-RIGHT: 0px; HEIGHT: 184px; BORDER-TOP: #ddd 1px solid; CURSOR: pointer; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 8px } #wizard .themes .horizontal-block { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555 } .help .horizontal-block { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 250px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .themes .horizontal-block IMG { MARGIN: 0px auto; WIDTH: 203px; HEIGHT: 152px } .theme-selector { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 26px; PADDING-RIGHT: 26px; PADDING-TOP: 10px } .structure .theme-selector { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .theme-selector SPAN { FONT-SIZE: 110%; FONT-WEIGHT: bold } #wizard .selected .theme-selector SPAN { COLOR: #333 } .selected .theme-selector SPAN { COLOR: #fff } .structure .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } .themes .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } #wizard .structure .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard .themes .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected A { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard LI.selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .themes .selected.horizontal-block:hover { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } DIV.scroller { HEIGHT: 200px; OVERFLOW: hidden } .themes DIV.scroller { HEIGHT: 245px } DIV.scroller DIV.section { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: 780px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 225px; OVERFLOW: hidden; PADDING-TOP: 0px } .horizontal-block { TEXT-ALIGN: left; PADDING-BOTTOM: 6px; MARGIN: 8px 0px 0px 7px; PADDING-LEFT: 18px; WIDTH: 167px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: none; HEIGHT: 214px; FONT-SIZE: 80%; VERTICAL-ALIGN: top; PADDING-TOP: 3px; border-radius: 5px } .horizontal-block UL { MARGIN-LEFT: 4px } .structure .horizontal-block { HEIGHT: 178px; CURSOR: pointer } #wizard .gotocourse { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; PADDING-RIGHT: 2px; COLOR: #ccc; BORDER-TOP: #444 1px solid; PADDING-TOP: 10px; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .gotocourse LABEL { WIDTH: auto; DISPLAY: inline-table } #wizard .gotocourse LABEL SPAN { DISPLAY: block; COLOR: #999; FONT-SIZE: 10px } #wizard .gotocourse .button-2 { BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 8px; BORDER-TOP-COLOR: #333; MARGIN-BOTTOM: 7px; BORDER-RIGHT-COLOR: #333; FONT-SIZE: 115%; BORDER-LEFT-COLOR: #333; MARGIN-RIGHT: 25px; PADDING-TOP: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 1px 1px 0 #fefefe inset, -1px -1px 0 #888 inset; text-shadow: 0 1px 0 #BBB } #wizard .gotocourse .button-2:hover { BORDER-BOTTOM-COLOR: #222; BORDER-TOP-COLOR: #222; BORDER-RIGHT-COLOR: #222; BORDER-LEFT-COLOR: #222 } #wizard .number { POSITION: relative; LINE-HEIGHT: 1; FLOAT: left; COLOR: #999; FONT-SIZE: 150%; VERTICAL-ALIGN: middle; TOP: -1px; FONT-WEIGHT: bold; MARGIN-RIGHT: 18px } #wizard .accordion_toggle_help .number { TEXT-INDENT: -9999px; WIDTH: 20px; BACKGROUND: url(/images/ci/icons/step_star_light.png) no-repeat; HEIGHT: 20px; MARGIN-RIGHT: 14px; opacity: .4; background-size: 100% 100% } #wizard .gotocourse .secondary.button-2 { COLOR: #555; FONT-WEIGHT: normal; text-shadow: none } #wizard .gotocourse #welcomePageCancelButton { MARGIN-RIGHT: 10px } #wizard A.wizard-close:before { FONT: 150% "Utilicons"; CONTENT: "X" } #wizard A.wizard-close { POSITION: absolute; COLOR: #888; TOP: 8px; RIGHT: 13px } .theme_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 2px } #wizard .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { } .theme_scrollbar_content { TEXT-ALIGN: center; HEIGHT: 245px; OVERFLOW: hidden } .structure_scrollbar_container { POSITION: relative } .structure_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } DIV.courseStructureDescriptions .structure_scrollbar_track { MARGIN: 1px 3% 1px 0px; TOP: 10px } #wizard .structure_scrollbar_track { MARGIN: 1px 0px; TOP: 0px } #wizard .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } #wizard .selected.structure_scrollbar_handle:hover { BACKGROUND-COLOR: #777 } .selected.structure_scrollbar_handle { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle { } .selected.structure_scrollbar_handle:hover { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle:hover { } .structure_scrollbar_content { MARGIN-TOP: 30px; HEIGHT: 370px; OVERFLOW: hidden } #wizard .structure_scrollbar_content { MARGIN-TOP: 22px; HEIGHT: 200px } .courseStructureOuterDiv { MIN-WIDTH: 800px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 10px; PADDING-TOP: 0px } #wizard .courseStructureOuterDiv { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #3d3b3b; MIN-HEIGHT: 250px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .courseStructureNameScroller { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #fff; MARGIN: 10px 0px 0px; WIDTH: 170px; FLOAT: left; HEIGHT: 400px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; box-shadow: -1px 0 4px #CCC; border-top-left-radius: 4px; border-bottom-left-radius: 4px } #wizard .courseStructureNameScroller { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0px; HEIGHT: 220px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none; border-radius: 0 } .courseStructureNameScroller OL LI { MARGIN-BOTTOM: 3px; CURSOR: pointer } .courseStructureNameScroller OL LI:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .courseStructureNameScroller OL LI.courseStructureChoiceLink:focus { OUTLINE-COLOR: #fff; -moz-box-shadow: inset 0 0 6px #128FA8; -webkit-box-shadow: inset 0 0 6px #128FA8; box-shadow: inset 0 0 6px #128FA8 } #wizard .courseStructureNameScroller OL LI { MARGIN-LEFT: 13px } .courseStructureHeader { PADDING-BOTTOM: 5px; FONT-STYLE: italic; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #999; FONT-SIZE: 85%; CURSOR: default !important; PADDING-TOP: 15px } #structureDescription H3 { TEXT-ALIGN: center; MARGIN-TOP: 110px; FONT: italic 100% Georgia, serif } #wizard .courseStructureHeader { PADDING-LEFT: 0px; COLOR: #aaa; PADDING-TOP: 0px; text-shadow: 0 0 1px #222 } .courseStructureChoiceLink { PADDING-BOTTOM: 5px; PADDING-LEFT: 33px; PADDING-RIGHT: 5px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 5px } #wizard .courseStructureChoiceLink { PADDING-LEFT: 20px } .courseStructureChoiceSelected { BACKGROUND-COLOR: #f5f4ef; COLOR: #3d3b3b; border-top-left-radius: 4px; border-bottom-left-radius: 4px } .courseStructureChoiceSelected A { COLOR: #333 } #wizard .courseStructureChoiceSelected A { COLOR: #333 } .courseStructureDescriptions { POSITION: relative; HEIGHT: 400px; MARGIN-LEFT: 170px } #wizard .courseStructureDescriptions { POSITION: relative; MARGIN: 10px 0px 10px 170px; HEIGHT: 225px } .courseStructureDescriptionAndMenu { BORDER-BOTTOM: #ccc 1px solid; POSITION: static; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; BACKGROUND-COLOR: #f5f4ef; MARGIN: 10px 0px 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 20px; WIDTH: 95%; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 400px; COLOR: #333; FONT-SIZE: 12px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px } #wizard .courseStructureDescriptionAndMenu { BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; MARGIN-TOP: 0px; MIN-HEIGHT: 225px; WIDTH: 635px; HEIGHT: 225px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .courseStructureDescriptions P { MARGIN-BOTTOM: 15px } .courseStructureDescriptions H3 { TEXT-ALIGN: center; MARGIN-TOP: 30px; MARGIN-BOTTOM: 0px; COLOR: #666; FONT-SIZE: 120% } .courseStructureDescriptions BR { DISPLAY: none } .structureIncludeSampleContentCheck { BACKGROUND-COLOR: #f4f1e3; PADDING-LEFT: 15px; WIDTH: 100%; DISPLAY: block; HEIGHT: 40px; MARGIN-LEFT: -20px; PADDING-TOP: 10px; box-shadow: -10px 0 6px #CCC inset } #wizard .structureIncludeSampleContentCheck { Z-INDEX: 1; POSITION: absolute; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 7px; WIDTH: 630px; PADDING-RIGHT: 0px; HEIGHT: 25px; MARGIN-LEFT: -12px; BORDER-TOP: #ccc 1px solid; TOP: 185px; PADDING-TOP: 7px; box-shadow: 0 0 2px #999; border-radius: 5px 5px 0 0 } #wizard .accordion_content .useSelectedStructure { MARGIN-RIGHT: 15px } #wizard .accordion_content .useSelectedStructure { COLOR: #333 } #wizard .accordion_content .useExistingMenu { COLOR: #333 } #wizard .courseStructureDescriptions .structure_scrollbar_track { RIGHT: 15px } .courseStructureMenu { POSITION: relative; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; MARGIN: 0px 0px 0px 20px; MIN-HEIGHT: 400px; PADDING-LEFT: 10px; WIDTH: 200px; PADDING-RIGHT: 10px; FLOAT: right; OVERFLOW: hidden; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-top-right-radius: 5px; border-bottom-right-radius: 5px } #wizard .courseStructureMenu { PADDING-BOTTOM: 35px; MIN-HEIGHT: 265px } .courseStructureMenu .listCm .courseMenu A { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .courseStructureMenu .listCm .courseMenu .divider { PADDING-BOTTOM: 6px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 6px } .courseStructureMenu .topRound { DISPLAY: none } .courseStructureMenu .actionBarMicro { DISPLAY: none } .courseStructureMenu .bottomRound { DISPLAY: none } .courseStructureMenu #courseMenuPalette DIV.navPaletteContent { PADDING-TOP: 0px } .arrow_guide { POSITION: absolute; WIDTH: 156px; BACKGROUND: url(/images/ci/icons/left-arrow-point.png) no-repeat; HEIGHT: 34px; LEFT: 3% } #wizard .arrow_guide { TOP: 81% } .courseStructureDescription IMG { TEXT-ALIGN: center; MARGIN: 10px 0px 5px } .courseStructureDescription P.existing_text { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription P.existing_icon { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription A.button-3 { COLOR: #333; MARGIN-RIGHT: 15px } .courseStructureDescription A.existingstructure.unselectStructureButton { MARGIN-TOP: 5px; MARGIN-RIGHT: 37% } .courseStructureNameScroller .current-value { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png); BORDER-BOTTOM: #555 1px solid; POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 17px; WIDTH: 130px; BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-POSITION: 0px 20%; FONT-SIZE: 85%; TOP: 5px; FONT-WEIGHT: normal; LEFT: 15px; box-shadow: 0 -1px 0 #333 inset } #wizard .courseStructureNameScroller .current-value { TOP: 0px } .noSectionDivider { BORDER-TOP: medium none } .dividerRow { PADDING-BOTTOM: 0px !important; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 5px !important } .keyboardAccess .selectArrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .selectArrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess LABEL { DISPLAY: inline-block; FONT: italic 100% Georgia, serif; MARGIN-BOTTOM: 3px; COLOR: #777 } .keyboardAccess .selectArrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .keyboardAccess .y-arrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .access-reorder-block { MIN-WIDTH: 200px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 0px } .access-reorder-block SELECT { MIN-WIDTH: 200px } .y-arrows { TEXT-ALIGN: center; CLEAR: both } .brandingImgWrap IMG[src*='header_institution'] { POSITION: absolute; MAX-HEIGHT: 60px; TOP: 0px; LEFT: 12px } .sample-content { FONT: 113% Georgia, serif; BACKGROUND: url(images/bg_chalk_dark_s.png) 0px 0px } .sample-content .item H3 SPAN { FONT: bold 120% Georgia, serif; COLOR: #25bfcb !important } .sample-content TABLE { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated UL { MARGIN: 4px 0px } .sample-content .vtbegenerated P { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sample-content .vtbegenerated BR { HEIGHT: 1px } .sample-content.liItem:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } .buildList > LI.sample-content:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } DIV.loading-overwrite { Z-INDEX: 10000; POSITION: absolute; TEXT-ALIGN: center; WIDTH: 100%; BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) white no-repeat center 100px; HEIGHT: 100%; TOP: 0px; LEFT: 0px; opacity: 100 } DIV.loading-overwrite SPAN { POSITION: relative; FONT-SIZE: 200%; TOP: 10px } .sample-content DL { MARGIN: 0px } .sample-content DT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 9em; PADDING-RIGHT: 0px; FLOAT: left; FONT-WEIGHT: bold; PADDING-TOP: 0px } .sample-content DD { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 10em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .dueDate { COLOR: #063 } .dueDatePassed { COLOR: #900 } .inventory_paging A.inactive { opacity: .4 } .inactive { opacity: .4 } .linkLeftSpacesp { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .codeFragment { FONT-FAMILY: "Courier New" } .filteredTextHeader { BORDER-BOTTOM: 1px dotted; TEXT-ALIGN: center; BORDER-LEFT: 1px dotted; PADDING-BOTTOM: 5px; LINE-HEIGHT: 150%; BACKGROUND-COLOR: lightyellow; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline-block; BORDER-TOP: 1px dotted; BORDER-RIGHT: 1px dotted; PADDING-TOP: 5px } .filteredText { BACKGROUND-COLOR: lightyellow; COLOR: red } .floatedReceipt { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 10px !important; LINE-HEIGHT: 1.3em; BACKGROUND-COLOR: #fcfbd1 !important; MARGIN: 0px 0px 6px; PADDING-LEFT: 10px !important; WIDTH: 300px; PADDING-RIGHT: 22px !important; FONT-FAMILY: Helvetica, serif; COLOR: #333 !important; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal !important; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 10px !important; box-shadow: 1px 1px 5px #666; border-radius: 4px } .floatedReceipt A.close:before { } .floatedReceipt A.close:hover:before { } .floatedReceipt EM { FONT-WEIGHT: bold } .floatedReceipt A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: url(none); COLOR: #333 !important; BORDER-TOP: 0px; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important } .floatedReceipt A:hover { TEXT-DECORATION: none !important } .floatedReceipt#receipt_floated_theme { Z-INDEX: 1001; POSITION: absolute; TOP: 50px; RIGHT: 45px } .floatedReceipt#receipt_floated_courseMenu { Z-INDEX: 1201; POSITION: absolute; LEFT: 180px } .floatedReceipt .arrow { BORDER-BOTTOM: transparent 15px dashed; POSITION: absolute; BORDER-LEFT: transparent 15px dashed; HEIGHT: 0px; FONT-SIZE: 0px; BORDER-TOP: transparent 15px dashed; BORDER-RIGHT: transparent 15px dashed } .pointTop.floatedReceipt .arrow { BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #fcfbd1; TOP: -30px; LEFT: 58% } .pointLeft.floatedReceipt .arrow { BORDER-RIGHT-STYLE: solid; BORDER-RIGHT-COLOR: #fcfbd1; TOP: 10px; LEFT: -30px } .nav .sub .flyout .slideoutLink { FONT-WEIGHT: bold } .nav .sub .slideoutLink IMG { WIDTH: 16px; BACKGROUND: url(images/utilicons_arrows_dark.png) 16px 16px; FLOAT: right; HEIGHT: 16px } .nav .sub .slideoutLink-active { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; box-shadow: -3px 0 3px rgba(0, 0, 0, .3); border-radius: 0 } .nav .sub .slideoutLink-active IMG { BACKGROUND: url(images/utilicons_arrows_dark.png) 0px 16px } .slideoutOpen { MARGIN-LEFT: -1px !important; BORDER-RIGHT: #ccc 1px solid } .statusFilter { POSITION: relative; PADDING-LEFT: 8px; FONT-SIZE: 13px } LABEL.statusFilter { TOP: 0px } SPAN.statusFilter { TOP: 1px } .collapsible TABLE.reportcard TR TD:first-child { DISPLAY: block !important } #loginRedirectProviders H3 { MARGIN: 10px } #loginRedirectProviderList LI { MARGIN: 0px 10px 5px 0px; DISPLAY: inline-block } #loginRedirectProviderList LI IMG { WIDTH: 16px; HEIGHT: 16px } .paletteItems LABEL { MAX-WIDTH: 90%; WORD-WRAP: break-word } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems .inactive { MARGIN: 0px; opacity: .4 } DIV.comments DIV DIV.collabComments { BACKGROUND-COLOR: white; MAX-HEIGHT: 100px; OVERFLOW: auto !important } DIV.studentGradesCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetEditTabCommentPreview { WIDTH: 110px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetHistTabCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } .tooltip_show:focus { POSITION: static; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible } .radio-list { PADDING-LEFT: 20px } .radio-list LI { PADDING-BOTTOM: 4px !important; TEXT-INDENT: -26px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .radio-list LI INPUT[type=radio] { VERTICAL-ALIGN: bottom; MARGIN-RIGHT: 6px } .radio-list LI .button-4 { MARGIN-LEFT: 4px } .cartMode.csPicker #copyright { DISPLAY: none } .details .key-valueTable + .vtbegenerated { MARGIN-TOP: 12px !important } .ondemand-module { POSITION: relative; MARGIN: 14px 3px } .ondemand-module DIV { MARGIN-BOTTOM: 12px } .ondemand-module DIV A { PADDING-BOTTOM: 10px; PADDING-LEFT: 4%; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 10px; border-radius: 5px } .ondemand-module DIV A:hover { BACKGROUND: #00b3be; TEXT-DECORATION: none; box-shadow: 0 0 12px #2cb673; text-shadow: 0 -1px 0 rgba(0, 0, 0, .4) } .ondemand-module DIV A > SPAN { DISPLAY: block; MARGIN-BOTTOM: 3px; FONT-SIZE: 80%; FONT-WEIGHT: normal } .ondemand-module SPAN.release { BORDER-BOTTOM: #00add0 1px solid; POSITION: absolute; BORDER-LEFT: #00add0 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 13px; PADDING-RIGHT: 10px; BACKGROUND: #9dddea; COLOR: #000; FONT-SIZE: 85%; BORDER-TOP: #00add0 1px solid; TOP: -7px; RIGHT: -4px; BORDER-RIGHT: #00add0 1px solid; PADDING-TOP: 3px; border-radius: 12px 12px 12px 12px; text-shadow: 0 1px 0 rgba(255, 255, 255, .3) } .ondemand-module P { MARGIN: 0px 13px; FONT: italic 93%/1.45 Georgia, serif; COLOR: #666 }

@import url( theme1.css?v=9.1.90132.0 ); @import url( theme2.css?v=9.1.90132.0 );

BODY { HEIGHT: auto } HTML { HEIGHT: auto } BODY { MIN-WIDTH: 0px } DIV.topGlobalLinks { MIN-WIDTH: 0px } .navigationPane { DISPLAY: none } .contentPane { MARGIN: 0px 14px } .questionDiv .submission_text { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainerLarge { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry H4 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry .entryText { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogContainer .entryComments LI P { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .journalNav UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE THEAD TH { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TBODY TD { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TD DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .modeSwitch { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } A.cmimg-small { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .fileInputWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .field { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .noLabelField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .liveArea .stepcontent TEXTAREA { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonLibrary { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .previewTextArea { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .rating LI A:hover { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .dbThreadTree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .nav .sub UL LI A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmdiv A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .menumini A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .timediv UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentTags { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .auto_complete UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-header H2 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-content { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myPlacesContent { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myavatar { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble .detailComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeDetailsStep { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tableOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .inventory { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .brandingImgWrap { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList-read .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentListPlain .contentListRight + .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .landingPageColumn UL LI UL.datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .panelNested { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .module { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .moduleHeading { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .collapsible { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .imgWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .scroll_div { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .eudModule .eudModule-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .styledModule-dark .module-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet .itemGroups LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet UL.hierarchyList LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .customBanner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .loggedInAs { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #loggedInUserName { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .topTabs .hotItems UL.hotLinks { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmImg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemTray .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemIconHolder A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .title { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .high { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .navPaletteContent A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu H3 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .expTreeContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeContainer .tree LI H4 + UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #pickerPalette .tree > LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeScrollable { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #logDetail { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .table-scroll-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gridOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeItemsWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeSide .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV UL LI DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.comments DIV DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.studentGradesCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetEditTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetHistTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .u_scrollPanel-vertical { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentScore { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable_header DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gc_info UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI SPAN { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cumulativeSelectItems .selected_items .itemList { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .flynav UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .overrow DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .weightField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .criteriaItem { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important }

/* ================================================================== * General i18n functions * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ // internal methods function _escape(string) { // ?= does not seem to work return (''+string).replace(/^'|([^\\])'/g, "$1\\'").replace(/\n/g, "&crlf;"); } function _unescape(string) { return string.replace(/&crlf;/g, "\n"); } function _substitute(string, parameters) { for ( var key in parameters) { if ( parameters.hasOwnProperty( key ) ) { string = eval( "string.replace(/\\{" + key + "\\}/g, '" + _escape(parameters[key]) + "')" ); } } return _unescape(string); } // Public methods: these methods are instance methods of dynamically generated // Javascript bundle objects. See Java class blackboard.platform.intl.JsResource // and Perl module CI::L10n::JsResource. // Get a string from a resource bundle function i18n_get_string(key) { return this[key]; } // Get string and perform substitution using positions (arrays) or names (object) function i18n_get_formatted_string(key, parameters) { var string = this.getString(key); if (string && parameters) { // Convert to object keyed by string representation of array index if ( parameters.constructor.toString() == [].constructor.toString() ) { var array = parameters; parameters = {}; for (var i = 0; i < array.length; ++i) { parameters[''+i] = array[i]; } } string = _substitute(string, parameters); } return string; }

/* Prototype JavaScript framework, version 1.7 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key], type = typeof value; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError(); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (object.hasOwnProperty(property)) { results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toJSONEx: toJSON, // Leaving this in here to assist in debugging odd stringify issues in IE if we see them again in other contexts. toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); } function unescapeHTML() { return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#<Enumerable:' + this.toArray().inspect() + '>'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); }, hasResponder: function( callback ) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { return true; } }); return false; } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState]; // quite a high number of Interactive events can be generated on some browsers // triggering a memory issue in FF3 when building the response object. So if there is no // registered listener, quick return // see https://bugzilla.mozilla.org/show_bug.cgi?id=453709 if ( state == 'Interactive' ) { if ( this.notListeningToInteractive ) { if ( this.notListeningToInteractive.value ) return; } else { this.notListeningToInteractive = new Object(); this.notListeningToInteractive.value = ( !this.options['onInteractive'] && !Ajax.Responders.hasResponder( state ) ); if ( this.notListeningToInteractive.value ) return; } } var response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $s(element) { if (Object.isString(element)) { return document.getElementById(element); } return element; } function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { function shouldUseCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement('<input name="x">'); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCache(tagName, attributes) ? cache[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.idCounter = 1; Element.cache = { }; Element._purgeElement = function(element) { var uid = element._prototypeUID; if (uid) { Element.stopObserving(element); element._prototypeUID = void 0; delete Element.Storage[uid]; } } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, // only extend the element if it is a string - otherwise we don't need to extend the element remove: function(element) { if (Object.isString(element)) { element = $(element); } if (element.parentNode) { element.parentNode.removeChild(element); } return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = "<option value=\"test\">test</option>"; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = "<link>"; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var purgeElement = Element._purgeElement; var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) { while (element.firstChild) { element.removeChild(element.firstChild); } var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); nodes.each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(), value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType == 1) elements.push(Element.extend(element)); if (elements.length == maximumLength) break; } return elements; }, // Collect items without extending them all: rawRecursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) { elements.push(element); } return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === 1) { results.push(Element.extend(child)); } child = child.nextSibling; } return results; }, // Find the immediate descendents of the given element without extending them all rawImmediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).rawNextSiblings()); return []; }, previousSiblings: function(element, maximumLength) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, // Find the next siblings without actually extending them all rawNextSiblings: function(element) { return $(element).rawRecursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Prototype.Selector.find(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.previousSiblings(), expression, index); } else { return element.recursivelyCollect("previousSibling", index + 1)[index]; } }, next: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.nextSiblings(), expression, index); } else { var maximumLength = Object.isNumber(index) ? index + 1 : 1; return element.recursivelyCollect("nextSibling", index + 1)[index]; } }, select: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); }, adjacent: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element.parentNode).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $s(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, makePositioned: function(element) { element = $s(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source), delta = [0, 0], parent = null; element = $(element); if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className', forProp = 'for', el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'), f; el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if (element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(), fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html, force) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; var workaround = false; if (t) workaround = true; else if (force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = '&nbsp;' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) { div = div.firstChild; } } else { div.innerHTML = html; } return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')); Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); if (document.documentElement.hasAttribute) { Element.hasAttribute = function(element, attribute) { return element.hasAttribute(attribute); }; } else { Element.hasAttribute = Element.Methods.Simulated.hasAttribute; } Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = Element.Storage.UID++; uid = element._prototypeUID; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); }, purge: function(element) { if (!(element = $(element))) return; var purgeElement = Element._purgeElement; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } }); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = element.getStyle(property); } if (value === null) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value); var whole = null; var position = element.getStyle('position'); var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) { return number; } return number + 'px'; } function isDisplayed(element) { var originalElement = element; while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._prepared) return; var element = this.element; if (isDisplayed(element)) { this._prepared = true; return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = element.getStyle('position'), width = element.getStyle('width'); if (width === "0px" || width === null) { element.style.display = 'block'; width = element.getStyle('width'); } var context = (position === 'fixed') ? document.viewport : element.parentNode; element.setStyle({ position: 'absolute', visibility: 'hidden', display: 'block' }); var positionedWidth = element.getStyle('width'); var newWidth; if (width && (positionedWidth === width)) { newWidth = getPixelValue(element, 'width', context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getPixelValue(element, 'width', context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._prepared = true; }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._prepared = false; }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#<Element.Layout>"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } // Implementing a new method to avoid retesting the entire application with clientHeight function getDimensionsEx(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display != 'none') { // Safari bug return {width: element.clientWidth, height: element.clientHeight}; } return getDimensions(element); } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { element = $(element); var valueT = 0, valueL = 0, docBody = document.body; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getDimensions: getDimensions, getDimensionsEx: getDimensionsEx, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); Prototype._original_property = window.Sizzle; /*! * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; var origContext = context = context || document; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), soFar = selector; while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) selector += parts.shift(); set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { var ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { var ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { var cur = parts.pop(), pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { throw "Syntax error, unrecognized expression: " + (cur || selector); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set, match; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.match[ type ].exec( expr )) != null ) { var filter = Expr.filter[ type ], found, item; anyFound = false; if ( curLoop == result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr == old ) { if ( anyFound == null ) { throw "Syntax error, unrecognized expression: " + expr; } else { break; } } old = expr; } return curLoop; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part, isXML){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag && !isXML ) { part = part.toUpperCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part, isXML){ var isPartStr = typeof part === "string"; if ( isPartStr && !/\W/.test(part) ) { part = isXML ? part : part.toUpperCase(); for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName === part ? parent : false; } } } else { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context, isXML){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { if ( !inplace ) result.push( elem ); } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ for ( var i = 0; curLoop[i] === false; i++ ){} return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); }, CHILD: function(match){ if ( match[1] == "nth" ) { var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return /h\d/i.test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 == i; }, eq: function(elem, i, match){ return match[3] - 0 == i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } } return true; } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; case 'nth': var first = match[2], last = match[3]; if ( first == 1 && last == 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first == 0 ) { return diff == 0; } else { return ( diff % first == 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value != check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 ); } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return 0; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } (function(){ var form = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = "<a name='" + id + "'/>"; var root = document.documentElement; root.insertBefore( form, root.firstChild ); if ( !!document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = "<a href='#'></a>"; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "<p class='TEST'></p>"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; if ( !seed && context.nodeType === 9 && !isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ var div = document.createElement("div"); div.innerHTML = "<div class='test e'></div><div class='test'></div>"; if ( div.getElementsByClassName("e").length === 0 ) return; div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) return; Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ){ elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ) { elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } var contains = document.compareDocumentPosition ? function(a, b){ return a.compareDocumentPosition(b) & 16; } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; var isXML = function(elem){ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; while (element) { if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { return Element.extend(element); } element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { if (eventName === "beforeunload") { responder = function(event) { Event.extend(event, element); return handler.call(element, event); }; } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K, translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { return (translations[eventName] || eventName); }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (!registry) return element; if (!eventName) { registry.each( function(pair) { var eventName = pair.key; stopObserving(element, eventName); }); return element; } var responders = registry.get(eventName); if (!responders) return element; if (!handler) { responders.each(function(r) { stopObserving(element, eventName, r.handler); }); return element; } var i = responders.length, responder; while (i--) { if (responders[i].handler === handler) { responder = responders[i]; break; } } if (!responder) return element; if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } var _getElementsByClassName = instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return _getElementsByClassName( parentElement || document.body, className ); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#<Selector: " + this.expression + ">"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); /* * * Copyright (c) 2007 Andrew Tetlaw * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * * * * FastInit * http://tetlaw.id.au/view/javascript/fastinit * Andrew Tetlaw * Version 1.4.1 (2007-03-15) * Based on: * http://dean.edwards.name/weblog/2006/03/faster * http://dean.edwards.name/weblog/2006/06/again/ * Help from: * http://www.cherny.com/webdev/26/domloaded-object-literal-updated * */ var FastInit = { onload : function() { if (FastInit.done) { return; } FastInit.done = true; for(var x = 0, al = FastInit.f.length; x < al; x++) { FastInit.f[x](); } }, addOnLoad : function() { var a = arguments; for(var x = 0, al = a.length; x < al; x++) { if(typeof a[x] === 'function') { if (FastInit.done ) { a[x](); } else { FastInit.f.push(a[x]); } } } }, listen : function() { if (/WebKit|khtml/i.test(navigator.userAgent)) { FastInit.timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(FastInit.timer); delete FastInit.timer; FastInit.onload(); }}, 10); } else if (document.addEventListener) { document.addEventListener('DOMContentLoaded', FastInit.onload, false); } else if(!FastInit.iew32) { if(window.addEventListener) { window.addEventListener('load', FastInit.onload, false); } else if (window.attachEvent) { return window.attachEvent('onload', FastInit.onload); } } }, f:[],done:false,timer:null,iew32:false }; /*@cc_on @*/ /*@if (@_win32) FastInit.iew32 = true; document.write('<script id="__ie_onload" defer src="' + ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); document.getElementById('__ie_onload').onreadystatechange = function(){if (this.readyState == 'complete') { FastInit.onload(); }}; /*@end @*/ FastInit.listen(); /** * Only include the contents of this file once - for example, if this is included in a lightbox we don't want to re-run * all of this - just use the loaded version. (i.e. rerunning would clear page.bundle which would remove all the * language strings for the current page) */ if (!window.page) { var page = {}; page.isLoaded = false; /** * Utility for adding and using localized messages on the page. */ page.bundle = {}; page.bundle.messages = {}; page.bundle.addKey = function( key, value ) { page.bundle.messages[key] = value; }; page.bundle.getString = function( key /*, arg1, arg2, ..., argN */ ) { var result = page.bundle.messages[key]; if ( !result ) { return "!!!!" + key + "!!!!!"; } else { if ( arguments.length > 1 ) { for ( var i = 1; i < arguments.length; i++ ) { result = result.replace( new RegExp("\\{"+(i-1)+"\\}","g"), arguments[i] ); } } return result; } }; /** * Provides support for lazy initialization of javascript behavior when a certain * event happens to a certain item. */ page.LazyInit = function( event, eventTypes, initCode ) { var e = event || window.event; var target = Event.element( event ); // This is because events bubble and we want a reference // to the element we registered the handlers on. target = page.util.upToClass(target, "jsInit"); for (var i = 0; i < eventTypes.length; i++ ) { target['on'+eventTypes[i]] = null; } eval( initCode ); //initCode can reference "target" }; /** * Evaluates any <script> tags in the provided string in the global scope. * Useful for evaluating scripts that come back in text from an Ajax call. * If signalObject is passed then signalObject.evaluatingScripts will be set to false when done. */ page.globalEvalScripts = function(str, evalExternalScripts, signalObject) { //Get any external scripts var waitForVars = []; var scriptVars = [ { script: 'bb_htmlarea', variable: ['HTMLArea'] }, { script: 'w_editor', variable: ['WebeqEditors'] }, { script: 'wysiwyg.js', variable: ['vtbe_attchfiles'] }, { script: 'gradebook_utils.js', variable: ['gradebook_utils'] }, { script: 'rubric.js', variable: ['rubricModule'] }, { script: 'gridmgmt.js', variable: ['gridMgmt'] }, { script: 'calendar-time.js', variable: ['calendar'] }, { script: 'widget.js', variable: ['widget'] }, { script: 'vtbeTinymce.js', variable: ['tinyMceWrapper'] }, { script: 'WhatsNewView.js', variable: ['WhatsNewView'] }, { script: 'tiny_mce.js', variable: ['tinymce','tinyMCE'] } ]; if (evalExternalScripts) { var externalScriptRE = '<script[^>]*src=["\']([^>"\']*)["\'][^>]*>([\\S\\s]*?)<\/script>'; var scriptMatches = str.match(new RegExp(externalScriptRE, 'img')); if (scriptMatches && scriptMatches.length > 0) { $A(scriptMatches).each(function(scriptTag) { var matches = scriptTag.match(new RegExp(externalScriptRE, 'im')); if (matches && matches.length > 0 && matches[1] != '') { var scriptSrc = matches[1]; if (scriptSrc.indexOf('/dwr_open/') != -1) { // dwr_open calls will ONLY work if the current page's webapp == the caller's webapp, // otherwise we'll get a session error. THis will happen if a lightbox is loaded with // dynamic content from a different webapp (say /webapps/blackboard) while the main page // is loaded from /webapps/discussionboard. To avoid this, rewrite the url to use the // webapp associated with the current page. var newparts = scriptSrc.split('/'); var oldparts = window.location.pathname.split('/'); newparts[1] = oldparts[1]; newparts[2] = oldparts[2]; scriptSrc = newparts.join('/'); } var scriptElem = new Element('script', { type: 'text/javascript', src: scriptSrc }); var head = $$('head')[0]; head.appendChild(scriptElem); for ( var i = 0; i < scriptVars.length; i++ ) { if ( scriptSrc.indexOf( scriptVars[i].script ) != -1 ) { scriptVars[ i ].variable.each( function( s ) { waitForVars.push( s ); } ); break; } } } }); } } page.delayAddExtractedScripts(str.extractScripts(), waitForVars, signalObject); }; // Evaluate any inline script - delay a bit to give the scripts above time to load // NOTE that this is not guaranteed to work - if there are delays loading and initializing // the scripts required then code in these scripts might fail to find the required variables // If it is for our code then updating waitForVars appropriately per script will work page.delayAddExtractedScripts = function (scripts, waitForVars, signalObject) { var count = 0; if (waitForVars.length === 0) { page.actuallyAddExtractedScripts(scripts, signalObject); } else { new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( page.allVariablesDefined(waitForVars) ) { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } } else // give up if it takes longer than 5s to load { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } }.bind(this), 0.05 ); } }; page.allVariablesDefined = function(vars) { var result = true; for ( var i = 0; i < vars.length; i++ ) { if ( !window[vars[i]] ) { result = false; break; } } return result; }; page.actuallyAddExtractedScripts = function (scripts, signalObject) { var scriptExecutionDelay = 0; if( signalObject ) { scriptExecutionDelay = signalObject.delayScriptExecution; } scripts.each(function(script) { if ( script != '' ) { if ( Prototype.Browser.IE && window.execScript ) { ( function() { window.execScript( script ); }.delay( scriptExecutionDelay ) ); } else { ( function() { var scriptElem = new Element( 'script', { type : 'text/javascript' } ); var head = $$( 'head' )[ 0 ]; script = document.createTextNode( script ); scriptElem.appendChild( script ); head.appendChild( scriptElem ); head.removeChild( scriptElem ); }.delay( scriptExecutionDelay ) ); } } } ); if (signalObject) { signalObject.evaluatingScripts = false; } }; page.setIframeHeight = function () { try { var iframeElements = $$('iframe.cleanSlate'); iframeElements.each( function( iframeElement ) { if ( iframeElement.contentWindow && iframeElement.contentWindow.document && iframeElement.contentWindow.document.body ) { iframeElement.style.height = iframeElement.contentWindow.document.body.scrollHeight + 50 + 'px'; } }); } catch( e ){} }; page.onResizeChannelIframe = function( channelExtRef ) { var frameId = 'iframe' + channelExtRef; var listId = 'list_channel' + channelExtRef; var f = $( frameId ); f.style.height = f.contentWindow.document.getElementById( listId ).scrollHeight + 15 + "px"; }; /** * Contains page-wide utility methods */ page.util = {}; /** * Returns whether the specific element has the specified class name. * Same as prototype's Element.hasClassName, except it doesn't extend the element (which is faster in IE). */ page.util.hasClassName = function ( element, className ) { var elementClassName = element.className; if (elementClassName.length === 0) { return false; } if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) { return true; } return false; }; page.util.fireClick = function ( elem ) { if (Prototype.Browser.IE) { elem.fireEvent("onclick"); } else { var evt = document.createEvent("HTMLEvents"); evt.initEvent("click", true, true); elem.dispatchEvent(evt); } }; page.util.useARIA = function () { if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); var ffversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ffversion >= 1.9) { return true; } } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; var ieversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ieversion>=8) { return true; } } return false; }; // Find an element with the given className, starting with the element passed in page.util.upToClass = function ( element, className ) { while (element && !page.util.hasClassName(element, className)) { element = element.parentNode; } return $(element); }; page.util.isRTL = function () { var els = document.getElementsByTagName("html"); var is_rtl = (typeof(els) != 'undefined' && els && els.length == 1 && els[0].dir == 'rtl' ); return is_rtl ; }; page.util.allImagesLoaded = function (imgList) { var allDone = true; if (imgList) { for ( var i = 0, c = imgList.length; i < c; i++ ) { var animg = imgList[i]; // TODO - this doesn't appear to work on IE. if ( !animg.complete ) { allDone = false; break; } } } return allDone; }; // Exposes (display but keep invisible) an invisible element for measurement // recursively traverses up the DOM looking for // a parent node of element whose display == 'none' // If found, sets its style to: display:block, position:absolute, and visibility:hidden // and saves it as element.hiddenNode so it can be easily unexposed page.util.exposeElementForMeasurement = function ( element ) { element = $(element); var e = element; var hiddenNode; // find parent node that is hidden while ( !hiddenNode && e && e.parentNode) { if ( $(e).getStyle('display') === 'none') { hiddenNode = $(e); } e = $(e.parentNode); } if ( hiddenNode ) { // save original style attributes: visibility, position, & display element.hiddenNode = hiddenNode; var style = hiddenNode.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') { newStyles.position = 'absolute'; } hiddenNode.originalStyles = originalStyles; // set new style for: visibility, position, & display hiddenNode.setStyle( newStyles ); } }; // undo previous call to exposeElementForMeasurement page.util.unExposeElementForMeasurement = function ( element ) { element = $(element); if ( element && element.hiddenNode && element.hiddenNode.originalStyles ) { Element.setStyle( element.hiddenNode, element.hiddenNode.originalStyles ); element.hiddenNode.originalStyles = null; element.hiddenNode = null; } }; /** * Returns whether any part of the two elements overlap each other. */ page.util.elementsOverlap = function ( e1, e2 ) { var pos1 = $(e1).cumulativeOffset(); var a = { x1: pos1.left, y1: pos1.top, x2: pos1.left + e1.getWidth(), y2: pos1.top + e1.getHeight() }; var pos2 = $(e2).cumulativeOffset(); var b = { x1: pos2.left, y1: pos2.top, x2: pos2.left + e2.getWidth(), y2: pos2.top + e2.getHeight() }; return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; }; /** * To handle the case where the focus is visible but too close to the bottom of the page, scroll the page up a bit. */ page.util.focusAndScroll= function(elem) { elem.focus(); return page.util.ensureVisible(elem); }; page.util.ensureVisible= function(elem) { var scrolltop = document.viewport.getScrollOffsets().top; var mytop = elem.cumulativeOffset()[1]; var height = document.viewport.getDimensions().height; var realtop = mytop - scrolltop; var thirty = height * 0.3; if (realtop > (height-thirty)) { window.scrollBy(0,thirty); } return false; }; page.util.processJSProtoString = function (string, checkToken) { // This value must match the value passed as the 2nd parameter to this string. // The goal is to pass a known value, as a constant, through the javascript: pseudo-protocol // handler. We can then examine the result to determine the decoding method used by the current // browser. var sniffToken = '%C3%A9'; // There are three known decoding cases, non-translated, UTF8, and unescape if (checkToken === unescape(sniffToken)) { // Unescape decoded return decodeURIComponent(escape(string)); } else if (checkToken === sniffToken) { // Non-translated return decodeURIComponent(string); } else { // UTF8 Decoded/Unknown return string; } }; /** * Find the first action bar that precedes sourceElement * Returns the action bar div element if found, null otherwise * * @param sourceElement */ page.util.findPrecedingActionBar = function( sourceElement ) { var actionBar = null; // Loop through each ancestor of sourceElement, // starting with parent, until an action bar is found sourceElement.ancestors().each( function( item ) { actionBar = item.previous('div.tabActionBar') || item.previous('div.actionBarMicro') || item.previous('div.actionBar'); if (actionBar) { throw $break; } }); return actionBar; }; page.util.getLargestDimensions = function (element) { var width = 0; var height = 0; var dim; while (element != document) { dim = $(element).getDimensions(); if (dim.width > width) { width = dim.width; } if (dim.height > height) { height = dim.height; } element = element.up(); } return { width: width, height: height }; }; /* * Resize the current window so that it will fit the largest dimensions found for the given element. * Will also reposition on the screen if required to fit. Will not size larger than the screen. * NOTE that this will only work for popup windows - main windows are typically in a tabset in * the browser and they don't allow resizing like this. That's OK because the main use case * for this method is to make sure popup windows are resized appropriately for their content. */ page.util.resizeToContent = function (startElement) { var dim = page.util.getLargestDimensions(startElement); var newWidth = dim.width; newWidth += 25; // TODO: Haven't figured out why I need this extra space yet... if (window.innerWidth > newWidth) { newWidth = window.innerWidth; } if (newWidth > screen.width) { newWidth = screen.width; } var newHeight = dim.height; newHeight += 100; // TODO: Haven't figured out why I need this extra space yet if (window.innerHeight > newHeight) { newHeight = window.innerHeight; } if (newHeight > screen.height) { newHeight = screen.height; } var left = 0; var top = 0; if ( window.screenLeft ) { left = window.screenLeft; top = window.screenTop; } else if ( window.screenX ) { left = window.screenX; top = window.screenY; } if (left + newWidth > screen.width) { left = screen.width - newWidth; if (left < 0) { left = 0; } } if (top + newHeight > screen.height) { top = screen.height - newHeight; if (top < 0) { top = 0; } } window.moveTo(left,top); window.resizeTo(newWidth,newHeight); }; /** * Sets the css position of all li elements that are contained in action bars on the page. * Since z-index only works on positioned elements, this function can be used to ensure that * divs with a higher z-index will always appear on top of any action bars on the page. * * @param cssPosition */ page.util.setActionBarPosition = function( cssPosition ) { $$( 'div.actionBar', 'div.tabActionBar', 'div.actionBarMicro' ).each( function( actionbar ) { actionbar.select( 'li' ).each( function( li ) { li.setStyle( {position: cssPosition} ); }); }); }; /** * Class for controlling the course menu-collapser. Also ensures the menu is * the right height */ page.PageMenuToggler = Class.create(); page.PageMenuToggler.prototype = { /** * initialize */ initialize: function( isMenuOpen,key,temporaryScope ) { page.PageMenuToggler.toggler = this; this.key = key; if (temporaryScope) { this.temporaryScope = temporaryScope; } else { this.temporaryScope = false; } this.isMenuOpen = isMenuOpen; this.puller = $('puller'); this.menuPullerLink = $(this.puller.getElementsByTagName('a')[0]); this.menuContainerDiv = $('menuWrap'); this.navigationPane = $('navigationPane'); this.contentPane = $('contentPanel') || $('contentPane'); this.navigationPane = $('navigationPane'); this.locationPane = $(this.navigationPane.parentNode); this.breadcrumbBar = $('breadcrumbs'); this.menu_pTop = parseInt(this.menuContainerDiv.getStyle('paddingTop'), 10); this.menu_pBottom = parseInt(this.menuContainerDiv.getStyle('paddingBottom'), 10); this.loc_pTop = parseInt(this.locationPane.getStyle('paddingTop'), 10); if ( this.breadcrumbBar ) { this.bc_pTop = parseInt(this.breadcrumbBar.getStyle('paddingTop'), 10); this.bc_pBottom = parseInt(this.breadcrumbBar.getStyle('paddingBottom'), 10); } else { this.bc_pTop = 0; this.bc_pBottom = 0; } this.toggleListeners = []; this.onResize( null ); // fix the menu size // Doesn't work in IE or Safari.. //Event.observe( window, 'resize', this.onResize.bindAsEventListener( this ) ); Event.observe( this.menuPullerLink, 'click', this.onToggleClick.bindAsEventListener( this ) ); }, /** * Adds a listener for course menu toggle events */ addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, /** * Notifies all registered toggle event listeners that a toggle has occurred. */ _notifyToggleListeners: function( isOpen ) { this.toggleListeners.each( function( listener ) { listener( isOpen ); }); }, notifyToggleListeners: function( isOpen ) { // we call once the toggle is complete and the DOM in its new state. 2012 themes add transition, which seems // to collide with the logic to get dimensions of dom element, so the delay is a 1 sec to let time for those // transitions to be done. this._notifyToggleListeners.bind( this, isOpen ).delay( 1 ); }, /** * getAvailableResponse */ getAvailableResponse : function ( req ) { var originalMenuOpen = this.isMenuOpen ; if ( req.responseText.length > 0 ) { if ( req.responseText == 'true' ) { this.isMenuOpen = true; } else { this.isMenuOpen = false; } } if ( originalMenuOpen != this.isMenuOpen ) { this.notifyToggleListeners( this.isMenuOpen ); this.menuContainerDiv.toggle(); this.puller.toggleClassName("pullcollapsed"); this.contentPane.toggleClassName("contcollapsed"); this.navigationPane.toggleClassName("navcollapsed"); } }, /** * Expands the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ expand : function () { this.menuContainerDiv.show(); this.puller.removeClassName("pullcollapsed"); this.contentPane.removeClassName("contcollapsed"); this.navigationPane.removeClassName("navcollapsed"); this.isMenuOpen = true; var msg = page.bundle.messages[ "coursemenu.hide" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( true ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, true ); } else { UserDataDWRFacade.setStringPermScope( this.key, true ); } }, /** * Collapses the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ collapse : function () { this.menuContainerDiv.hide(); this.puller.addClassName("pullcollapsed"); this.contentPane.addClassName("contcollapsed"); this.navigationPane.addClassName("navcollapsed"); this.isMenuOpen = false; var msg = page.bundle.messages[ "coursemenu.show" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( false ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, false ); } else { UserDataDWRFacade.setStringPermScope( this.key, false ); } }, /** * Event triggered when the puller toggle control is clicked. Changes the * menu from open to closed or closed to open depending on existing state. */ onToggleClick: function( event ) { if ( this.isMenuOpen ) { this.collapse(); } else { this.expand(); } Event.stop( event ); }, /** * onResize */ onResize: function( event ) { var menuHeight = this.menuContainerDiv.getHeight(); var contentHeight = this.contentPane.getHeight(); var maxHeight = ( menuHeight > contentHeight ) ? menuHeight : contentHeight; this.contentPane.setStyle({height: maxHeight + 'px'}); this.navigationPane.setStyle({height: maxHeight + 'px'}); } }; page.PageMenuToggler.toggler = null; /** * Class for controlling the page help toggler in the view toggle area */ page.PageHelpToggler = Class.create(); page.PageHelpToggler.prototype = { initialize: function( isHelpEnabled, showHelpText, hideHelpText, assumeThereIsHelp ) { page.PageHelpToggler.toggler = this; this.toggleListeners = []; this.isHelpEnabled = isHelpEnabled; this.showText = showHelpText; this.hideText = hideHelpText; this.contentPanel = $('contentPanel') || $('contentPane'); var helperList = []; if ( this.contentPanel && !assumeThereIsHelp) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { helperList.push( $(el) ); } } } var helpTextToggleLink = $('helpTextToggleLink'); if ( ( !helperList || helperList.length === 0) && !assumeThereIsHelp ) { if ( helpTextToggleLink ) { helpTextToggleLink.remove(); } } else { if ( !isHelpEnabled ) { helperList.invoke( "toggle" ); } if ( !this.showText ) { this.showText = page.bundle.getString("viewtoggle.editmode.showHelp"); } if ( !this.hideText ) { this.hideText = page.bundle.getString("viewtoggle.editmode.hideHelp"); } this.toggleLink = helpTextToggleLink; this.toggleImage = $(this.toggleLink.getElementsByTagName('img')[0]); Event.observe( this.toggleLink, "click", this.onToggleClick.bindAsEventListener( this ) ); $(this.toggleLink.parentNode).removeClassName('hidden'); this.updateUI(); } }, addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, _notifyToggleListeners: function() { this.toggleListeners.each( function( listener ) { listener( this.isHelpEnabled ); }); }, notifyToggleListeners: function() { // we notify once the whole menu collapse/expand is done, so the DOM is in final state this._notifyToggleListeners.bind( this ).delay( ); }, updateUI: function( ) { if ( this.isHelpEnabled ) { $("showHelperSetting").value = 'true'; this.toggleImage.src = "/images/ci/ng/small_help_on2.gif"; this.toggleLink.setAttribute( "title", this.showText ); this.toggleImage.setAttribute( "alt", this.showText ); } else { $("showHelperSetting").value = 'false'; this.toggleImage.src = "/images/ci/ng/small_help_off2.gif"; this.toggleLink.setAttribute( "title", this.hideText ); this.toggleImage.setAttribute( "alt", this.hideText ); } }, onToggleClick: function( event ) { // Toggle all elements that have the css class "helphelp" var helperList = []; if ( this.contentPanel ) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { $(el).toggle(); } } } if ( this.isHelpEnabled ) { this.isHelpEnabled = false; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "false" ); } else { this.isHelpEnabled = true; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "true" ); } this.updateUI(); this.notifyToggleListeners(); Event.stop( event ); } }; /** * Class for controlling the display of a context menu. */ page.ContextMenu = Class.create(); page.ContextMenu.prototype = { initialize: function( contextMenuContainer, divId, forceMenuRefresh ) { this.displayContextMenuLink = contextMenuContainer.down("a"); this.contextMenuContainer = contextMenuContainer; this.forceMenuRefresh = forceMenuRefresh; this.uniqueId = this.displayContextMenuLink.id.split('_')[1]; this.contextMenuDiv = this.displayContextMenuLink.savedDiv; if ( !this.contextMenuDiv ) { this.contextMenuDiv = contextMenuContainer.down("div");//$('cmdiv_' + this.uniqueId); this.displayContextMenuLink.savedDiv = this.contextMenuDiv; page.ContextMenu.hiddenDivs.set(divId,this.contextMenuDiv); } this.originalContextMenuDiv = this.contextMenuDiv.cloneNode(true); $(this.contextMenuDiv).setStyle({zIndex: 200}); this.displayContextMenuLink.appendChild( this.contextMenuDiv ); // Temporarily add the menu back where it started this.closeContextMenuLink = contextMenuContainer.down(".contextmenubar_top").down(0); this.contextParameters = contextMenuContainer.readAttribute("bb:contextParameters"); this.menuGeneratorURL = contextMenuContainer.readAttribute("bb:menuGeneratorURL"); this.nav = contextMenuContainer.readAttribute("bb:navItem"); this.enclosingTableCell = contextMenuContainer.up("td"); this.menuOrder = contextMenuContainer.readAttribute("bb:menuOrder"); this.overwriteNavItems = contextMenuContainer.readAttribute("bb:overwriteNavItems"); this.beforeShowFunc = contextMenuContainer.readAttribute("bb:beforeShowFunc"); if (this.beforeShowFunc) { this.beforeShowFunc = eval(this.beforeShowFunc); } if ( this.menuOrder ) { this.menuOrder = this.menuOrder.split(','); } if ( !this.contextParameters ) { this.contextParameters = ""; } if ( !this.menuGeneratorURL ) { this.menuGeneratorURL = ""; } if ( !this.nav ) { this.nav = ""; } this.dynamicMenu = false; if ( this.menuGeneratorURL ) { this.dynamicMenu = true; } if (this.dynamicMenu) { Event.observe( this.displayContextMenuLink, "click", this.generateDynamicMenu.bindAsEventListener( this ) ); } else { Event.observe( this.displayContextMenuLink, "click", this.onDisplayLinkClick.bindAsEventListener( this ) ); } Event.observe( this.closeContextMenuLink, "click", this.onCloseLinkClick.bindAsEventListener( this ) ); Event.observe( this.contextMenuDiv, "keydown", this.onKeyPress.bindAsEventListener( this ) ); // adding nowrap to table cell containing context menu // If no enclosing td is found, try th if ( !this.enclosingTableCell ) { this.enclosingTableCell = contextMenuContainer.up("th"); } if ( this.enclosingTableCell ) { if ( !this.enclosingTableCell.hasClassName("nowrapCell") ) { this.enclosingTableCell.addClassName("nowrapCell"); } // if label tag is an immediate parent of context menu span tag, it needs nowrap as well if ( this.enclosingTableCell.down("label") && !this.enclosingTableCell.down("label").hasClassName("nowrapLabel")) { this.enclosingTableCell.down("label").addClassName("nowrapLabel"); } } if ( !this.dynamicMenu ) { var contexMenuItems = contextMenuContainer.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; // remove the context menu div from the page for performance reasons - add it back when we need to show it Element.remove( this.contextMenuDiv ); }, onKeyPress: function( event ) { var elem, children, index; var key = event.keyCode || event.which; if ( key == Event.KEY_UP ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_ESC ) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_TAB ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( (!event.shiftKey && index == children.length - 1) || (event.shiftKey && index === 0)) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } } else if ( key == Event.KEY_RETURN ) { if ( this.useARIA ) { elem = Event.element ( event ); (function() { page.util.fireClick( elem ); }.bind(this).defer()); Event.stop( event ); } } }, onAnchorFocus: function ( event ) { Event.element( event ).setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { Event.element( event ).setStyle({ backgroundColor: '' }); }, afterMenuGeneration: function( req ) { if ( this.dynamicMenu ) { var result; this.dynamicMenu = this.forceMenuRefresh; try { result = req.responseText.evalJSON( true ); if ( result.success == "true" ) { // append uniqueId to each li var menuHTML = result.contentMenuHTMLList.replace(/(<li.*?id=")(.*?)(".*?>)/g,"$1$2_"+this.uniqueId+"$3"); if ( this.forceMenuRefresh ) { this.contextMenuDiv.innerHTML = this.originalContextMenuDiv.innerHTML; } this.contextMenuDiv.insert({bottom:menuHTML}); $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); var contexMenuItems = this.contextMenuDiv.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } else { new page.InlineConfirmation("error", result.errorMessage, false ); } } catch ( e ) { new page.InlineConfirmation("error", result.errorMessage, false ); } } this.showMenu(); //focus on the first menu item (function() { this.contextMenuDiv.down("a").focus(); }.bind(this).defer()); }, appendItems: function( items, menuItemContainer ) { if (!menuItemContainer) { var uls = this.contextMenuDiv.getElementsBySelector("ul"); menuItemContainer = uls[uls.length-1]; } items.each( function ( item ) { if ( item.type == "seperator" ) { if (menuItemContainer.getElementsBySelector("li").length === 0) { return; } var ul = new Element('ul'); menuItemContainer.parentNode.appendChild( ul ); menuItemContainer = ul; return; } if ( !this.menuItemTempate ) { var menuItems = this.contextMenuDiv.getElementsBySelector("li"); this.menuItemTempate = menuItems[menuItems.length-1]; } var mi = this.menuItemTempate.cloneNode( true ); var a = mi.down('a'); var name = item.key ? page.bundle.getString( item.key ) : item.name ? item.name : "?"; a.update( name ); a.title = item.title ? item.title : name; a.href = "#"; menuItemContainer.appendChild( mi ); Event.observe( a, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( a, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( a, 'click', this.onItemClick.bindAsEventListener( this, item.onclick ) ); }.bind( this ) ); }, onItemClick: function( evt, func ) { this.onCloseLinkClick(); func(); Event.stop( evt ); }, setItems: function( items ) { // rather than try to match up new items with existing items, it's easier to delete the existing items // (except for the close item) and then add the new items // remove existing menu items, except close menu var menuItems = this.contextMenuDiv.getElementsBySelector("li").each( function (li ) { if ( !li.hasClassName("contextmenubar_top") ) { if (!this.menuItemTempate) { this.menuItemTempate = li; } li.stopObserving(); li.remove(); } }.bind( this ) ); // should only be one menuItemContainer var menuItemContainers = this.contextMenuDiv.getElementsBySelector("ul").each( function (ul) { if ( !ul.down("li") ) { ul.remove(); } }.bind( this ) ); this.appendItems(items, menuItems[0].parentNode); }, showMenu : function() { if (this.beforeShowFunc) { this.beforeShowFunc(this); } page.ContextMenu.registerContextMenu( this ); this.reorderMenuItems(); if ( this.useARIA ) { this.initARIA(); } var offset = this.displayContextMenuLink.cumulativeOffset(); var scrollOffset = this.displayContextMenuLink.cumulativeScrollOffset(); var viewportScrollOffset = document.viewport.getScrollOffsets(); if ( this.displayContextMenuLink.up( 'div.lb-content' ) ) { // Fix offset for context menu link inside a lightbox offset[0] = offset[0] + viewportScrollOffset[0]; offset[1] = offset[1] + viewportScrollOffset[1]; } else { // Fix the offset if the item is in a scrolled container offset[0] = offset[0] - scrollOffset[0] + viewportScrollOffset[0]; offset[1] = offset[1] - scrollOffset[1] + viewportScrollOffset[1]; } document.body.appendChild( this.contextMenuDiv ); this.contextMenuDiv.setStyle({display: "block"}); var width = this.contextMenuDiv.getWidth(); var bodyWidth = $(document.body).getWidth(); if ( page.util.isRTL() ) { offset[0] = offset[0] + this.displayContextMenuLink.getWidth() - width; } if ( offset[0] + width > bodyWidth ) { offset[0] = offset[0] - width + 30; } if ( this.keepMenuToRight ) { // In case the link is very wide (i.e. gradecenter accessible mode cell link for really wide cell) // make sure the menu renders to the right side of the link var linkWidth = this.displayContextMenuLink.getDimensions().width; if (linkWidth > width) { // Only worry if the link is actually wider than the menu offset[0] += (linkWidth-width); } } // Don't start the menu off the left side of the window if ( offset[0] < 0 ) { offset[0] = 0; } var height = this.contextMenuDiv.getHeight(); var bodyHeight = $(document.body).getHeight(); var ypos = offset[1] + this.displayContextMenuLink.getHeight() + 17; if ( ( height + ypos ) > bodyHeight ) { ypos -= height; ypos -= 34; } // Don't start the menu off the top of the screen if (ypos < 0 ) { ypos = 0; } if (height > bodyHeight) { // If the menu is too big to fit on the screen, set it to the height of the screen and allow scrollbars inside the menu this.contextMenuDiv.setStyle({ height: bodyHeight + "px", overflowY: "auto", overflowX: "hidden", left: offset[0] + "px", top: ypos + "px" }); } else { this.contextMenuDiv.setStyle({ left: offset[0] + "px", top: ypos + "px"}); } if ( !this.shim ) { this.shim = new page.popupShim( this.contextMenuDiv ); } this.shim.open(); }, initARIA: function() { if ( !this.initializedARIA ) { this.displayContextMenuLink.setAttribute( "aria-haspopup", "true" ); this.displayContextMenuLink.setAttribute( "role", "menubutton" ); this.contextMenuDiv.setAttribute( "role", "menu" ); this.contextMenuDiv.down( "ul" ).setAttribute( "role", "presentation" ); $A( this.contextMenuDiv.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval( decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "0"; link.setStyle( {cursor: 'pointer'} ); // make it look like a link. } }); this.initializedARIA = true; // Only initialize once. } }, reorderMenuItems : function() { if ( !this.menuOrder || this.menuOrder.length < 2 ) { return; } var orderMap = {}; var closeItem = null; var extraItems = []; // items not in order // Gather up all of the <li> tags in the menu and stick them in a map/object of id to the li object $A(this.contextMenuDiv.getElementsByTagName("li")).each( function( listItem ) { if (listItem.hasClassName("contextmenubar_top")) { closeItem = listItem; } else { if (this.menuOrder.indexOf(listItem.id) > -1) { orderMap[listItem.id] = listItem; // add item to map } else { extraItems.push(listItem); // listItem id not specified in menuOrder, so add listItem to extraItems } } }.bind(this) ); // Remove all the content from the context menu div $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list ) { Element.remove(list); }.bind(this) ); // Re-add the special "close" item as the first item. var ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); ulElement.insert({bottom:closeItem}); // Loop through the order, adding a <ul> at the start, and starting a new <ul> whenever a "*separator*" // is encountered, and adding the corresponding <li> for each of the ids in the order using the map/object this.menuOrder.each( function( id ) { if (id == "*separator*") { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); } else { ulElement.insert({bottom:orderMap[id]}); } }.bind(this) ); // Add any extraItems to thier own ul if (extraItems.length > 0) { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); extraItems.each( function( lineItem ) { ulElement.insert({bottom:lineItem}); }.bind(this) ); } // Remove any empty ULs and ensure that the added <ul>s have id of form "cmul${num}_${uniqueId}" $A(this.contextMenuDiv.getElementsByTagName("ul")).findAll( function( list ) { if ( list.childElements().length === 0 ) { list.remove(); return false; } else { return true; } }).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); this.menuOrder = null; // only re-order once }, generateDynamicMenu : function(event) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { var context_parameters = this.contextParameters; var menu_generator_url = this.menuGeneratorURL; var nav = this.nav; var overwriteNavItems = this.overwriteNavItems; if ( context_parameters ) { context_parameters = context_parameters.toQueryParams(); } else { context_parameters = {}; } var params = Object.extend({nav_item: nav }, context_parameters ); params = Object.extend( params, { overwriteNavItems : overwriteNavItems } ); new Ajax.Request(menu_generator_url, { method: 'post', parameters: params, onSuccess: this.afterMenuGeneration.bind( this ) }); } else { this.afterMenuGeneration(this); } $(event).preventDefault(); }, onDisplayLinkClick: function( event ) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { this.generateDynamicMenu(event); this.dynamicMenu = false; } else { this.showMenu(); //focus on the first menu item (function() { if (this.contextMenuDiv.style.display != 'none') { this.contextMenuDiv.down("a").focus(); } }.bind(this).defer()); $(event).preventDefault(); } }, onCloseLinkClick: function( event ) { this.close(); // grade center hides displayContextMenuLink onMouseOut, so we need to check if it is visible // before setting focus or IE will complain. Need to do funky visibility check because IE8 // sets display to empty string when removing parent container class (bug?) var disp = this.displayContextMenuLink.style.display; if ( disp != 'none' && disp != '' ) { this.displayContextMenuLink.focus(); } if (event) { Event.stop( event ); } }, close: function() { this.contextMenuDiv.style.display = "none"; // Delay the removal of the element from the page so firefox will continue to process // the click on the menu item chosen (otherwise it stops processing as soon as we remove the // element resulting in the menu not actually working) (function() { Element.remove( this.contextMenuDiv ); }.bind(this).delay(0.1)); if ( this.shim ) { this.shim.close(); } }, closeNow: function() { if (this.contextMenuDiv.style.display != "none") { this.contextMenuDiv.style.display = "none"; Element.remove( this.contextMenuDiv ); if ( this.shim ) { this.shim.close(); } } } }; /** * Function called to change the 'arrow' of a breadcrumb to face downward when they are clicked for the * contextual menu. * @param uniqId - unique number which identifies the crumb which was clicked * @param size - the size of the breadcrumb * @return */ page.ContextMenu.changeArrowInBreadcrumb = function (uniqId, event) { page.ContextMenu.alignArrowsInBreadcrumb(event); $('arrowContext_'+uniqId).addClassName('contextArrowDown').removeClassName('contextArrow'); //Stop the click event to propagate anymore -else all arrows will be aligned again Event.stop( event ); return false; }; //To align all breadcrumb arrows in one direction page.ContextMenu.alignArrowsInBreadcrumb = function (event) { if ($('breadcrumbs') !== null){ var bList = $($('breadcrumbs').getElementsByTagName('ol')[0]); var bs = bList.immediateDescendants(); if (bs.length !== null && bs.length >1){ for (var i = 2; i <= bs.length; i++) { var arrowSpan = $('arrowContext_'+i); if (arrowSpan !== null ){ $('arrowContext_'+i).addClassName('contextArrow').removeClassName('contextArrowDown'); } } } } return false; }; // "static" methods page.ContextMenu.LI = function(event, divId, forceMenuRefresh) { page.LazyInit(event,['focus','mouseover'],'new page.ContextMenu(page.util.upToClass(target,\'contextMenuContainer\'), \'' + divId + '\',' + forceMenuRefresh + ');'); }; page.ContextMenu.contextMenus = []; // _Open_ context menus page.ContextMenu.registerContextMenu = function( menu ) { page.ContextMenu.contextMenus.push( menu ); }; page.ContextMenu.hiddenDivs = $H(); // All the menu divs on the page - only needed for cases such as view_spreadsheet2.js where we try to modify the menus outside this framework page.ContextMenu.hideMenuDiv = function( uniqueId) { var linkId = 'cmlink_' + uniqueId; var link = document.getElementById(linkId); if (link && !link.savedDiv ) { var elementId = 'cmdiv_' + uniqueId; var element = link.nextSibling; // Should be the text between the link and div but check anyways if ( !element || element.id != elementId) { element = element.nextSibling; if ( !element || element.id != elementId) { element = document.getElementById(elementId); } } if (element) { link.savedDiv = element; page.ContextMenu.hiddenDivs.set(uniqueId,element); Element.remove( element ); } } }; page.ContextMenu.addDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { document.body.appendChild(ele); }); }; page.ContextMenu.removeDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { Element.remove(ele); }); }; page.ContextMenu.closeAllContextMenus = function( event ) { var deferClose = false; if ( event ) { var e = Event.findElement( event, 'a' ); if ( e && e.href.indexOf("#contextMenu") >= 0 ) { Event.stop( event ); return; } deferClose = true; } page.ContextMenu.contextMenus.each( function( menu ) { if ( menu != this ) { if (deferClose) { menu.close(); } else { menu.closeNow(); } } }); page.ContextMenu.contextMenus = []; }; /** * Enables flyout menus to be opened using a keyboard or mouse. Enables * them to be viewed properly in IE as well. */ page.FlyoutMenu = Class.create(); page.FlyoutMenu.prototype = { initialize: function( subMenuListItem ) { this.subMenuListItem = $(subMenuListItem); this.menuLink = $(subMenuListItem.getElementsByTagName('a')[0]); //special case to render iframe shim under new course content build menu if (this.subMenuListItem.hasClassName('bcContent')) { var buildContentDiv = this.subMenuListItem.down("div.flyout"); if ( !buildContentDiv ) { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } else { this.subMenu = buildContentDiv; } } else { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } this.menuLink.flyoutMenu = this; // calculate the next/previous tab stops this.previousSibling = this.subMenuListItem.previous(); while ( this.previousSibling && (!this.previousSibling.down('a') || !this.previousSibling.visible()) ) { this.previousSibling = this.previousSibling.previous(); } this.nextSibling = this.subMenuListItem.next(); while ( this.nextSibling && (!this.nextSibling.down('a') || !this.nextSibling.visible()) ) { this.nextSibling = this.nextSibling.next(); } var rumble = $(this.subMenuListItem.parentNode.parentNode); this.inListActionBar = rumble && ( rumble.hasClassName("rumble_top") || rumble.hasClassName("rumble") ); Event.observe( this.menuLink, 'mouseover', this.onOpen.bindAsEventListener( this ) ); Event.observe( subMenuListItem, 'mouseout', this.onClose.bindAsEventListener( this ) ); Event.observe( this.menuLink, 'click', this.onLinkOpen.bindAsEventListener( this ) ); Event.observe( this.subMenuListItem, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); $A( this.subMenu.getElementsByTagName('li') ).each ( function( li ) { $A(li.getElementsByTagName('a')).each( function( link ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( link, 'click', this.onLinkClick.bindAsEventListener( this, link ) ); }.bind( this ) ); }.bind( this ) ); // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; if ( this.useARIA ) { this.initARIA(); } this.enabled = true; }, initARIA: function() { var inListActionBar = this.inListActionBar; if ( inListActionBar ) { this.subMenuListItem.up('ul').setAttribute( "role", "menubar" ); } this.subMenuListItem.setAttribute( "role", "menuitem" ); this.subMenu.setAttribute( "role", "menu" ); if ( !this.menuLink.hasClassName("notMenuLabel") ) { this.subMenu.setAttribute( "aria-labelledby", this.menuLink.id ); } $A( this.subMenu.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); // List action bars have onclick handlers that prevent submission of the page // if no items are selected, so we can't register new onclicks here because // otherwise we can't stop them from executing. if ( !inListActionBar ) { if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval(decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "-1"; link.style.cursor = 'pointer'; // make it look like a link. } } }); }, setEnabled: function( enabled ) { this.enabled = enabled; if ( !enabled ) { this.subMenu.setStyle({ display: '' }); } }, onKeyPress: function( event ) { if (!this.enabled) { return; } var key = event.keyCode || event.which; var elem = Event.element ( event ); var children, index, link; if ( key == Event.KEY_UP ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } else if ( index === 0 ) { children[children.length - 1].focus(); // wrap to bottom } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index == -1 ) { this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); } else if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } else if ( index == ( children.length - 1 ) ) { children[0].focus(); // wrap to top } Event.stop( event ); } else if ( key == Event.KEY_LEFT ) { if ( !this.previousSibling || ( this.previousSibling.hasClassName("mainButton") || this.previousSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, true ); } else if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( !link || !this.previousSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_RIGHT ) { if ( !this.nextSibling || ( this.nextSibling.hasClassName("mainButton") || this.nextSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, false ); } else if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( !link || !this.nextSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_ESC ) { this.close(); this.menuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_RETURN && this.useARIA && !this.inListActionBar ) { page.util.fireClick( elem ); Event.stop( event ); } else if ( key == Event.KEY_TAB && this.useARIA ) { this.executeTab( event, false, event.shiftKey ); } }, executeTab: function( event, forceMenuLinkTab, shift ) { var elem = Event.element ( event ); var link; if ( ( elem != this.menuLink ) || forceMenuLinkTab ) { if ( shift ) { // Go to previous menu if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } else { // Go to next menu if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } this.close(); Event.stop( event ); } }, onOpen: function( event ) { if (!this.enabled) { return; } this.open(); }, onClose: function( event ) { var to = $(event.relatedTarget || event.toElement); if ( !to || to.up('li.sub') != this.subMenuListItem ) { this.close(); } }, onLinkOpen: function( event ) { if (!this.enabled) { return; } this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); Event.stop( event ); }, resizeAfterShowHide: function() { // TODO - ideally this would just resize the outer div, but closing and opening 'works' this.close(); this.open(); }, open: function() { var alreadyShown = this.subMenu.getStyle('display') === 'block'; // If the menu is already showing (i.e. as_ce4 theme, we don't need to position it) if ( !alreadyShown ) { // Set position of action bar elements to static to enable z-index stack order page.util.setActionBarPosition( 'static' ); var menuTop = this.subMenuListItem.getHeight(); if ( this.subMenu.hasClassName( 'narrow' ) ) { menuTop = 0; } this.subMenuListItem.setStyle( {position: 'relative'} ); this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: menuTop+'px', left: '0px', width: '', height: '', overflowY: '' }); var offset = Position.cumulativeOffset( this.subMenuListItem ); var menuDims = this.subMenu.getDimensionsEx(); var menuHeight = menuDims.height; var popupWidth = this.subMenu.getWidth(); var subListItemDims = this.subMenuListItem.getDimensions(); var menuWidth = subListItemDims.width; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); var offsetTop = offset[1] - scrollOffsets.top; this.subMenu.flyoutMenu = this; if ( (offsetTop + menuHeight + subListItemDims.height) > viewportDimensions.height) { if ( (offsetTop - menuHeight) > 0 ) { // if menu goes below viewport but still fits on-page, show it above button this.subMenu.setStyle({ top: '-'+menuHeight+'px' }); } else { // we need to create scrollbars var newWidth = this.subMenu.getWidth() + 15; popupWidth = newWidth + 5; var newMenuHeight = viewportDimensions.height - (offsetTop + subListItemDims.height) - 20; var newMenuTop = menuTop; if (newMenuHeight < offsetTop) { // More space above than below newMenuHeight = offsetTop; newMenuTop = -offsetTop; } this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: newMenuTop+'px', left: '0px', width: newWidth + 'px', height: newMenuHeight + 'px', overflowY: 'auto' }); } } var offsetLeft = offset[0] - scrollOffsets.left; if ( (offsetLeft + popupWidth) > viewportDimensions.width ) { var subMenuWidth = this.subMenuListItem.getWidth(); var newLeft = popupWidth - (viewportDimensions.width-offsetLeft); if ((newLeft > 0) && (newLeft < offsetLeft)) { newLeft = -newLeft; } else { newLeft = -offsetLeft; } this.subMenu.setStyle({ left: newLeft+'px' }); } if ( page.util.isRTL() ) { var newRight = 0; if ( (offsetLeft + menuWidth) - popupWidth < 0 ) { newRight = (offsetLeft + menuWidth) - popupWidth; } this.subMenu.setStyle({ left: '', right: newRight+'px'}); } if (!this.shim) { this.shim = new page.popupShim( this.subMenu); } this.shim.open(); } }, close: function() { // Reset position of action bar elements to relative page.util.setActionBarPosition( 'relative' ); this.subMenuListItem.setStyle({position: ''}); this.subMenu.setStyle({ display: '', top: '', left: '', width: '', height: '', overflowY: '' }); if ( this.shim ) { this.shim.close(); } }, onLinkClick: function( event, link ) { if (!this.enabled) { return; } setTimeout( this.blurLink.bind( this, link), 100); }, blurLink: function( link ) { link.blur(); if (page.util.hasClassName( link, "donotclose" )) { link.focus(); } else { this.close(); } }, onAnchorFocus: function ( event ) { if (!this.enabled) { return; } var link = Event.element( event ); link.setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { var link = Event.element( event ); link.setStyle({ backgroundColor: '' }); } }; /** * Class for providing functionality to menu palettes */ page.PaletteController = Class.create(); page.PaletteController.prototype = { /** * Constructor * * @param paletteIdStr Unique string identifier for a palette * @param expandCollapseIdStr Id value of anchor tag to be assigned * the palette expand/collapse functionality * @param closeOtherPalettesWhenOpen Whether to close all other palettes when this one is open */ initialize: function( paletteIdStr, expandCollapseIdStr, closeOtherPalettesWhenOpen, collapsed ) { // palette id string this.paletteItemStr = paletteIdStr; // palette element this.paletteItem = $(this.paletteItemStr); // default id string to palette contents container element this.defaultContentsContainerId = page.PaletteController.getDefaultContentsContainerId(this.paletteItemStr); // the currently active palette contents container element this.activeContentsContainer = $(this.defaultContentsContainerId); // expand/collapse palette toggle element this.paletteToggle = $(expandCollapseIdStr); if (this.paletteToggle) { Event.observe(this.paletteToggle, 'click', this.toggleExpandCollapsePalette.bindAsEventListener(this)); } this.closeOtherPalettesWhenOpen = closeOtherPalettesWhenOpen; page.PaletteController.registerPaletteBox(this); if (collapsed) { this.collapsePalette(true); } }, /** * Set the currently active palette contents container element * * @param container palette contents container element */ setActiveContentsContainer: function ( container ) { this.activeContentsContainer = container; }, /** * Get the currently active palette contents container element * * @return palette contents container element */ getActiveContentsContainer: function () { return this.activeContentsContainer; }, /** * Expands the palette if it's not already expanded. * * @return palette contents container element */ expandPalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display == "none" ) { itemList.style.display = "block"; itemPalClass.length = itemPalClass.length - 1; this.paletteItem.className = itemPalClass.join(" "); lastDiv.className = "bottomRound"; firstDiv.className = "topRound"; h2.className = ""; var itemTitle = expandCollapseLink.innerHTML.stripTags().trim(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_collapse.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.collapse.section.param', itemTitle); } if ( doNotPersist ) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Collapses the palette if it's not already collapsed. * * @return palette contents container element */ collapsePalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display != "none" ) { itemList.style.display = "none"; itemPalClass[itemPalClass.length] = 'navPaletteCol'; this.paletteItem.className = itemPalClass.join(" "); if (itemPalClass.indexOf('controlpanel') != -1) { lastDiv.className = "bottomRound controlpanelCol"; // colors the bottomRound to match the h2 background } if (itemPalClass.indexOf('listCm')!=-1) { lastDiv.className = "bottomRound listCmCol"; // colors the bottomRound to match the h2 background firstDiv.className = "topRound listCmCol"; // colors the topRound to match the h2 background h2.className = "listCmCol"; // colors h2 background (removes background image) } if (itemPalClass.indexOf('tools') != -1) { lastDiv.className = "bottomRound toolsCol"; firstDiv.className = "topRound listCmCol"; h2.className = "toolsCol"; } var itemTitle = expandCollapseLink.innerHTML.stripTags(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags().trim(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_expand.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.expand.section.param', itemTitle); } if (doNotPersist) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Takes in a key value pair to save to the session as sticky data. * * @param key The key that will have the current course id appended to it to be saved to the session. * @param value The value to the key. */ saveSessionStickyInfo: function( key, value ) { /* Get the course id off of the global variable if exists, so that data is saved per * user session per course. If course doesn't exist, use empty string. */ var current_course_id = window.course_id ? window.course_id : ""; UserDataDWRFacade.setStringTempScope( key + current_course_id, value ); }, /** * Whether the first tag has js onclick event binding on it for palette collapse/expand * * @param h2 */ useFirstTagForExpandCollapse: function ( h2 ) { return h2.getElementsByTagName('a')[0].id.indexOf( "noneExpandCollapseTag" ) > -1 ? false : true; }, /** * Toggles a palette from expand to collapse and vice versa. * * @param event Optional event object if this method was bound to event. */ toggleExpandCollapsePalette: function ( event, doNotPersist ) { // To prevent default event behavior if ( event ) { Event.stop( event ); } if ( this.activeContentsContainer.style.display == "none" ) { // palette is currently closed, so we will be expanding it if ( this.closeOtherPalettesWhenOpen ) { // if closeOtherPalettesWhenOpen is set to true for this palette, close all other palettes page.PaletteController.closeAllOtherPalettes(this.paletteItemStr, doNotPersist); } this.expandPalette( doNotPersist ); } else { // palette is currently expanded, so we will be collapsing it this.collapsePalette( doNotPersist ); } } }; // "static" methods page.PaletteController.paletteBoxes = []; page.PaletteController.registerPaletteBox = function( paletteBox ) { page.PaletteController.paletteBoxes.push( paletteBox ); }; /** * Get the palette controller js object by palette id * * @param paletteId */ page.PaletteController.getPaletteControllerObjById = function( paletteId ) { return page.PaletteController.paletteBoxes.find( function( pb ) { return ( pb.paletteItemStr == paletteId ); } ); }; /** * Closes all palettes except the specified one * * @param paletteToKeepOpen */ page.PaletteController.closeAllOtherPalettes = function( paletteToKeepOpen, doNotPersist ) { for(var i = 0; i < page.PaletteController.paletteBoxes.length; i++) { var paletteItem = page.PaletteController.paletteBoxes[i]; if (paletteToKeepOpen !== paletteItem.paletteItemStr) { paletteItem.collapsePalette( doNotPersist ); } } }; /** * Toggles (expand/collapse) the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.toggleExpandCollapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.toggleExpandCollapsePalette( null, doNotPersist); }; /** * Collapses the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.collapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.collapsePalette( doNotPersist); }; /** * Expand the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.expandPalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.expandPalette( doNotPersist); }; /** * Set the active palette contents container (element containing the body * contents of a palette). The active contents container is used to toggle * visibility when expanding and collapsing menu palettes. * * @param paletteId * @param paletteContentsContainer Optional container to set. * If not given, the palette's active * container will not be changed. * @return The new active palette contents container element. * If no paletteContentsContainer element was passed, * The current active palette contents container element * will be returned. */ page.PaletteController.setActivePaletteContentsContainer = function( paletteId, paletteContentsContainer ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); if ( paletteContentsContainer ) { paletteObj.setActiveContentsContainer( paletteContentsContainer ); } return paletteObj.getActiveContentsContainer(); }; /* * Get the default palette contents container id string * * @param paletteId */ page.PaletteController.getDefaultContentsContainerId = function( paletteId ) { return paletteId + "_contents"; }; /** * Class for providing expand/collapse functionality (with dynamic loading) */ page.ItemExpander = Class.create(); page.ItemExpander.prototype = { /** * Constructor * - expandLink - the link that when clicked will expand/collapse the item * - expandArea - the actual area that will get expanded/collapsed (if the item is dynamically loaded, this area will be populated dynamically) * - expandText - the text to show as a tooltip on the link for expanding * - collapseText - the text to show as a tooltip on the link for collapsing * - expandTitleText - the customized text for link title afer expanding the item; if null/undefined, use expandText * - collapseTitleText - the customized text for link title after collapsing the item;if null/undefined, use collapseText * - dynamic - whether the contents are dynamically loaded * - dynamicUrl - the URL to get the contents of the item from * - contextParameters - additional URL parameters to add when calling the dynamicUrl * - sticky - load/save expand state from UserData; true if null/undefined * - expanded - initially expanded; false if null/undefined */ initialize: function( expandLink, expandArea, expandText, collapseText, dynamic, dynamicUrl, contextParameters, expandTitleText, collapseTitleText, sticky, expanded ) { this.expandLink = $(expandLink); this.expandLinkImage = this.expandLink.down('img'); this.expandArea = $s(expandArea); // Register the expander so it can be found page.ItemExpander.itemExpanderMap[this.expandLink.id] = this; this.expandText = expandText.unescapeHTML(); this.collapseText = collapseText.unescapeHTML(); if ( expandTitleText !== null && expandTitleText !== undefined ) { this.expandTitleText = expandTitleText.unescapeHTML(); } else { this.expandTitleText = this.expandText; } if ( collapseTitleText !== null && collapseTitleText !== undefined ) { this.collapseTitleText = collapseTitleText.unescapeHTML(); } else { this.collapseTitleText = this.collapseText; } this.dynamic = dynamic; this.dynamicUrl = dynamicUrl; if ( contextParameters !== null && contextParameters !== undefined ) { this.contextParameters = contextParameters.toQueryParams(); } else { this.contextParameters = {}; } this.sticky = ( sticky !== null && sticky !== undefined ) ? sticky : true; this.expanded = ( expanded !== null && expanded !== undefined ) ? expanded : false; this.hasContents = !this.dynamic; if ( this.sticky ) { // get the course id off of the global variable if exists, because data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.getStringTempScope( this.expandLink.id + current_course_id, this.getAvailableResponse.bind( this ) ); } this.expandCollapse( !this.expanded ); Event.observe( this.expandLink, "click", this.onToggleClick.bindAsEventListener( this ) ); }, getAvailableResponse : function ( response ) { var originalExpanded = this.expanded ; var cachedExpanded = false; if ( response.length > 0 ) { if ( response == 'true' ) { cachedExpanded = true; } else { cachedExpanded = false; } } if ( originalExpanded != cachedExpanded ) { //because we want the menu to be in the cached state, //we pass in the opposite so that expandCollapse changes the menu state. this.expandCollapse(originalExpanded); } }, onToggleClick: function( event ) { if ( event ) { Event.stop( event ); } this.expandCollapse(this.expanded); if ( this.sticky ) { // get the course id off of the global variable if exists, so that data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.setStringTempScope( this.expandLink.id + current_course_id, this.expanded ); } }, expandCollapse: function(shouldCollapse) { var combo; if ( shouldCollapse ) //Collapse the item { $(this.expandArea).hide(); this.expandLink.title = this.expandTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.expandText; this.expandLinkImage.src = "/images/ci/icons/generic_expand.gif"; } if ( this.expandLink.hasClassName("comboLink_active") ) { combo = this.expandLink.up("li").down(".submenuLink_active"); this.expandLink.removeClassName("comboLink_active"); this.expandLink.addClassName("comboLink"); if ( combo ) { combo.removeClassName("submenuLink_active"); combo.addClassName("submenuLink"); } } else { this.expandLink.removeClassName("open"); } this.expanded = false; } else //Expand the item { if ( this.hasContents ) { $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.collapseText; this.expandLinkImage.src = "/images/ci/icons/generic_collapse.gif"; } if ( this.expandLink.hasClassName("comboLink") ) { combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } } else if ( this.dynamic ) { this.loadData(); } this.expanded = true; } }, loadData: function() { new Ajax.Request( this.dynamicUrl, { method: "post", parameters: this.contextParameters, requestHeaders: { cookie: document.cookie }, onSuccess: this.afterLoadData.bind( this ) }); }, afterLoadData: function( req ) { try { var result = req.responseText.evalJSON( true ); if ( result.success != "true" ) { new page.InlineConfirmation("error", result.errorMessage, false ); } else { this.hasContents = true; this.expandArea.innerHTML = result.itemContents; $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; this.expandLinkImage.alt = this.collapseText; if ( this.expandLink.hasClassName("comboLink") ) { var combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } this.expanded = true; } } catch ( e ) { //Invalid response } } }; page.ItemExpander.itemExpanderMap = {}; /** * Class for controlling the "breadcrumb expansion" (i.e. the "..." hiding the inner * breadcrumbs) */ page.BreadcrumbExpander = Class.create(); page.BreadcrumbExpander.prototype = { initialize: function( breadcrumbBar ) { var breadcrumbListElement = $(breadcrumbBar.getElementsByTagName('ol')[0]); var breadcrumbs = breadcrumbListElement.immediateDescendants(); if ( breadcrumbs.length > 4 ) { this.ellipsis = document.createElement("li"); var ellipsisLink = document.createElement("a"); ellipsisLink.setAttribute("href", "#"); ellipsisLink.setAttribute("title", page.bundle.getString('breadcrumbs.expand') ); ellipsisLink.innerHTML = "..."; this.ellipsis.appendChild( ellipsisLink ); this.ellipsis = Element.extend( this.ellipsis ); Event.observe( ellipsisLink, "click", this.onEllipsisClick.bindAsEventListener( this ) ); this.hiddenItems = $A(breadcrumbs.slice(2,breadcrumbs.length - 2)); breadcrumbListElement.insertBefore( this.ellipsis, this.hiddenItems[0] ); this.hiddenItems.invoke( "hide" ); } // Make sure the breadcrumbs don't run into the mode switcher var breadcrumbContainer = $(breadcrumbListElement.parentNode); var modeSwitcher = breadcrumbBar.down('.modeSwitchWrap'); if ( modeSwitcher ) { var containerWidth = breadcrumbContainer.getWidth(); var containerOffset = breadcrumbContainer.cumulativeOffset(); var modeSwitcherOffset = modeSwitcher.cumulativeOffset(); var modeSwitcherWidth = modeSwitcher.getWidth(); if ( page.util.isRTL() ) { if ( modeSwitcherOffset[0] + modeSwitcherWidth > containerOffset[0] ) { breadcrumbContainer.setStyle({ paddingLeft: ( modeSwitcherOffset[0] + modeSwitcherWidth ) + 'px'} ); } } // else //{ // breadcrumbContainer.setStyle({ paddingRight: ( containerWidth - ( modeSwitcherOffset[0] - containerOffset[0] ) ) + 'px'} ); //} } }, onEllipsisClick: function( event ) { this.hiddenItems.invoke( "show" ); this.ellipsis.hide(); Event.stop( event ); } }; /** * Dynamically creates an inline confirmation. */ page.InlineConfirmation = Class.create(); page.InlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, oneReceiptPerPage ) { var receiptId = $s('receipt_id'); // do not insert a duplicate receipt, if one already exists if(receiptId && oneReceiptPerPage) { return; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if ( type == "warning" ) { cssClass = "warningReceipt"; } var contentPane = $('contentPanel') || $('portalPane'); var receiptHtml = '<div id="receipt_id" class="receipt '+ cssClass +'">'+ '<a name="inlineReceipt" tabindex="-1" style="color:#FFFFFF">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } receiptHtml += '<a class="close" href="#close" title="'+ page.bundle.getString("inlineconfirmation.close") +'" onClick="Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="'+ page.bundle.getString("inlineconfirmation.close") +'" src="/images/ci/ng/close_mini.gif"></a></div>'; contentPane.insert({top:receiptHtml}); // use aria live region to announce this confirmation message rather than setting focus to it. (Too many things are fighting over setting focus) // Note: if this confirmation is invoked from a menu handler, it may not announce if focus is lost when the menu closes. See how courseTheme.js sets focus before invoking. var insertedA = contentPane.down('a[name="inlineReceipt"]'); insertedA.setAttribute("aria-live","assertive"); insertedA.parentNode.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced } }; page.NestedInlineConfirmationIdCounter = 0; page.NestedInlineConfirmation = Class.create(); page.NestedInlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, previousElement,showCloseLink, extracss, insertBefore, oneReceiptPerPage, fadeAway, focusDiv, fadingTime, insertTop, receiptDivId, focusOnRender ) { if ( Object.isUndefined( focusOnRender ) ) { focusOnRender = true; } var receiptId = $s('receipt_nested_id'); // do not insert a duplicate receipt, if one already exists var newDivId = 'receipt_nested_id'; if(receiptId) { if (oneReceiptPerPage) { return; } newDivId = newDivId + (page.NestedInlineConfirmationIdCounter++); } if (receiptDivId) { // Remove the old message with the same receiptDivId if there is one before adding a new one if ( $( receiptDivId ) != null ) $( receiptDivId ).remove(); newDivId = receiptDivId; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if (type == "warning") { cssClass = "warningReceipt"; } if (!extracss) { extracss = ""; } var arrowSpan = ''; if (extracss.indexOf( "point", 0 ) != -1) { arrowSpan = '<span class="arrow"></span>'; } var contentPane = $(previousElement); if (!contentPane) { // TODO - if we can't find the element we wanted to insert before, is it OK to just drop the notification? return; } var receiptHtml = '<div id="'+newDivId+'" style="display:none" class="receipt '+ cssClass +' '+extracss +'">'+arrowSpan+ '<a name="inlineReceipt" class="areceipt" tabindex="-1">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } if (showCloseLink) { // either this is a JS Snippet to execute on close or a simple true in which case we do nothing extra var onCloseFunction = ""; if ( typeof showCloseLink === "string" || showCloseLink instanceof String ) { if ( !page.closeReceiptLinkCounter ) { page.closeReceiptLinkCounter = 0; } else { ++page.closeReceiptLinkCounter; } onCloseFunction = "onReceiptClosed" + page.closeReceiptLinkCounter; receiptHtml += "<script type='text/javascript'>window." + onCloseFunction + " = function( ) { " + showCloseLink + " ; }; </script>"; onCloseFunction += "( );" } receiptHtml += '<a class="close" href="#close" style="z-index:1000" title="' + page.bundle.getString("inlineconfirmation.close") + '" onClick="' + onCloseFunction + 'Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="' + page.bundle.getString("inlineconfirmation.close") + '" src="/images/ci/ng/close_mini.gif"></a></div>'; } if ( insertBefore ) { contentPane.insert({before:receiptHtml}); } else if (insertTop) { contentPane.insert({top:receiptHtml}); } else { contentPane.insert({after:receiptHtml}); } this.insertedDiv = insertBefore?contentPane.previousSibling:(insertTop?contentPane.firstChild:contentPane.nextSibling); $(this.insertedDiv).show(); var insertedA = $(this.insertedDiv).down('a[name="inlineReceipt"]'); var fadingDuration = fadingTime ? fadingTime : 5000; if ( focusOnRender ) { try { ( function() { try { if ( focusDiv ) { page.util.focusAndScroll( $( focusDiv ) ); } else { page.util.focusAndScroll( insertedA ); } } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } }.defer() ); } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } } else { // not setting focus to this confirmation, so we make it an aria live region so it will be announced to the screen reader if ( focusDiv ) { page.util.ensureVisible( $( focusDiv ) ); } else { page.util.ensureVisible( insertedA ); } insertedA.setAttribute("aria-live","assertive"); this.insertedDiv.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced (needed for jaws 12) } if ( fadeAway ) { setTimeout( function() { Element.fade( contentPane.nextSibling, { duration : 0.3 } ); }, fadingDuration ); } }, close: function() { if ( this.insertedDiv ) { this.insertedDiv.remove(); } } }; page.NestedInlineFadeAwayConfirmation = Class.create(); page.NestedInlineFadeAwayConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; page.NestedInlineFadeAwaySingleConfirmation = Class.create(); page.NestedInlineFadeAwaySingleConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time, newDivId ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore, false /*only one instance*/, null, null, null, null, newDivId ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; /** * Make sure the container as position: relative so that the offset can work */ page.MiniReceipt = Class.create(); page.MiniReceipt.prototype = { initialize: function( message, containerElement, top, left, time ) { var visibleDuration = time ? time : 2000; var top = top?top:-22; // usually show receipt above var left = left?left:0; var alreadyExistingReceipt = $( containerElement ).down( "div.miniReceipt" ); if ( alreadyExistingReceipt ) { alreadyExistingReceipt.hide( ); } var receiptHtml = '<div class="miniReceipt adding" style="display: none; top:' + top + 'px; left:'+ left + 'px" role="alert" aria-live="assertive">' + message + '</div>'; var receiptElement = $( containerElement ).insert( { top:receiptHtml } ).firstDescendant( ); receiptElement.show( ); setTimeout( function() { Element.fade( receiptElement, {duration:0.3, afterFinish: function() { receiptElement.remove() } } ); }, visibleDuration ); } }; page.extendedHelp = function( helpattributes, windowName ) { window.helpwin = window.open('/webapps/blackboard/execute/viewExtendedHelp?' + helpattributes,windowName,'menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); window.helpwin.focus(); }; page.decoratePageBanner = function() { var bannerDiv = $('pageBanner'); var containerDiv = $('contentPanel') || $('contentPane'); if ( bannerDiv && containerDiv ) { // append hasTopBanner class to container div to hide topRound containerDiv.addClassName('hasTopBanner'); // hide empty title bar if ( !$('pageTitleText') && $('pageTitleDiv') ) { $('pageTitleDiv').hide(); } } }; page.initializeSinglePopupPage = function( pageId ) { // Initialize the single popup page, make sure the window will be closed by clicking submit or cancel, and the parent // window will be refreshed after submit. var items = document.forms; for ( var i = 0; i < items.length; i++ ) { var formItem = items[ i ]; formItem.observe( 'submit', function() { (function() { window.close(); if( window.opener.refreshConfirm ) { window.opener.refreshConfirm(pageId); } }.defer()); } ); if ( formItem.top_Cancel ) { Event.observe( formItem.top_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } if ( formItem.bottom_Cancel ) { Event.observe( formItem.bottom_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } } }; page.openLightbox = function( link, title, url, width, height ) { var lightboxParam = { defaultDimensions : { w : width ? width : 1000, h : height ? height : 800 }, contents : '<iframe src="' + url + '" width="100%" height="100%"/>', title : title, closeOnBodyClick : false, showCloseLink : true, useDefaultDimensionsAsMinimumSize : true }; var lightboxInstance = new lightbox.Lightbox( lightboxParam ); lightboxInstance.open(); }; page.printAndClose = function() { (function() { window.print(); window.close(); }.defer()); }; /** * Utility for data collection step manipulation */ page.steps = {}; page.steps.HIDE = "hide"; page.steps.SHOW = "show"; /** * Hide or show an array of steps given the step ids and * renumber all visible steps on the page. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepIdArr - string array of step ids */ page.steps.hideShowAndRenumber = function ( action, stepIdArr ) { // hide or show each of the step ids given ($A(stepIdArr)).each( function( stepId ) { page.steps.hideShow( action, stepId ); }); // get all H3 elements that contain css class of "steptitle" var stepTitleTags = []; $A(document.getElementsByTagName('h3')).each( function( tag ) { if ( page.util.hasClassName( tag, 'steptitle' ) ) { stepTitleTags.push( $(tag) ); } }); // starting at number 1, renumber all of the visible steps var number = 1; stepTitleTags.each(function( stepTitleTag ) { if ( stepTitleTag.up('div').visible() ) { stepTitleTag.down('span').update(number); number++; } }); }; /** * Hide or show a single step given the step id. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepId - string identifier to a single step */ page.steps.hideShow = function ( action, stepId ) { if ( action == page.steps.SHOW ) { $(stepId).show(); } else if ( action == page.steps.HIDE ) { $(stepId).hide(); } }; page.showChangeTextSizeHelp = function( ) { page.extendedHelp('internalhandle=change_text_size&helpkey=change_text_size','change_text_size' ); return false; }; page.showAccessibilityOptions = function() { var win = window.open('/webapps/portal/execute/changePersonalStyle?cmd=showAccessibilityOptions', 'accessibilityOptions','menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); win.focus(); }; page.toggleContrast = function( ) { new Ajax.Request('/webapps/portal/execute/changePersonalStyle?cmd=toggleContrast', { onSuccess: function(transport, json) { var fsWin; if (window.top.nav) { fsWin = window.top; } else if (window.opener && window.opener.top.nav) { fsWin = window.opener.top; window.close(); } if (fsWin) { fsWin.nav.location.reload(); fsWin.content.location.reload(); } else { window.top.location.reload(); } } }); return false; }; /** * IFrame-based shim used with popups so they render on top of all other page elements (including applets) */ page.popupShim = Class.create(); page.popupShim.prototype = { initialize: function( popup ) { this.popup = popup; }, close: function( ) { this.toggleOverlappingEmbeds( false ); }, open: function( ) { this.toggleOverlappingEmbeds( true ); }, toggleOverlappingEmbeds: function( turnOff ) { ['embed','object','applet','select'].each( function( tag ) { var elems = document.getElementsByTagName( tag ); for ( var i = 0, l = elems.length; i < l; i++ ) { var e = $(elems[i]); if ( !turnOff || ( page.util.elementsOverlap( this.popup, e ) && !e.descendantOf( this.popup ) ) ) { elems[i].style.visibility = ( turnOff ? 'hidden' : '' ); } } }.bind( this ) ); } }; /** * Class for controlling the vtbe enable toggle. */ page.VTBEToggle = Class.create(); page.VTBEToggle.prototype = { initialize: function( vtbeDiv, vtbeOnOffToolKey ) { var toggleFunc = this.toggleVTBE.bindAsEventListener( this ); this.vtbeOnOffToolKey = ( vtbeOnOffToolKey ) ? vtbeOnOffToolKey : "textbox.wysiwyg"; var vtbeDivs = null; if ( vtbeDiv ) { // autowire the specified vtbe vtbeDivs = [ vtbeDiv ]; } else { // autowire all vtbe divs on the page vtbeDivs = document.getElementsByTagName('div'); } $A(vtbeDivs).each( function( div ) { // add toggle listener for each vtbe switch if ( page.util.hasClassName(div, 'vtbeSwitch') ) { div = $(div); if ( div.up('form') ) { var anchor = div.down('a'); page.VTBEToggle.form = div.up('form'); Event.observe( anchor, 'click', toggleFunc ); // save original form data so we can detect unsaved data when toggling VTBE if ( page.VTBEToggle.form && !page.VTBEToggle.origFormData ) { page.VTBEToggle.origFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); } } } }); }, toggleVTBE: function( event ) { // Stop the event to handle firefox behavior when posting into a page. Event.stop(event); // check & warn user of modified form data if ( page.VTBEToggle.form && page.VTBEToggle.origFormData ) { var origFormData = page.VTBEToggle.origFormData; if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var currentFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); for(var i in origFormData) { if ( origFormData.hasOwnProperty( i ) ) { var origVal = origFormData[i]; var currVal = currentFormData[i]; if ( currVal && typeof currVal != 'object' && ( ( typeof currVal != 'string' && origVal != currVal ) || ( typeof currVal == 'string' && origVal.trim() != currVal.trim().replace("&nbsp;","") ) ) ) { if (!confirm( page.bundle.getString("wysiwyg.visual.editor.confirm.unsaved.changes") )) { return; } break; } } } } // get current state of vtbe, toggle it, then reload page UserDataDWRFacade.getStringPermScope( this.vtbeOnOffToolKey, function( wysiwyg ) { UserDataDWRFacade.setStringPermScope( this.vtbeOnOffToolKey, (wysiwyg == 'Y') ? 'N' : 'Y', function() { // If there's a lightbox open, give it a chance to update itself instead of reloading the window if (!window.lightbox || !lightbox.deferUpdateLightboxContent()) { window.location.reload(); } }); }.bind( this )); } }; /** * Looks through the children of the specified element for links with the specified * class name, and if it finds any, autowires lightboxes to them. If lightbox.js/effects.js * hasn't already been loaded, load it. */ page.LightboxInitializer = Class.create( { initialize: function( className, parentElement ) { this.className = className; var links = parentElement.getElementsByTagName('a'); for ( var i = 0, l = links.length; i < l; i++ ) { if ( page.util.hasClassName( links[i], className ) ) { if ( window.lightbox && window.Effect) { this._autowire(); } else { this._load(); } break; } } }, _autowire: function() { lightbox.autowireLightboxes( this.className ); }, _load: function() { var h = $$('head')[0]; var scs = ( !window.lightbox ? ['/javascript/ngui/lightbox.js'] : []).concat( !window.Effect ? ['/javascript/scriptaculous/effects.js'] : [] ); scs.each( function( sc ) { var s = new Element('script', { type: 'text/javascript', src: sc } ); h.appendChild( s ); }); this._wait(); }, _wait: function() { var count = 0; new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( window.lightbox && window.Effect ) { pe.stop(); this._autowire(); } } else // give up if it takes longer than 5s to load lightbox.js/effects.js { pe.stop(); } }.bind(this), 0.05 ); } }); page.YouTubeControls = { toggleAXControls : function( playerid, openYtControlsId, event ) { if( $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display != 'block' ) { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'block'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'block'; $( openYtControlsId ).addClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } else { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'none'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'none'; $( openYtControlsId ).removeClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } Event.stop( event ); }, formatTime : function ( sec ) { var duration = parseInt( sec, 10 ); var totalMinutes = Math.floor( duration / 60 ); var hours = Math.floor( totalMinutes / 60 ); var seconds = duration % 60; var minutes = totalMinutes % 60; if ( hours > 0 ) { return hours + ':' + this.padZero( minutes ) + ':' + this.padZero( seconds ); } else { return this.padZero( minutes ) + ':' + this.padZero( seconds ); } }, padZero : function ( number ) { if (number < 10) { return "0" + number; } else { return number; } }, updateButtonLabels : function ( ytplayer, muteBtnId, playBtnId, status ) { if( ytplayer.isMuted() ) { $( muteBtnId ).update( page.bundle.getString( 'yt.unmute' ) ); } else { $( muteBtnId ).update( page.bundle.getString( 'yt.mute' ) ); } if( status == 1 ) { $( playBtnId ).update( page.bundle.getString( 'yt.pause' ) ); } else { $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); } } }; function onYouTubePlayerReady( playerid ) { var ytplayer = $( playerid ); if( !ytplayer ) { //ie fix: grab object tag instead of embed tag var objTagId = playerid.sub( 'ytEmbed', 'ytObject' ); ytplayer = $( objTagId ); } var playBtnId = playerid.sub( 'ytEmbed', 'playVideo' ); Event.observe( $( playBtnId ), 'click', function( event ) { if( ytplayer.getPlayerState() == 1 ) { ytplayer.pauseVideo(); } else { ytplayer.playVideo(); } Event.stop( event ); } ); var stopBtnId = playerid.sub( 'ytEmbed', 'stopVideo' ); Event.observe( $( stopBtnId ), 'click', function( event ) { ytplayer.pauseVideo(); ytplayer.seekTo( "0" ); $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); Event.stop( event ); } ); var volUpBtnId = playerid.sub( 'ytEmbed', 'volUp' ); Event.observe( $( volUpBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol > 89 ) { ytplayer.setVolume( 100 ); } else { ytplayer.setVolume( currVol + 10 ); } Event.stop( event ); } ); var volDownBtnId = playerid.sub( 'ytEmbed', 'volDown' ); Event.observe( $( volDownBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol < 11 ) { ytplayer.setVolume( 0 ); } else { ytplayer.setVolume( currVol - 10 ); } Event.stop( event ); } ); var muteBtnId = playerid.sub( 'ytEmbed', 'mute' ); Event.observe( $( muteBtnId ), 'click', function( event ) { if( ytplayer.isMuted() ) { ytplayer.unMute(); } else { ytplayer.mute(); } Event.stop( event ); } ); var timeDivId = playerid.sub( 'ytEmbed', 'currentTime' ); var statusDivId = playerid.sub( 'ytEmbed', 'currentStatus'); var dtTime = new Date(); new PeriodicalExecuter( function( pe ) { //lightbox closed, so stop this PeriodicalExecuter if( !$( timeDivId ) ) { pe.stop(); return; } //update the current time $( timeDivId ).update( page.YouTubeControls.formatTime( ytplayer.getCurrentTime() ) ); //update the current status var status = ytplayer.getPlayerState(); var statusStr = page.bundle.getString( 'yt.stopped' ); switch( status ) { case -1 : statusStr = page.bundle.getString( 'yt.stopped' ); break; case 0 : statusStr = page.bundle.getString( 'yt.ended' ); break; case 1 : statusStr = page.bundle.getString( 'yt.playing' ); break; case 2 : statusStr = page.bundle.getString( 'yt.paused' ); break; case 3 : statusStr = page.bundle.getString( 'yt.buffering' ); break; case 5 : statusStr = page.bundle.getString( 'yt.cued' ); break; } page.YouTubeControls.updateButtonLabels( ytplayer, muteBtnId, playBtnId, status ); $( statusDivId ).update( statusStr ); }.bind(this), 0.5 ); //wire the open/close controls wrapper var openYtControlsId = playerid.sub( 'ytEmbed', 'openYtControls' ); Event.observe( $( openYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); var closeYtControlsId = playerid.sub( 'ytEmbed', 'closeYtControls' ); Event.observe( $( closeYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); } page.util.flyoutMenuMainButtonKeyboardHandler = function( event ) { var key = event.keyCode || event.which; if (key == Event.KEY_LEFT || key == Event.KEY_RIGHT) { var elem = Event.element( event ); var target = elem.up( 'li' ); while ( true ) { if ( key == Event.KEY_LEFT ) { target = target.previous(); } else if ( key == Event.KEY_RIGHT ) { target = target.next(); } if ( !target || page.util.hasClassName( target, 'sub' ) || page.util.hasClassName( target, 'mainButton' ) || page.util.hasClassName( target, 'mainButtonType' ) ) { break; } } if ( target ) { var menuLinks = $A( target.getElementsByTagName( 'a' ) ); if ( menuLinks && menuLinks.length > 0 ) { menuLinks[ 0 ].focus(); Event.stop( event ); } } } }; page.util.initFlyoutMenuBehaviourForListActionMenuItems = function( container ) { //Initialize accessible flyout menu behavior if ( !container ) { container = document; } var uls = document.getElementsByTagName('ul'); if (uls) { var numUls = uls.length; for (var i = 0; i < numUls; i++) { var ul = uls[i]; if (page.util.hasClassName(ul, 'nav')) { var lis = ul.getElementsByTagName('li'); if (lis) { var numLis = lis.length; for (var j = 0; j < numLis; j++) { var li = lis[j]; if (page.util.hasClassName(li, 'sub')) { new page.FlyoutMenu($(li)); } else if (page.util.hasClassName(li, 'mainButton') || page.util.hasClassName(li, 'mainButtonType')) { var menuLinks = $A($(li).getElementsByTagName('a')); if (menuLinks && menuLinks.length > 0) { Event.observe(menuLinks[0], 'keydown', page.util.flyoutMenuMainButtonKeyboardHandler.bindAsEventListener(menuLinks[0])); } } } } } } } }; page.subheaderCleaner = { init : function( entityKind ) { var allHidden = true; var firstUl = null; var className = 'portletList-img courseListing ' + entityKind; $A( document.getElementsByClassName( className ) ).each( function( ul ) { if ( !ul.down() ) { ul.previous( 'h3' ).hide(); ul.hide(); if ( !firstUl ) { firstUl = ul; } } else { allHidden = false; } }); if ( allHidden && firstUl ) { firstUl.previous( 'div' ).show(); } } }; /** * Set up any JavaScript that will always be run on load (that doesn't depend on * any application logic / localization) here. * * Please leave this at the bottom of the file so it's easy to find. * */ FastInit.addOnLoad( function() { Event.observe( document.body, "click", page.ContextMenu.closeAllContextMenus.bindAsEventListener( window ) ); Event.observe( document.body, "click", page.ContextMenu.alignArrowsInBreadcrumb.bindAsEventListener( window ) ); Event.observe( document.body, 'keydown', function(event) { var key = event.keyCode || event.which; if ( key == 116 ) // reload current page on F5 key press { Event.stop( event ); // prevent browser from reloading complete frameset if ( Prototype.Browser.IE ) { event.keyCode = 0; } (function() { window.location.reload( true ); }.defer()); return false; } }); page.util.initFlyoutMenuBehaviourForListActionMenuItems(); if ( $('breadcrumbs') ) { new page.BreadcrumbExpander($('breadcrumbs')); // If we're in the content wrapper, hide the content wrapper breadcrumb frame // so that we don't get stacked breadcrumbs. if ( window.name === 'contentFrame' ) { var parent = window.parent; if ( parent ) { var frameset = parent.document.getElementById( 'contentFrameset' ); if ( frameset ) { frameset.rows = "*,100%"; } } } } var contentPane = $('contentPanel') || $('portalPane'); if ( contentPane ) { new page.LightboxInitializer( 'lb', contentPane ); } // add a label for inventory table checkboxes, if needed $A(document.getElementsByTagName("table")).each( function( table ) { if ( !page.util.hasClassName( table, 'inventory' ) ) { return; } var rows = table.rows; if ( rows.length < 2 ) { return; } for (var r = 0, rlen = rows.length - 1; r < rlen; r++) { var cells = rows[r+1].cells; // skip header row for (var c = 0, clen = cells.length; c < clen; c++) { var cell = $(cells[c]); var inp = cell.down('input'); if ( !inp || ( inp.type != 'checkbox' && inp.type != 'radio' ) ) { // We're only looking for checkbox/radio cells to label, so move on continue; } var lbl = cell.down('label'); if (lbl && !lbl.innerHTML.blank()) { break; // skip cells that already have a non-blank label } if ( !lbl ) { // add new label to checkbox lbl = new Element('label', {htmlFor: inp.id} ); lbl.addClassName('hideoff'); cell.insert({bottom:lbl}); } var headerCell = $(cell.parentNode).down('th'); if ( !headerCell ) { break; // skip rows without header cell } // create a temporary clone of the header cell and remove any hidden divs I.e. context menus var tempCell = $(headerCell.cloneNode(true)); var tempCellDivs = tempCell.getElementsByTagName("div"); for ( var i = 0; i < tempCellDivs.length; i++ ) { var d = tempCellDivs[i]; if ( d && !$(d).visible() ) { d.remove(); } } var lblBody = tempCell.innerHTML.replace( /<\/?[^>]*>/g, '' ); // strip html tags from header lblBody = page.bundle.getString('inventoryList.select.item', lblBody); lbl.update( lblBody ); // set label to header contents (minus tags) break; } } }); //set default font sizes to display text. hack to fix IE7 default font size issue. var sizes = {1:'xx-small', 2:'x-small', 3:'small', 4:'medium', 5:'large', 6:'x-large', 7:'xx-large'}; var fonts = document.getElementsByTagName('font'); for ( var i = 0; i < fonts.length; i++ ) { var font = fonts[i]; if ( font.size ) { // Since some font elements may be manually created by end users we have to handle random // values in here. if (!font.size.startsWith("+") && !font.size.startsWith("-")) { var fsize = parseInt(font.size, 10); if (fsize > 0 && fsize < 8) { font.style.fontSize = sizes[fsize]; } } } } try { if ( top && top.document.getElementById( 'bbFrameset' ) && window.name != 'nav' ) { top.document.getElementsByName('content')[0].title = page.bundle.getString( "frameset.contentframe.title" ) + " : " + document.title; } } catch ( err ) { // When Content System is loaded within a Vista popup window, cross-site security will prevent // accesses to top.document. Ignore this error and continue } page.scrollToEnsureVisibleElement(); page.isLoaded = true; }); /** * Class for adding an insertion marker within a list */ page.ListInsertionMarker = Class.create(); page.ListInsertionMarker.prototype = { initialize: function( listId, position, key, text ) { var list = $(listId); var listElements = list.childElements(); // create a marker list item var marker = new Element('li',{'id':listId+':'+key, 'class':'clearfix separator' }); marker.update('<h3 class="item" id=""><span class="reorder editmode"><span><img alt="" src="/images/ci/icons/generic_updown.gif"></span></span><span class="line"></span><span class="text">'+text+'</span></h3>'); //marker.setStyle({ position: 'relative', minHeight: '10px', padding: '0px', background: '#CCCCCC' }); position = ( position > listElements.length ) ? listElements.length : position; // add marker to list if (listElements.length == 0) { list.insert({top:marker}); // add marker to top of empty list } else if (listElements.length == position) { list.insert({bottom:marker}); // add marker after last element } else { listElements[position].insert({before:marker}); // add marker before element at position } var select = $('reorderControls'+listId).down('select'); // add a option for the marker to the keyboard repostioning select, if any if (select) { var option = new Element('option',{'value':key}).update( '-- '+text+' --' ); if (listElements.length == 0) { select.insert({top:option}); } else if (listElements.length == position) { select.insert({bottom:option}); } else { $(select.options[position]).insert({before:option}); } } } }; page.scrollToEnsureVisibleElement = function( ) { var params = window.location.search.parseQuery(); var ensureVisibleId = params.ensureVisibleId; if ( !ensureVisibleId ) { return; } var ensureVisibleElement = $(ensureVisibleId); if ( !ensureVisibleElement ) { return; } var pos = ensureVisibleElement.cumulativeOffset(); var scrollY = pos.top; var bodyHeight = $( document.body ).getHeight(); if (scrollY + ensureVisibleElement.getHeight() < bodyHeight) { return; // element is already visible } var receipt = $('inlineReceipt_good'); if ( receipt && receipt.visible() ) // pin receipt to top { var offset = receipt.cumulativeOffset(); offset.top = 0; var w = parseInt(receipt.getStyle('width'), 10); if ( Prototype.Browser.IE ) // width in IE includes border & padding, need to remove it { var bw = parseInt(receipt.getStyle('borderLeftWidth'), 10) + parseInt(receipt.getStyle('borderRightWidth'), 10); var pw = parseInt(receipt.getStyle('paddingLeft'), 10) + parseInt(receipt.getStyle('paddingRight'), 10); w = w - bw - pw; } receipt.setStyle({ position:"fixed", zIndex:"1000", left: offset.left + "px", top: offset.top + "px", width: w + "px"}); scrollY = scrollY - 2 * receipt.getHeight(); } // scroll window to show ensureVisibleElement window.scrollTo(0, scrollY ); }; /** * Recursively walks up the frameset stack asking each window to change their * document.domain attribute in anticipation of making a cross-site scripting * call to an LMS integration. * * <p>This should only be called from popup windows, as changing the document.domain * value of a window that is going to be reused later could do surprising things. * * @param domain Domain name shared by the Learn and LMS servers. */ page.setLmsIntegrationDomain = function( domain ) { if ( '' == domain ) { return; } try { if ( parent.page.setLmsIntegrationDomain ) { parent.page.setLmsIntegrationDomain( domain ); } } catch ( err ) { /* Ignore */ } document.domain = domain; }; page.refreshTopFrame = function() { if ( window.top.nav ) { window.top.nav.location.reload(); } }; page.rewriteTaskStatusUntilDone = function( spanId, taskId) { var theSpan = $(spanId); if (theSpan) { new Ajax.Request("/webapps/blackboard/execute/getSystemTaskStatus?taskId=" + taskId, { method: 'post', onSuccess: function(transport, json) { var result = transport.responseText.evalJSON( true ); theSpan = $(spanId); // reload it just in case it was removed between the request and response if (theSpan) { theSpan.update(result.text); if (result.complete == "false") { setTimeout(function() {page.rewriteTaskStatusUntilDone(spanId, taskId);}, 3000); } } }, onFailure: function(transport, json) { theSpan = $(spanId); //reload the span as above if (theSpan) { theSpan.hide(); $(spanId+'error').show(); } } }); } }; /* * Clean up the task id which associated with the specified course, so that the inline warning does not show up again */ page.cleanTaskId = function( courseId ) { //we don't care about the result, at worse it will display again on the next page new Ajax.Request("/webapps/blackboard/execute/courseMain?action=cleanTaskId&course_id=" + courseId, { method: 'post' }); }; } /* ================================================================== *The JavaScript Validation objects to be used in form validation. * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ /** * General purpose DOM utility methods. There's probably a better place for this. * Private methods and properties have names prefixed with "_". */ var bbDomUtil = { _inputTypes: [ 'input', 'textarea', 'select', 'button' ], _maxRecursion: 500, /** * @param elName name of the form input element (the request parameter name). * @return an array of two or more elements, a single element, or null. */ getInputElementByName: function( elName ) { var elArray = this._getInputElementsByNameInSection( 'dataCollectionContainer', elName ); if ( elArray.length === 0 ) { elArray = this._getInputElementsByName( elName ); } return ( elArray.length === 0 ) ? null : ( elArray.length == 1 ? elArray[ 0 ] : elArray ); }, /* * @param sectionId the ID of any element inside a form * @return the enclosing form element or null */ getEnclosingForm: function( sectionId ) { var form = null; if ( sectionId ) { var count; var section = document.getElementById( sectionId ); while ( section ) { ++count; if ( count > this._maxRecursion ) { break; } if ( section.tagName && section.tagName.toLowerCase() == "form" ) { form = section; break; } section = section.parentNode; } } return ( !form ) ? ( document.forms.length === 0 ? null : document.forms[ 0 ] ) : form; }, /** * Adds some additional processing to account for an IE bug * @param id the ID of an element */ getElementById: function( id ) { var el = $( id ); try { if ( el && /msie|internet explorer/i.test( navigator.userAgent ) && el.attributes.id && el.attributes.id.value != id && document.all ) { // IE usually returns item at 0 for ( var i = 0; i < document.all[ id ].length; ++i ) { if ( document.all[ id ][ i ].attributes.id && document.all[ id ][ i ].attributes.id.value == id ) { return $( document.all[ id ][ i ] ); } } } } catch ( e ) { // Ignore all exceptions } return el; }, syncCheckboxToInput: function( checkboxElement, inputElement ) { var checkbox = $( checkboxElement ); var input = $( inputElement ); if ( checkbox && input ) { var checkIfNotEmpty = function( ) { checkbox.checked = ( input.value.strip?input.value.strip( ):input.value )?true:false; } input.observe( 'change', checkIfNotEmpty ); input.observe( 'blur', checkIfNotEmpty ); } }, /** * @param sectionId the ID of an element that restricts the scope of elements. Cannot be null. * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name in the scope of the specified parent element. */ _getInputElementsByNameInSection: function( sectionId, elName ) { var result = []; if ( sectionId ) { var section = document.getElementById( sectionId ); if ( section ) { for ( var i = 0; i < this._inputTypes.length; ++i ) { var elements = section.getElementsByTagName( this._inputTypes[ i ] ); for ( var j = 0; j < elements.length; ++j ) { if ( elements[ j ].name == elName ) { result.push( elements[ j ] ); } } } } } return result; }, /** * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name. */ _getInputElementsByName: function( elName ) { var result = []; var elArray = document.getElementsByName( elName ); var formName = null; for ( var i = 0; i < elArray.length; ++i ) { if ( elArray[ i ].tagName.match( /^(input|select|textarea|button)$/i ) ) { if ( elArray[ i ].form !== null ) { if ( !formName ) { formName = elArray[ i ].form.name; } else if ( formName != elArray[ i ] .form.name ) { // Ignore elements that don't belong to the same form as the first one found. continue; } result.push( elArray[ i ] ); } } } return result; } }; /************************************************************ * Object formCheckList. Use this object to hold form objects * to be validated and perform form validation ************************************************************/ var addElement, removeElement, removeAllElements, getElement, checkForm, CheckGroup; var formCheckList = new formCheckList(); var dblSubmit = false; var skipValidation=false; function formCheckList() { this.checkList = []; this.addElement = addElement; this.removeElement = removeElement; this.removeAllElements = removeAllElements; this.getElement = getElement; this.check = checkForm; } function addElement(element) { if ( typeof element.group != 'undefined' ) { for ( var i=0; i < this.checkList.length;i++ ) { if ( this.checkList[i].name == element.group ) { this.checkList[i].addElement(element); return; } } var grp = new CheckGroup(element); grp.addElement(element); this.checkList[this.checkList.length] = grp; return; } this.checkList[this.checkList.length] = element; } function removeElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { this.checkList.splice(i, 1); } } } function getElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { return this.checkList[i]; } } } function removeAllElements() { var valSize = this.checkList.length; this.checkList.splice(0, valSize); } function checkForm() { if ( typeof(window.invalidAnswersTmp)!='undefined' ) { window.invalidAnswersTmp=[]; } var valid =true; for ( var i=0;i<this.checkList.length;i++ ) { if ( this.checkList[i].canValidate && !this.checkList[i].canValidate() ) { // cannot validate the input so skip it and continue onto the next input continue; } if ( !this.checkList[i].check() ) { if ( this.checkList[i].answerChk ) { valid=false; } else { return false; } } } return valid; } ///////////////////End of object formCheckList//////////////// /************************************************************ * Object: inputText. Use this object to validate text input in * your form (for input type == text|password|textarea|BUT NOT FILE!!! (FILE IS READ-ONLY)) ************************************************************/ function inputText(h) { if (h.id) { this.element = bbDomUtil.getElementById( h.id ); } else { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; } this.shouldFocus = h.shouldFocus; if ( h.shouldFocus === undefined ) { this.shouldFocus = true; } if ( this.shouldFocus ) { this.formatElement = 'bbDomUtil.getInputElementByName("'+h.display_format+'")'; this.focusElement = h.focus_element; // override element for focus in case of error } this.fieldName = h.name; this.disable_script = h.disable_script; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.minlength = h.minlength; this.maxlength = h.maxlength; this.trim = h.trim; this.regex = h.regex; this.regex_msg = h.regex_msg; this.regex_match = h.regex_match; this.verify = h.verify; this.check = inputTextCheck; this.valid_number = h.valid_number; this.min_value = h.min_value; this.max_value = h.max_value; this.nonnegative = h.nonnegative; this.valid_float = h.valid_float; this.allow_negative_float = h.allow_negative_float; this.valid_percent = h.valid_percent; this.allow_negative_percent = h.allow_negative_percent; this.valid_efloat = h.valid_efloat; // float with optional exponent this.valid_email = h.valid_email; this.valid_url = h.valid_url; this.required_url = h.required_url; this.invalid_chars = h.invalid_chars; // eg: /[%&#<>=+,]/g this.cmp_element = 'bbDomUtil.getInputElementByName("'+h.cmp_field+'")'; this.cmp_ref_label = h.cmp_ref_label; this.xor = h.xor; this.cmp_required = h.cmp_required; this.activeX = h.activeX; // synch activeX to hidden field before submission this.isHtmlDoc = h.isHtmlDoc; // is portfolio with body and html this.img_check = h.img_check; this.empty_value_warn = h.empty_value_warn; this.valid_system_role_id = h.valid_system_role_id; this.required = h.required; this.canValidate = h.canValidate; // callback function to determine whether the inputtext should be validated if (h.ref_and_regex === undefined) { this.ref_and_regex = true; } else { this.ref_and_regex = h.ref_and_regex; } if ( document.all && document.getElementById(h.name+'_ax') ) { this.axobj = document.getElementById(h.name+'_ax'); } // Add here anything you need to validate } function isAnEmptyVtbe(val) { // Different browsers populate an 'empty' VTBE with a different blank line - look for any of the known combinations and ignore them. // NOTE: Changes to this method need to be reflected in AssessmentDisplayControl.isAnEmptyVtbe return ( !val || !val.replace(/<p><\/p>/gi,'').trim() || !val.replace(/<br \/>/gi,'').trim() || !val.replace(/&nbsp;/gi,'').trim()); } // Do actual check here function inputTextCheck() { if ( this.shouldFocus === undefined ) { this.shouldFocus = true; } var element = eval(this.element); var cmp_element = eval(this.cmp_element); if ( element ) { // don't validate disabled elements if (element.disabled) { return true; } var focusElement = element; if ( this.axobj ) { focusElement = this.axobj; } this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.custom_alert_cmp = (typeof this.custom_alert_cmp != 'undefined') ? this.custom_alert_cmp : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( isAnEmptyVtbe(val) ) { val=''; } var trimmedVal, numVal, isValidNum, re; if ( this.activeX && isEmptyWysiwyg(element) ) { element.value = ''; val = ''; } if ( typeof eval(this.formatElement) != "undefined" && eval(this.formatElement) !== null ) { //Check if it is a mathml where; if ( /<APPLET ID="(\d+)" NAME="(\w+)"/.test(element.value) ) { if ( getRadioValue(eval(this.formatElement)) == 'P' ) { if ( !confirm(JS_RESOURCES.getString('validation.plain_text.confirm')) ) { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } } if ( this.trim ) { val = val.trim(); element.value = val; } //Remove leading & trailing spaces if needed if ( typeof cmp_element != 'undefined' ) { if ( this.xor ) { if ( val.trim()=='' ^ cmp_element.value.trim()=='' ) { if ( val.trim()=='' ) { alert( this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } } else { alert(this.custom_alert_cmp ? this.custom_alert_cmp : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.cmp_ref_label, this.ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } } return false; } } } if ( this.disable_script ) { if ( typeof eval(this.formatElement) == "undefined" || getRadioValue(eval(this.formatElement)) != 'P' ) { re = /<\s*script/ig; var re1 = /<\s*\/\s*script\s*>/ig; val = val.replace(re,'<disabled-script'); val = val.replace(re1,'</disabled-script>'); var re2 = /href\s*=\s*(['"]*)\s*javascript\s*:/ig; val = val.replace(re2,"href=$1disabled-javascript:"); element.value = val; } } if ( this.valid_number ) { trimmedVal = val.trim(); //added this check bcoz for numeric fields which are not required, this function was not working if ( trimmedVal!="" ) { var numLocalizer = new NumberLocalizer(); if ( numLocalizer === undefined ) { numVal = parseInt(trimmedVal, 10); } else { numVal = numLocalizer.parseNumber( trimmedVal ); } isValidNum = !isNaN(numVal); if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if (this.nonnegative && numVal<0) { alert(JS_RESOURCES.getFormattedString('validation.negative', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if ( ( (this.min_value || this.min_value === 0) && numVal < this.min_value ) || ( this.max_value && ( numVal > this.max_value ) ) ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_value', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_float ) { trimmedVal = val.trim(); var numFormat; if ( this.allow_negative_float ) { numFormat = LOCALE_SETTINGS.getString('float.allow.negative.format'); } else { numFormat = LOCALE_SETTINGS.getString('float.format'); } if ( numFormat ) { //hand parse for l10n re = new RegExp( numFormat ); isValidNum = trimmedVal.search( re ) === 0; } else { //try to use platform native (non-localized) numVal = parseFloat(trimmedVal); isValidNum = !isNaN(numVal); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test(trimmedVal.substring(numVal.toString().length)); } } if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_percent ) { if ( this.allow_negative_percent ) { if ( !isValidNegativePercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.allow_negtive.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { if ( !isPercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_efloat ) { if ( !isNumeric(val) ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { focusElement = (this.focusElement ? this.focusElement : this.element); if ( focusElement.focus ) { safeFocus( focusElement ); } } return false; } } if ( this.valid_email ) { if ( val.trim() == '' ) { if ( confirm(JS_RESOURCES.getString('warning.email')) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { re = /^(['`a-zA-Z0-9_+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; if ( !re.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.email', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } // confirms via javascript pop-up if input field is empty; // user can click Ok to proceed or cancel to go back with the element focused // the message that pops up is the message passed in with ref_label if ( this.empty_value_warn ) { if ( val.trim() == '' ) { if ( confirm(this.ref_label) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } var extra = 0; if (navigator.appName=="Netscape" && parseInt(navigator.appVersion, 10 )>=5) { var index = val.indexOf('\n'); while(index != -1) { extra += 1; index = val.indexOf('\n',index+1); } } if ( this.maxlength < val.length + extra ) { var newlength = val.length + extra; if ( (newlength - this.maxlength) > 1 ) { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.plural', [this.ref_label,this.maxlength,(newlength-this.maxlength)])); } else { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.singular', [this.ref_label,this.maxlength])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } // required_url, unlike valid_url, flags empty strings as invalid URLs. if ( this.required_url ) { if ( val.trim() == '' ) { alert(JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } if ( !isValidUrl(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_url ) { if ( val.trim()=='' ) { return true; } var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; if ( !oRegExp.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( typeof(this.regex) == 'string' ) { this.regex=eval(this.regex); } if ( (typeof(this.regex) == 'object' || typeof(this.regex) == 'function') && val.trim() != '' ) { re =this.regex; if ( this.regex_match && val.search(re) == -1 ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } if ( !this.regex_match && re.test(val) ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.invalid_chars ) { // if string was passed, convert to regular expression object if( Object.isString( this.invalid_chars ) ) { var stringToParse = this.invalid_chars; var firstSlashPos = stringToParse.indexOf("/"); var lastSlashPos = stringToParse.lastIndexOf("/"); var pattern = stringToParse.substring( ++firstSlashPos, lastSlashPos ); var modifier = stringToParse.substring( ++lastSlashPos, stringToParse.length ); this.invalid_chars = new RegExp( pattern, modifier ); } var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.verify ) { var chk_field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'_chk')); var field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'')); if ( chk_field.value != val ) { alert(JS_RESOURCES.getFormattedString('validation.mismatch', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( chk_field ); } return false; } // Encode password if ( element.type == 'password' ) { element.value = element.value.trim(); if ( element.value != '' ) { element.value = field.value = chk_field.value = calcMD5(element.value); } else { alert(JS_RESOURCES.getString('validation.password')); element.value = field.value =''; if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.cmp_required && element.value.trim()!='' ) { if ( !cmp_element.value.trim().length ) { alert(JS_RESOURCES.getFormattedString('validation.cmp_field.rejected', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } return false; } } if ( this.img_check ) { return image_check(element); } //AS-102122, if a image tag without ALT properties <img src="1.jpg">, add a null ALT for it. <img src="1.jpg" alt=""> imgTag_check(element,0); // System role ids cannot begin with "BB" as of 7.2; such ids are reserved for solely for Blackboard use // Checks field to see if string begins with "BB" case-insensitive and if so, alert the user if ( this.valid_system_role_id ) { if ( element.value.indexOf('BB') === 0 || element.value.indexOf('bb') === 0 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.system_role.reserve', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } else { return true; } } } return true; } ///////////////////End of object inputText/////////////////// //check ALT propertity for <img tag, if there isn't ALT propertiry, add ALT="" for this tag function imgTag_check(element , start){ var imgStart = element.value.indexOf("<img",start); // img: <img src=... > if (imgStart > -1 ){ var end = element.value.indexOf(">",imgStart); if (end == -1 ){ return; } var imgData = element.value.substring(imgStart, end+1); // <img src=... > if(imgData.indexOf("alt") == -1){ imgData = "<img alt=\"\" " + imgData.substring(4); element.value = element.value.substring(0,imgStart) + imgData + element.value.substring(end+1); } imgTag_check(element, end); } } function image_check(element) { var ext = element.value.match(/.*\.(.*)/); ext = ext ? ext[1] :''; var re = /gif|jpeg|png|tif|bmp|jpg/i; if ( ! re.test(ext) && element.value ) { if ( ! confirm(JS_RESOURCES.getFormattedString('validation.image_type', [ext])) ) { element.focus(); return false; } } return true; } /************************************************************ * Object: inputDate. Use this object to validate that the * associated date fields are not empty ************************************************************/ var inputDateCheck; function inputDate(h) { this.element_mm = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mm")'; this.element_dd = 'bbDomUtil.getInputElementByName("'+h.name+'_0_dd")'; this.element_yyyy = 'bbDomUtil.getInputElementByName("'+h.name+'_0_yyyy")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputDateCheck; // Add here anything you need to validate } // Do actual check here function inputDateCheck() { var element_mm = eval(this.element_mm); var element_dd = eval(this.element_dd); var element_yyyy = eval(this.element_yyyy); if ( typeof element_mm != 'undefined' && element_dd !='undefined' && element_yyyy !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = ( this.ref_label ) ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_mm.name]); if ( element_mm.selectedIndex == -1 || element_dd.selectedIndex == -1 || element_yyyy == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.date.required', [this.ref_label])); if ( element_mm.selectedIndex == -1 ) { element_mm.focus(); } else if ( element_dd.selectedIndex == -1 ) { element_dd.focus(); } else { element_yyyy.focus(); } return false; } } return true; } ///////////////////End of object inputDate/////////////////// /************************************************************ * Object: inputTime. Use this object to validate that the * associated time fields are not empty ************************************************************/ var inputTimeCheck; function inputTime(h) { this.element_hh = 'bbDomUtil.getInputElementByName("'+h.name+'_0_hh")'; this.element_mi = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mi")'; this.element_am = 'bbDomUtil.getInputElementByName("'+h.name+'_0_am")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputTimeCheck; // Add here anything you need to validate } // Do actual check here function inputTimeCheck() { var element_hh = eval(this.element_hh); var element_mi = eval(this.element_mi); var element_am = eval(this.element_am); if ( typeof element_hh != 'undefined' && element_mi !='undefined' && element_am !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_hh.name]); if ( element_hh.selectedIndex == -1 || element_mi.selectedIndex == -1 || element_am == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.time.required', [this.ref_label])); if ( element_hh.selectedIndex == -1 ) { element_hh.focus(); } else if ( element_mi.selectedIndex == -1 ) { element_mi.focus(); } else { element_am.focus(); } return false; } } return true; } ///////////////////End of object inputTime/////////////////// /************************************************************ * Object: inputSelect. Use this object to validate that the * associated select field is not empty ************************************************************/ var inputSelectCheck; function inputSelect(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.minSelected = h.minSelected; this.maxSelected = h.maxSelected; this.title = h.title; this.isMultiSelect = h.isMultiSelect; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputSelectCheck; // Add here anything you need to validate } // Do actual check here function inputSelectCheck() { var element = eval(this.element); var checked = 0; if ( typeof element != 'undefined' ) { if ( this.isMultiSelect) { if( this.minSelected ) { //check that at least minSelected number of options is selected //bsomala checked = element.options.length; if(checked < this.minSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.minItems', [this.minSelected])); element.focus(); return false; } } checked = 0; if ( this.maxSelected ) { checked = element.options.length; if(checked > this.maxSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.maxItems', [this.maxSelected])); element.focus(); return false; } } } else { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); if ( (element.selectedIndex == -1) || (element.options[element.selectedIndex].value == "") ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); element.focus(); return false; } } } return true; } ///////////////////End of object inputSelect/////////////////// /************************************************************ * Object: inputFile. Use this object to validate that the file upload is not empty. IMPORTANT: file type is READ ONLY ************************************************************/ var inputFileCheck; function inputFile(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.invalid_chars = h.invalid_chars; this.minlength = h.minlength; this.img_check = h.img_check; this.check = inputFileCheck; // Add here anything you need to validate } // Do actual check here function inputFileCheck() { var element = eval(this.element); if ( typeof element != 'undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( this.invalid_chars ) { var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); shiftFocus( element, false); return false; } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } return false; } if ( this.img_check ) { return image_check(element); } } return true; } ///////////////////End of object inputFile/////////////////// /************************************************************ * Object: Check_EventTime. Use this object to make sure * that the end time is not before the start time, confirm pastdue time, * check duration of the event. *************************************************************/ var Check_EventTime_check; function Check_EventTime(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check; } function Check_EventTime_check() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( (document.forms[0].restrict_start && document.forms[0].restrict_end)|| (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end) ) { if ( (document.forms[0].restrict_start && document.forms[0].restrict_end && document.forms[0].restrict_start.checked && document.forms[0].restrict_end.checked) || (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end && document.forms[1].restrict_start.checked && document.forms[1].restrict_end.checked) ) { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } } else { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end && end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /* * SCR 17696 * This validation check should be used in the date widgets instead of the earlier one * as that has the chackboxes names hardcoded in them. The existing date wodgets * use it, but going ahead this should be the used. It helps specially when there are * multiple date widgets on the same page. */ var Check_EventTime_check_multiple; function Check_EventTime_multiple(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check_multiple; } function Check_EventTime_check_multiple() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( restr && cmp_restr ) { //This block has been aded due to SCR 17696. //Reason : if this method is directly called from a JSP page which is not a part of // the existing date widgets, and the parameters of stsrt date, end date, start checkbox and // end checkbox are passed, and additionally the page has another if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /*We always need time in our favorite format */ function sql_datetime(dat) { var year = dat.getFullYear(); var mon = dat.getMonth(); mon++; mon = (mon<10)?'0'+mon:mon; var day = dat.getDate(); day = (day<10)?'0'+day:day; var hh = dat.getHours(); hh = (hh<10)?'0'+hh:hh; var mi = dat.getMinutes(); mi = (mi<10)?'0'+mi:mi; var ss = dat.getSeconds(); ss = (ss<10)?'0'+ss:ss; return year+'-'+mon+'-'+day+' '+hh+':'+mi+':'+ss; } ///////////////////End of object Check_EventTime///////////// /******************************************************************************** * Object DoubleSubmit(): * Use this object to prevent multiple times form submission * Second argument is wait image source; first argument is image name (string) or * instance of ImageSwapper object created for submit button (if it has rollovers) *********************************************************************************/ var checkDoubleSubmit; // Prevent multiple form submission function DoubleSubmit() { this.submitted = 0; this.check = checkDoubleSubmit; } function checkDoubleSubmit() { if ( this.submitted > 0 ) { alert (JS_RESOURCES.getString('notification.submit')); return false; } else { this.submitted++; } return true; } ///////////////////End of Object DoubleSubmit()////////////////// /******************************************************************************** * Object RadioCheckBox(): * Use this object to make sure that at least one item is selected from the group of * radio/checkbox groups. Just attach this code to checkbox/radio group (refered below as 'element'): * formCheckList.addElement(new RadioCheckBox({name:'element or subgroup name',group:'group name',ref_label:"group label in alerts"})); *********************************************************************************/ var groupAddElement, checkGroupChecked, groupIsChecked; // Constructor function function RadioCheckBox(h) { return h; } function CheckGroup(h) { this.name = h.group; this.ref_label = h.ref_label; this.elements = []; this.addElement = groupAddElement; this.check = checkGroupChecked; } function groupAddElement(h) { this.elements[this.elements.length] = h.name; } function checkGroupChecked() { var list = this.elements; var chk = false; for ( var i = 0; i < list.length; i++ ) { if ( groupIsChecked(list[i]) ) { return true; } } var msg = null; var group = bbDomUtil.getInputElementByName(list[0]); group = (typeof group[0] != 'undefined') ? group[0]:group; if ( group.type == "radio" ) { msg = JS_RESOURCES.getFormattedString('validation.radio.required', [this.ref_label]); } else { msg = JS_RESOURCES.getFormattedString('validation.option.required', [this.ref_label]); } alert(msg); group.focus(); return false; } function groupIsChecked(groupName) { var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var checked = false; if ( typeof group != 'undefined' ) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( group[i].checked ) { checked = true; return checked; } } } else { if ( group.checked ) { checked = true; return checked; } } } return checked; } ///////////////////End of Object CheckGroup()//////////////////// /******************************************************************************** * Object selector(): * Use this object to make sure that at least one item is available in the Selector element (see PickerElement.java) * For use when Selector is marked Required: * formCheckList.addElement(new CheckSelector({name:'element or subgroup name',ref_label:"group label in alerts"})); *********************************************************************************/ var selectorCheck, selectorElementAvailable; // Constructor function function selector(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.required = h.required; this.check = selectorCheck; // Add here anything you need to validate } // Do actual check here function selectorCheck() { if(this.required) { var isAvailable = selectorElementAvailable(this.fieldName); this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element.name]); if ( !isAvailable ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } } return true; } function selectorElementAvailable(groupName) { // we need at least one "Remove" checkbox to be present and unchecked (one element is added but not removed) var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var available = false; if ( typeof group != 'undefined' && group !== null) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( !group[i].checked ) { available = true; return available; } } } else { if ( !group.checked ) { available = true; return available; } } } return available; } ///////////////////End of Object CheckSelector()//////////////////// //////////////// Start some useful generic functions //////////// /* Function ltrim(): Remove leading spaces in strings: Usage:trimmedString = originalString.ltrim(); */ function ltrim() { return this.replace( /^\s+/g,''); } String.prototype.ltrim = ltrim; /* Function rtrim(): Remove trailing spaces in strings: Usage:trimmedString = originalString.rtrim(); */ function rtrim() { return this.replace( /\s+$/g,''); } String.prototype.rtrim = rtrim; /* Function trim(): Remove leading and trailing spaces in strings: Usage:trimmedString = originalString.trim(); */ function trim() { return this.rtrim().ltrim(); } String.prototype.trim = trim; /* Function invalidChars(): Returns an array of illegal chars Usage: var listOfChars = myStringToSearch.invalidChars(regularExpression); regularExpression = /[illegal chars]/g; Sample re = /[! &^$#]/g */ function invalidChars (re) { var chrs = this.match(re); if ( chrs ) { for ( var j=0;j<chrs.length;j++ ) { if ( chrs[j]===' ' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.space'); } else if ( chrs[j]==',' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.comma'); } else if ( chrs[j]=='\\' ) { chrs[j]='\\\\'; } } } return chrs; } String.prototype.invalidChars = invalidChars; /** Function getRadioValue(): Returns selected value for group of radio buttons * Usage: var selectedValue = getRadioValue(radio); radio - reference to radio group */ function getRadioValue(radio) { for ( var i=0;i< radio.length;i++ ) { if ( radio[i].checked ) { return radio[i].value; } } } /** Function isEmptyWysiwyg(): Checks WYSIWYG control for value */ function isEmptyWysiwyg(field) { // first remove any HTML tags from the value, then check if it's empty (all spaces or &nbsp;s) // explicitly adding the unicode non-breaking space and line feed/break since IE and safari // don't seem to include them in \s var EMPTY_REGEXP = /^(\s|\u00A0|\u2028|\u2029|&nbsp;)*$/i; // Input is not empty if it contains one of the following tags: img/object/embed var SPECIALTAGS = /(<\s*(img)|(object)|(embed)|(hr)|(input)|(applet))/i; if ( field && typeof(field.value) == 'string' && field.value ) { var notags = field.value.replace(/<.*?>/g,''); var result = EMPTY_REGEXP.test(notags); return ( result && !SPECIALTAGS.test(field.value) ); } return true; } /** Function isValidUrl(): Checks if given string is in the general URL format */ var VALID_URL_REGEXP = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; function isValidUrl(string) { return( VALID_URL_REGEXP.test(string) ); } /** Numeric */ var EFLOAT_REGEXP = LOCALE_SETTINGS.getString('efloat.format'); var THOUSANDS_SEP = LOCALE_SETTINGS.getString('thousand.sep.format'); /*rejectThousandSep: if true then the presence of the thousands-separator is an error (non-numeric) * e.g. we don't accept it for point, since point/score is rarely in thousands range. */ function isNumeric(string, rejectThousandSep ) { string = string.trim(); if ( rejectThousandSep !== null && rejectThousandSep ) { var hasThousands = ( string.search( new RegExp( THOUSANDS_SEP ) ) !== -1 ) ; if (hasThousands) { return false; } } string = string.replace(new RegExp(THOUSANDS_SEP, 'g'), ''); if ( string.search( new RegExp(EFLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return !isNaN(floatValue); } return false; } /** Float between 0 and 100 */ var FLOAT_REGEXP = LOCALE_SETTINGS.getString('float.format'); function isPercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= 0 && floatValue <= 100 ); } return false; } /** Float between -100 and 100 */ var FLOAT_ALLOW_NEGATIVE_REGEXP = LOCALE_SETTINGS.getString('float.allow.negative.format'); function isValidNegativePercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_ALLOW_NEGATIVE_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= -100 && floatValue <= 100 ); } return false; } /*Function submitForm() Call this function to validate and submit form @param form the name of the form or the DOM object representing the form. If null or undefined, submits first form on page. */ function submitForm(form) { if ( validateForm() ) { if (form) { if ( typeof( form ) == "string" ) { document.forms[ form ].submit(); } else { form.submit(); } } else { document.forms[0].submit(); } } } /* Sort numerical array in ascending order */ function numericalArraySortAscending(a, b) { return (a-b); } /*Function validateForm() * Call this function onSubmit inside <form> tag */ function validateForm() { // Set textarea value to VTBE contents if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if ( skipValidation ) { return true; } /* Validate form */ var valid = formCheckList.check(); var i; /*Check for invalid answers if any present */ var invalidAnswersArray = []; var invAns = window.invalidAnswers; if ( typeof( invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } invAns = window.invalidAnswersTmp; if ( typeof(invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } var stringArg = ''; if ( invalidAnswersArray.length > 0 ) { invalidAnswersArray.sort(numericalArraySortAscending); var lastIndex = invalidAnswersArray.length - 1; for ( var x = 0; x < invalidAnswersArray.length; x++ ) { stringArg += invalidAnswersArray[x]; if ( x < lastIndex ) { if ( ( (x+1) % 10 ) === 0 ) { stringArg += ",\n"; } else { stringArg += ","; } } } } if ( stringArg !== '' && valid ) { var msgKey; if ( !assessment.backtrackProhibited ) { msgKey = 'assessment.incomplete.confirm'; } else { msgKey = 'assessment.incomplete.confirm.backtrackProhibited'; } if (assessment.isSurvey) { msgKey = msgKey + ".survey"; } if ( !confirm( JS_RESOURCES.getFormattedString( msgKey, [stringArg] ) ) ) { valid = false; // User decided not to submit } else { assessment.userReallyWantsToSubmit = true; } window.invalidAnswersTmp = []; // Clearing up } /* Go back to placeholders if validation failed (valid == false) */ if ( ismath && !valid ) { api.setMathmlBoxes(); } /* If everything is OK and ready to go,check that the form was not already submitted */ if ( valid && dblSubmit ) { valid = dblSubmit.check(); } return valid; } /*Function boxSelector() * Use this function to select, unselect or invert selection for specified checkbox groups * Call: boxSelector(['name1','name2',...,'namen'],action), here action is 'select', or 'unselect', or 'invert' */ function boxSelector(list,action) { action = (action == 'select') ? true : (action == 'unselect') ? false : action; for ( var i=0;i<list.length;i++ ) { var group = 'bbDomUtil.getInputElementByName("'+list[i]+'")'; if ( typeof (group = eval(group)) != 'undefined' ) { var j; if ( action == 'invert' ) { for ( j=0;j<group.length;j++ ) { group[j].checked = !group[j].checked; } } else { for ( j=0;j<group.length;j++ ) { group[j].checked = action; } } } } } function setHidden (from,to) { var hide = eval(to); hide.value = from.value; } ////////////////////////////////////////////////////////////////// /** * Check_Answer object was added by request specified in mscr 524 * to provide validation to student answers * Variable invalidAnswers has to be added to the page where assessment is submitted * It should contain the list of unfinished questions excluding question(s) on current page * Check_Answer object will perform final validation and display all unfinished questions in confirm box */ var invalidAnswers = []; // the java code will populate this array on final QbyQ page /** Object constructor for answers walidation * */ var Check_Answer_check; function Check_Answer (vobj) { if ( typeof(window.invalidAnswersTmp)=='undefined' ) { window.invalidAnswersTmp=[]; } this.form = 'document.forms[0]'; this.element = 'bbDomUtil.getInputElementByName("'+vobj.name+'")'; this.name = vobj.name; this.answerChk = true; //Check_Answer is special check, it makes a list of unfinished questions and always return true this.ref_label = vobj.ref_label; this.check = Check_Answer_check; } //Test if at least one member of radio or checkbox group is selected function isChecked(grp) { if (typeof(grp.length) != 'undefined') { for ( var i=0;i< grp.length;i++ ) { if ( grp[i].checked ) { return true; } } return false; } else { return grp.checked; } } function Check_Answer_check() { //create form element object var el = eval(this.element); //Extract question type information from element name var qtype = /^(\w+)-/.exec(this.name); if ( !qtype ) { qtype = /^([^_]+)_/.exec(this.name); } qtype = qtype[1]; if ( qtype == 'ma' ) { qtype = /-\d+$/.test(this.name) ? 'mat' : 'ma'; } // Perform actual check-up if ( qtype == 'tf' || qtype == 'mc' || qtype == 'ma' || qtype == 'eo' ) { if ( !isChecked(el) ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]=this.ref_label; } } else if ( qtype == 'ord' || qtype == 'mat' ) { if ( el.selectedIndex === 0 && this.ref_label != window.invalidAnswersTmp[window.invalidAnswersTmp.length-1] ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'fitb' || qtype == 'essay' || qtype == 'num' || qtype == 'calc' || qtype == 'hs' || qtype == 'jumbled_sentence' || qtype == 'fib_plus' || qtype == 'quiz_bowl' ) { //remove isEmptyWysiwyg for these question types, since they should allow some chars as < > var val = el.value; if ( isAnEmptyVtbe(val) ) { val=''; } if ( val.trim().length < 1 ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'file' ) { var haveFile = false; var hiddenField = eval(this.form + '.elements["' + this.name + '-override"]'); if ( hiddenField && hiddenField.value == "true" ) { haveFile = true; } el = eval(this.form + '.elements["' + this.name + '_attachmentType"]'); if ( !haveFile && el && el.value !== "" ) { haveFile = true; } if ( !haveFile ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } // eliminate duplicates // TODO: think of a better way to do this if ( window.invalidAnswersTmp.length > 0 ) { var tmpArray = []; var tmpObject = {}; for ( var i = 0; i < window.invalidAnswersTmp.length; ++i ) { if ( !tmpObject[window.invalidAnswersTmp[i]] ) { tmpObject[window.invalidAnswersTmp[i]] = true; tmpArray[tmpArray.length] = window.invalidAnswersTmp[i]; } } window.invalidAnswersTmp = tmpArray; } return true; //Always true, we can make decision later through confirm } // wrapper function for focus() calls function shiftFocus(el, isVTBE) { if ( el ) { if ( isVTBE && editors && editors[el.name] && typeof(editors[el.name].focusEditor) == 'function' ) { editors[el.name].focusEditor(); } else if ( !el.disabled && !el.readOnly && el.type != "hidden" ) { safeFocus( el ); } } return; } function safeFocus( e ) { try { if ( e && e.focus ) { e.focus(); } } catch (er) { //Ignore, element is hidden in IE and can't be focused. } } /** * A validator that checks to see that a certain radio button in a group is * selected. This is intended to be used for conditional validation -- * validators that only apply when a certain radio button selection is made. * Note that if there are no selected values, this validator will return false * when checked. * - name - radio button group to check * - value - the radio button value to check for selection */ var RadioButtonValueValidator_check; function RadioButtonValueValidator( name, value ) { this.element = bbDomUtil.getInputElementByName(name); this.value = value; this.check = RadioButtonValueValidator_check; } function RadioButtonValueValidator_check() { for ( var i = 0; i < this.element.length; i++ ) { if ( this.element[i].value == this.value ) { return this.element[i].checked; } } return false; } /** * A validator that performs a logical, short-circuit OR on its two arguments. */ var OrValidator_check; function OrValidator( first, second ) { this.first = first; this.second = second; this.check = OrValidator_check; } function OrValidator_check() { return this.first.check() || this.second.check(); } /* This is a sample code that has to be added to every corresponding form element in take assessment page, where you perform question validation for completness; ref_lablel value is used to refer to element, name is field full name: <script type="text/javascript"> formCheckList.addElement(new Check_Answer({ref_label:"Question 3",name:"tf-ans-_190_1"})); </script> */ var nonceUtil = {}; /** * Finds the form element holding the nonceId * @param formId is the id of the form the nonce element exists within */ nonceUtil.getNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce') }; nonceUtil.getAjaxNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce.ajax') }; nonceUtil.getNonceIdEx = function(formId, elName) { var nonceId = null; if(formId && $s(formId) ) { nonceId= $s(formId).elements[elName]; } if( !nonceId ) { // take a cheap shot at retreiving the first nonceId on the page nonceId = document.getElementsByName( elName )[0]; // Note : nonceId can be null if the form does not have a nonce element declared. This should be a sign of a xsrf loophole } return nonceId; }; /** * Finds the form element holding the nonceId * @param formElementId is the id of a form element on the page. It is expected that the nonceId corresponds * to the same form. */ nonceUtil.getNonceIdByFormElementId = function(formElementId) { var nonceId = null; if( formElementId && $s(formElementId) ) { var elementFormId = bbDomUtil.getEnclosingForm(formElementId); nonceId = $s(elementFormId).elements['blackboard.platform.security.NonceUtil.nonce']; } return nonceId; }; nonceUtil.getNonceIdValue = function(formId) { var nonceId = nonceUtil.getNonceId(formId); return nonceId ? nonceId.value : ""; }; /** * Copies the nonceid from one form on the page to another form. Useful when using flyout forms. */ nonceUtil.copyNonceId = function( sourceFormId, targetFormId ) { var nonceId = nonceUtil.getNonceIdValue( sourceFormId ); var targetElem = new Element( 'input', { type: 'hidden', name: 'blackboard.platform.security.NonceUtil.nonce', value: nonceId } ); $( targetFormId ).appendChild( targetElem ); }; /** * Updates the form's nonceId based on the JSON response from an AjaxSecureForm */ nonceUtil.updateFromAjaxRequest = function( headerJSON ) { if ( headerJSON ) { var nonceId = nonceUtil.getNonceId(); if( nonceId ) { nonceId.value = headerJSON.nonceId; } } }; var NumberLocalizer = Class.create(); NumberLocalizer.prototype = { initialize : function() { var thousandsSeparator = LOCALE_SETTINGS[ 'number_format.thousands_sep' ]; var decimalSeparator = LOCALE_SETTINGS[ 'number_format.decimal_point' ]; this.thousandsSeparator = ( thousandsSeparator === null ) ? ',' : thousandsSeparator; this.needToConvertThousands = ( this.thousandsSeparator !== ',' ) ? true : false; this.decimalSeparator = ( decimalSeparator === null ) ? '.' : decimalSeparator; this.needToConvertDecimal = ( this.decimalSeparator !== '.' ) ? true : false; }, // Takes a number that is unlocalized and converts it to // the current locale format. formatNumber : function( f ) { var result; result = f.toString(); // Replace and thousands delimiter with a token so we can // replace it with the final symbol after we replace the decimal symbol. if ( this.needToConvertThousands ) { result = result.replace( ',', '[comma]' ); } if ( this.needToConvertDecimal ) { result = result.replace( '.', this.decimalSeparator ); } if ( this.needToConvertThousands ) { result = result.replace( '[comma]', this.thousandsSeparator ); } return result; }, // Takes a number that is in the current locale format and // converts it back to an unlocalized number. parseNumber : function( num ) { var result; result = num.toString(); // Parsing string to return as a float, so we don't need the thousands // separator anymore. result = result.replace( this.thousandsSeparator, '' ); if ( this.needToConvertDecimal ) { result = result.replace( this.decimalSeparator, '.' ); } return parseFloat( result ); } };var AccessibleSelect = {}; /** * Wire up the accessible event listeners to any <select>s on the page that have an onchange listener already */ AccessibleSelect.initializePage = function() { var selects = document.getElementsByTagName("select"); for ( var i = 0; i < selects.length; i++ ) { var currentSelect = selects[i]; if ( currentSelect.onchange ) { currentSelect.changed = false; currentSelect.onfocus = AccessibleSelect.onfocus; currentSelect.onkeydown = AccessibleSelect.onkeydown; currentSelect.onclick = AccessibleSelect.onclick; currentSelect.onchange = AccessibleSelect.createOnchange( currentSelect.onchange ); } } }; /** * Functor that creates an onchange function which if the <select> has actually been changed, will call the * specified callback (i.e. the original onchange function ) */ AccessibleSelect.createOnchange = function( callback ) { return function( theElement ) { var theSelect; if ( theElement && theElement.value ) { theSelect = theElement; } else { theSelect = this; } if (theSelect.changed) { // bind "theSelect" as the "this" for the callback. callback.apply(theSelect); return true; } else { return false; } }; }; /** * Event listener called when the <select> is clicked */ AccessibleSelect.onclick = function() { this.changed = true; // If the select size is greater than 0, then the onchange event occurs before the onclick event // and the "changed" attribute is false when the onchange event listener method runs and the select // element's onchange method does not get called. Therefore, we are going to call it here. if( this.size > 0 ) { this.onchange(this); } }; /** * Event listener called when the <select> gains focus */ AccessibleSelect.onfocus = function() { this.initValue = this.value; return true; }; /** * Event listener called when a key is pressed in the <select>. */ AccessibleSelect.onkeydown = function(e) { var theEvent; var keyCodeTab = "9"; var keyCodeEnter = "13"; var keyCodeEsc = "27"; if (e) { theEvent = e; } else { theEvent = event; } var largeSize = (this.size > 0); if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && ( largeSize || this.value != this.initValue) ) { this.initValue = this.value; this.changed = true; this.onchange(this); // returning true logically denotes that the change has been made, but more importantly it will make sure the default // behavior (what would have happened without the onkeydown event) is honored. For example, user pressing 'tab' key will // move the focus to the next element on the page return true; } else if (theEvent.keyCode == keyCodeEsc) { this.value = this.initValue; return false; } else { this.changed = false; } return true; }; // This script does not work for Safari. See AS-110404, AS-110426 if (!/webkit|khtml/i.test(navigator.userAgent)) { //When the page is loaded, initialize the select boxes if ( window.addEventListener) { window.addEventListener('load', AccessibleSelect.initializePage, false); } else if ( window.attachEvent ) { window.attachEvent('onload', AccessibleSelect.initializePage); } }var popup = { /** * Launches a new popup window. This method is used for an random popup that * might be necessary (preview window for example). If you are launching a * "picker" window you should use launchPicker() instead. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). This is required. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param resizable whether the new window should be resizable. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @param showStatus whether the new window should be show the status bar. If * not provided a default value will be used. Do not provide unless * your specific requirements dictate it. * @param scrolling whether the new window should allow scrolling. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @return a reference to the popup window generated */ launch: function( url, name, width, height, resizable, showStatus, scrolling ) { if ( typeof( width ) == 'undefined' ) { // for RTL, the width needs to be wider, to prevent vertical line overlapping in the popup if ( page.util.isRTL() ) { width = 890; } else { width = 825; // wide enough to prevent a horizontal scrollbar in most cases } } if ( typeof( height ) == 'undefined' ) { height = 500; } if ( typeof( resizable ) == 'undefined' ) { resizable = 'yes'; } if ( typeof( showStatus ) == 'undefined' ) { showStatus = 'yes'; } if ( typeof( scrolling ) == 'undefined' ) { scrolling = 'yes'; } // figure out placement of the new window we will open. If the desired size // of the new window is bigger than the screen size then make the window // smaller and put it far left. Otherwise, center the window on screen. var screenX = 0; if ( screen.width <= width ) { width = screen.width; // new window should not be wider than the screen } else { screenX = ( screen.width - width ) / 2; // center on the screen } var popup = window.open( url, name, 'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrolling + ',status=' + showStatus + ',top=20' + ',screenY=20' + ',screenX=' + screenX + ',left=' + screenX ); if ( popup ) { popup.focus(); if ( !popup.opener ) { popup.opener = self; } window.top.name = 'bbWin'; } return popup; }, /** * Launches a new "picker" window. * <p> * At the moment the only difference between this method and launch (besides * the inability to specify some advanced and rarely used options) is that * this method will default the {@code name} value if not provided. However, * you should still use this method if you are launching a "picker" type * window as additional differences may be introduced in the future. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). If not provided a default value will be used. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @return a reference to the picker window generated */ launchPicker: function( url, name, width, height ) { if ( typeof( name ) == 'undefined' ) { name = 'picker'; } return popup.launch( url, name, width, height ); }, /** * Launches a new Content System folder "picker" window. * * @param element a reference to the form element into which the value chosen * in the picker should be set. If not provided, the value will not be * set. * @return a reference to the picker window generated */ launchCsDirectoryPicker: function( element ) { var picker = popup.launchPicker( "/webapps/cmsmain/folderpicker" ); if ( picker !== null ) { if ( ( typeof( element ) != 'undefined' ) && ( element !== null ) ) { picker.opener.inputEntryURLToSet = document.getElementById( element ); } picker.opener.returnFullURL = false; } return picker; } }; var BrowserSpecific = { registerListeners: function() { if( Prototype.Browser.IE ) { var inputs = $A(document.getElementsByTagName('input')); //Enter key submit handling added only for IE browser. if( inputs ) { inputs.each( function( input ) { if(input.type === 'text' && !page.util.hasClassName(input,'noFormSubmitIE')) { Event.observe( input, "keypress", this.checkEnterKeyToSubmit.bindAsEventListener( this, input ) ); } }.bind( this ) ); } } }, checkEnterKeyToSubmit: function(event, input) { //if generated character code is equal to ascii 13 (if enter key) if(event.keyCode == 13 && input.form) { var submitButtons = $(input.form).getInputs('submit'); if(submitButtons && submitButtons.size() > 0) { submitButtons.first().click(); } Event.stop(event); } else { return true; } }, // Fix FireFox bug which converts absolute links pasted into a VTBE into relative ones which // start with a variable number of "../". // https://bugzilla.mozilla.org/show_bug.cgi?id=613517 handleFirefoxPastedLinksBug: function( baseUrl, vtbeText ) { if ( !baseUrl || !vtbeText ) { return vtbeText; } if ( Prototype.Browser.Gecko ) { if( !$( baseUrl.empty() ) && !$( vtbeText.empty() ) ) { //e.g. extract out "http://localhost:80" from "http://localhost:80/webapps/Bb-wiki-BBLEARN/" // port is optional var absoluteUrlPrefix = baseUrl.match(/https?:[\d]*\/\/[^\/]+/); // e.g."../../../bbcswebdav/xid-2202_1" into "http://localhost:80/bbcswebdav/xid-2202_1" vtbeText = vtbeText.replace(/(\.\.\/)+(sessions|bbcswebdav|courses|@@)/g, absoluteUrlPrefix + "/" + "$2"); } } return vtbeText; }, disableEnterKeyInTextBoxes: function (document) { var inputs = $A(document.getElementsByTagName('input')); if( inputs ) { inputs.each ( function( input ) { //must add special className for IE textboxes if( Prototype.Browser.IE ) { input.addClassName( 'noFormSubmitIE' ); } Event.observe( input, 'keypress', this.disableEnterKey ); }.bind( this ) ); } }, disableEnterKey: function( event ) { if( event.keyCode != Event.KEY_RETURN ) { return; } Event.stop( event ); return; } };

/** * Inserts the given HTML content into the extra content cell of the standard * title bar. * * @param content The HTML content to place */ function insertTitlebarContent(content) { var contentCell = document.getElementById("_titlebarExtraContent"); contentCell.innerHTML = content; }

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Declare an object to which we can add real functions. */ if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; /** * Set an alternative error handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setErrorHandler = function(handler) { dwr.engine._errorHandler = handler; }; /** * Set an alternative warning handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setWarningHandler = function(handler) { dwr.engine._warningHandler = handler; }; /** * Setter for the text/html handler - what happens if a DWR request gets an HTML * reply rather than the expected Javascript. Often due to login timeout */ dwr.engine.setTextHtmlHandler = function(handler) { dwr.engine._textHtmlHandler = handler; }; /** * Set a default timeout value for all calls. 0 (the default) turns timeouts off. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setTimeout = function(timeout) { dwr.engine._timeout = timeout; }; /** * The Pre-Hook is called before any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPreHook = function(handler) { dwr.engine._preHook = handler; }; /** * The Post-Hook is called after any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPostHook = function(handler) { dwr.engine._postHook = handler; }; /** * Custom headers for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setHeaders = function(headers) { dwr.engine._headers = headers; }; /** * Custom parameters for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setParameters = function(parameters) { dwr.engine._parameters = parameters; }; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.XMLHttpRequest = 1; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.IFrame = 2; /** XHR remoting type constant. See dwr.engine.setRpcType() */ dwr.engine.ScriptTag = 3; /** * Set the preferred remoting type. * @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setRpcType = function(newType) { if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) { dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" }); return; } dwr.engine._rpcType = newType; }; /** * Which HTTP method do we use to send results? Must be one of "GET" or "POST". * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setHttpMethod = function(httpMethod) { if (httpMethod != "GET" && httpMethod != "POST") { dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" }); return; } dwr.engine._httpMethod = httpMethod; }; /** * Ensure that remote calls happen in the order in which they were sent? (Default: false) * @see getahead.org/dwr/browser/engine/ordering */ dwr.engine.setOrdered = function(ordered) { dwr.engine._ordered = ordered; }; /** * Do we ask the XHR object to be asynchronous? (Default: true) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setAsync = function(async) { dwr.engine._async = async; }; /** * Does DWR poll the server for updates? (Default: false) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setActiveReverseAjax = function(activeReverseAjax) { if (activeReverseAjax) { // Bail if we are already started if (dwr.engine._activeReverseAjax) return; dwr.engine._activeReverseAjax = true; dwr.engine._poll(); } else { // Can we cancel an existing request? if (dwr.engine._activeReverseAjax && dwr.engine._pollReq) dwr.engine._pollReq.abort(); dwr.engine._activeReverseAjax = false; } // TODO: in iframe mode, if we start, stop, start then the second start may // well kick off a second iframe while the first is still about to return // we should cope with this but we don't }; /** * The default message handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultErrorHandler = function(message, ex) { dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true); if (message == null || message == "") alert("A server error has occured."); // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message); else alert(message); }; /** * The default warning handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultWarningHandler = function(message, ex) { dwr.engine._debug(message); }; /** * For reduced latency you can group several remote calls together using a batch. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.beginBatch = function() { if (dwr.engine._batch) { dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" }); return; } dwr.engine._batch = dwr.engine._createBatch(); }; /** * Finished grouping a set of remote calls together. Go and execute them all. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.endBatch = function(options) { var batch = dwr.engine._batch; if (batch == null) { dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" }); return; } dwr.engine._batch = null; if (batch.map.callCount == 0) return; // The hooks need to be merged carefully to preserve ordering if (options) dwr.engine._mergeBatch(batch, options); // In ordered mode, we don't send unless the list of sent items is empty if (dwr.engine._ordered && dwr.engine._batchesLength != 0) { dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch; } else { dwr.engine._sendData(batch); } }; /** @deprecated */ dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); }; dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); }; dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); }; dwr.engine.setPollType = function() { dwr.engine._debug("Manually setting the Poll Type is not supported"); }; //============================================================================== // Only private stuff below here //============================================================================== /** The original page id sent from the server */ dwr.engine._origScriptSessionId = "F1B9119A608B9BE082631A8CE5815835"; /** The session cookie name */ dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID /** Is GET enabled for the benefit of Safari? */ dwr.engine._allowGetForSafariButMakeForgeryEasier = "false"; /** The script prefix to strip in the case of scriptTagProtection. */ dwr.engine._scriptTagProtection = "throw 'allowScriptTagRemoting is false.';"; /** The default path to the DWR servlet */ dwr.engine._defaultPath = "/webapps/assessment/dwr_open"; /** Do we use XHR for reverse ajax because we are not streaming? */ dwr.engine._pollWithXhr = "false"; /** The read page id that we calculate */ dwr.engine._scriptSessionId = null; /** The function that we use to fetch/calculate a session id */ dwr.engine._getScriptSessionId = function() { if (dwr.engine._scriptSessionId == null) { dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000); } return dwr.engine._scriptSessionId; }; /** A function to call if something fails. */ dwr.engine._errorHandler = dwr.engine.defaultErrorHandler; /** For debugging when something unexplained happens. */ dwr.engine._warningHandler = dwr.engine.defaultWarningHandler; /** A function to be called before requests are marshalled. Can be null. */ dwr.engine._preHook = null; /** A function to be called after replies are received. Can be null. */ dwr.engine._postHook = null; /** An map of the batches that we have sent and are awaiting a reply on. */ dwr.engine._batches = {}; /** A count of the number of outstanding batches. Should be == to _batches.length unless prototype has messed things up */ dwr.engine._batchesLength = 0; /** In ordered mode, the array of batches waiting to be sent */ dwr.engine._batchQueue = []; /** What is the default rpc type */ dwr.engine._rpcType = dwr.engine.XMLHttpRequest; /** What is the default remoting method (ie GET or POST) */ dwr.engine._httpMethod = "POST"; /** Do we attempt to ensure that calls happen in the order in which they were sent? */ dwr.engine._ordered = false; /** Do we make the calls async? */ dwr.engine._async = true; /** The current batch (if we are in batch mode) */ dwr.engine._batch = null; /** The global timeout */ dwr.engine._timeout = 0; /** ActiveX objects to use when we want to convert an xml string into a DOM object. */ dwr.engine._DOMDocument = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; /** The ActiveX objects to use when we want to do an XMLHttpRequest call. */ dwr.engine._XMLHTTP = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; /** Are we doing comet or polling? */ dwr.engine._activeReverseAjax = false; /** The iframe that we are using to poll */ dwr.engine._outstandingIFrames = []; /** The xhr object that we are using to poll */ dwr.engine._pollReq = null; /** How many milliseconds between internal comet polls */ dwr.engine._pollCometInterval = 200; /** How many times have we re-tried to poll? */ dwr.engine._pollRetries = 0; dwr.engine._maxPollRetries = 0; /** Do we do a document.reload if we get a text/html reply? */ dwr.engine._textHtmlHandler = null; /** If you wish to send custom headers with every request */ dwr.engine._headers = null; /** If you wish to send extra custom request parameters with each request */ dwr.engine._parameters = null; /** Undocumented interceptors - do not use */ dwr.engine._postSeperator = "\n"; dwr.engine._defaultInterceptor = function(data) { return data; }; dwr.engine._urlRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._contentRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._replyRewriteHandler = dwr.engine._defaultInterceptor; /** Batch ids allow us to know which batch the server is answering */ dwr.engine._nextBatchId = 0; /** A list of the properties that need merging from calls to a batch */ dwr.engine._propnames = [ "rpcType", "httpMethod", "async", "timeout", "errorHandler", "warningHandler", "textHtmlHandler" ]; /** Do we stream, or can be hacked to do so? */ dwr.engine._partialResponseNo = 0; dwr.engine._partialResponseYes = 1; dwr.engine._partialResponseFlush = 2; /** Is this page in the process of unloading? */ dwr.engine._unloading = false; /** * @private Send a request. Called by the Javascript interface stub * @param path part of URL after the host and before the exec bit without leading or trailing /s * @param scriptName The class to execute * @param methodName The method on said class to execute * @param func The callback function to which any returned data should be passed * if this is null, any returned data will be ignored * @param vararg_params The parameters to pass to the above class */ dwr.engine._execute = function(path, scriptName, methodName, vararg_params) { var singleShot = false; if (dwr.engine._batch == null) { dwr.engine.beginBatch(); singleShot = true; } var batch = dwr.engine._batch; // To make them easy to manipulate we copy the arguments into an args array var args = []; for (var i = 0; i < arguments.length - 3; i++) { args[i] = arguments[i + 3]; } // All the paths MUST be to the same servlet if (batch.path == null) { batch.path = path; } else { if (batch.path != path) { dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." }); return; } } // From the other params, work out which is the function (or object with // call meta-data) and which is the call parameters var callData; var lastArg = args[args.length - 1]; if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() }; else callData = args.pop(); // Merge from the callData into the batch dwr.engine._mergeBatch(batch, callData); batch.handlers[batch.map.callCount] = { exceptionHandler:callData.exceptionHandler, callback:callData.callback }; // Copy to the map the things that need serializing var prefix = "c" + batch.map.callCount + "-"; batch.map[prefix + "scriptName"] = scriptName; batch.map[prefix + "methodName"] = methodName; batch.map[prefix + "id"] = batch.map.callCount; for (i = 0; i < args.length; i++) { dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i); } // Now we have finished remembering the call, we incr the call count batch.map.callCount++; if (singleShot) dwr.engine.endBatch(); }; /** @private Poll the server to see if there is any data waiting */ dwr.engine._poll = function() { if (!dwr.engine._activeReverseAjax) return; var batch = dwr.engine._createBatch(); batch.map.id = 0; // TODO: Do we need this?? batch.map.callCount = 1; batch.isPoll = true; if (dwr.engine._pollWithXhr == "true") { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } else { if (navigator.userAgent.indexOf("Gecko/") != -1) { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseYes; } else { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } } batch.httpMethod = "POST"; batch.async = true; batch.timeout = 0; batch.path = dwr.engine._defaultPath; batch.preHooks = []; batch.postHooks = []; batch.errorHandler = dwr.engine._pollErrorHandler; batch.warningHandler = dwr.engine._pollErrorHandler; batch.handlers[0] = { callback:function(pause) { dwr.engine._pollRetries = 0; setTimeout(dwr.engine._poll, pause); } }; // Send the data dwr.engine._sendData(batch); if (batch.rpcType == dwr.engine.XMLHttpRequest && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._checkCometPoll(); } }; /** Try to recover from polling errors */ dwr.engine._pollErrorHandler = function(msg, ex) { // if anything goes wrong then just silently try again (up to 3x) after 10s dwr.engine._pollRetries++; dwr.engine._debug("Reverse Ajax poll failed (pollRetries=" + dwr.engine._pollRetries + "): " + ex.name + " : " + ex.message); if (dwr.engine._pollRetries < dwr.engine._maxPollRetries) { setTimeout(dwr.engine._poll, 10000); } else { dwr.engine._activeReverseAjax = false; dwr.engine._debug("Giving up."); } }; /** @private Generate a new standard batch */ dwr.engine._createBatch = function() { var batch = { map:{ callCount:0, page:window.location.pathname + window.location.search, httpSessionId:dwr.engine._getJSessionId(), scriptSessionId:dwr.engine._getScriptSessionId() }, charsProcessed:0, paramCount:0, parameters:{}, headers:{}, isPoll:false, handlers:{}, preHooks:[], postHooks:[], rpcType:dwr.engine._rpcType, httpMethod:dwr.engine._httpMethod, async:dwr.engine._async, timeout:dwr.engine._timeout, errorHandler:dwr.engine._errorHandler, warningHandler:dwr.engine._warningHandler, textHtmlHandler:dwr.engine._textHtmlHandler }; if (dwr.engine._preHook) batch.preHooks.push(dwr.engine._preHook); if (dwr.engine._postHook) batch.postHooks.push(dwr.engine._postHook); var propname, data; if (dwr.engine._headers) { for (propname in dwr.engine._headers) { data = dwr.engine._headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (dwr.engine._parameters) { for (propname in dwr.engine._parameters) { data = dwr.engine._parameters[propname]; if (typeof data != "function") batch.parameters[propname] = data; } } return batch; }; /** @private Take further options and merge them into */ dwr.engine._mergeBatch = function(batch, overrides) { var propname, data; for (var i = 0; i < dwr.engine._propnames.length; i++) { propname = dwr.engine._propnames[i]; if (overrides[propname] != null) batch[propname] = overrides[propname]; } if (overrides.preHook != null) batch.preHooks.unshift(overrides.preHook); if (overrides.postHook != null) batch.postHooks.push(overrides.postHook); if (overrides.headers) { for (propname in overrides.headers) { data = overrides.headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (overrides.parameters) { for (propname in overrides.parameters) { data = overrides.parameters[propname]; if (typeof data != "function") batch.map["p-" + propname] = "" + data; } } }; /** @private What is our session id? */ dwr.engine._getJSessionId = function() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length); if (cookie.indexOf(dwr.engine._sessionCookieName + "=") == 0) { return cookie.substring(dwr.engine._sessionCookieName.length + 1, cookie.length); } } return ""; }; /** @private Check for reverse Ajax activity */ dwr.engine._checkCometPoll = function() { for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { var text = ""; var iframe = dwr.engine._outstandingIFrames[i]; try { text = dwr.engine._getTextFromCometIFrame(iframe); } catch (ex) { dwr.engine._handleWarning(iframe.batch, ex); } if (text != "") dwr.engine._processCometResponse(text, iframe.batch); } if (dwr.engine._pollReq) { var req = dwr.engine._pollReq; var text = req.responseText; if (text != null) dwr.engine._processCometResponse(text, req.batch); } // If the poll resources are still there, come back again if (dwr.engine._outstandingIFrames.length > 0 || dwr.engine._pollReq) { setTimeout(dwr.engine._checkCometPoll, dwr.engine._pollCometInterval); } }; /** @private Extract the whole (executed an all) text from the current iframe */ dwr.engine._getTextFromCometIFrame = function(frameEle) { var body = frameEle.contentWindow.document.body; if (body == null) return ""; var text = body.innerHTML; // We need to prevent IE from stripping line feeds if (text.indexOf("<PRE>") == 0 || text.indexOf("<pre>") == 0) { text = text.substring(5, text.length - 7); } return text; }; /** @private Some more text might have come in, test and execute the new stuff */ dwr.engine._processCometResponse = function(response, batch) { if (batch.charsProcessed == response.length) return; if (response.length == 0) { batch.charsProcessed = 0; return; } var firstStartTag = response.indexOf("//#DWR-START#", batch.charsProcessed); if (firstStartTag == -1) { // dwr.engine._debug("No start tag (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed) + "'"); batch.charsProcessed = response.length; return; } // if (firstStartTag > 0) { // dwr.engine._debug("Start tag not at start (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed, firstStartTag) + "'"); // } var lastEndTag = response.lastIndexOf("//#DWR-END#"); if (lastEndTag == -1) { // dwr.engine._debug("No end tag. unchanged charsProcessed=" + batch.charsProcessed); return; } // Skip the end tag too for next time, remembering CR and LF if (response.charCodeAt(lastEndTag + 11) == 13 && response.charCodeAt(lastEndTag + 12) == 10) { batch.charsProcessed = lastEndTag + 13; } else { batch.charsProcessed = lastEndTag + 11; } var exec = response.substring(firstStartTag + 13, lastEndTag); dwr.engine._receivedBatch = batch; dwr.engine._eval(exec); dwr.engine._receivedBatch = null; }; /** @private Actually send the block of data in the batch object. */ dwr.engine._sendData = function(batch) { batch.map.batchId = dwr.engine._nextBatchId; dwr.engine._nextBatchId++; dwr.engine._batches[batch.map.batchId] = batch; dwr.engine._batchesLength++; batch.completed = false; for (var i = 0; i < batch.preHooks.length; i++) { batch.preHooks[i](); } batch.preHooks = null; // Set a timeout if (batch.timeout && batch.timeout != 0) { batch.timeoutId = setTimeout(function() { dwr.engine._abortRequest(batch); }, batch.timeout); } // Get setup for XMLHttpRequest if possible if (batch.rpcType == dwr.engine.XMLHttpRequest) { if (window.XMLHttpRequest) { batch.req = new XMLHttpRequest(); } // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) { batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP); } } var prop, request; if (batch.req) { // Proceed using XMLHttpRequest if (batch.async) { batch.req.onreadystatechange = function() { if (typeof dwr != 'undefined') dwr.engine._stateChange(batch); }; } // If we're polling, record this for monitoring if (batch.isPoll) { dwr.engine._pollReq = batch.req; // In IE XHR is an ActiveX control so you can't augment it like this if (!(document.all && !window.opera)) batch.req.batch = batch; } // Workaround for Safari 1.x POST bug var indexSafari = navigator.userAgent.indexOf("Safari/"); if (indexSafari >= 0) { var version = navigator.userAgent.substring(indexSafari + 7); if (parseInt(version, 10) < 400) { if (dwr.engine._allowGetForSafariButMakeForgeryEasier == "true") batch.httpMethod = "GET"; else dwr.engine._handleWarning(batch, { name:"dwr.engine.oldSafari", message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier." }); } } batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); try { batch.req.open(batch.httpMethod, request.url, batch.async); try { for (prop in batch.headers) { var value = batch.headers[prop]; if (typeof value == "string") batch.req.setRequestHeader(prop, value); } if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain"); } catch (ex) { dwr.engine._handleWarning(batch, ex); } batch.req.send(request.body); if (!batch.async) dwr.engine._stateChange(batch); } catch (ex) { dwr.engine._handleError(batch, ex); } } else if (batch.rpcType != dwr.engine.ScriptTag) { var idname = batch.isPoll ? "dwr-if-poll-" + batch.map.batchId : "dwr-if-" + batch.map.batchId; // Removed htmlfile implementation. Don't expect it to return before v3 batch.div = document.createElement("div"); // Add the div to the document first, otherwise IE 6 will ignore onload handler. document.body.appendChild(batch.div); batch.div.innerHTML = "<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='" + idname + "' name='" + idname + "' onload='dwr.engine._iframeLoadingComplete (" + batch.map.batchId + ");'></iframe>"; batch.document = document; batch.iframe = batch.document.getElementById(idname); batch.iframe.batch = batch; batch.mode = batch.isPoll ? dwr.engine._ModeHtmlPoll : dwr.engine._ModeHtmlCall; if (batch.isPoll) dwr.engine._outstandingIFrames.push(batch.iframe); request = dwr.engine._constructRequest(batch); if (batch.httpMethod == "GET") { batch.iframe.setAttribute("src", request.url); } else { batch.form = batch.document.createElement("form"); batch.form.setAttribute("id", "dwr-form"); batch.form.setAttribute("action", request.url); batch.form.setAttribute("style", "display:none;"); batch.form.setAttribute("target", idname); batch.form.target = idname; batch.form.setAttribute("method", batch.httpMethod); for (prop in batch.map) { var value = batch.map[prop]; if (typeof value != "function") { var formInput = batch.document.createElement("input"); formInput.setAttribute("type", "hidden"); formInput.setAttribute("name", prop); formInput.setAttribute("value", value); batch.form.appendChild(formInput); } } batch.document.body.appendChild(batch.form); batch.form.submit(); } } else { batch.httpMethod = "GET"; // There's no such thing as ScriptTag using POST batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); batch.script = document.createElement("script"); batch.script.id = "dwr-st-" + batch.map["c0-id"]; batch.script.src = request.url; document.body.appendChild(batch.script); } }; dwr.engine._ModePlainCall = "/call/plaincall/"; dwr.engine._ModeHtmlCall = "/call/htmlcall/"; dwr.engine._ModePlainPoll = "/call/plainpoll/"; dwr.engine._ModeHtmlPoll = "/call/htmlpoll/"; /** @private Work out what the URL should look like */ dwr.engine._constructRequest = function(batch) { // A quick string to help people that use web log analysers var request = { url:batch.path + batch.mode, body:null }; if (batch.isPoll == true) { request.url += "ReverseAjax.dwr"; } else if (batch.map.callCount == 1) { request.url += batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr"; } else { request.url += "Multiple." + batch.map.callCount + ".dwr"; } // Play nice with url re-writing var sessionMatch = location.href.match(/jsessionid=([^?]+)/); if (sessionMatch != null) { request.url += ";jsessionid=" + sessionMatch[1]; } var prop; if (batch.httpMethod == "GET") { // Some browsers (Opera/Safari2) seem to fail to convert the callCount value // to a string in the loop below so we do it manually here. batch.map.callCount = "" + batch.map.callCount; request.url += "?"; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.url += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&"; } } request.url = request.url.substring(0, request.url.length - 1); } else { // PERFORMANCE: for iframe mode this is thrown away. request.body = ""; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = []; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { buf.push(prop + "=" + batch.map[prop] + dwr.engine._postSeperator); } } request.body = buf.join(""); } else { // Use string concat on other browsers (fastest) for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.body += prop + "=" + batch.map[prop] + dwr.engine._postSeperator; } } } request.body = dwr.engine._contentRewriteHandler(request.body); } request.url = dwr.engine._urlRewriteHandler(request.url); return request; }; /** @private Called by XMLHttpRequest to indicate that something has happened */ dwr.engine._stateChange = function(batch) { var toEval; if (batch.completed) { dwr.engine._debug("Error: _stateChange() with batch.completed"); return; } var req = batch.req; try { if (req.readyState != 4) return; } catch (ex) { dwr.engine._handleWarning(batch, ex); // It's broken - clear up and forget this call dwr.engine._clearUp(batch); return; } if (dwr.engine._unloading) { dwr.engine._debug("Ignoring reply from server as page is unloading."); return; } try { var reply = req.responseText; reply = dwr.engine._replyRewriteHandler(reply); var status = req.status; // causes Mozilla to except on page moves if (reply == null || reply == "") { dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data received from server" }); } else if (status != 200) { dwr.engine._handleError(batch, { name:"dwr.engine.http." + status, message:req.statusText }); } else { var contentType = req.getResponseHeader("Content-Type"); if (!contentType.match(/^text\/plain/) && !contentType.match(/^text\/javascript/)) { if (contentType.match(/^text\/html/) && typeof batch.textHtmlHandler == "function") { batch.textHtmlHandler({ status:status, responseText:reply, contentType:contentType }); } else { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidMimeType", message:"Invalid content type: '" + contentType + "'" }); } } else { // Comet replies might have already partially executed if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._processCometResponse(reply, batch); } else { if (reply.search("//#DWR") == -1) { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" }); } else { toEval = reply; } } } } } catch (ex) { dwr.engine._handleWarning(batch, ex); } dwr.engine._callPostHooks(batch); // Outside of the try/catch so errors propogate normally: dwr.engine._receivedBatch = batch; if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, ""); dwr.engine._eval(toEval); dwr.engine._receivedBatch = null; dwr.engine._validateBatch(batch); if (!batch.completed) dwr.engine._clearUp(batch); }; /** * @private This function is invoked when a batch reply is received. * It checks that there is a response for every call in the batch. Otherwise, * an error will be signaled (a call without a response indicates that the * server failed to send complete batch response). */ dwr.engine._validateBatch = function(batch) { // If some call left unreplied, report an error. if (!batch.completed) { for (var i = 0; i < batch.map.callCount; i++) { if (batch.handlers[i] != null) { dwr.engine._handleWarning(batch, { name:"dwr.engine.incompleteReply", message:"Incomplete reply from server" }); break; } } } } /** @private Called from iframe onload, check batch using batch-id */ dwr.engine._iframeLoadingComplete = function(batchId) { // dwr.engine._checkCometPoll(); var batch = dwr.engine._batches[batchId]; if (batch) dwr.engine._validateBatch(batch); } /** @private Called by the server: Execute a callback */ dwr.engine._remoteHandleCallback = function(batchId, callId, reply) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true); return; } // Error handlers inside here indicate an error that is nothing to do // with DWR so we handle them differently. try { var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (!handlers) { dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true); } else if (typeof handlers.callback == "function") handlers.callback(reply); } catch (ex) { dwr.engine._handleError(batch, ex); } }; /** @private Called by the server: Handle an exception for a call */ dwr.engine._remoteHandleException = function(batchId, callId, ex) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; } var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; } if (ex.message == undefined) ex.message = ""; if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex); else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); }; /** @private Called by the server: The whole batch is broken */ dwr.engine._remoteHandleBatchException = function(ex, batchId) { var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: Reverse ajax should not be used */ dwr.engine._remotePollCometDisabled = function(ex, batchId) { dwr.engine.setActiveReverseAjax(false); var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: An IFrame reply is about to start */ dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) { if (iframe != null) dwr.engine._receivedBatch = iframe.batch; dwr.engine._callPostHooks(dwr.engine._receivedBatch); }; /** @private Called by the server: An IFrame reply is just completing */ dwr.engine._remoteEndIFrameResponse = function(batchId) { dwr.engine._clearUp(dwr.engine._receivedBatch); dwr.engine._receivedBatch = null; }; /** @private This is a hack to make the context be this window */ dwr.engine._eval = function(script) { if (script == null) return null; if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; } // dwr.engine._debug("Exec: [" + script + "]", true); return eval(script); }; /** @private Called as a result of a request timeout */ dwr.engine._abortRequest = function(batch) { if (batch && !batch.completed) { dwr.engine._clearUp(batch); if (batch.req) batch.req.abort(); dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" }); } }; /** @private call all the post hooks for a batch */ dwr.engine._callPostHooks = function(batch) { if (batch.postHooks) { for (var i = 0; i < batch.postHooks.length; i++) { batch.postHooks[i](); } batch.postHooks = null; } }; /** @private A call has finished by whatever means and we need to shut it all down. */ dwr.engine._clearUp = function(batch) { if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; } if (batch.completed) { dwr.engine._debug("Warning: Double complete", true); return; } // IFrame tidyup if (batch.div) batch.div.parentNode.removeChild(batch.div); if (batch.iframe) { // If this is a poll frame then stop comet polling for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { if (dwr.engine._outstandingIFrames[i] == batch.iframe) { dwr.engine._outstandingIFrames.splice(i, 1); } } batch.iframe.parentNode.removeChild(batch.iframe); } if (batch.form) batch.form.parentNode.removeChild(batch.form); // XHR tidyup: avoid IE handles increase if (batch.req) { // If this is a poll frame then stop comet polling if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null; delete batch.req; } // Timeout tidyup if (batch.timeoutId) { clearTimeout(batch.timeoutId); delete batch.timeoutId; } if (batch.map && (batch.map.batchId || batch.map.batchId == 0)) { delete dwr.engine._batches[batch.map.batchId]; dwr.engine._batchesLength--; } batch.completed = true; // If there is anything on the queue waiting to go out, then send it. // We don't need to check for ordered mode, here because when ordered mode // gets turned off, we still process *waiting* batches in an ordered way. if (dwr.engine._batchQueue.length != 0) { var sendbatch = dwr.engine._batchQueue.shift(); dwr.engine._sendData(sendbatch); } }; /** @private Abort any XHRs in progress at page unload (solves zombie socket problems in IE). */ dwr.engine._unloader = function() { dwr.engine._unloading = true; // Empty queue of waiting ordered requests dwr.engine._batchQueue.length = 0; // Abort any ongoing XHRs and clear their batches for (var batchId in dwr.engine._batches) { var batch = dwr.engine._batches[batchId]; // Only process objects that look like batches (avoid prototype additions!) if (batch && batch.map) { if (batch.req) { batch.req.abort(); } dwr.engine._clearUp(batch); } } }; // Now register the unload handler if (window.addEventListener) window.addEventListener('unload', dwr.engine._unloader, false); else if (window.attachEvent) window.attachEvent('onunload', dwr.engine._unloader); /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleError = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleWarning = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex); else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** * @private Marshall a data item * @param batch A map of variables to how they have been marshalled * @param referto An array of already marshalled variables to prevent recurrsion * @param data The data to be marshalled * @param name The name of the data being marshalled */ dwr.engine._serializeAll = function(batch, referto, data, name) { if (data == null) { batch.map[name] = "null:null"; return; } switch (typeof data) { case "boolean": batch.map[name] = "boolean:" + data; break; case "number": batch.map[name] = "number:" + data; break; case "string": batch.map[name] = "string:" + encodeURIComponent(data); break; case "object": if (data instanceof String) batch.map[name] = "String:" + encodeURIComponent(data); else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data; else if (data instanceof Number) batch.map[name] = "Number:" + data; else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime(); else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name); else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name); break; case "function": // We just ignore functions. break; default: dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." }); batch.map[name] = "default:" + data; break; } }; /** @private Have we already converted this object? */ dwr.engine._lookup = function(referto, data, name) { var lookup; // Can't use a map: getahead.org/ajax/javascript-gotchas for (var i = 0; i < referto.length; i++) { if (referto[i].data == data) { lookup = referto[i]; break; } } if (lookup) return "reference:" + lookup.name; referto.push({ data:data, name:name }); return null; }; /** @private Marshall an object */ dwr.engine._serializeObject = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; // This check for an HTML is not complete, but is there a better way? // Maybe we should add: data.hasChildNodes typeof "function" == true if (data.nodeName && data.nodeType) { return dwr.engine._serializeXml(batch, referto, data, name); } // treat objects as an associative arrays var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{"; var element; for (element in data) { if (typeof data[element] != "function") { batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[element], childName); reply += encodeURIComponent(element) + ":reference:" + childName + ", "; } } if (reply.substring(reply.length - 2) == ", ") { reply = reply.substring(0, reply.length - 2); } reply += "}"; return reply; }; /** @private Returns the classname of supplied argument obj */ dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError }; dwr.engine._getObjectClassName = function(obj) { // Try to find the classname by stringifying the object's constructor // and extract <class> from "function <class>". if (obj && obj.constructor && obj.constructor.toString) { var str = obj.constructor.toString(); var regexpmatch = str.match(/function\s+(\w+)/); if (regexpmatch && regexpmatch.length == 2) { return regexpmatch[1]; } } // Now manually test against the core Error classes, as these in some // browsers successfully match to the wrong class in the // Object.toString() test we will do later if (obj && obj.constructor) { for (var errorname in dwr.engine._errorClasses) { if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname; } } // Try to find the classname by calling Object.toString() on the object // and extracting <class> from "[object <class>]" if (obj) { var str = Object.prototype.toString.call(obj); var regexpmatch = str.match(/\[object\s+(\w+)/); if (regexpmatch && regexpmatch.length==2) { return regexpmatch[1]; } } // Supplied argument was probably not an object, but what is better? return "Object"; }; /** @private Marshall an object */ dwr.engine._serializeXml = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; var output; if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data); else if (data.toXml) output = data.toXml; else output = data.innerHTML; return "XML:" + encodeURIComponent(output); }; /** @private Marshall an array */ dwr.engine._serializeArray = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = ["Array:["]; for (var i = 0; i < data.length; i++) { if (i != 0) buf.push(","); batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); buf.push("reference:"); buf.push(childName); } buf.push("]"); reply = buf.join(""); } else { // Use string concat on other browsers (fastest) var reply = "Array:["; for (var i = 0; i < data.length; i++) { if (i != 0) reply += ","; batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); reply += "reference:"; reply += childName; } reply += "]"; } return reply; }; /** @private Convert an XML string into a DOM object. */ dwr.engine._unserializeDocument = function(xml) { var dom; if (window.DOMParser) { var parser = new DOMParser(); dom = parser.parseFromString(xml, "text/xml"); if (!dom.documentElement || dom.documentElement.tagName == "parsererror") { var message = dom.documentElement.firstChild.data; message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data; throw message; } return dom; } else if (window.ActiveXObject) { dom = dwr.engine._newActiveXObject(dwr.engine._DOMDocument); dom.loadXML(xml); // What happens on parse fail with IE? return dom; } else { var div = document.createElement("div"); div.innerHTML = xml; return div; } }; /** @param axarray An array of strings to attempt to create ActiveX objects from */ dwr.engine._newActiveXObject = function(axarray) { var returnValue; for (var i = 0; i < axarray.length; i++) { try { returnValue = new ActiveXObject(axarray[i]); break; } catch (ex) { /* ignore */ } } return returnValue; }; /** @private Used internally when some message needs to get to the programmer */ dwr.engine._debug = function(message, stacktrace) { var written = false; try { if (window.console) { if (stacktrace && window.console.trace) window.console.trace(); window.console.log(message); written = true; } else if (window.opera && window.opera.postError) { window.opera.postError(message); written = true; } } catch (ex) { /* ignore */ } if (!written) { var debug = document.getElementById("dwr-debug"); if (debug) { var contents = message + "<br/>" + debug.innerHTML; if (contents.length > 2048) contents = contents.substring(0, 2048); debug.innerHTML = contents; } } };

// Provide a default path to dwr.engine if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; if (UserDataDWRFacade == null) var UserDataDWRFacade = {}; UserDataDWRFacade._path = '/webapps/assessment/dwr_open'; UserDataDWRFacade.getStringTempScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringTempScope', p0, callback); } UserDataDWRFacade.setStringTempScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringTempScope', p0, p1, callback); } UserDataDWRFacade.getStringPermScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringPermScope', p0, callback); } UserDataDWRFacade.setStringPermScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringPermScope', p0, p1, callback); }

var assessment = {}; assessment.submitDrawerUrl=""; assessment.questionVisibility = true; assessment.blockToLeaveVisible = 'null'; assessment.savingRightNow = false; // aka - might rename to (if not remove eventually): assessment.nonceHasBeenUsed assessment.submittingRightNow = false; // set to true when we're submitting the assessment as a whole - used to block other submits assessment.gotNewNonceIdFlag = false; assessment.userReallyWantsToSubmit = false; assessment.isInUse = false; assessment.safetyNetDelay = 60; // Number of seconds to wait before telling the user that it is taking too long. assessment.alreadySavedSafetyNetId = null; assessment.saveSequence = 0; // TODO: Set from the server based on time when page is loaded assessment.isOneByOne = false; /************************** methods related to pool and test canvas per question add/edit/ copy/ remove********************/ function findAssessmentForm() { var assessmentForm = null; var documentForms = document.getElementsByTagName('form'); assessmentForm = $A( documentForms ).find( function( documentForm ) { var theAction = $( documentForm ).readAttribute( "action" ); return theAction.indexOf( "webapps/assessment/" ) != -1; }); return assessmentForm; } function submit(method, theForm) { if (!validateForm()) { return false; } if ( !theForm ) { // no form specified so try to find it theForm = findAssessmentForm(); } if(method == "createNew") { theForm.elements.assessmentId.value = null; } theForm.elements.method.value = method; theForm.submit(); return false; } function getFormByInputElement( elementName ) { var element = document.getElementsByName( elementName )[0]; return element.form; } // TODO: Rewrite this file to put all these methods into a namespace like assessment.XXX function modifyAssessment() { submit('modifyAssessment'); } function setQuestionId(questionId) { getFormByInputElement("questionId").questionId.value = questionId; } function modifyContentSettings( val ) { // properties|feedback|presentation|metadata submit( val ); } function addQuestionBefore(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated var theForm = getFormByInputElement("relativeId"); assessment.checkTheCheckBox (qId); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionBefore', theForm); } function addQuestionAfter(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (qId); var theForm = getFormByInputElement("relativeId"); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionAfter', theForm); } function addNGQuestion(sectionId, qtype, position) { var theForm = getFormByInputElement("questionType"); theForm.questionType.value = qtype; theForm.sectionId.value = sectionId; theForm.position.value = position; submit('addQuestion', theForm); } function modifyAssessmentInfo() { submit('modifyAssessmentInfo'); } function modifyHelper(questionId, method) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); setQuestionId(questionId); submit(method, theForm); } function modifyQuestion(questionId) { modifyHelper(questionId, 'modifyQuestion'); } function modifyRandomBlock(questionId) { modifyHelper(questionId, 'modifyRandomBlock'); } function modifyLinkQuestion(questionId) { getFormByInputElement("isLinkedQuestion").isLinkedQuestion.value = 'true'; modifyQuestion(questionId); } function copyQuestion(sectionId, questionId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("sectionId"); theForm.sectionId.value = sectionId; setQuestionId(questionId); submit('copyQuestion', theForm); } function copyLinkQuestion(sectionId, questionId, qbId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); theForm.sectionId.value = sectionId; theForm.questionBlockId.value = qbId; setQuestionId(questionId); submit('copyLinkQuestion', theForm); } function remove(id, type ) { if ( assessment.isInUse ) { var suffix = ( assessment.type == 'Survey'?'.survey':''); if ( !type ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_question.regrade" + suffix ) ); } else if ( type == 'question_link' ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.remove_question_link.regrade" + suffix ) ); } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_item.regrade" + suffix ) ); } } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString("confirm.delete_item")); } } assessment.removeEntity= function(id, message) { if (window.confirm(message)) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (id); var theForm = getFormByInputElement("questionId"); setQuestionId(id); submit('remove', theForm); } }; function reposition(id, position) { setQuestionId(id); var theForm = getFormByInputElement("questionId"); theForm.position.value = position; submit('reposition', theForm); } assessment.submitModifyQuestion = function() { submit('modifyQuestion'); }; assessment.cancelWarning = function() { var theForm = getFormByInputElement("methodEx"); theForm.elements.methodEx.value = 'modifyAssessment'; theForm.submit(); return false; }; function isCheckbox(element) { return (element && element.type && element.type == "checkbox"); } /******************* methods related to bulk update logic on the test/pool canvas*********************/ assessment.removeAll= function(container,showCount) { var count = 0; var inputs = list.checkboxes.get(container); for(var i=0; i<inputs.length; i++){ if(isCheckbox(inputs[i]) && inputs[i].checked ) { count ++; } } if (showCount?window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count",[count])):window.confirm(ASSESSMENT_RESOURCES.getString("confirm.delete_items")) ) { submit('removeBulk'); } }; assessment.removeAllPublished= function(message) { if (window.confirm(message)) { submit('removeBulk'); } }; assessment.updatePointsForAll = function(){ var element = document.getElementsByName("points_bulk"); if ( assessment.validatePoints(element) && ( !assessment.isInUse || confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) ) { submit('updatePointsBulk'); } return false; }; assessment.updatePointsInput = function(event) { var elements = document.getElementsByName("points_bulk"); var element = Event.findElement(event); var pointsValue = element.value; if (pointsValue ) { if (elements) { elements[0].value = pointsValue; elements[1].value = pointsValue; } } }; /*************************** common js methods for assessments**********************************************/ /** validate Input Field value **/ assessment.validateMiniFlyoutInputValue = function(element){ var value = null; if($(element) ) { value = $(element).value; } if ( !value ) { return ASSESSMENT_RESOURCES.getString("update.input.value"); } if ( !isNumeric( value, true ) ) { return ASSESSMENT_RESOURCES.getString("update.input.valid.value"); } return ""; }; assessment.validatePoints = function(element){ if (element) { var pointsTextBox = element[0] || element[1]; var pointsValue = pointsTextBox.value; return assessment.validateNumericInput(pointsTextBox, pointsValue, ASSESSMENT_RESOURCES.getString("update.points.value"), ASSESSMENT_RESOURCES.getString("update.points.valid.value"),true); } return true; }; assessment.validateCount = function(element) { if (element) { var countValue = element.value; return assessment.validateNumericInput(element, countValue, ASSESSMENT_RESOURCES.getString("update.count.value"), ASSESSMENT_RESOURCES.getString("update.count.valid.value")); } return true; }; assessment.validateNumericInput = function(textBox, value, blankMsg, badMsg,isFloat) { var checkForFloats = false; var numFormat = LOCALE_SETTINGS.getString('float.format'); var isValidNum = false; var re, trimmedVal; trimmedVal = value.trim(); if(isFloat != 'null') { checkForFloats = true; } if ( !value ) { alert(blankMsg); textBox.focus(); return false; } var numVal = null; if (!checkForFloats) { numVal = parseInt( value, 10); isValidNum = (!isNaN(numVal) && numVal >= 0); } else if ( typeof ( numFormat ) != 'undefined' ) { // hand parse for l10n re = new RegExp( numFormat ); isValidNum = ( trimmedVal.search( re ) === 0 ); } else { // try to use platform native (non-localized) numVal = parseFloat( trimmedVal ); isValidNum = !isNaN( numVal ); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test( trimmedVal.substring( numVal.toString().length ) ); } } if (!isValidNum) { alert(badMsg); textBox.value=""; textBox.focus(); return false; } return true; }; function back() { submit('back'); } function persistDisplayPreference(element, value){ UserDataDWRFacade.setStringTempScope( element, value ); } assessment.refreshParent = function( url ) { if ( window.opener ) { window.opener.location.href = url; if ( window.opener.progressWindow ) { window.opener.progressWindow.close(); } window.close(); } else { // We expected to be in a new window, but aren't. Perhaps this was a link from an announcement? window.location = url; } }; assessment.checkTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = true; } }; assessment.unCheckTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = false; } }; var startX; //set x offset of bar in pixels var startY; var padding = 53; var verticalpos="fromtop"; //enter "fromtop" or "frombottom" function setPadding(pad) { padding = pad; } function iecompattest(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body; } function resetInstructionHeight() { startY = document.getElementById("instructionBlock").offsetTop +document.getElementById("instructionBlock").clientHeight + padding; startX = document.getElementById("instructionBlock").offsetLeft; document.getElementById("dataCollectionContainer").style.position = "relative"; var tbh = document.getElementById("topbar").clientHeight; document.getElementById("containerdiv").style.paddingBottom = (32 + tbh) + "px"; if (document.getElementById("topbar").offsetTop !== 0) { document.getElementById("dataCollectionContainer").style.top=tbh+"px"; } } function staticbar(){ var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera; var d = document; function ml(id){ var el=d.getElementById(id); el.style.visibility="visible"; if(d.layers) { el.style=el; } el.sP=function(x,y,r) { this.style.left=x+"px"; this.style.top=y+6+"px"; if(r>-1) {this.style.right=r+"px";}; }; el.x = startX; el.y = startY; return el; } window.stayTopLeft = function() { var right = -1; var pY = ns ? window.pageYOffset : iecompattest().scrollTop; if (pY < startY) { window.ftlObj.y = startY - pY; document.getElementById("dataCollectionContainer").style.top=document.getElementById("topbar").clientHeight+4+"px"; } else { window.ftlObj.y = 0; } window.ftlObj.x = document.getElementById("instructionBlock").offsetLeft; if(page.util.isRTL()) { right = document.documentElement.clientWidth - (ftlObj.x + document.getElementById("instructionBlock").offsetWidth); } window.ftlObj.sP( window.ftlObj.x, window.ftlObj.y, right); setTimeout("stayTopLeft()", 20); }; resetInstructionHeight(); window.ftlObj = ml("topbar"); window.stayTopLeft(); } var AIM = { frame : function(c) { var n = 'f' + Math.floor(Math.random() * 99999); var d = document.createElement('DIV'); d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>'; document.body.appendChild(d); var i = document.getElementById(n); if (c && typeof(c.onComplete) == 'function') { i.onComplete = c.onComplete; } return n; }, form : function(f, name) { f.setAttribute('target', name); }, submit : function(f, c) { AIM.form(f, AIM.frame(c)); if (c && typeof(c.onStart) == 'function') { return c.onStart(); } else { return true; } }, loaded : function(id) { var i = document.getElementById(id); var d; if (i.contentDocument) { d = i.contentDocument; } else if (i.contentWindow) { d = i.contentWindow.document; } else { d = window.frames[id].document; } if (d.location.href == "about:blank") { return; } if (typeof(i.onComplete) == 'function') { i.onComplete(d.body.innerHTML); } } }; function resetContaindivHeight() { // adjust containdiv height // TODO: I don't see a reason for any of this code anymore... //if (document.getElementById('statusBlock').style.display=="" || document.getElementById('statusBlock').style.display=="inline") { // var statusHeight = document.getElementById('topbar').offsetHeight-22; // 22 is padding - be better to dynamically determine this value. //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight+statusHeight; //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} } function hideElement(element) { var msgspan=element; var msgimg=element+"img"; // TODO: I don't see a reason for any of this code anymore... //if (msgspan=="statusBlock") { // var statusHeight = document.getElementById('topbar').offsetHeight; //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight-statusHeight-22; // 22 is padding - be better to dynamically determine this value. //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} document.getElementById(msgspan).style.display="none"; document.images[msgimg].src="/images/ci/ng/more_options_dark.gif"; var alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; } function showElement(element) { var msgspan=element; var msgimg=element+"img"; document.getElementById(msgspan).style.display="inline"; document.images[msgimg].src="/images/ci/ng/less_options.gif"; var alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; if (msgspan=="statusBlock") { resetContaindivHeight(); } } function toggleElement(element){ var curStyle = document.getElementById(element).style.display; if(curStyle=="" || curStyle=="inline") { hideElement(element); persistDisplayPreference(element,'none'); } else { showElement(element); persistDisplayPreference(element,'inline'); } resetInstructionHeight(); } /********************************************* methods related to lightbox preview in pool/test canvas********************/ assessment.previewLightbox = null; assessment.copyLinkLightbox = null; assessment.showLightBox = function (event,baseContainer,numparents,previewUrl) { var e = event || window.event; // IE does not capture the event if( e && e.type == 'click') { Event.stop(e); } if ( !assessment.previewLightbox ) { assessment.previewLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 500 ,h : 375}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 125, horizontalBorder: 125 }); } assessment.previewLightbox.cfg.ajax={url:previewUrl, loadExternalScripts:true}; assessment.previewLightbox.cfg.content=null; assessment.previewLightbox.open(); }; assessment.showCopyLinkLightBox = function ( url) { var params = url.toQueryParams(); if ( !assessment.copyLinkLightbox ) { assessment.copyLinkLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 150 ,h : 200}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 50, horizontalBorder: 50 }); } assessment.copyLinkLightbox.cfg.ajax={url:'/webapps/assessment/do/authoring/questionSearch?method=copyLink&discoverUrl=' + encodeURIComponent(url) + '&course_id=' + params.course_id }; assessment.copyLinkLightbox.cfg.content=null; assessment.copyLinkLightbox.cfg.closeOnBodyClick=false; assessment.copyLinkLightbox.open(); }; assessment.showDiscover = function(url,title,width,height) { assessment.submitDrawerUrl = url; var screenX=Math.floor((screen.width)/2)-Math.floor(width/2); var screenY=Math.floor((screen.height)/2)-Math.floor(height/2)-20; var top=screenY; var left=screenX; var features="'"+'toolbar=no,scrollbars=yes,status=yes,resizable=yes,top='+ top+',left='+ left+',screenX='+ screenX+',screenY='+ screenY+',width='+ width+',height='+ height+"'"; var discover = window.open(url,title,features); if (window.focus) { if (discover) { discover.focus(); } else { alert(ASSESSMENT_RESOURCES.getString("pop.up.blocker.enabled")); } } }; assessment.discoverOptions = function(url,title,width,height,hideCopyLink){ if(!hideCopyLink) { //check if the UserPreference is set in session UserDataDWRFacade.getStringPermScope( "AssessmentUtils.DISCOVER_MODE_IS_LINKING", function( copyLinkSet ) { if (copyLinkSet == '') { assessment.showCopyLinkLightBox(url); } else{ assessment.showDiscover(url,title,width,height); } }); } else{ assessment.showDiscover(url,title,width,height); } }; assessment.onCloseCopyLinkLightbox = function ( url ) { var copyLinkId = $('copylink_link'); var copyCopyId = $('copylink_copy'); var copyLinkValueSet = false; if(copyLinkId && copyCopyId ) { copyLinkValueSet = copyLinkId.checked || copyCopyId.checked; } if ( !copyLinkValueSet ) { if (window.confirm(ASSESSMENT_RESOURCES.getString("confirm.set_copy_link"))) { assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } } else{ assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } }; /**************************** methods related to question block on the test canvas*************************************/ assessment.createQuestionBlock = function() { }; function addQuestionToBlock(questionId, assessmentType, assessmentId, courseId ) { var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=addQuestionsToQuestionBlock" + "&questionId=" +questionId + "&assessmentType=" +assessmentType + "&assessmentId=" +assessmentId + "&course_id=" +courseId; assessment.discoverOptions(url,'discover','900','675',true); } /********************** methods related to inline pool points flyout***************************/ assessment.poolFlyout = null; assessment.initPoolFlyout = function(title) { if ( !assessment.poolFlyout ) { assessment.poolFlyout = new miniFlyout.MiniFlyout({ title: title, miniFlyoutTemplate: "<label class='hideoff' for='#{inputFieldName}_id'>#{title}</label> <input id='#{inputFieldName}_id'type='text' style='width: 2em;' size='3' value='0' name='#{inputFieldName}'/> <a href='#' title='#{closeButtonName}' bb_flyout_title='Cancel' class='genericButtonImg button-3-img'><img alt='#{closeButtonName}' src='/images/ci/ng/remove_li.png'/></a> <a href='#' title='#{submitButtonName}' bb_flyout_title='Submit' class='genericButtonImg button-3-img'><img alt='#{submitButtonName}' src='/images/ci/ng/checkmark_li.png'/></a>", inputFieldName: "inline_points", errorMessage: page.bundle.getString("points.failure"), miniFlyoutDivClass: "liveArea liveArea-slim", onSubmitValidate : "return assessment.validateMiniFlyoutInputValue('inline_points_id')" }); } miniFlyout.closeCurrentMiniFlyout(); }; assessment.showPoolFlyout = function (event,title,assessmentId,id, courseId) { var e = event || window.event; // IE does not capture the event var aLink = Event.element(e); if( e && e.type == 'click') { Event.stop(e); } assessment.initPoolFlyout(title); assessment.poolFlyout.cfg.openLink = aLink ; assessment.poolFlyout.cfg.containerId = aLink.parentNode.parentNode; assessment.poolFlyout.cfg.inputFieldDefaultSource = "ipoints_" + id; assessment.poolFlyout.cfg.inputFieldName= "inline_points"; assessment.poolFlyout.cfg.onSubmit = "return assessment.saveQuestionPoints('" + assessmentId + "','" + id + "','" + courseId + "',false, false, assessment.poolFlyout.cfg.containerId);"; assessment.poolFlyout.open(); }; /*************************************************** methods related to test canvas selection by type*******************/ assessment.selectByType = function(container) { var selected = document.getElementsByName('selectbyQuestionType')[0];// either use 0 or 1, since both are updated to the same var checkboxes = list.checkboxes.get(container); for ( var i=0; i < checkboxes.length; ++i ) { checkboxes[ i ].checked = false; } var className = selected.options[selected.selectedIndex].value; checkboxes.each( function(e){ if(e.className.trim() ==className.trim()) { e.checked=true; } } ); $('selectbyQuestionType_idTop').options[selected.selectedIndex].selected=true; $('selectbyQuestionType_idBot').options[selected.selectedIndex].selected=true; }; assessment.toggleQuestionBlockDiv = function(rawId){ var ul = $('questionBlockDiv'+rawId); var a = $('questionBlockDivLink'+rawId).getElementsByTagName('a')[0]; Effect.toggle(ul, 'blind', { duration: 0.3 }); if(ul.style.display=="none"){ a.className="itemHead itemHeadOpen"; } else if(ul.style.display=="block" || ul.style.display==""){ a.className="itemHead"; } return false; }; /************************** methods related to discover drawer functionality********************************************/ assessment.inBasicDiscoverMode = function () { if (document.copyQuestionsForm.method.value == 'save') { return true; } return false; }; assessment.cancelDrawer = function() { var myDrawer = drawer.model.getCurrentInstance(); myDrawer.discard(); document.copyQuestionsForm.elements.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener ) { //close question discovery popup window.close(); } return false; }; assessment.cancelRandomBlock = function () { document.copyQuestionsForm.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener !== null) { //close question discovery popup window.close(); } return false; }; function findAndDisableInputElements(el) { if (el === null) { return; } var elems = el.getElementsByTagName('input'); for ( var i = 0; i < elems.length; i++ ) { el.addClassName('disabled'); el.disabled = true; } } /****************** Ajax method related to Test/pool canvas***************************************************/ function postAndUpdateCanvas(form) { var method = form.method.value; var assessmentId = form.assessmentId.value; var courseId = form.course_id.value; var nonceId = nonceUtil.getNonceId('bb-question-discover'); var questionId = ""; if (form.questionId ) { questionId = form.questionId.value; } var url = "/webapps/assessment/do/authoring/copyQuestions?method=" +method + "&assessmentId="+assessmentId + "&course_id=" + courseId + "&sectionId=" + form.sectionId.value + "&assessmentType=" +form.assessmentType.value + "&itemIds=" +form.itemIds.value + "&overridePoints=" +form.overridePoints.value + "&questionId=" +questionId + "&ajaxMode=true" + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (form.searchCriterion !== null) { url = url + "&searchCriterion=" + encodeURIComponent(form.searchCriterion.value); } findAndDisableInputElements( $('cartSubmit') ); var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { window.opener.location="/webapps/assessment/do/authoring/modifyAssessment?method=modifyAssessment&assessmentId="+assessmentId+"&course_id="+courseId; if (json !== null) { // capture any error message and display if (json.errorMessage ) { // exception message looks ugly for the end-user, hence use a more user-friendly message to indicate the ajax refresh failed new page.InlineConfirmation("error", json.errorMessage, false ); } else if (json.successMessage ) { // WIP // var startingEl = window.parent.document.getElementById('blockstart_' + questionId); // new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false ); } } setTimeout('window.close()', 1500); }, onFailure: function(transport, json) { new page.InlineConfirmation("error", "Failure post discover pop-up", false ); } }); } assessment.submitRandomBlock = function () { if ($('listContainer_datatable')) { var searchCriterion = activeFilter.getSearchCriteriaInstance(false).getSearchCriteriaAsXml(); document.copyQuestionsForm.searchCriterion.value = searchCriterion; if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } } else { alert(ASSESSMENT_RESOURCES.getString("cannot.submit.with.no.matching.questions")); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.submitDrawer = function () { var myDrawer = drawer.model.getCurrentInstance(); var selectedItems = myDrawer.getItems(true); var i; var allIds = ""; for (i=0;i<selectedItems.length;i++) { var qId = selectedItems[i].itemId; var mode = selectedItems[i].mode; allIds += qId + ":" + mode + ","; } document.copyQuestionsForm.itemIds.value = allIds; myDrawer.discard(); if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.OnCompleteUpdateCanvas = function(questionId, req, showNestedReceipt) { var json = req.responseText.evalJSON( true ); var pointsEl = $s('ipoints_' + questionId); var totalQuestionsCountEl = $s('totalNoQuestions' + questionId); var currentQuestionCountEl = $s('questionCount' + questionId); var totalBlockPointsEl = $s('totalPoints_' + questionId); var totalTestPointsEl =$s('totalTestPoints'); var totalQuestionsEl = $s('totalQuestions'); var startingEl = $s('blockstart_' + questionId); if( !json.errorMessage && pointsEl && json.points ) { // update per question points pointsEl.childNodes[0].nodeValue = json.points; } if( !json.errorMessage && totalQuestionsCountEl && json.totalQuestionsCount ) { // update per question points totalQuestionsCountEl.childNodes[0].nodeValue = json.totalQuestionsCount; } if( !json.errorMessage && currentQuestionCountEl && json.currentQuestionsCount ) { // update per question points currentQuestionCountEl.childNodes[0].nodeValue = json.currentQuestionsCount; } if( !json.errorMessage && totalBlockPointsEl && json.totalBlockPoints ) { // update the total points totalBlockPointsEl.childNodes[0].nodeValue = json.totalBlockPoints; } if( !json.errorMessage && totalQuestionsEl && json.totalQuestions ) { // update the total questions totalQuestionsEl.innerHTML = json.totalQuestions; } if( !json.errorMessage && totalTestPointsEl && json.totalTestPoints ) { // update total Test points, not for survey or pool totalTestPointsEl.innerHTML = json.totalTestPoints; } if (showNestedReceipt) { if (json.securityErrorMsg ) { new page.NestedInlineConfirmation("error", json.securityErrorMsg, true, startingEl, true); } else if (json.successMessage ) { if (json.successMessage.indexOf('regrading_queued_status')> 0) { // If we are displaying a confirmation including regrading status then DO NOT fade it away - let it stay and get updated. new page.NestedInlineConfirmation("success", json.successMessage, false, startingEl, true); } else { new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false); } } } assessment.result = json.errorMessage; assessment.setQuestionNumbers(); }; assessment.removeQuestionsFromBlock= function(listId, questionBlockId, courseId,assessmentId) { var allcheckBoxes = list.checkboxes.get(listId); var checkedCount = 0; var ids = ""; for (var i = 0; i < allcheckBoxes.length; i++) { var separator = (i == (allcheckBoxes.length - 1)) ? " " : ','; if (allcheckBoxes[i].checked ) { checkedCount ++; ids = ids + allcheckBoxes[i].value + separator; } } if (window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count", [checkedCount]))) { // ajax request var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + questionBlockId); var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=removeQuestionsFromQuestionBlock" + "&block_id=" + questionBlockId + "&course_id=" + courseId + "&assessment_id=" + assessmentId + "&questionIds=" + ids + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; nonceId.value = json.nonceId; inventoryList.ajaxPostOnClick(null, listId); if(json.errorMessage ) { new page.NestedInlineConfirmation("error", json.errorMessage, false, startingEl, false); } }, onSuccess: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); }, onFailure: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); } }); } }; assessment.result = ""; assessment.saveQuestionCount = function(assessmentId, blockId, courseId, forRandomBlock ) { var countEl = document.getElementsByName('question_count')[0]; var originalCountEl = document.getElementById('questionCount' + blockId); var originalCount = originalCountEl.childNodes[0].nodeValue; var newCount = countEl.value; if (newCount == originalCount) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + blockId); var url = "/webapps/assessment/do/authoring/modify"+(forRandomBlock?"Random":"Question")+"Block?method=saveQuestionCount" + "&block_id="+blockId + "&course_id=" + courseId + "&new_count=" + newCount + "&assessment_id=" + assessmentId + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(req) { var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); }, onFailure: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); } }); return assessment.result; }; assessment.updateExtraCredit = function (newExtraCreditValue, questionId) { var extraCreditDiv = $('extra_credit_' + questionId); if (extraCreditDiv) { if (newExtraCreditValue) { extraCreditDiv.removeClassName('hidden'); extraCreditDiv.addClassName('extraCredit'); } else { extraCreditDiv.addClassName('hidden'); extraCreditDiv.removeClassName('extraCredit'); } } }; assessment.updateFullCredit = function (newFullCredit, questionId) { document.getElementById('original_fullCredit_value_' + questionId).value = newFullCredit.toString(); if (newFullCredit) { document.getElementById('full_credit_' + questionId).show(); } else { document.getElementById('full_credit_' + questionId).hide(); } }; // copied or linked question assessment.saveQuestionPoints = function(assessmentId, questionId, courseId, isBlock, isInUse, containerId ) { var pointsToSave = document.getElementsByName('inline_points'); var extraCredit =$s('inline_points_extra_credit_id'); var newExtraCreditValue = false; if(extraCredit) { newExtraCreditValue = extraCredit.checked; } var newPoints = pointsToSave[0].value; var originalPointsEl = document.getElementById('ipoints_' + questionId); var originalExtraCreditValue = false; var originalExtraCreditEl = $('extra_credit_' + questionId); if(originalExtraCreditEl) { originalExtraCreditValue = !originalExtraCreditEl.hasClassName('hidden'); } var originalPoints; if( originalPointsEl.childNodes ) { originalPoints = originalPointsEl.childNodes[0].nodeValue; } var originalFullCredit; var newFullCredit; var fullCreditCheckbox = document.getElementById('inline_points_full_credit_' + questionId); if (fullCreditCheckbox !== null) { newFullCredit = fullCreditCheckbox.checked; originalFullCredit = document.getElementById('original_fullCredit_value_' + questionId).value; } if ( (newPoints == originalPoints ) && ( originalExtraCreditValue == newExtraCreditValue ) && (!fullCreditCheckbox || (originalFullCredit == newFullCredit.toString())) ) { return ""; } if ( isInUse && !confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); if( !extraCredit ) { newExtraCreditValue = ""; } if( !isBlock) { isBlock = false; } else { isBlock = true; } var url = "/webapps/assessment/do/authoring/modifyAssessment?method=updateQuestionPoints" + "&question_id=" + questionId + "&course_id=" + courseId + "&points_value=" + newPoints + "&extra_credit=" + newExtraCreditValue + "&assessment_id=" + assessmentId + "&is_Block=" + isBlock + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (fullCreditCheckbox) { url = url + "&full_credit=" + newFullCredit; } new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req){ var json = req.responseText.evalJSON( true ); var showNestedReceipt = false; if( !containerId ) { showNestedReceipt = true; } assessment.OnCompleteUpdateCanvas(questionId,req,showNestedReceipt); if(extraCredit) { assessment.updateExtraCredit(newExtraCreditValue,questionId); } if (fullCreditCheckbox) { assessment.updateFullCredit(newFullCredit,questionId); } if (!showNestedReceipt) { // show receipt in pool , table cell var status_msg = null; if (json.successMessage != "") { status_msg = $('status_msg_succ'); } var link = containerId.down(1); link.hide(); containerId.appendChild(status_msg); (status_msg).show(); setTimeout( function(){ (status_msg).fade({ duration: 0.5 }); },500); setTimeout( function(){ link.appear({duration:0.5}); },1000); link.focus(); } }, onFailure: function(req){ new page.InlineConfirmation("error", page.bundle.getString("updatePointsFailed"), false); } }); return assessment.result; }; assessment.setDefaultLinkingMode = function(isLinkingMode, courseIdStr) { var courseId = courseIdStr || document.copyQuestionsForm.course_id.value; var url = "/webapps/assessment/do/authoring/questionSearch?method=saveLinkingMode" + "&linkingMode="+isLinkingMode+ "&course_id=" +courseId ; new Ajax.Request(url, { method: 'post', onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { document.body.style.cursor = 'default'; }, onSuccess: function(transport, json) { }, onFailure: function(transport, json) { } }); }; assessment.setDisplayFullText = function(displayFull, listId) { var extras = []; // Note - Constants.DISPLAY_FULL_TEXT = "displayFullText" extras.displayFullText=displayFull; inventoryList.ajaxPostOnClick(null, listId, extras, true); }; assessment.rewriteSectionForScreenReader = function(elementName) { var element = document.getElementById(elementName); element.setAttribute("aria-live", "assertive"); element.setAttribute("aria-relevant", "all"); element.setAttribute("aria-atomic", "true"); element.setAttribute("aria-busy", "true"); var myContents = element.innerHTML; element.innerHTML = myContents; element.setAttribute("aria-busy", "false"); return false; }; assessment.clearQuestionModifiedStatuses = function() { // Called on page load to make sure we don't have any stranded questions-to-monitor kicking around. assessment.questions_to_monitor = []; assessment.questions_to_monitor_index = 0; }; assessment.QMonitor = Class.create(); assessment.QMonitor.prototype = { initialize: function( entity, index) { this.index = index; Event.observe(entity, 'change', this.onChange.bindAsEventListener(this)); }, onChange: function( event) { assessment.questions_to_monitor[this.index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[this.index].qnum); } }; assessment.getSaveButton = function(questionNum) { var myButton = document.getElementById("saveButton_" + questionNum); if (!myButton) { if (assessment.isOneByOne) { if (questionNum == document.forms.saveAttemptForm.current_question.value) { myButton = document.getElementById("saveAnswerSubmitId"); // for one-at-a-time tests } } } return myButton; }; assessment.setModifiedIcon = function(questionNum) { var saveAnswerLabel = page.bundle.getString('takeSaveAnswer'); var myButton = assessment.getSaveButton(questionNum); if (myButton) { myButton.value = saveAnswerLabel; Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); } // TODO - Either rip this out or put in appropriate image, style, and text // NOTE - can't actually enable this until on-the-fly onchange support in the VTBE is done // (as opposed to the current on-unload check for change) // Also - would need to deal with leaving this image on-page in this scenario: // Save Q1 // Modify Q1 // Save Q2 // -- at this point, we update the status icons and lose the modified icon for Q1 /* var mySpan =document.getElementById("span_"+questionNum); var myImg = document.getElementById("img_"+questionNum); mySpan.className = "qIncomplete"; myImg.src = "/images/ci/icons/needs_grading.gif"; // better icon myImg.alt = "TODO: Incomplete"; myImg.height= "10"; myImg.width= "10"; */ }; assessment.addQuestionToMonitor = function(qid,qnum, isFileUploadQuestion) { var questionBlock = $(qid); assessment.questions_to_monitor[assessment.questions_to_monitor_index] = {}; // TODO - is there a more efficient way to do this? $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, assessment.questions_to_monitor_index); }); assessment.questions_to_monitor[assessment.questions_to_monitor_index].qid = qid; assessment.questions_to_monitor[assessment.questions_to_monitor_index].qnum = qnum; // Status: 0 == not changed, 1 = changed, 2 = attempted to be auto-saved since last change assessment.questions_to_monitor[assessment.questions_to_monitor_index].status = 0; assessment.questions_to_monitor[assessment.questions_to_monitor_index].isFileUploadQuestion = isFileUploadQuestion; assessment.questions_to_monitor_index++; }; assessment.remonitorFileUpload = function(qid, qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { if (assessment.questions_to_monitor[i].isFileUploadQuestion) { var questionBlock = $(qid); $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, i); }); } else { return; } } } } }; assessment.questionBeingSaved = -1; assessment.markQuestionAsSaved = function (qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { assessment.questions_to_monitor[i].status = 0; } } } }; assessment.hasUnsavedAnswers = function() { if (assessment.questions_to_monitor_index > 0) { var i = 0; if (typeof(finalizeEditorsAnyChange) == "function") { finalizeEditorsAnyChange(assessment.vtbeChanged); } for(i=0;i<assessment.questions_to_monitor_index;i++) { //alert("Question " + assessment.questions_to_monitor[i].qid + " number " + assessment.questions_to_monitor[i].qnum + " status " + assessment.questions_to_monitor[i].status); if (assessment.questions_to_monitor[i].status >= 1) { return true; } else if (assessment.questions_to_monitor[i].isFileUploadQuestion) { // In IE, the assessment.QMonitor onchange handle disappears after the first file selection and I can't seem to add it back. // This at least gets the saving to work so it doesn't appear totally broken. The button doesn't change to 'save answer' immediately // after you attach a file a second time though, but we have to live with that for now. var actionDivName = 'file_upload_ans_' + assessment.questions_to_monitor[i].qid + '_selectedFileActions'; var actionDiv = $(actionDivName); if (actionDiv && actionDiv.visible()) { assessment.questions_to_monitor[i].status = 1; return true; } } } } return false; }; assessment.registerVTBEChange = function() { if (typeof(registerOnChangeCallback) == "function") { registerOnChangeCallback(assessment.vtbeChangedCallback, assessment.getVtbeQuestionIndex); } }; assessment.autoSaveExecutor = ''; assessment.autoSaveInterval = 10; // seconds assessment.startAutoSave = function(interval) { assessment.autoSaveInterval = interval; assessment.autoSaveExecutor = new PeriodicalExecuter(assessment.doAutoSave, assessment.autoSaveInterval); }; assessment.stopAutoSave = function() { if (assessment.autoSaveExecutor != '') { assessment.autoSaveExecutor.stop(); } }; assessment.toggleAutoSave = function(interval) { assessment.stopAutoSave(); if ($s('autoSaveCheckbox').checked) { assessment.startAutoSave(interval); } }; assessment.doAutoSave = function(pe) { if (assessment.submittingRightNow) { // Ignore if submitting right now return; } if (assessment.savingRightNow) { // If we are already saving, do nothing right now. return; } var doneOne = false; if (assessment.hasUnsavedAnswers()) { for(var i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].status == 1) // explicitly only check for status 1, skipping status==2 { if (doneOne) { // We can only submit one question per pass because otherwise the nonce fails. Switch // to a higher frequency to save all the outstanding questions faster. pe.stop(); pe.frequency = 1; pe.registerCallback(); return; } assessment.questions_to_monitor[i].status = 2; // flag to indicate we've already tied to auto-save this // Will be reset to 0 after a successful save or 1 if the user modifies their answer again. saveOneItem( assessment.questions_to_monitor[i].qid, assessment.questions_to_monitor[i].qnum, true, false ); doneOne = true; } } } if (!doneOne) { if (pe.frequency != assessment.autoSaveInterval) { pe.stop(); pe.frequency = assessment.autoSaveInterval; pe.registerCallback(); } } }; assessment.vtbeChanged = function(ifr) { var index = assessment.getVtbeQuestionIndex( ifr ); assessment.vtbeChangedCallback(ifr,index); }; assessment.vtbeChangedCallback = function(ifr,index) { if (index != -1) { assessment.questions_to_monitor[index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[index].qnum); } }; assessment.getVtbeQuestionIndex = function(ifr) { var parents = ifr.ancestors(); var num = parents.length; for ( var i = 0; i < num; i++ ) { var parent = parents[i]; if ( page.util.hasClassName(parent, 'takeQuestionDiv') ) { var divid = parent.id; for ( var j = 0; j < assessment.questions_to_monitor_index; j++ ) { if ( assessment.questions_to_monitor[j].qid == divid ) { return j; } } return -1; } } return -1; }; assessment.warnBeforeLeavingIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var prefix = "test"; if (isSurvey) { prefix = "survey"; } var timermsg = ''; if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } if (isForced) { return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.forced.beforeunload.warning"); } return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.beforeunload.warning") + timermsg; }; assessment.queueUpWarning = function(msg, oneByOneAndForceUnload) { var url = assessment.getNextActionUrl() + '&method=queueUpWarning'; var params = Object.extend({ 'msg' : msg, 'oneByOneAndForceUnload' : oneByOneAndForceUnload, 'course_assessment_id' : document.forms.saveAttemptForm.course_assessment_id.value } ); var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, asynchronous: false }); }; assessment.warnOnLeaveIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var timermsg = ''; var prefix = "test"; if (isSurvey) { prefix = "survey"; } if (assessment.hasUnsavedAnswers()) { // Since we are always auto-saving anyways, we might as well just always save unsaved answers here. saveAllQuestions(false); } if (isForced) { assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.forced.warning", assessment.currentTestName), true ); } else { if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.warning", assessment.currentTestName )+timermsg, false); } }; assessment.setDefaultQuestionDisplay = function(blockToLeaveVisible) { assessment.blockToLeaveVisible = blockToLeaveVisible; UserDataDWRFacade.getStringPermScope( "assessment.questionsExpanded", function( questionsExpanded ) { if (questionsExpanded == 'false') { assessment.toggleQuestionDisplay(); } assessment.blockToLeaveVisible = 'null'; }); }; assessment.toggleQuestionDisplay = function() { var newVis = !assessment.questionVisibility; if (newVis) { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", true ); } else { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", false ); } // Note -most of the time this will be "contentListItem:null" - that's OK var idToIgnore = "contentListItem:" + assessment.blockToLeaveVisible; $A(document.getElementsByTagName('li'))._each(function(entity) { // hide|show the given entity if it is one we care about var id = entity.id; if (id.startsWith("contentListItem:") && id != idToIgnore) { $A(entity.getElementsByTagName('div'))._each(function(adiv) { if (page.util.hasClassName(adiv,'details')) { if (newVis) { $(adiv).show(); } else { $(adiv).hide(); } } }); if (newVis) { entity.removeClassName('hideQuestionDetails'); } else { entity.addClassName('hideQuestionDetails'); } } }); var buttonText = page.bundle.getString( newVis ? "hide.question.details" : "show.question.details" ); $('content_listContainer_hideshowQuestions_top').down('a').update( buttonText ); $('content_listContainer_hideshowQuestions_bottom').down('a').update( buttonText ); assessment.questionVisibility = newVis; }; assessment.setDisableFlag = function(questionId, flag) { modifyHelper(questionId, 'setDisableFlag' + flag); }; assessment.questionLabelMap = {}; assessment.dndHooksAdded = false; assessment.setQuestionNumbers = function() { var index = 1; // loop through line items in list of questions var questions = $('content_listContainer'); if (questions) { $A(questions.childElements()).each( function( li ) { var h3 = li.down('h3'); var span = h3.down('span.questionNumber'); if ( !span ) // create & add span for questionNumber if none exists { span = new Element('span',{'class':'questionNumber autoQuestionNumber'}); h3.insert({top:span}); } var id = h3.up('div').id; var qSetSize = $('questionCount'+id); var qNumStr = ''+index; if ( qSetSize ) // show number range for question sets { var s = parseInt(qSetSize.innerHTML, 10); index += s - 1; if ( s > 1 ) { qNumStr += ' - '+index; } else if ( s === 0 ) { qNumStr = ''; } } qNumStr = qNumStr + '.'; index++; span.update(qNumStr); assessment.questionLabelMap[id] = h3.innerHTML.stripTags(); // save numbered label in map for loading accessible reorder select }); } if ( !assessment.dndHooksAdded ) { var dndCtrl = dragdrop.getControllerObjById( 'pageListReorderControls' ); if (dndCtrl) { // Set question numbers in the accessible reorder select before opening it's popup. // Setting the question numbers needs to be defered until the popup is added to the DOM, which // happens just before the popup is opened dndCtrl.extPreOpenCallback = assessment.setAccessibleReorderQuestionNumbers; // call this function to set question numbers after a dnd or accessible reorder happens dndCtrl.extPostOrderCallback = assessment.setQuestionNumbers; assessment.dndHooksAdded = true; } } }; assessment.setAccessibleReorderQuestionNumbers = function() { $A($('pageListReorderControlSelect').options).each( function( option ) { option.text = assessment.questionLabelMap[option.value]; }); }; assessment.viewReferencingCanvases = function(courseId, assessmentId) { var url = "/webapps/assessment/do/authoring/modifyAssessment?course_id=" + courseId + "&method=getReferringCanvases&assessmentId=" + assessmentId; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ document.body.style.cursor = 'default'; }, onSuccess: function(req){ $('referencingCanvasesPlaceholder').update(req.responseText); }, onFailure: function(req){ $('referencingCanvasesPlaceholder').update(ASSESSMENT_RESOURCES.getString("error.loading.referrers")); } }); }; assessment.normalizedWidth = 0; assessment.setNormalizedButtonWidth = function(myButton) { if (assessment.normalizedWidth === 0) { myButton.value = page.bundle.getString('takeSaveAnswer'); Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); assessment.normalizedWidth = myButton.clientWidth; myButton.value = page.bundle.getString('takeSaveAnswerAgain'); Element.addClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } myButton.value = page.bundle.getString('savingAnswer'); Element.addClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } } //myButton.style.width = assessment.normalizedWidth + 'px'; return; }; assessment.resetFields = function() { window.document.assessmentSubmitted = false; window.document.assessmentActuallySubmitted = true; }; assessment.getNextActionUrl = function() { var url = document.forms.saveAttemptForm.action; url = url + '?saveSequence=' + (assessment.saveSequence++); return url; }; assessment.submitAttemptForm = function() { var myForm = document.forms.saveAttemptForm; var origUrl = myForm.action; myForm.action = assessment.getNextActionUrl(); try { myForm.submit(); } catch (err) { // Make sure we get to the next line and reset the url just in case. } myForm.action = origUrl; }; // This is the final save-and-submit request for the test/survey assessment.doConfirmSubmit = function(msg) { document.forms.saveAttemptForm.save_and_submit.value='true'; try { if (confirmSubmit(msg)) { assessment.resetFields(); assessment.submitAttemptForm(); } } catch (err) { // If we had an error, continue to clear the saveandsubmit value } document.forms.saveAttemptForm.save_and_submit.value=''; return false; }; assessment.alertSaveStatus = function (status) { if (status == 'COMPLETED' ) { alert(page.bundle.getString("confirm_saveall_success")); } else if (status == 'PARTIAL' ) { alert(page.bundle.getString("confirm_save_partial")); } else if (status == 'UNANSWERED' ) { alert(page.bundle.getString("confirm_save_empty")); } else { alert(page.bundle.getString("confirm_save_error")); } }; assessment.removeFileUploadAnswer = function (fieldName, divName, questionId, questionNumber, remAnsSuffix, takeDupeSaveMsg) { document.getElementById(divName).style.display = "none"; document.forms.saveAttemptForm.elements.method.value = "fileremove"; document.forms.saveAttemptForm.elements[fieldName + '-override'].value = "false"; document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = "true"; try { if (checkAlreadySaved(takeDupeSaveMsg)) { saveOneItem( questionId, questionNumber, true, false); } } catch (err) { // Ignore - just want to make sure we do the next statement } document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = ""; return false; }; assessment.updateQuestionStatusResponse = function(originalRequest ) { var qnums = originalRequest.responseText; var lines = qnums.split("\n"); var qnum=lines[0].split(","); for (var i=0; i<qnum.length; i++) { var num = qnum[i]; if (num > 0) { setSavedIcon(num); } else { setNotSavedIcon(-num); } } for (var j=1;j<lines.length;j++) { var fileUpload = lines[j].split(":"); if (fileUpload.length == 2) { var divName = "file_upload_div_" + fileUpload[0]; var divElement = document.getElementById(divName); if (fileUpload[1] == "HIDE") { if(divElement !== null) { divElement.style.display = "none"; } } else { var spanName = "file_upload_span_" + fileUpload[0]; var cancelFileButton = "file_upload_ans_" + fileUpload[0] + "_cancelFileButton"; var cancelElement = document.getElementById(cancelFileButton); var overrideName = "file_upload_ans_" + fileUpload[0] + "-override"; var overrideElement = document.forms.saveAttemptForm.elements[overrideName]; var spanElement = document.getElementById(spanName); if(divElement !== null) //we must check if item exists for one question at a time format { divElement.style.display = "block"; } if(spanElement !== null) { spanElement.innerHTML = fileUpload[1]; } if(cancelElement !== null) { cancelElement.click(); } if (typeof overrideElement !== 'undefined' && overrideElement !== null) { overrideElement.value = "true"; } } } } }; assessment.prepareForSubmit = function(doValidation) { // MUST VALIDATE FORM TO PERSIST WYSIWYG // Set textarea value to VTBE contents: if (typeof(finalizeEditors) == "function") { finalizeEditors(); } /* Transform equations place holders into html before validation*/ var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if (doValidation) { /* Validate form TODO: Why not call validateForm()*/ var valid = formCheckList.check(); return valid; } return true; };

var widget = {}; widget.colorPickers = {}; widget.ColorPicker = Class.create(); widget.ColorPicker.prototype = { /** * Constructor * * @param name - id of the color picker * @param initialColor - initial color hex string ("#000000") * @param alertMsg - localized error msg string ("Error: A valid color value must be specified") * @param previewIdStr - optional id string of the color preview DIV container user can specify * @param allowTransparent - optional boolean whether to render an option to select transparent. Default is false. */ initialize : function( name, initialColor, alertMsg, previewIdStr, previewBackgroundIdStr, allowTransparent ) { this.theColorPickerName = name; this.allowTransparent = ( !allowTransparent ) ? false : true; this.theMenu = $( name ); this.alertMsg = alertMsg; this.userPreviewContainer = $( previewIdStr ); // may be undefined this.userPreviewBackgroundContainer = $( previewBackgroundIdStr ); // may be undefined if ( typeof this.userPreviewContainer == "undefined" ) { this.userPreviewContainer = null; } if ( typeof this.userPreviewBackgroundContainer == "undefined" ) { this.userPreviewBackgroundContainer = null; } this.colorListParent = $( name + '_colorlist_parent' ); widget.ColorPicker.registerColorPicker( this ); this.ie = document.all && navigator.userAgent.indexOf( "Opera" ) == -1; this.color_hidden_input = $( name + "_title_color_input" ); this.color_hidden_input.value = initialColor; this.color_hidden_input._defaultValue = initialColor; this.anch_link = $( name + "_link" ); this.color_link = $( name + "_img" ); this.color_name_label = $( name + "_color_name_label" ); this.title_color_input = $( name + "_title_color" ); this.setDisplay( initialColor, this.getDisplayColorInfo( initialColor, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( initialColor, true ); var backgroundStyle = initialColor; if( initialColor === "transparent" ) { backgroundStyle = 'url(/images/swatches/transparent.gif)'; } this.color_link.setStyle( { background : backgroundStyle } ); this.updateUserPreviewContainerColor( initialColor ); if ( this.anch_link ) { Event.observe( this.anch_link, "click", this.onOpen.bindAsEventListener( this ) ); } Event.observe( document.body, "click", this.closeColorPickers.bindAsEventListener( this ) ); Event.observe( this.theMenu, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_previewColorLink', 'click', this.previewListener .bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_cancelButton', 'click', this.onClose.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_submitButton', 'click', this.onApply.bindAsEventListener( this ) ); this.skip_link = $( name + "_skip_link" ); if ( this.skip_link ) { Event.observe( this.skip_link, "click", this.onSkipLinkClick.bindAsEventListener( this ) ); } // relocate color picker popup div to the bottom of the doc b/c of css display issues Element.remove( this.theMenu ); document.body.appendChild( this.theMenu ); widget.colorPickers[ this.theColorPickerName ] = this; }, onSkipLinkClick : function( event ) { $( this.theColorPickerName + '_submitButton' ).focus(); }, onKeyPress : function( event ) { var key = event.keyCode || event.which; if ( key == Event.KEY_ESC ) { this.onClose( event ); } }, closeColorPickers : function( event ) { var element = Event.element( event ); widget.ColorPicker.colorPickers.each( function( cp ) { if ( cp != this && !element.descendantOf( cp.theMenu ) ) { cp.close(); } }.bind( this ) ); }, setOnChangeHandler : function( handler ) { this.onChangeHandler = handler; }, setDefaultColor : function( colorValue ) { this.color_hidden_input.value = colorValue; this.color_hidden_input._defaultValue = colorValue; if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); }, setColor : function( colorValue ) { widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, colorValue ); if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); this.updateUserPreviewContainerColor( colorValue ); if ( this.onChangeHandler ) { this.onChangeHandler(); } }, getPaletteInstance : function() { if ( !this.paletteInstance ) { this.paletteInstance = Element.clone( widget.ColorPicker.colorPalette, true ); } return this.paletteInstance; }, deletePaletteInstance : function() { if ( this.paletteInstance ) { Event.stopObserving( this.paletteInstance, 'click' ); this.paletteInstance.remove(); delete this.paletteInstance; } }, onOpen : function( event ) { this.closeColorPickers( event ); this.colorListParent.appendChild( this.getPaletteInstance() ); this.initializeTransparent(); Event.observe( this.getPaletteInstance(), 'click', this.setColorFromSwatch.bindAsEventListener( this ) ); var offset = Position.cumulativeOffset( this.anch_link ); this.theMenu.setStyle( { display : "block", position : "absolute" } ); var width = this.theMenu.getWidth(); var bodyWidth = $( document.body ).getWidth(); var menuDims = this.theMenu.getDimensionsEx(); var anchorDims = this.anch_link.getDimensionsEx(); var menuHeight = menuDims.height; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); // Use viewport relative offsets to figure out placement within the view var offsetTop = offset[ 1 ] - scrollOffsets.top; var offsetLeft = offset[ 0 ] - scrollOffsets.left; var xpos = offsetLeft; if ( page.util.isRTL() ) { xpos = xpos + this.anch_link.getWidth() - width; } if ( xpos + width > viewportDimensions.width ) { // First try to position it on the left of the link instead of the right xpos = offsetLeft - width + anchorDims.width; if ( xpos < 0 ) { // If we go off the page though, just try our best xpos = viewportDimensions.width - width; } } if ( xpos < 0 ) { xpos = 0; } var ypos = offsetTop + anchorDims.height; if ( ( ypos + menuHeight ) > viewportDimensions.height ) { // Try to position above the color picker first ypos = offsetTop - menuHeight; if ( ypos < 0 ) { // but if it goes off the top of the page just do a best-effort. ypos = ypos - ( ypos + menuHeight - viewportDimensions.height ); if ( ypos < 0 ) { ypos = 0; } } } // The color swatch is positioned absolutely, so adjust offsets to include the scrollofset ypos = ypos + scrollOffsets.top; xpos = xpos + scrollOffsets.left; this.theMenu.setStyle( { left : xpos + "px", top : ypos + "px" } ); this.title_color_input.focus(); ( function() { if ( !this.shim ) { this.shim = new page.popupShim( this.theMenu ); } this.shim.open(); }.bind( this ).defer() ); Event.stop( event ); }, /** * Removes the transparent choice from the palette if the picker is not supposed to support transparency. */ initializeTransparent : function() { if ( !this.allowTransparent ) { var transparentLi = this.colorListParent.down( 'li#colorlist_transparent' ); if ( transparentLi ) { Element.remove( transparentLi ); } } }, /** * Hides the color picker. */ onClose : function() { this.close(); this.anch_link.focus(); }, close : function() { this.deletePaletteInstance(); this.theMenu.setStyle( { display : "none" } ); if ( this.shim ) { this.shim.close(); } }, /** * Sets the preview color and text to the color selected by the user in the palette */ setColorFromSwatch : function( event ) { var element = Event.element( event ); if ( element.hasClassName( 'transparent' ) ) { this.setDisplay( "transparent", page.bundle.getString( "colorpicker.color.transparent" ) ); } else { var text = element.childNodes[ 0 ].nodeValue; if ( text ) { this.setDisplay( text.substring( 0, 7 ), this.getDisplayColorInfo( text.substring( 0, 7 ), false ) ); } } Event.stop( event ); }, getDisplayColorInfo : function( hexValue, onlyColorName ) { var transparent = false; var localizedName; var safeColorCode; if ( hexValue === "transparent" ) { transparent = true; localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ hexValue ]; } else { safeColorCode = this.getSafeColorCode( hexValue ).toUpperCase(); //The keys in ColorPickerMap are all 6 digit safe color codes, that's we need to make sure that we're using the correct key to lookup the color. localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ safeColorCode ]; } if ( !localizedName ) { localizedName = ''; } var colorName; colorName = localizedName + ' (' + hexValue + ')'; if ( onlyColorName || transparent ) { colorName = localizedName; } return colorName; }, /** * Returns a Six digit Hexadecimal Color Code. */ getSafeColorCode : function( hexValue ) { return hexValue.replace( /#([\d0-9A-Fa-f])([\d0-9A-Fa-f])([\d0-9A-Fa-f])$/,'#$1$1$2$2$3$3'); }, /** * Handles the Preview functionality on the swatch. If an inappropriate color is choosen, a msg is displayed to the * user. Else updates the color preview with the manually entered color. */ previewListener : function( event ) { if ( !this.isValidColor( this.title_color_input.value ) ) { alert( this.alertMsg ); return; } if ( this.title_color_input.value.length != 6 ) { return; } var prevCol; if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { prevCol = "transparent"; this.setDisplay( prevCol, page.bundle.getString( 'colorpicker.color.transparent' ) ); } else { prevCol = '#' + this.title_color_input.value; this.setDisplay( prevCol, this.getDisplayColorInfo( prevCol, false ) ); } Event.stop( event ); }, /** * Updates the color preview panel in the picker pop up */ setDisplay : function( col, text ) { if ( col === "transparent" ) { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : 'url(/images/swatches/transparent_lrg.gif)' } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : '#ffffff' } ); this.title_color_input.value = 'XXXXXX'; } else { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : col } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : col } ); this.title_color_input.value = ( col.startsWith( '#' ) ) ? col.substr( 1 ) : col; } $( this.theColorPickerName + '_title_color_name' ).innerHTML = text; }, /** * Checks for a valid color value. */ isValidColor : function( color_value ) { var isValid = false; isValid = ( /^[0-9A-Fa-f]{6}/ ).test( color_value ); if ( !isValid && this.allowTransparent ) { isValid = color_value.toLowerCase() === "xxxxxx"; } return isValid; }, /** * Manages the functionality for the Apply button the swatch. */ onApply : function( event ) { var color = this.title_color_input.value; if ( !this.isValidColor( color ) ) { return; } if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); color = "transparent"; this.color_name_label.innerHTML = page.bundle.getString( "colorpicker.color.transparent" ); } else { color = '#' + color; this.color_link.setStyle( { background : color } ); this.color_name_label.innerHTML = this.getDisplayColorInfo( color, true ); } widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, color ); this.updateUserPreviewContainerColor( color ); this.onClose(); if ( this.onChangeHandler ) { this.onChangeHandler(); } Event.stop( event ); }, /** * If the user specified preview container element exists, update its color style to the color given. * * @param color - color hex string */ updateUserPreviewContainerColor : function( color ) { if ( this.userPreviewContainer ) { this.userPreviewContainer.style.color = color; } else if ( this.userPreviewBackgroundContainer ) { this.userPreviewBackgroundContainer.style.background = color; } } }; // end widget.ColorPicker.prototype widget.ColorPicker.colorPickers = []; widget.ColorPicker.colorPickerMap = {}; widget.ColorPicker.colorPickerPaletteMap = {}; widget.ColorPicker.registerColorPicker = function( cp ) { widget.ColorPicker.colorPickers.push( cp ); widget.ColorPicker.colorPickerMap[ cp.theColorPickerName ] = cp; // grab the color definition and remove it from the DOM for the time being if ( !widget.ColorPicker.colorPalette ) { var colorPalette = $( 'picker_colorlist' ); // Store the colors and their localized names so we can look them up later. widget.ColorPicker.colorPickerPaletteMap[ "default" ] = {}; var arrColors = Element.getElementsBySelector( colorPalette, "a" ); for ( var i = 0; i < arrColors.length; i++ ) { if ( !arrColors[ i ].hasClassName( "transparent" ) ) { widget.ColorPicker.colorPickerPaletteMap[ "default" ][ arrColors[ i ].innerHTML.substring( 0, 7 ).toUpperCase() ] = arrColors[ i ].innerHTML .substring( 8 ); } } widget.ColorPicker.colorPickerPaletteMap[ "default" ].transparent = page.bundle .getString( "colorpicker.color.transparent" ); widget.ColorPicker.colorPalette = colorPalette; // deferring so that the name lookup for colors can succeed during init ( function() { Element.remove( colorPalette ); }.defer() ); } }; widget.ColorPicker.closeAllColorPickers = function() { widget.ColorPicker.colorPickers.each( function( cp ) { cp.close(); } ); }; widget.MultiSelect = Class.create(); widget.MultiSelect.multiselectBoxes = []; // ---------------- "static" methods widget.MultiSelect.registerMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.push( ms ); }; widget.MultiSelect.unRegisterMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.remove( ms ); }; widget.MultiSelect.prototype = { initialize : function( multiSelectDiv, formName ) { this.multiSelectDiv = $( multiSelectDiv ); this.formName = formName; if ( this.multiSelectDiv ) { this.leftClickListeners = []; this.rightClickListeners = []; var divs = this.multiSelectDiv.getElementsByTagName( 'div' ); var leftDiv = $( divs[ 0 ] ); var buttonDiv = $( divs[ 1 ] ); var rightDiv = $( divs[ 2 ] ); var inputs = this.multiSelectDiv.getElementsByTagName( 'input' ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); var leftSelects = leftDiv.getElementsByTagName( 'select' ); var rightSelects = rightDiv.getElementsByTagName( 'select' ); this.leftSelectBox = $( leftSelects[ 0 ] ); this.rightSelectBox = $( rightSelects[ 0 ] ); var buttons = buttonDiv.getElementsByTagName( 'button' ); var moveRightButton = $( buttons[ 0 ] ); var moveLeftButton = $( buttons[ 1 ] ); var leftInputs = leftDiv.getElementsByTagName( 'input' ); var leftInvertSelectionButton = $( leftInputs[ 0 ] ); var leftSelectAllButton = $( leftInputs[ 1 ] ); var rightInputs = rightDiv.getElementsByTagName( 'input' ); var rightInvertSelectionButton = $( rightInputs[ 0 ] ); var rightSelectAllButton = $( rightInputs[ 1 ] ); widget.MultiSelect.registerMultiSelect( this ); Event.observe( moveLeftButton, "click", this.onMoveLeftClick.bindAsEventListener( this ) ); Event.observe( moveRightButton, "click", this.onMoveRightClick.bindAsEventListener( this ) ); Event.observe( leftInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, true ) ); Event.observe( rightInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, false ) ); Event.observe( leftSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, true ) ); Event.observe( rightSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, false ) ); // This for the MultiSelectAction Bean. // If actionBean list is less than 1, button is displayed and not the dropdown if ( leftSelects.length > 1 ) { this.actionBeanLeftSelect = $( leftSelects[ 1 ] ); this.actionBeanRightSelect = $( rightSelects[ 1 ] ); var actionBeanLeftGoBox = $( leftInputs[ 2 ] ); var actionBeanRightGoBox = $( leftInputs[ 2 ] ); Event.observe( actionBeanLeftGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, true ) ); Event.observe( actionBeanRightGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, false ) ); } } }, actionBeanFunc : function( event, leftSelect ) { var destination = this.actionBeanLeftSelect; var selectedBox = this.leftSelectBox; if ( !leftSelect ) { destination = this.actionBeanRightSelect; selectedBox = this.rightSelectBox; } var myindex = destination.selectedIndex; if ( myindex == -1 || myindex > destination.length - 1 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return false; } var sFunctionName = destination.options[ myindex ].value; var oFunc = window[ sFunctionName ]; oFunc( selectedBox.name, this.formName ); this.setHiddenValues(); }, /* * listener registration for leftmove and rightmove clicks */ addToLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.push( listenerFunc ); } }, addToRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.push( listenerFunc ); } }, removeFromLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.remove( listenerFunc ); } }, removeFromRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.remove( listenerFunc ); } }, removeAllLeftClickListeners : function() { this.leftClickListeners = []; }, removeAllRightClickListeners : function() { this.rightClickListeners = []; }, removeFromLeft : function( id ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var toRemoveElement = leftItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToLeft : function( id, value, sortString ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var returnItem = leftItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { this.rawAddToLeft( id, value, sortString ); this.setHiddenValues(); } } }, rawAddToLeft : function( id, value, sortString ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.leftSelectBox.appendChild( item ); }, removeFromRight : function( id ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var toRemoveElement = rightItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToRight : function( id, value, sortString ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var returnItem = rightItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.rightSelectBox.appendChild( item ); this.setHiddenValues(); } } }, resetRightBox : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); rightItems.invoke( "remove" ); this.setHiddenValues(); } }, resetLeftBox : function() { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); leftItems.invoke( "remove" ); this.setHiddenValues(); } }, getAllLeftAvailableElements : function() { if ( this.leftSelectBox ) { return this.leftSelectBox.immediateDescendants(); } else { return []; } }, getAllRightElements : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); return rightItems; } else { return []; } }, onMoveLeftClick : function( event ) { var rightItems = this.rightSelectBox.immediateDescendants(); var selectedItems = rightItems.findAll( function( item ) { return item.selected; } ); var leftItems = this.leftSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { leftItems.push( item ); } ); leftItems = leftItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); leftItems.each( function( item ) { this.leftSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.leftClickListeners ) { this.leftClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, onMoveRightClick : function( event ) { var leftItems = this.leftSelectBox.immediateDescendants(); var selectedItems = leftItems.findAll( function( item ) { return item.selected; } ); var rightItems = this.rightSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { rightItems.push( item ); } ); rightItems = rightItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); rightItems.each( function( item ) { this.rightSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.rightClickListeners ) { this.rightClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, setHiddenValues : function() { var leftString; var rightString; var temp = ""; // Populate select box values comma separated into leftString,rightString. if ( this.leftSelectBox ) { this.leftSelectBox.immediateDescendants().each( function( option ) { leftString = option.value; temp += leftString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.leftValues.value = temp; temp = ""; } if ( this.rightSelectBox ) { this.rightSelectBox.immediateDescendants().each( function( option ) { rightString = option.value; temp += rightString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.rightValues.value = temp; temp = ""; } }, onSelectAllClick : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } Event.stop( event ); }, onInvertSelection : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } } }; /** * A dynamic picker list */ widget.PickerList = Class.create(); widget.PickerList.prototype = { /** * Creates a new picker list * * @param id id of the picker list table * @param cellGenerators an array of functions to be called to generate the HTML for the cells for a new row in the * table. * @param columnAlignments an array of the alignments of the columns * @param columnStyles optional styles to applied to columns * @param reorderable whether the table is to be reorderable * @param reorderingUrl url that reordering changes will be persisted to (can be null) * @param contextParameters parameters that are passed along with the reordering action. */ initialize : function( id, cellGenerators, columnAlignments, columnStyles, reorderable, reorderingUrl, contextParameters ) { this.table = $( id ); this.reorderable = reorderable; if ( this.table ) { this.tableBody = $( this.table.getElementsByTagName( 'tbody' )[ 0 ] ); if ( reorderable ) { this.dragDrop = new dragdrop.ListReordering( this.tableBody, this.table.id + '_reorderControls', false, 'tr', 'dndHandle', 'span', reorderingUrl, contextParameters, new Date().getTime(), null ); } } this.cellGenerators = cellGenerators; this.columnAlignments = columnAlignments; this.columnStyles = columnStyles; }, /** * This function takes any number of arguments. They will be passed directly to the generator functions. If this * list is reorderable, the first two arguments must be: - id of the item added. - name of the item added. */ addRow : function() { var generatorArgs = arguments; var row = $( document.createElement( "tr" ) ); if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var id = arguments[ 0 ]; var name = arguments[ 1 ]; // Set the row id so that the drag and drop code can identify the row row.id = this.table.id + '_row:' + id; // Add the reordering handle. var cell = document.createElement( "td" ); cell.className = 'smallCell dndHandle'; cell.valign = 'top'; cell.innerHTML = '<span class="reorder"><span><img src="/images/ci/icons/generic_updown.gif" alt="" /></span></span>'; row.appendChild( cell ); // Add the item to the accessible controls. var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); accessibleSelect.options[ accessibleSelect.length ] = new Option( name, id ); dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } this.cellGenerators.each( function( generator, index ) { var alignment = this.columnAlignments[ index ]; var cell = $( document.createElement( "td" ) ); cell.setAttribute( "align", alignment ); var columnStyle = this.columnStyles[ index ]; if ( '' != columnStyle ) { cell.addClassName( columnStyle ); } cell.innerHTML = generator.apply( window, generatorArgs ); row.appendChild( cell ); }.bind( this ) ); if ( generatorArgs[ 0 ] && generatorArgs[ 0 ].incompatibleFile ) { return; } else { this.tableBody.appendChild( row ); } if ( this.reorderable ) { // Toggle drag and drop so that it picks up the new item. this.dragDrop.disableDragAndDrop(); this.dragDrop.enableDragAndDrop(); this.dragDrop.calculateItemOrder(); } return row; }, /** * Removes the row with the specified id or index * * @param idOrIndex - if the argument is a string - it is taken as the id of one of the rows in the table - if the * argument is a number - the row at the specified index will be removed. */ removeRow : function( idOrIndex ) { var rowToRemove = null; if ( Object.isString( idOrIndex ) ) { rowToRemove = $( this.table.id + "_row:" + idOrIndex ); } else { rowToRemove = this.tableBody.childElements()[ idOrIndex ]; } if ( rowToRemove ) { // Remove the row from the accessible repositioning controls if applicable if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var idToCheck = rowToRemove.id.split( ':' )[ 1 ]; var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); var options = accessibleSelect.childElements(); for ( var i = 0; i < options.length; i++ ) { if ( options[ i ].value == idToCheck ) { Element.remove( options[ i ] ); break; } } dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } Element.remove( rowToRemove ); if ( this.reorderable ) { this.dragDrop.calculateItemOrder(); } } } }; widget.PickerList.noopGenerator = function() { return '&nbsp;'; }; /** * File picker */ widget.FilePicker = Class.create(); widget.FilePicker.prototype = { /** * Creates a new file picker * * @param pickerList the javascript object representing the picker list (of currently attached files) * @param baseElementName the base name for the file picker elements * @param required whether a file is required to be chosen * @param overrideLocalBehavior whether the CS options to override local behavior should be shown * @param csPickerUrl url to the CS file picker * @param showAddMetadata whether the "submit and add metadata" content system functionality should be enabled. * @param onAttachFile Optional callback function triggered when a new file is attached */ initialize : function( pickerList, baseElementName, required, overrideLocalBehavior, csPickerUrl, showAddMetadata, showSpecialAction, allowMultipleFiles, onAttachFile ) { this.pickerList = pickerList; this.baseElementName = baseElementName; this.required = required; this.overrideLocalBehavior = overrideLocalBehavior; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.allowMultipleFiles = allowMultipleFiles; this.onAttachFile = onAttachFile; this.pickCSButton = $( this.baseElementName + '_csBrowse' ); this.pickLocalButton = $( this.baseElementName + '_localBrowse' ); this.localFilePicker = $( this.baseElementName + '_chooseLocalFile' ); this.pickURLButton = $( this.baseElementName + '_urlBrowse' ); this.selectedCSFile = $( this.baseElementName + '_selectedCSFile' ); this.selectedCSFileName = $( this.baseElementName + '_selectedCSFileName' ); this.selectedCSFilePath = $( this.baseElementName + '_selectedCSFilePath' ); this.selectedCSFileSize = $( this.baseElementName + '_selectedCSFileSize' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_selectedCSFileMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_selectedCSFileMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_selectedCSFileMetadataFormat' ); } // single file selected area this.selectedFileActionsArea = $( this.baseElementName + '_selectedFileActions' ); this.selectedFileName = $( this.baseElementName + '_selectedFileName' ); this.selectedFileSource = $( this.baseElementName + '_selectedFileSource' ); this.selectedFileLinkTitle = $( this.baseElementName + '_selectedFileLinkTitle' ); this.selectedFileSpecialAction = $( this.baseElementName + '_selectedFileSpecialAction' ); this.attachFileButton = $( this.baseElementName + '_attachFileButton' ); this.cancelFileButton = $( this.baseElementName + '_cancelFileButton' ); this.allowCS = this.pickCSButton ? true : false; this.allowLocal = this.pickLocalButton ? true : false; this.allowURL = this.pickURLButton ? true : false; // Wire up events if ( this.overrideLocalBehavior ) { this.pickTargetButton = $( this.baseElementName + '_CSTargetButton' ); this.targetCSLocation = $( this.baseElementName + '_CSTarget' ); Event.observe( this.pickTargetButton, "click", this.onPickTargetClick.bindAsEventListener( this ) ); } this.pickMDButton = $( this.baseElementName + '_CSTargetMetaButton' ); if ( this.pickMDButton ) { window.CSMetadataPickerCallBack = this.afterPickMD.bind( this ); Event.observe( this.pickMDButton, "click", this.onPickMDClick.bindAsEventListener( this ) ); } if ( $( this.baseElementName + '_permissionPickerButton0' ) ) { Event.observe( $( this.baseElementName + '_permissionPickerButton0' ), "click", widget.FilePicker.openPermPicker .bindAsEventListener( this, this.csPickerUrl, this.baseElementName + "_permissions0_manual", "", this.selectedCSFilePath, widget.FilePicker.permPickerCallback .curry( this.baseElementName, this.baseElementName + '_csPermFileList0', 0 ) ) ); } if ( this.allowCS ) { Event.observe( this.pickCSButton, "click", this.onCSBrowse.bindAsEventListener( this ) ); Event.observe( this.selectedCSFile, "change", this.onCSPick.bindAsEventListener( this ) ); } if ( this.allowLocal ) { this.localFileContainer = this.localFilePicker.up(); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } if ( this.allowURL ) { this.linkId = $( this.baseElementName + "_urlBrowse" ); this.formDivId = $( this.baseElementName + "_addUrlForm" ); this.formContainerId = $( this.baseElementName + "_urlContainerDiv" ); var flyout = new flyoutform.FlyoutForm( { linkId : this.linkId, formDivId : this.formDivId, inlineFormContainerId : this.formContainerId, customCallbackObject : this, customOnSubmitHandler : this.onURLPick } ); this.flyout = flyout; } if ( this.cancelFileButton ) { Event.observe( this.cancelFileButton, "click", this.onCancelClick.bindAsEventListener( this ) ); } Event.observe( this.allowLocal ? this.pickLocalButton.form : this.pickCSButton.form, "submit", this.onSubmit .bindAsEventListener( this ) ); this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv && this.pickerList && this.pickerList.tableBody && ( this.pickerList.tableBody .getElementsBySelector( 'input[type="hidden"]' ).length > 0 || this.pickerList.tableBody .getElementsBySelector( 'input[type="file"]' ).length > 0 ) ) { this.listHtmlDiv.show(); } if ( !this.allowMultipleFiles && this.selectedFileSource.value != '' ) { // A file is already attached, so show the selected files area and // turn off the file choosing button (and metadata button if any). this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } } widget.FilePicker.registerFilePicker( this ); }, /** * For the override local behavior: show the picker to pick the location */ onPickTargetClick : function( event ) { var remote = popop.launchPicker( '/webapps/cmsmain/folderpicker/', 'picker_browse' ); if ( remote ) { remote.opener.inputEntryURLToSet = this.targetCSLocation; remote.opener.returnFullURL = false; remote.methodCall = this.onPickMDClick.bind( this ); } }, /** * For the override local behavior: show the picker to pick the metadata */ onPickMDClick : function( event ) { var location = this.targetCSLocation; var file = this.localFilePicker; if ( file.value == '' ) { return; } var url = '/webapps/cmsmain/execute/metadatapicker/manage?action=pick&file=' + file.value; if ( location && location.value != '' ) { url += 'location=' + location.value; } popup.launchPicker( url, 'picker_browse' ); }, /** * For the override local behavior: callback from the metadata picker */ afterPickMD : function( metadata, selection, synchronised, format ) { $( this.baseElementName + '_CSTargetmetadata' ).value = metadata; $( this.baseElementName + '_CSTargetselection' ).value = selection; $( this.baseElementName + '_CSTargetSynchronised' ).value = synchronised; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = format; }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.inputEntryURLToSet = this.selectedCSFile; this.csBrowseWindow.opener.inputFileSizeToSet = this.selectedCSFileSize; this.csBrowseWindow.opener.linkName = this.selectedCSFileName; if ( this.selectedCSFilePath ) { this.csBrowseWindow.opener.filePath = this.selectedCSFilePath; } this.csBrowseWindow.opener.customHandler = this.onCSPick.bind( this ); if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, /** * Called after file has been chosen from CS file picker with metadata added. */ afterMD : function( metadata, synced, format, fileId ) { var metadataString = metadata.join( "#" ); if ( fileId ) { if ( $( this.baseElementName + '_CSMetadata_' + fileId ) ) { $( this.baseElementName + '_CSMetadata_' + fileId ).value = metadataString; } if ( $( this.baseElementName + '_CSMetadataSync_' + fileId ) ) { $( this.baseElementName + '_CSMetadataSync_' + fileId ).value = synced; } if ( $( this.baseElementName + '_CSMetadataFormat_' + fileId ) ) { $( this.baseElementName + '_CSMetadataFormat_' + fileId ).value = format; } } else { if ( this.selectedCSFileMetadata ) { this.selectedCSFileMetadata.value = metadataString; } if ( this.selectedCSFileMetadataSync ) { this.selectedCSFileMetadataSync.value = synced; } if ( this.selectedCSFileMetadataFormat ) { this.selectedCSFileMetadataFormat.value = format; } } }, /** * Callback called after a file has been chosen from the CS file picker in single file mode - updating selected * files section */ onCSPick : function( fileList ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { // picker was opened in multiple mode but one of the legacy page was hit // see how legacy pages with radio buttons submit its selection - pickmultiple.jspf // create object cell generator is expecting using hidden input if ( typeof ( fileList ) == 'string' ) { var filePath = this.selectedCSFilePath ? this.selectedCSFilePath.value : ""; var csFile = { fileName : this.selectedCSFile.value, fullUrlToFile : this.selectedCSFile.value, linkTitle : this.selectedCSFileName.value, filePath : filePath, size : this.selectedCSFileSize.value }; this.onCSPickAllowMultiple( [ csFile ] ); } else { this.onCSPickAllowMultiple( fileList ); } } else { this.csBrowseWindow = null; this.selectedFileSource.value = 'C'; this.selectedFileName.innerHTML = this.selectedCSFileName.value; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = this.selectedCSFileName.value; } this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } if ( $( this.baseElementName + '_csPermissionsLi' ) ) { var fileName = this.selectedCSFileName.value; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. if ( ( /html|htm/i ).test( ext ) ) { $( this.baseElementName + "_permissionOptionsIndex" ).value = 0; $( this.baseElementName + '_csPermissionsLi' ).show(); } } if ( this.onAttachFile ) { this.onAttachFile( this, false ); } } }, /** * Called after a file is chosen from the local file picker in single file mode - updating selected files section */ onLocalPick : function( event ) { if ( this.localFilePicker.value != '' ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { this.onLocalPickAllowMultiple( event ); } else { var localFileName = this.getFileName( this.localFilePicker.value ); this.selectedFileName.innerHTML = localFileName; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = localFileName; } this.selectedFileSource.value = 'L'; this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.show(); } if ( this.onAttachFile ) { this.onAttachFile( this, true ); } } } }, /** * Callback called after files have been chosen from the CS file picker in multiple files mode - updating table */ onCSPickAllowMultiple : function( fileList ) { this.csBrowseWindow = null; fileList.each( function( selectedFile ) { selectedFile.baseElementName = this.baseElementName; selectedFile.showAddMetadata = this.showAddMetadata; selectedFile.csPickerUrl = this.csPickerUrl; this.pickerList.addRow( selectedFile, false ); // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); if ( this.onAttachFile ) { this.onAttachFile( this, false ); } }.bind( this ) ); }, /** * Called after a file is chosen from the local file picker in multiple files mode - updating table */ onLocalPickAllowMultiple : function( event ) { var row = this.pickerList.addRow( this, true ); if ( row === null ) { return; } // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); var cell = $( row.getElementsByTagName( 'td' )[ 0 ] ); var title = this.localFilePicker.title; Element.remove( this.localFilePicker ); this.localFilePicker.removeClassName( "hiddenInput" ); this.localFilePicker.setStyle( { position : "absolute", top : '-10000px' } ); this.localFilePicker.disabled = false; cell.appendChild( this.localFilePicker ); // Set up the names of the local file fields this.pickerList.tableBody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = this.baseElementName + '_LocalFile' + index; }.bind( this ) ); // Create and insert a new local file picker for more local file attaching this.localFilePicker = new Element( 'input', { title : title, type : 'file' } ); this.localFilePicker.addClassName( 'hiddenInput' ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); if ( this.onAttachFile ) { this.onAttachFile( this, true ); } }, /** * If a) Special Actions are enabled, and b) the embed options are configure to show up: - Wires up an on change * even on the special action select box that shows the embed options when the embed action is chosen. */ registerEmbedOptionsListener : function( index ) { if ( this.showSpecialAction ) { var specialAction = $( this.baseElementName + '_specialAction' + index ); var embedOptions = $( this.baseElementName + '_embedOptions' + index ); if ( embedOptions ) { specialAction.observe( 'change', function( event ) { if ( "EMBED" == specialAction.options[ specialAction.selectedIndex ].value ) { embedOptions.show(); } else { embedOptions.hide(); } } ); } } }, /** * Called after a url is chosen from the local file picker in multiple files mode - updating table */ onURLPick : function( widget ) { var selectedURL = document.getElementById( widget.baseElementName + '_newUrlName' ); if (selectedURL.value.blank()) // TODO: More exhaustive URL validation? { alert(page.bundle.getString('filePicker.validate.invalid.url')); return false; } if ( widget.listHtmlDiv ) { widget.listHtmlDiv.show(); } if ( widget.allowMultipleFiles ) { var urlFile = { fileName : selectedURL.value, fullUrlToFile : selectedURL.value, linkTitle : selectedURL.value }; widget.onCSPickAllowMultiple( [ urlFile ] ); } else { widget.selectedFileSource.value = 'C'; widget.selectedFileName.innerHTML = selectedURL.value; if ( widget.selectedFileLinkTitle ) { widget.selectedFileLinkTitle.value = selectedURL.value; } widget.selectedFileActionsArea.show(); widget.togglePickerButtons( false ); if ( widget.pickMDButton ) { widget.pickMDButton.hide(); } if ( widget.onAttachFile ) { widget.onAttachFile( widget, false ); } } // Purge entry widget.flyout.close(); selectedURL.value = ''; return true; }, /** * Called when the "Do not attach file" button is clicked */ onCancelClick : function( event ) { this.selectedFileActionsArea.hide(); this.clearSelectedFileInfo(); this.togglePickerButtons( true ); if ( event ) { Event.stop( event ); } }, /** * Toggles the enabled state of the Local/CS picker buttons to the specified state */ togglePickerButtons : function( enabled ) { if ( this.allowLocal ) { this.pickLocalButton.disabled = !enabled; if ( enabled ) { this.pickLocalButton.className = 'browse visibleInput'; this.localFilePicker.position = 'relative'; this.localFilePicker.style.top = ''; } else { this.pickLocalButton.className = 'disabled'; this.localFilePicker.position = 'absolute'; this.localFilePicker.style.top = '-10000px'; } if ( this.allowMultiple ) { this.localFilePicker.disabled = !enabled; } } if ( this.allowCS ) { this.pickCSButton.disabled = !enabled; if ( enabled ) { this.pickCSButton.className = 'browse visibleInput'; } else { this.pickCSButton.className = 'disabled'; } } if ( this.allowURL ) { this.pickURLButton.disabled = !enabled; if ( enabled ) { this.pickURLButton.className = 'browse visibleInput'; } else { this.pickURLButton.className = 'disabled'; } } }, /** * Clears the info associated to the current attached file (if the user cancelled, or chose to attach another file ) */ clearSelectedFileInfo : function() { var isLocal = this.selectedFileSource.value == 'L'; this.selectedFileName.innerHTML = ""; this.selectedFileSource.value = ""; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = ""; } if ( this.pickMDButton ) { $( this.baseElementName + '_CSTargetmetadata' ).value = ""; $( this.baseElementName + '_CSTargetselection' ).value = ""; $( this.baseElementName + '_CSTargetSynchronised' ).value = ""; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = ""; } if ( $( this.baseElementName + "_permissionOptionsIndex" ) ) { $( this.baseElementName + '_permissionOptionsIndex' ).value = -1; $( this.baseElementName + '_permissions0_all' ).checked = true; } if ( this.selectedFileSpecialAction ) { this.selectedFileSpecialAction.selectedIndex = 0; } if ( isLocal ) { var title = ""; if ( !this.allowMultipleFiles ) { title = this.localFilePicker.title; Element.remove( this.localFilePicker ); } this.localFilePicker = $( document.createElement( "input" ) ); if ( !this.allowMultipleFiles ) { this.localFilePicker.name = this.baseElementName + '_LocalFile0'; } this.localFilePicker.title = title; this.localFilePicker.type = "file"; this.localFilePicker.addClassName( "hiddenInput" ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } else { this.selectedCSFile.value = ""; this.selectedCSFileName.value = ""; if ( this.selectedFilePath ) { this.selectedFilePath = ""; } this.selectedCSFileSize.value = ""; if ( this.showAddMetadata ) { this.selectedCSFileMetadata.value = ""; this.selectedCSFileMetadataSync.value = ""; this.selectedCSFileMetadataFormat.value = ""; } } }, /** * Gets the file name based on the full file path. */ getFileName : function( fullPath ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return result; }, setRequired : function( required ) { this.required = required; }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.allowMultipleFiles ) { if ( this.pickerList.tableBody.immediateDescendants().length === 0 ) { alert( page.bundle.getString( "filePicker.validate.atLeastOne" ) ); if ( event ) { Event.stop( event ); } return false; } } else { if ( ( this.selectedCSFile && this.selectedCSFile.value == '' ) && ( this.localFilePicker && this.localFilePicker.value == '' ) ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); if ( event ) { Event.stop( event ); } return false; } } } return true; } }; // Creates hidden input items for selected files/folders if giving access to additional files/folder // when attaching an HTML file widget.FilePicker.permPickerCallback = function( baseElementName, permFileList, index, itemList ) { if ( itemList && itemList.length > 0 ) { var i; var permFileListElem = $( permFileList ); var hiddenInputs = ""; if ( !permFileListElem ) { return; } hiddenInputs += '<input type="hidden" name="' + baseElementName + '_permittedFiles' + index + '" value="' + itemList[ 0 ].fileName; for ( i = 1; i < itemList.length; i++ ) { hiddenInputs += ':' + itemList[ i ].fileName; } hiddenInputs += '">'; permFileListElem.innerHTML = hiddenInputs; } }; /** * Toggles the "mark for removal" status of an item in the currently attached files table. Should be called from an * onclick attribute on the toggle link in the table. */ widget.FilePicker.toggleForRemove = function( event, removeLink ) { var e = event || window.event; removeLink = $( removeLink ); var tableRow = removeLink.up( "tr" ); var hiddenField = removeLink.up( "td" ).down( 'input[type="hidden"]' ); tableRow.toggleClassName( "removeCell" ); if ( hiddenField.disabled ) { hiddenField.disabled = false; removeLink.innerHTML = page.bundle.getString( "filePicker.unmarkForRemove" ); } else { hiddenField.disabled = true; removeLink.innerHTML = page.bundle.getString( "filePicker.markForRemove" ); } Event.stop( e ); }; widget.FilePicker.togglePickerButton = function( pickerButton, enabled ) { if ( enabled ) { $( pickerButton ).setAttribute( "href", "#" ); $( pickerButton ).removeClassName( "disabled" ); } else { $( pickerButton ).removeAttribute( "href" ); $( pickerButton ).addClassName( "disabled" ); } }; /** * Removes the specified pending attachment. Should be called from an onclick handler on a link in the currently * attached files table */ widget.FilePicker.removePendingAttachment = function( event, removeLink, baseElementName ) { var e = event || window.event; if ( confirm( page.bundle.getString( "filePicker.doNotAttach.confirm" ) ) ) { removeLink = $( removeLink ); var row = removeLink.up( "tr" ); var tbody = row.up( "tbody" ); // Remove the pending row Element.remove( row ); // Re-index the local file inputs. tbody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = baseElementName + '_LocalFile' + index; } ); // Hide the whole attached files table if there are no more attached files. var rowTotal = tbody.getElementsByTagName( 'tr' ).length; if ( rowTotal === 0 ) { var listHtmlDiv = $( baseElementName + "_listHtmlDiv" ); if ( listHtmlDiv ) { listHtmlDiv.hide(); } } } Event.stop( e ); }; widget.FilePicker.getPermPickerUrl = function( csPickerUrl, path, pathElement ) { // reuse current file picker's url as fall back plan var baseUrl = csPickerUrl.split( "?" )[ 0 ]; var queryParams = csPickerUrl.toQueryParams(); if ( !queryParams.multipicker ) { queryParams.multipicker = 'true'; } if ( !path && pathElement ) { path = pathElement.value; } // if we have path, construct proper full url from scratch using the provided path & extracted principalId if ( path ) { var principalId = baseUrl.match( /\/webapps\/cmsmain\/.*picker\/([^\/]*)\/?/ ); baseUrl = "/webapps/cmsmain/picker"; if ( principalId ) { baseUrl += "/" + principalId[ 1 ]; } if ( baseUrl.charAt( baseUrl.length - 1 ) === '/' ) { baseUrl = baseUrl.slice( 0, baseUrl.length - 1 ); } baseUrl += path; } return baseUrl + "?" + $H( queryParams ).toQueryString(); }; widget.FilePicker.openPermPicker = function( event, csPickerUrl, pid, path, pathElement, callback ) { if ( !( pid && $( pid ) && $( pid ).type == 'radio' && $( pid ).checked ) ) { return false; } var permPickerUrl = widget.FilePicker.getPermPickerUrl( csPickerUrl, path, pathElement ); var remote = popup.launchPicker( permPickerUrl ); if ( remote ) { if ( callback ) { remote.opener.customHandler = callback; } else { remote.opener.customHandler = null; } } var e = event || window.event; if ( e ) { var eventElement = Event.element( e ); Event.stop( e ); } return false; }; /** * A registry of defined file pickers and methods to access this registry */ widget.FilePicker.filePickers = {}; widget.FilePicker.registerFilePicker = function( filePicker ) { widget.FilePicker.filePickers[ filePicker.baseElementName ] = filePicker; }; widget.FilePicker.unRegisterFilePicker = function( filePicker ) { delete widget.FilePicker.filePickers[ filePicker.baseElementName ]; }; widget.FilePicker.getFilePicker = function( baseElementName ) { return widget.FilePicker.filePickers[ baseElementName ]; }; /** * Cell generators for the current attached files table */ widget.FilePicker.cellGenerators = { fileName : function( filePicker, isLocal ) { var result = '<input type="hidden" name="' + filePicker.baseElementName + '_attachmentType" value="' + ( isLocal ? 'L' : 'C' ) + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_fileId" value="new">'; if ( isLocal ) { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.getFileName( filePicker.localFilePicker.value ) + '</span>'; } else { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.linkTitle + '</span>'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFile" value="' + filePicker.fileName + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFileUrl" value="' + filePicker.fullUrlToFile + '">'; if ( filePicker.showAddMetadata ) { result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadata" id="' + filePicker.baseElementName + '_CSMetadata_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataSync" id="' + filePicker.baseElementName + '_CSMetadataSync_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataFormat" id="' + filePicker.baseElementName + '_CSMetadataFormat_' + filePicker.xythosId + '" value="">'; } } return result; }, fileType : function( filePicker, isLocal ) { var result = null; if ( isLocal ) { result = page.bundle.getString( "filePicker.fileType.attachment" ); } else { result = page.bundle.getString( "filePicker.fileType.content" ); } return result; }, linkTitle : function( filePicker, isLocal ) { var linkTitle = ""; if ( isLocal ) { linkTitle = filePicker.getFileName( filePicker.localFilePicker.value ); } else { if ( filePicker.linkTitle ) { linkTitle = filePicker.linkTitle; } } return '<input type="text" name="' + filePicker.baseElementName + '_linkTitle" value="' + linkTitle + '" title="' + page.bundle .getString( "filePicker.nameOfLink" ) + " " + linkTitle + '">'; }, size : function( filePicker, isLocal ) { if ( !isLocal && filePicker.size ) { return '<input type="hidden" name="' + filePicker.baseElementName + '_size" value="' + filePicker.size + '"> ' + filePicker.size; } else { return ""; } }, fileAction : function( filePicker, isLocal ) { return widget.FilePicker.cellGenerators.fileActionEmbedOptions( filePicker, isLocal, true ); }, fileActionEmbedOptions_index : 0, // used to uniquely identify embed options form elements on the page. fileActionEmbedOptions : function( filePicker, isLocal, suppressOptions ) { var index = widget.FilePicker.cellGenerators.fileActionEmbedOptions_index++; var baseName = filePicker.baseElementName; var fileName = isLocal ? filePicker.getFileName( filePicker.localFilePicker.value ) : filePicker.linkTitle; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. var isType = { image : ( /gif|jpeg|png|tif|bmp|jpg/i ).test( ext ), videoQt : ( /qt|mov|moov|movie/i ).test( ext ), videoOther : ( /avi|mpg|mpeg|wmv|asf|wma|mpe/i ).test( ext ), real : ( /ra|ram|rm/i ).test( ext ), flash : ( /swa|swf/i ).test( ext ), audio : ( /aif|aiff|au|mp3|wav/i ).test( ext ), html : ( /html|htm/i ).test( ext ) }; var isMedia = isType.image || isType.videoQt || isType.videoOther || isType.flash || isType.audio; var result = ''; if ( isMedia ) { result += '<select id="' + baseName + '_specialAction' + index + '" name="' + baseName + '_specialAction"'; result += ' title="' + page.bundle.getString( "filePicker.specialAction.for" ) + " " + fileName + '">'; result += '<option value="LINK">' + page.bundle.getString( "filePicker.specialAction.link" ) + '</option>'; result += '<option value="EMBED">' + page.bundle.getString( "filePicker.specialAction.embed" ) + '</option>'; result += '</select>'; // Render the embed options (if not suppressed) if ( !suppressOptions ) { result += '<ul style="display: none;" class="nestedList smallControls liveArea liveArea-slim" id="' + baseName + '_embedOptions' + index + '">'; // Alignment var fid = baseName + 'align' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.alignment' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_l" name="' + fid + '" value="Left" checked> <label for="' + fid + '_l">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.left' ) + '</label>' + '<input type="radio" id="' + fid + '_c" name="' + fid + '" value="Center"> <label for="' + fid + '_c">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.center' ) + '</label>' + '<input type="radio" id="' + fid + '_r" name="' + fid + '" value="Right"> <label for="' + fid + '_r">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.right' ) + '</label></fieldset></div></li>'; // Placement fid = baseName + 'placement' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.placement' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.placement' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_a" name="' + fid + '" value="Above"> <label for="' + fid + '_a">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.above' ) + '</label>' + '<input type="radio" id="' + fid + '_b" name="' + fid + '" value="Below" checked> <label for="' + fid + '_b">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.below' ) + '</label></fieldset></div></li>'; // Dimensions if ( !isType.audio ) { fid = baseName + 'width' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.width' ) + '</label></div><div class="field"><input class="width" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; fid = baseName + 'height' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.height' ) + '</label></div><div class="field"><input class="height" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; } // Autoplay if ( !isType.image ) { fid = baseName + 'autostart' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.autostart' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.autostart' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Loop if ( !isType.image && !isType.real ) { fid = baseName + 'loop' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.loop' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.loop' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + baseName + 'loop' + index + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Control (radio) if ( isType.videoQt || isType.real ) { fid = baseName + 'controls' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.controls' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="Full" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="None"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Controls (drop down) if ( isType.videoOther || isType.audio ) { fid = baseName + 'controls' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="controls">' + '<option value="None">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_none' ) + '</option>' + '<option value="Mini">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_mini' ) + '</option>' + '<option value="Full" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.controls_full' ) + '</option>' + '</select></div></li>'; } // Quality if ( isType.flash ) { fid = baseName + 'quality' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.set_quality' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="quality">' + '<option value="Low">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_low' ) + '</option>' + '<option value="Medium">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_med' ) + '</option>' + '<option value="High">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_high' ) + '</option>' + '<option value="Best" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.quality_best' ) + '</option>' + '</select></div></li>'; } if ( isType.image ) { // URL fid = baseName + 'url' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.url' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25">' + '</div></li>'; // New Window fid = baseName + 'newwin' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.new_window' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.new_window' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label>' + '</fieldset></div></li>'; // Border fid = baseName + 'border' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.border' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="border">' + '<option value="0" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.none' ) + '</option>' + '<option value="1>1</option><option value="2">2</option><option value="3">3</option>' + '<option value="4">4</option></select></div></li>'; } // Alt text fid = baseName + 'alttext' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25" value=""></div><span class="fieldHelp clearfloats">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text.instructions' ) + '</span></li>'; result += '</ul>'; } } else { result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialAction" value="LINK">'; result += page.bundle.getString( "filePicker.specialAction.link" ); } // The index is used to find the correct request parameters on the backend. result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialActionIndex" value="' + ( isMedia && !suppressOptions ? index : -1 ) + '">'; if ( filePicker.shouldManagePermission && !isLocal ) { // permission management options var permissionCsPickerUrl = filePicker.csPickerUrl; if ( permissionCsPickerUrl.indexOf( 'multipicker=true' ) != -1 ) { var xythosId = filePicker.fileName.sub( '/xid-', '' ).strip(); if ( xythosId ) { permissionCsPickerUrl = permissionCsPickerUrl + '&preselectedItemId=' + xythosId; } } result += '<ul id="' + filePicker.baseElementName + '_imgSpecOptions" class="nestedList smallControls liveArea liveArea-slim">'; result += '<li>'; var pid = baseName + "_permissions" + index; var pickerButtonId = baseName + "_permissionPickerButton" + index; var permFileListName = baseName + '_csPermFileList' + index; result += '<input type="radio" name="' + pid + '" value="A" id="' + pid + '_all" checked="checked" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.all" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="O" id="' + pid + '_this" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.this" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="S" id="' + pid + '_manual" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', true)" />' + page.bundle .getString( "fm.permission.grant.manual" ); result += '<a id="' + pickerButtonId + '" class="button-4 disabled" style="margin:0 3px" onclick="widget.FilePicker.openPermPicker( event, \'' + permissionCsPickerUrl + '\', \'' + pid + '_manual\',\'' + filePicker.filePath + '\', null, widget.FilePicker.permPickerCallback.curry( \'' + baseName + '\', \'' + permFileListName + '\', ' + index + ' ) );">' + page.bundle .getString( "filePicker.browse" ) + '</a>'; result += '</li>'; result += '</ul>'; result += '<div id="' + permFileListName + '" style="display: none;"></div>'; } result += '<input type="hidden" name="' + baseName + '_permissionOptionsIndex" value="' + ( isType.html && !isLocal ? index : -1 ) + '">'; return result; }, remove : function( filePicker, isLocal ) { var result = '<a href="#" onclick="widget.FilePicker.removePendingAttachment(event, this, '; result += "'" + filePicker.baseElementName + "'"; result += ');">' + page.bundle.getString( "filePicker.doNotAttach" ) + '</a>'; return result; }, // attach CS file alignment to course item align : function(filePicker, isLocal) { var alignOptionsName = "csAlignedResources"; var html = '<label for="csAlignedResources" style="white-space:nowrap">' + '<input type="checkbox" id="' + alignOptionsName + '"' + ' name="' + alignOptionsName + '"' + ' value="' + filePicker.filePath + '"' + '/>' + ' ' + page.bundle.getString('wysiwyg.insert_picture.csalign') + '</label>'; return html; } }; widget.InlineSingleCSFilePicker = Class.create(); widget.InlineSingleCSFilePicker.prototype = { initialize : function( baseElementName, csPickerUrl, showAddMetadata, showSpecialAction ) { this.baseElementName = baseElementName; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.browseButton = $( baseElementName + '_csBrowse' ); this.fileEntry = $( baseElementName + '_CSFile' ); this.fileId = $( baseElementName + '_fileId' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_CSMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_CSMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_CSFileMetadataFormat' ); } Event.observe( this.browseButton, 'click', this.onCSBrowse.bindAsEventListener( this ) ); }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = "picker" + new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.inputEntryURLToSet = this.fileEntry; this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.linkName = this.fileId; if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, afterMD : function( metadata, synced, format ) { var metadataString = metadata.join( "#" ); this.selectedCSFileMetadata.value = metadataString; this.selectedCSFileMetadataSync.value = synced; this.selectedCSFileMetadataFormat.value = format; } }; /** * Inline single local file picker - $baseElementName_attachmentType - 'AL' or 'L' or '' - $baseElementName_localBrowse - * $baseElementName_fileId */ widget.InlineSingleLocalFilePicker = Class.create(); widget.InlineSingleLocalFilePicker.prototype = { initialize : function( baseElementName, currentAttachedFile, required, showSpecialAction ) { this.baseElementName = baseElementName; this.fileInput = $( baseElementName + '_chooseLocalFile' ); this.fileInputWrapper = $( this.fileInput.parentNode ); this.attachmentType = $( baseElementName + '_attachmentType' ); this.fullFileName = $( baseElementName + '_fileId' ); this.attachmentNameSpan = $( baseElementName + '_attachmentName' ); this.removeLink = $( baseElementName + '_removeLink' ); this.inputArea = $( baseElementName + '_inputArea' ); this.attachedFileArea = $( baseElementName + '_attachedFileArea' ); this.required = required; this.showSpecialAction = showSpecialAction; // Wire up events Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); Event.observe( this.removeLink, "click", this.onRemoveClick.bindAsEventListener( this ) ); Event.observe( this.fileInput.form, "submit", this.onSubmit.bindAsEventListener( this ) ); // Set up initial values if ( currentAttachedFile ) { this.setDefaultCurrentAttachedFile( currentAttachedFile ); } widget.InlineSingleLocalFilePicker.pickerMap[ baseElementName ] = this; }, setCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, file ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, setDefaultCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentType._defaultValue = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } this.fullFileName.value = file; this.fullFileName._defaultValue = file; this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; this.fullFileName.value = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, onAfterChooseFile : function( event ) { this.attachmentNameSpan.innerHTML = this.getFileName( this.fileInput.value, true ); this.attachmentType.value = 'L'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fileInput.value ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); Event.stop( event ); }, onRemoveClick : function( event ) { this.clearFileInput(); if ( this.attachmentType.value == 'AL' ) { this.removeHiddenField = document.createElement( 'input' ); this.removeHiddenField.type = 'hidden'; this.removeHiddenField.name = this.baseElementName + '_remove'; this.removeHiddenField.id = this.baseElementName + '_remove'; this.removeHiddenField.value = this.fullFileName.value; this.attachedFileArea.insertBefore( this.removeHiddenField, this.attachedFileArea.firstChild ); widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fullFileName.value ); } else { this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); } this.attachmentNameSpan.innerHTML = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); Event.stop( event ); }, clearFileInput : function() { var title = this.fileInput.title; Element.remove( this.fileInput ); this.fileInput = $( document.createElement( "input" ) ); this.fileInput.title = title; this.fileInput.type = "file"; this.fileInput.addClassName( "hiddenInput" ); this.fileInput.name = this.baseElementName + '_LocalFile0'; this.fileInput._defaultValue = ''; this.fileInputWrapper.insertBefore( this.fileInput, this.fileInputWrapper.firstChild ); Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); }, /** * Gets the file name based on the full file path. * * @param fullPath Fully-qualified path of file * @param isDecodedName (optional) Indicates that the filename has already been URL decoded */ getFileName : function( fullPath, isDecodedName ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return isDecodedName ? result : decodeURI( result ); }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.fullFileName.value == '' ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); Event.stop( event ); return; } } } }; widget.InlineSingleLocalFilePicker.pickerMap = {}; /** * Read Only File picker */ widget.ReadOnlyFilePicker = Class.create(); widget.ReadOnlyFilePicker.prototype = { /** * Creates a new file picker * * @param baseElementName the base name for the file picker elements */ initialize : function( baseElementName ) { this.baseElementName = baseElementName; this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } widget.ReadOnlyFilePicker.pickerMap[ baseElementName ] = this; } }; widget.ReadOnlyFilePicker.pickerMap = {}; widget.UserRoleSelect = Class.create(); widget.UserRoleSelect.prototype = { initialize : function( userSelectRoleDivStr, moveMsgJS, noRoleMsgJs ) { this.sourceValueName = "_left_values"; this.secondaryValueName = "_right_values"; this.primaryValueName = "_primary_value"; this.userSelectRoleDiv = $( userSelectRoleDivStr ); if ( this.userSelectRoleDiv ) { var selects = this.userSelectRoleDiv.getElementsByTagName( 'select' ); var inputs = this.userSelectRoleDiv.getElementsByTagName( 'input' ); var links = this.userSelectRoleDiv.getElementsByTagName( 'a' ); this.source = $( selects[ 0 ] ); this.primary = $( inputs[ 3 ] ); this.secondary = $( selects[ 1 ] ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); this.primaryValue = $( inputs[ 2 ] ); this.toPrimaryMove = $( links[ 0 ] ); this.toSecondaryMove = $( links[ 1 ] ); this.toSourceMove = $( links[ 2 ] ); Event.observe( this.toSourceMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, false, moveMsgJS, noRoleMsgJs ) ); Event.observe( this.toPrimaryMove, "click", this.switchPrimary.bindAsEventListener( this, moveMsgJS ) ); Event.observe( this.toSecondaryMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, true, moveMsgJS, noRoleMsgJs ) ); } }, switchPrimary : function( event, msg ) { var indx; indx = 0; var sourceArray = this.source; if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } if ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.getFromPrimary(); this.primaryValue.value = sourceArray.options[ indx ].value; this.primary.value = sourceArray.options[ indx ].text; sourceArray.options[ indx ].selected = false; sourceArray.options[ indx ] = null; sourceArray.options[ sourceArray.length ] = tmpOpt; } this.writeToSelectBoxValues( this.source, this.leftValues ); return false; }, getFromPrimary : function() { var primaryRoleField = this.primaryValue; var primaryField = this.primary; return new Option( primaryField.value, primaryRoleField.value ); }, writeToSelectBoxValues : function( selectBox, hiddenName ) { var i = 0; var values = ""; while ( i < selectBox.length ) { if ( i > 0 ) { values += ","; } values += selectBox.options[ i ].value; i++; } hiddenName.value = values; return true; }, switchUserRoleColumns : function( event, isSourceDest, msg, noRoleMsg ) { var indx; indx = 0; var sourceArray = this.source; var targetArray = this.secondary; if ( !isSourceDest ) // If we are moving from Dest to Source { var temp = sourceArray; sourceArray = targetArray; targetArray = temp; } if ( sourceArray.length <= 0 ) { alert( noRoleMsg ); return false; } if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } var rightIndex = 0; var targetLength = targetArray.length; while ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.cloneMultipleRows( sourceArray.options[ indx ] ); if ( targetLength > 0 ) { var i = targetLength; while ( i > 0 ) { var tmpOpt1 = this.cloneMultipleRows( targetArray.options[ i + rightIndex - 1 ] ); targetArray.options[ i + rightIndex ] = tmpOpt1; i--; } } sourceArray.options[ indx ].selected = false; targetArray.options[ rightIndex ] = tmpOpt; // targetArray.options[rigthIndex].selected=true; rightIndex = rightIndex + 1; sourceArray.options[ indx ] = null; } // end of while this.writeToSelectBoxValues( this.source, this.leftValues ); this.writeToSelectBoxValues( this.secondary, this.rightValues ); return false; }, cloneMultipleRows : function( opt ) { return new Option( opt.text, opt.value, opt.defaultSelected, opt.selected ); } }; widget.StepGroup = {}; widget.StepGroup.toggleStepGroup = function( e, activeTabStr ) { var event = e || window.event; var target = Event.findElement( event, 'li' ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); $( 'activeTabSpanId_' + tab.id ).innerHTML = activeTabStr; } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); $( 'activeTabSpanId_' + tab.id ).innerHTML = ""; } } ); Event.stop( event ); }; /** * Show a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.showStepGroup = function( number ) { var target = $( 'stepGroupTab_' + number ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; /** * Get the content block element to a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.getStepGroupContentBlock = function( number ) { var targetTab = $( 'stepGroupTab_' + number ); return $( targetTab.getAttribute( "bb:groupId" ) ); }; widget.StepGroup.showAllStepGroupsForSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } ); }; widget.StepGroup.revertAllStepGroupsAfterSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { if ( page.util.hasClassName( tab, 'active' ) ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } else { $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; widget.ShowUnsavedChanges = Class.create(); widget.ShowUnsavedChanges.prototype = { initialize : function( dataCollectionContainer, skipTextArea ) { widget.ShowUnsavedChanges.enabled = true; widget.ShowUnsavedChanges.registerOnValueChangeCallback( widget.ShowUnsavedChanges.showIconsForUnsavedChanges ); var container = $( dataCollectionContainer ); var inputs = $A( container.getElementsByTagName( 'input' ) ); var selects = $A( container.getElementsByTagName( 'select' ) ); var textareas = $A( container.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { input = $( input ); var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { input._defaultValue = input.checked; } else if ( type == 'hidden' || type == 'text' ) { input._defaultValue = input.value; } else { input._defaultValue = ''; } if ( type != 'hidden' && type != 'button' && type != 'submit' ) { input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); } }.bind( this ) ); selects.each( function( input ) // TODO: multiselect? { input = $( input ); input._defaultValue = input.selectedIndex; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); if ( !skipTextArea || !skipTextArea ) { textareas.each( function( input ) { input = $( input ); input._defaultValue = input.value; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); } } }; widget.ShowUnsavedChanges.onValueChangeCallback = function() { }; // do nothing widget.ShowUnsavedChanges.registerOnValueChangeCallback = function( callbackFunction ) { widget.ShowUnsavedChanges.onValueChangeCallback = callbackFunction; }; widget.ShowUnsavedChanges.dataElementsByStepGroup = {}; widget.ShowUnsavedChanges.onValueChange = function( event, elem ) { if ( widget.ShowUnsavedChanges.enabled ) { var dataElement = null; if ( event ) { dataElement = Event.findElement( event, 'li' ); } else { dataElement = elem.parentNode; while ( dataElement && dataElement.tagName.toLowerCase() != 'li' ) { dataElement = dataElement.parentNode; if ( dataElement.tagName.toLowerCase() == 'body' ) { dataElement = null; } } if ( dataElement ) { dataElement = $( dataElement ); } } if ( !dataElement ) { return; } var isDefault = true; var inputs = $A( dataElement.getElementsByTagName( 'input' ) ); var selects = $A( dataElement.getElementsByTagName( 'select' ) ); var textareas = $A( dataElement.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { isDefault &= ( input.checked == input._defaultValue ); } else if ( type == 'hidden' || type == 'text' ) { isDefault &= ( input.value == input._defaultValue ); } } ); selects.each( function( input ) // TODO: multiselect? { isDefault &= ( input.selectedIndex == input._defaultValue ); } ); textareas.each( function( input ) { isDefault &= ( input.value == input._defaultValue ); } ); // trigger call back function widget.ShowUnsavedChanges.onValueChangeCallback( isDefault, dataElement ); } }; widget.ShowUnsavedChanges.showIconsForUnsavedChanges = function( isDefault, dataElement ) { var imgs = dataElement.getElementsByTagName( 'img' ); var unsavedImg = null; for ( var i = 0; i < imgs.length; i++ ) { if ( imgs[ i ].className.indexOf( 'unsavedChangeImg' ) >= 0 ) { unsavedImg = $( imgs[ i ] ); break; } } if ( unsavedImg ) { if ( isDefault ) { dataElement.removeClassName( 'dirty' ); unsavedImg.hide(); } else { dataElement.addClassName( 'dirty' ); unsavedImg.show(); } widget.ShowUnsavedChanges.updateStepGroupIndicator(); } }; widget.ShowUnsavedChanges.updateStepGroupIndicator = function() { if ( widget.ShowUnsavedChanges.enabled ) { // Loop through each step group tab, and determine if an icon that indicates // unsaved changes should be displayed in the tab itself $$( '#dataCollectionContainer ul li.stepGroupTab' ).each( function( tab ) { var stepGroup = $( tab.getAttribute( "bb:groupId" ) ); var img = $( tab.getElementsByTagName( 'img' )[ 0 ] ); var link = $( tab.getElementsByTagName( 'a' )[ 0 ] ); var dataElements = widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ]; if ( !dataElements ) { dataElements = stepGroup.getElementsByTagName( 'li' ); widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ] = dataElements; } var dirtyCount = 0; for ( var i = 0; i < dataElements.length; i++ ) { //If the data element is hidden, we do not want to include it in the count of dirty //data elements. Doing so could result in the dirty image on the step group displaying //with no child data elements that display as dirty. if ( dataElements[ i ].hasClassName( "dirty" ) && dataElements[ i ].getStyle( "display" ) !== "none" ) { dirtyCount++; } } if ( dirtyCount > 0 && !tab.isDirty ) { img.show(); link.setStyle( { 'paddingLeft' : '20px' } ); tab.isDirty = true; } else if ( dirtyCount === 0 && tab.isDirty ) { img.hide(); link.setStyle( { 'paddingLeft' : '' } ); tab.isDirty = false; } } ); } }; // Call this when the value of a hidden data element changes that you want to // show an indicator for. Otherwise changing the value of the hidden element directly will // not cause an indicator to show. widget.ShowUnsavedChanges.changeHiddenValue = function( hiddenElem, value ) { hiddenElem.value = value; if ( widget.ShowUnsavedChanges.enabled ) { widget.ShowUnsavedChanges.onValueChange( null, hiddenElem ); } }; widget.ShowUnsavedChanges.enabled = false; /** * Supports a counter widget attached to a textbox -- it keeps track of the number of characters in the text box, and * updates a counter whenever that number changes. The counter turns red, and begins counting backwards, when the max * number of charters is exceeded. */ widget.TextBoxCounter = Class.create(); widget.TextBoxCounter.prototype = { /** * Contructor * * @param textBoxId The id of the textbox we're counting from * @param counterId The id of the element that countains the count * @param maxCharCount The max number of characters supported by this textbox * @param charactersRemainingLabel The label for the character count element * @param charactersOverLimitLabel The alternate label for the character element, for when the max # of characters * has been exceeded. */ initialize : function( textBoxId, counterId, maxCharCount, charactersRemainingLabel, charactersOverLimitLabel ) { this.textBoxElement = $( textBoxId ); this.counterElement = $( counterId ); this.maxCharCount = maxCharCount; this.countLabelElement = this.counterElement.up().childNodes[ 0 ]; this.charactersRemainingLabel = charactersRemainingLabel; this.charactersOverLimitLabel = charactersOverLimitLabel; // watch all keystrokes in the text area, and update the counter accordingly this.textBoxElement.observe( 'keyup', this.updateCount.bindAsEventListener( this ) ); // update the initial count this.updateCount(); this.registerCounter( textBoxId ); }, /** * Registers the current counter with the document, so that it can be accessed from anywhere on the page. * * @param id The id with which this counter can be accessed */ registerCounter : function( id ) { if ( !widget.TextBoxCounter.counters ) { widget.TextBoxCounter.counters = []; } widget.TextBoxCounter.counters[ id ] = this; }, /** * Update the counter. * * @param event The event that prompted this update, if any. */ updateCount : function( event ) { var chars = this.textBoxElement.value.length; // max character count exceeded if ( chars > this.maxCharCount ) { this.counterElement.update( chars - this.maxCharCount ).addClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersOverLimitLabel; } // max character count not exceeded else if ( chars <= this.maxCharCount ) { this.counterElement.update( this.maxCharCount - chars ).removeClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersRemainingLabel; } } }; widget.ColorPalettePicker = Class.create(); widget.ColorPalettePicker.prototype = { initialize : function( onChange, themeChangeElementId ) { widget.ColorPalettePicker.picker = this; this.onChange = onChange; var palettes = []; $A( $( 'paletteLibraryPanel' ).getElementsByTagName( 'li' ) ).each( function( li ) { if ( page.util.hasClassName( li, 'palette' ) ) { palettes.push( $( li ) ); } } ); this.palettes = palettes; this.libraryOpen = false; this.paletteLibraryPanel = $( 'paletteLibraryPanel' ); this.paletteLibraryButton = $( 'paletteLibraryButton' ); var updateHandler = this.updateCurrentSelection.bindAsEventListener( this ); // this.paletteLibraryPanel.toggleLibrary(); if ( this.palettes ) { this.palettes.each( function( palette ) { Event.observe( palette, "click", updateHandler ); } ); } if ( this.paletteLibraryButton ) { Event.observe( 'paletteLibraryButtonLink', "click", this.toggleLibrary.bindAsEventListener( this ) ); } if ( themeChangeElementId !== "" ) { Event.observe( themeChangeElementId, "change", this.changePaletteThemeTypeStyles.bindAsEventListener( this ) ); } }, changePaletteThemeTypeStyles : function( event ) { var dropdown = event.currentTarget; var themeExtRef = $F( dropdown ); var extRefToThemeTypeJson = $F( "themeExtRefToThemeTypeJson" ); var extRefToThemeTypeMap = this.convertJsonToObject( decodeURIComponent( extRefToThemeTypeJson ) ); var themeType = extRefToThemeTypeMap[themeExtRef]; var mapKey = null; this.palettes.each( function( palette ) { if( palette.id === "currentsystemthemecolorpalette" ) { mapKey = "theme_type_" + themeExtRef; } else { if( themeType !== null ) { mapKey = "theme_type_" + themeType; } else { mapKey = "theme_type_"; } } var styleJson = $F( palette.down('input[type=hidden]') ); var styleMap = this.convertJsonToObject( decodeURIComponent( styleJson ) ); var schemePreviewStyle = styleMap[mapKey]['schemePreview']; var schemePreviewHeadStyle = styleMap[mapKey]['schemePreviewHead']; var schemePreviewBodyStyle = styleMap[mapKey]['schemePreviewBody']; var modulePreviewStyle = styleMap[mapKey]['moduleBorder']; var modulePreviewHeadStyle = styleMap[mapKey]['moduleTitle']; var modulePreviewBodyStyle = styleMap[mapKey]['moduleBody']; palette.down('.schemePreview').writeAttribute("style", schemePreviewStyle); palette.down('.schemePreviewHead').writeAttribute("style", schemePreviewHeadStyle); palette.down('.schemePreviewBody').writeAttribute("style", schemePreviewBodyStyle); palette.down('.modulePreview').writeAttribute("style", modulePreviewStyle); palette.down('.modulePreviewHead').writeAttribute("style", modulePreviewHeadStyle); palette.down('.modulePreviewBody').writeAttribute("style", modulePreviewBodyStyle); }, this ); }, convertJsonToObject : function( json ) { if ( typeof ( JSON ) === 'object' && typeof ( JSON.parse ) === 'function' ) { return JSON.parse( json ); } else { return eval( '(' + json + ')' ); } }, toggleLibrary : function( event ) { var img = this.paletteLibraryButton.getElementsByTagName( 'img' )[ 0 ]; if ( this.libraryOpen ) { // Collapse the library. img.src = "/images/db/p.gif"; img.alt = page.bundle.getString( "dynamictree.expand" ); this.paletteLibraryPanel.hide(); this.libraryOpen = false; } else { // Expand the library. img.src = "/images/db/m.gif"; img.alt = page.bundle.getString( "dynamictree.collapse" ); this.paletteLibraryPanel.show(); this.libraryOpen = true; } // stop the event if exists; there will not be an event if called on page onLoad if ( event ) { Event.stop( event ); } }, selectColorPaletteByExtRef : function( extRef ) { var eventElement = $( extRef ); this.selectColorPaletteByElement( eventElement ); }, selectColorPaletteByElement : function( eventElement ) { this.palettes.each( function( p ) { if ( p.hasClassName( "selected" ) ) { p.removeClassName( 'selected' ); } } ); var selPal = eventElement; while ( selPal && selPal.tagName != 'LI' ) { selPal = selPal.parentNode; if ( selPal.tagName == 'BODY' ) { selPal = null; } } selPal.addClassName( 'selected' ); widget.ShowUnsavedChanges.changeHiddenValue( $( 'currentPaletteExtRef' ), selPal.id == 'currentsystemthemecolorpalette' ? '' : selPal.id ); eval( this.onChange ); $( 'currentPaletteLabel' ).update( $( selPal.id + '_label' ).innerHTML ); this.copyStyles( selPal.down( '.schemePreview' ), $( 'currentPalettePreview' ) ); this.copyStyles( selPal.down( '.schemePreviewHead' ), $( 'currentPalettePreviewHead' ) ); this.copyStyles( selPal.down( '.schemePreviewBody' ), $( 'currentPalettePreviewBody' ) ); this.copyStyles( selPal.down( '.modulePreview' ), $( 'currentModulePalettePreview' ) ); this.copyStyles( selPal.down( '.modulePreviewHead' ), $( 'currentModulePalettePreviewHead' ) ); this.copyStyles( selPal.down( '.modulePreviewBody' ), $( 'currentModulePalettePreviewBody' ) ); $( 'selectedPalette' ).show(); }, updateCurrentSelection : function( event ) { var eventElement = Event.element( event ); this.selectColorPaletteByElement( eventElement ); Event.stop( event ); }, copyStyles : function( s, d ) { d.style.cssText = s.style.cssText; } }; widget.ColorPalettePicker.picker = null; /** * node picker */ widget.MINodePicker = Class.create(); /** Constants used for the picker */ widget.MINodePicker.Constants = { EXISTING_NODE_SUFFIX : "", EXISTING_NODE_DELETE_SUFFIX : "", NEW_NODE_SUFFIX : "" }; widget.MINodePicker.prototype = { initConstants : function() { widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeSuffix" ); widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeDeleteSuffix" ); widget.MINodePicker.Constants.NEW_NODE_SUFFIX = page.bundle.getString( "nodePicker.const.newNodeSuffix" ); }, /** * Creates a new node picker * * @param baseElementName the base name for the node picker elements * @param pickerList the javascript object representing the picker list (of currently attached files) * @param allowMultipleSelect boolean indicating whether the picker should allow single or multiple select * @param entitlements comma delimited list of entitlement UIDs in which to check on node search * @param popupInstructions key value pair of bundle name and bundle key for instructions to be displayed in the pop * up * @param addPrimaryEntitlement Entitlement required to display primary radio button. * @param removeNodeEntitlement Entitlement required to display remove node link. */ initialize : function( baseElementName, pickerList, allowMultipleSelect, entitlements, popupInstructions, addPrimaryEntitlement, removeNodeEntitlement ) { this.initConstants(); this.baseElementName = baseElementName; this.allowMultipleSelect = allowMultipleSelect; this.entitlements = entitlements; this.nodePickerPopupButton = $( this.baseElementName + '_nodeBrowseButton' ); this.nodePickerUrl = "/webapps/blackboard/execute/institutionalHierarchy/nodePicker?cmd=openPicker&allowMultipleSelect=" + this.allowMultipleSelect + "&instructionKey=" + popupInstructions + "&entitlements=" + this.entitlements + "&addPrimaryEntitlement=" + addPrimaryEntitlement + "&removeNodeEntitlement=" + removeNodeEntitlement; Event.observe( this.nodePickerPopupButton, "click", this.onNodeBrowse.bindAsEventListener( this ) ); this.pickerList = pickerList; this.selectedNodesListContainer = $( this.baseElementName + '_listHtml' ); // make sure that all removedNodes are hidden var removedNodes = this.selectedNodesListContainer .getElementsBySelector( 'input[name=' + this.baseElementName + widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX + ']' ); removedNodes.each( function( node ) { node.up( 'tr' ).hide(); } ); var showList; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { showList = this.selectedNodesListContainer && this.pickerList && this.pickerList.tableBody && !this.pickerList.tableBody .empty(); } // For single node picker, the attached node is contained within a span element else { showList = this.selectedNodesListContainer && this.selectedNodesListContainer.select( "input.selectedNodeData" ) && this.pickerList; } if ( this.pickerList && this.pickerList.tableBody ) { // If no visible row then hide the table label and headers. if ( !this.pickerList.tableBody.select( "tr" ).any( function( row ) { return row.visible(); } ) ) { showList = false; } } this.showHideSelectedNodesList( showList ); widget.MINodePicker.registerNodePicker( this ); }, /** * Pop up the node search window from which to pick nodes */ onNodeBrowse : function( event ) { this.nodePickerWindow = null; var windowId = new Date().getTime(); if ( $( 'primaryNodeIdStr' ) ) { this.nodePickerUrl += '&primaryNodeIdStr=' + $F( 'primaryNodeIdStr' ); } if ( $( 'objectType' ) ) { this.nodePickerUrl += '&objectType=' + $F( 'objectType' ); } this.nodePickerWindow = popup.launchPicker( this.nodePickerUrl, windowId ); if ( this.nodePickerWindow ) { this.nodePickerWindow.opener.customHandler = this.onNodePick.bind( this ); } Event.stop( event ); }, /** * Callback called after node(s) have been selected from the node picker pop up. This method updates the UI list of * currently select nodes. * * @param selectedNodesObjArr The array of currently selected nodes from the picker */ onNodePick : function( selectedNodesObjArr ) { this.showHideSelectedNodesList( true ); var existingNodes; if ( this.allowMultipleSelect ) { // Array of existing selected nodes in the node picker list existingNodes = this.selectedNodesListContainer.down( "tbody" ).select( "input.selectedNodeData" ); } else { // Existing selected node in the node picker list for single node picker existingNodes = this.selectedNodesListContainer.select( "input.selectedNodeData" ); } // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. if ( selectedNodesObjArr && selectedNodesObjArr.length !== 0 ) { // Switch the radio button selection to Create hierarchy under the specified entity (for single node pickers) if ( $( "selectedRoot" ) ) { $( "selectedRoot" ).checked = true; } } /* * For each selected node, add the node to the list if it is a newly selected node, otherwise unhide the node if * it is an existing selection that has been marked for delete. Specifically: - If node is an existing selected * node and marked for delete and hidden, then unmark and show - If node is an existing selected node and not * marked for delete and showing, then do nothing - If node is a newly selected node and is not already there, add * the row - If node is a newly selected node and is already there, then do nothing */ selectedNodesObjArr.each( function( node ) { // See if the picked node is already in the list of nodes var existingNode; existingNodes.each( function( inputEle ) { if ( node.nodeIdStr === inputEle.value ) { existingNode = inputEle; if ( existingNode.disabled && existingNode.checked ) { // If its a disabled primary node then restore the value of it in hidden param. $( this.baseElementName + '_disabledPrimaryNode' ).value = node.nodeIdStr; } throw $break; } } ); // If not, then add this newly picked node to list if ( !existingNode ) { var primaryRadioChecked; var existingPrimaryNodeRadios = this.selectedNodesListContainer .select( 'input[name=' + this.baseElementName + '_PrimaryNode]' ); if ( existingPrimaryNodeRadios.all( function( radio ) { return !radio.checked; } ) ) { primaryRadioChecked = true; } // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { // This calls the cell generator methods for each column in the "currently selected nodes" list this.pickerList.addRow( this.baseElementName, node, this.nodePickerWindow, primaryRadioChecked ); } // For single node picker, the attached node is contained within a span element else { this.selectedNodesListContainer.innerHTML = ""; this.pickerList.cellGenerators.each( function( generator, index ) { var args = []; args.push( this.baseElementName, node, this.nodePickerWindow ); this.selectedNodesListContainer.innerHTML += generator.apply( window, args ); }.bind( this ) ); } } else { /* * If picked node is already in the list AND is an existing selected node that is marked for delete and * hidden, then unmark node and show in list. */ if ( existingNode.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ) ) { existingNode.name = existingNode.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ); if ( this.allowMultipleSelect ) { existingNode.up( "tr" ).show(); } } } }.bind( this ) ); }, /** * Shows or hides the selected nodes list * * @param show boolean to indicate show or hide */ showHideSelectedNodesList : function( show ) { if ( this.selectedNodesListContainer ) { return show ? this.selectedNodesListContainer.show() : this.selectedNodesListContainer.hide(); } } }; /** * Removes the specified node selection from the list. Should be called from an onclick handler on a link in the * currently selected nodes table. */ widget.MINodePicker.removeSelectedNode = function( event, removeLink, baseElementName ) { var e = event || window.event; // Have user confirm removal of selected node if ( confirm( page.bundle.getString( "nodePicker.nodeRemoveConfirmMsg" ) ) ) { var visibleRows = []; var picker = widget.MINodePicker.getNodePicker( baseElementName ); var hiddenNodeDataEle; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( picker.allowMultipleSelect ) { // Get references to DOM elements in the list removeLink = $( removeLink ); var rowToHideRemove = removeLink.up( "tr" ); var tbodyEle = rowToHideRemove.up( "tbody" ); hiddenNodeDataEle = rowToHideRemove.down( "input.selectedNodeData" ); var primaryNodeRadioSelector = 'input[name=' + baseElementName + '_PrimaryNode]'; var primaryNodeRadioInCurrentRow = rowToHideRemove.down( primaryNodeRadioSelector ); if ( primaryNodeRadioInCurrentRow ) { // Check if removed node is selected as a primary node if ( primaryNodeRadioInCurrentRow.checked ) { if ( primaryNodeRadioInCurrentRow.disabled ) { // A disabled primary node is removed from UI then nullify the value of hidden param storing its value. $( baseElementName + '_disabledPrimaryNode' ).value = ''; } else { // Get the next node which is not checked as primary and is enabled. var nextNode = picker.selectedNodesListContainer.select( primaryNodeRadioSelector ).find( function( radio ) { return ( !radio.checked && !radio.disabled && radio.up( 'tr' ).visible() ); } ); if ( nextNode ) { nextNode.checked = true; } else { // In case there's no next node with primary node radio button, then uncheck current primary manually primaryNodeRadioInCurrentRow.checked = false; } } } } // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); // hide rowToHideRemove.hide(); } // If is a newly selected node else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { // remove the row from the DOM Element.remove( rowToHideRemove ); } tbodyEle.select( "tr" ).each( function( row ) { if ( row.visible() ) { visibleRows.push( row ); } } ); } // For single node picker, the attached node is contained within a span element else { hiddenNodeDataEle = picker.selectedNodesListContainer.down( "input.selectedNodeData" ); // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); } // If is a newly selected node, clear the span content else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { picker.selectedNodesListContainer.innerHTML = ""; } } // If there are no more selected nodes, hide some UI elements if ( visibleRows.length === 0 ) { // Hide the whole selected nodes table picker.showHideSelectedNodesList( false ); // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. // Switch the radio button selection to Create hierarchy under the top level (for single node pickers) if ( $( "topLevelRoot" ) ) { $( "topLevelRoot" ).checked = true; } } } Event.stop( e ); }; /** * A registry of defined node pickers and methods to access this registry */ widget.MINodePicker.nodePickers = {}; widget.MINodePicker.registerNodePicker = function( nodePicker ) { widget.MINodePicker.nodePickers[ nodePicker.baseElementName ] = nodePicker; }; widget.MINodePicker.unRegisterNodePicker = function( nodePicker ) { delete widget.MINodePicker.nodePickers[ nodePicker.baseElementName ]; }; widget.MINodePicker.getNodePicker = function( baseElementName ) { return widget.MINodePicker.nodePickers[ baseElementName ]; }; /** * Cell generators for the currently selected nodes table. Mostly copies what is in multiInstNodePickerListElement.vm. */ widget.MINodePicker.cellGenerators = { /** * Dynamic rendering of a cell in the node "Name" column */ nodeName : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { var result = '<input type="hidden" name="' + pickerNameStr + widget.MINodePicker.Constants.NEW_NODE_SUFFIX + '" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData">'; result += '<img src="/images/ci/ng/entity_small.png" alt="">'; result += selectedNodeObj.nodeName; return result; }, /** * Dynamic rendering of a cell in the node "Primary Node" column */ nodePrimary : function( pickerNameStr, selectedNodeObj, nodePickerWindow, primaryRadioChecked ) { var result = '<input type="radio" id="' + selectedNodeObj.nodeIdStr + '_Primary' + '" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData"'; if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' ) { result += ' disabled'; } if ( primaryRadioChecked ) { result += ' checked'; } result += ' >'; // Since values of disabled radio element doesn't go through the request, adding hidden param here to store its // value. if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' && primaryRadioChecked ) { result += '<input type="hidden" id="' + pickerNameStr + '_disabledPrimaryNode" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" />'; } return result; }, /** * Dynamic rendering of a cell in the remove node column */ nodeRemove : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_canRemoveObject' ).value == 'true' ) { var result = '<img src="/images/ci/icons/x_ia.gif" alt="">'; result += '<a href="#" onclick="widget.MINodePicker.removeSelectedNode(event, this, '; result += "'" + pickerNameStr + "');"; result += '">' + page.bundle.getString( "nodePicker.nodeRemoveLabel" ); result += '</a>'; return result; } else { return ''; } } };

Take Test MC Exercises Sentences Shifts.mht

Current Location

Take Test: MC Exercises: Sentences: Shifts

Content

Assistive Technology Tips [opens in new window]

Instructions

Description
Instructions
Multiple Attempts This Test allows multiple attempts.
Force Completion This Test can be saved and resumed later.

Collapse Question Completion Status:

1Question Incomplete 2Question Incomplete 3Question Incomplete 4Question Incomplete 5Question Incomplete 6Question Incomplete 7Question Incomplete 8Question Incomplete 9Question Incomplete 10Question Incomplete

Question 1

  1.   Select the answer that has no unnecessary shifts in tense or point of view. Answer
    Following the Holocaust, Jews and others call for a Jewish state in the Middle East. United States foreign policy supported the call, and the State of Israel came into being in May 1948. Charges that Jews forced Palestinians from the land led to a war between Israel and Arab states.
    Following the Holocaust, Jews and others call for a Jewish state in the Middle East. United States foreign policy supports the call, and the State of Israel came into being in May 1948. Charges that Jews forced Palestinians from the land led to a war between Israel and Arab states.
    Following the Holocaust, Jews and others called for a Jewish state in the Middle East. United States foreign policy supported the call, and the State of Israel came into being in May 1948. Charges that Jews forced Palestinians from the land led to a war between Israel and Arab states.

10 points  

Question 2

  1.   Select the answer that has no unnecessary shifts in tense or point of view. Answer
    The North Vietnamese and the Vietcong staged the Tet offensive in 1968. American and South Vietnamese troops won the battle but lost in the arena of public opinion.
    The North Vietnamese and the Vietcong were staging the Tet offensive in 1968. American and South Vietnamese troops won the battle but lost in the arena of public opinion.
    The North Vietnamese and the Vietcong staged the Tet offensive in 1968. American and South Vietnamese troops win the battle but lose in the arena of public opinion.

10 points  

Question 3

  1.   Select the answer that has no unnecessary shifts in tense or point of view. Answer
    What led us to personal computers in the late 1970s? Inventions and developments such as the transistor, integrated circuitry, the memory chip, and the floppy disk (now almost forgotten) contribute to the digital revolution one experienced back then.
    What led us to personal computers in the late 1970s? Inventions and developments such as the transistor, integrated circuitry, the memory chip, and the floppy disk (now almost forgotten) contributed to the digital revolution one experienced back then.
    What led to personal computers in the late 1970s? Inventions and developments such as the transistor, integrated circuitry, the memory chip, and the floppy disk (now almost forgotten) contributed to the digital revolution back then.

10 points  

Question 4

  1.   Select the answer that has no unnecessary shifts in tense or point of view. Answer
    Globalization has lowered costs for some products but demoralizes parts of the worldwide work force. We who lose jobs to lower-paid labor cannot purchase products even at lower prices.
    Globalization has lowered costs for some products but has demoralized parts of the worldwide work force. Workers who have lost jobs to lower-paid labor cannot purchase products even at lower prices.
    Globalization has lowered costs for some products but demoralizes parts of the worldwide work force, including some of us here in the United States. Workers who lose jobs to lower-paid labor cannot purchase products even at lower prices.

10 points  

Question 5

  1.   Select the answer that has no unnecessary shifts in tense or point of view. Answer
    Western observers were horrified to see that Mao Zedong’s so-called Great Leap Forward in China led to the starvation and death of more than twenty million people during the famine of 1958-1961. Later, the observers were shocked at the effects of Mao’s Cultural Revolution of 1966-1968.
    Western observers were horrified to see that Mao Zedong’s so-called Great Leap Forward in China led to the starvation and death of more than twenty million people during the famine of 1958-1961. Later, one was shocked at the effects of Mao’s Cultural Revolution of 1966-1968.
    Western observers were horrified to see that Mao Zedong’s so-called Great Leap Forward in China led to the starvation and death of more than twenty million people during the famine of 1958-1961. Later, the observers become shocked at the effects of Mao’s Cultural Revolution of 1966-1968.

10 points  

Question 6

  1.   Select the answer that has no unnecessary shifts in tense or point of view. Answer
    To understand the Korean War, which started in 1950, you have to know that the Soviet Union backed the northern occupation zone.
    For one to understand the Korean War, which started in 1950, you have to know that the Soviet Union backed the northern occupation zone.
    To understand the Korean War, which started in 1950, you have to know that the Soviet Union is backing the northern occupation zone.

10 points  

Question 7

  1.   Select the answer that has no unnecessary shifts in tense or point of view. Answer
    The antiwar movement, spawned by the Vietnam War, and the civil rights movement made the 1960s a decade of rebellion by young Americans. We called for social change.
    The antiwar movement, spawned by the Vietnam War, and the civil rights movement made the 1960s a decade of rebellion by young Americans who called for social change.
    The antiwar movement, spawned by the Vietnam War, and the civil rights movement made the 1960s a decade of rebellion by young Americans who have called for social change.

10 points  

Question 8

  1.   Select the answer that has no unnecessary shifts in tense or point of view. Answer
    The lecturer explained to the audience how greenhouse gasses come about, and you soon wondered what you could do to forestall disaster.
    The lecturer explained to us how greenhouse gasses come about, and we soon wondered what we could do to forestall disaster.
    The lecturer is explaining to us how greenhouse gasses came about, and we soon will wonder what we could do to forestall disaster.

10 points  

Question 9

  1.   Select the answer that has no unnecessary shifts in tense or point of view. Answer
    Americans waited anxiously in 1962 when Russia pointed missiles in Cuba at the United States. One wondered how the Russians would respond to the American demand for removal of the missiles.
    Americans waited anxiously in 1962 when Russia pointed missiles in Cuba at the United States. They wondered how the Russians would respond to the American demand for removal of the missiles.
    Americans had waited anxiously in 1962 when Russia pointed missiles in Cuba at the United States. They wondered how the Russians would respond to the American demand for removal of the missiles.

10 points  

Question 10

  1.   Select the answer that has no unnecessary shifts in tense or point of view. Answer
    In the 1980s, countries in eastern Europe overthrew their Soviet governments. The most symbolic move of the period was the tearing down of the Berlin Wall. It means, once and for all, the end of the cold war, which started in the late 1940s.
    In the 1980s, countries in eastern Europe overthrew their Soviet governments. The most symbolic move of the period was the tearing down of the Berlin Wall. It meant, once and for all, the end of the cold war, which had started in the late 1940s.
    In the 1980s, countries in eastern Europe overthrow their Soviet governments. The most symbolic move of the period was the tearing down of the Berlin Wall. It meant, once and for all, the end of the cold war, which started in the late 1940s.

10 points  

 Save and Submit

Click Save and Submit to save and submit. Click Save All Answers to save all answers. Click Close Window to close window.

Links to Test Questions and Answers
Read question 1 Read answers for question 1 Read question 2 Read answers for question 2 Read question 3 Read answers for question 3 Read question 4 Read answers for question 4 Read question 5 Read answers for question 5 Read question 6 Read answers for question 6 Read question 7 Read answers for question 7 Read question 8 Read answers for question 8 Read question 9 Read answers for question 9 Read question 10 Read answers for question 10

@font-face { font-family: Utilicons; src:url(fonts/utilicons/utilicons-web-webfont.eot); } HTML { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } APPLET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OBJECT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IFRAME { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H1 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H2 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H5 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H6 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } P { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ABBR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ACRONYM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ADDRESS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BIG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CITE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CODE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DFN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } EM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } INS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } KBD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } Q { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } S { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SAMP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SMALL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRIKE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRONG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUB { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } VAR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FIELDSET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FORM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LABEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LEGEND { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CAPTION { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TBODY { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TFOOT { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } THEAD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TR { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TH { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } FONT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BACKGROUND: #fff } OL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } UL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } TABLE { BORDER-COLLAPSE: collapse } TH { FONT-WEIGHT: normal } CAPTION { TEXT-ALIGN: left } TH { TEXT-ALIGN: left } TD { TEXT-ALIGN: left } BLOCKQUOTE:before { CONTENT: "" } BLOCKQUOTE:after { CONTENT: "" } Q:before { CONTENT: "" } Q:after { CONTENT: "" } BLOCKQUOTE { QUOTES: "" "" } Q { QUOTES: "" "" } INPUT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } BUTTON { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } SELECT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } .field SELECT { MAX-WIDTH: 100% } .noLabelField SELECT { MAX-WIDTH: 100% } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px !important } .vtbegenerated IMG { FILTER: alpha(opacity=auto) !important; opacity: auto } .vtbegenerated UL { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated OL { LIST-STYLE-TYPE: decimal; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated LI { LIST-STYLE-POSITION: outside; DISPLAY: list-item } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL[type=circle] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type=disc] LI { LIST-STYLE-TYPE: disc } .vtbegenerated UL[type=square] LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 24px } .inlineVtbegenerated { DISPLAY: inline } .hideme { DISPLAY: none !important } .hidden { DISPLAY: none } .clearfloats { CLEAR: both } .hideoff { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; TOP: -1000px; LEFT: -10000px } .altHideoff1 { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; LEFT: -10000px } .boldme { FONT-WEIGHT: bold } .u_inlineStack { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > LI { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > DIV { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStack SELECT { MAX-WIDTH: 300px } .u_resetFont { FONT-SIZE: 100% } .u_reverseAlign { TEXT-ALIGN: right } .u_centerAlign { TEXT-ALIGN: center } .u_normalAlign { TEXT-ALIGN: left } .u_floatThis-right { FLOAT: right } .u_floatThis-left { FLOAT: left } .u_floatWrapper-right > DIV { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-right > LI { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-left > DIV { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LI { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LABEL { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_floatWrapper-right:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_controlsWrapper:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_clearFloatsWrapper > DIV { FLOAT: none !important } .u_clearFloatsWrapper > LI { FLOAT: none !important } .u_controlsWrapper { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .u_indent { MARGIN-LEFT: 24px !important } .u_scrollPanel-vertical { OVERFLOW-Y: auto } .u_panel-short { HEIGHT: 70px; MAX-HEIGHT: 100px } .u_panel-medium { HEIGHT: 70px; MAX-HEIGHT: 150px } .u_panel-long { HEIGHT: 70px; MAX-HEIGHT: 200px } HTML { HEIGHT: 100% } BODY { MIN-WIDTH: 1000px; HEIGHT: 100% } BODY.topFrame { OVERFLOW-Y: hidden; HEIGHT: 89px } BODY.filePicker { MIN-WIDTH: 400px } BODY.popup { MIN-WIDTH: 100% } .content-system-page { MIN-WIDTH: 780px } BODY.popup DIV.locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.csMenuFrame { MIN-WIDTH: 210px; WIDTH: 100% } BODY.popupMenu { MIN-WIDTH: 210px; WIDTH: 100% } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } H1 { FONT-WEIGHT: bold } H2 { FONT-WEIGHT: bold } H3 { FONT-WEIGHT: bold } H4 { FONT-WEIGHT: bold } H5 { FONT-WEIGHT: bold } H6 { FONT-WEIGHT: bold } STRONG { FONT-WEIGHT: bold } B { FONT-WEIGHT: bold } EM { FONT-STYLE: italic } TABLE.bouncer { WIDTH: 100% } TABLE.bouncer TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .brandingImgWrap { OVERFLOW: hidden } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { POSITION: relative; OVERFLOW-Y: hidden } .topTabs-compact { POSITION: relative } .topTabs .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs-compact .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs .tabWrapper-right .appTabs { FLOAT: right } .topTabs-compact .tabWrapper-right .appTabs { FLOAT: right } .breadcrumbs { POSITION: relative } .locationPane { POSITION: relative; MIN-WIDTH: 100%; ZOOM: 1; DISPLAY: inline-block; OVERFLOW: visible } .navigationPane { POSITION: absolute; WIDTH: 200px; ZOOM: 1; CLEAR: both; OVERFLOW: visible; TOP: 0px; LEFT: 0px } .menuWrap { POSITION: relative; ZOOM: 1 } .contentPane { MIN-WIDTH: auto; MARGIN: 0px 14px 0px 212px; ZOOM: 1; DISPLAY: block; OVERFLOW: visible } #puller { Z-INDEX: 3; POSITION: absolute } #puller A { WIDTH: 15px; DISPLAY: block; BACKGROUND: #ccc; HEIGHT: 30px } .contcollapsed { MARGIN-LEFT: 15px } .content { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .container { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .containerPortal { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .popup .container { MIN-HEIGHT: 400px } .container { OVERFLOW: visible } .containerOptions { OVERFLOW: visible } .column-1 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-2 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-3 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-4 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } column-5 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-1 { WIDTH: 100% } .column-2 { WIDTH: 50% } .column-3 { WIDTH: 33.3% } .column-4 { WIDTH: 25% } .column-5 { WIDTH: 20% } #lightbox .column-3 { MARGIN: 0px; MIN-HEIGHT: 200px !important } #lightbox .column-2 { MARGIN: 0px; MIN-HEIGHT: 200px !important } INPUT[type='submit'].submit { FONT-WEIGHT: bold } .mainButton A { FONT-WEIGHT: bold } .actionBarMicro .mainButton A { FONT-WEIGHT: bold } .rumble .mainButton > A { FONT-WEIGHT: bold } .rumble_top .mainButton > A { FONT-WEIGHT: bold } .button-1 { FONT-WEIGHT: bold } .button-1-img { FONT-WEIGHT: bold } .modeSwitchWrap { TOP: 6px; RIGHT: 0px; LEFT: auto } .modeSwitchWrap DIV { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .modeSwitch { POSITION: relative; DISPLAY: block; OVERFLOW: hidden } .read-on { MARGIN-RIGHT: 0px } A.read-off IMG { POSITION: absolute; BOTTOM: 0px; LEFT: 0px } A.read-on IMG { POSITION: absolute; BOTTOM: 0px; RIGHT: 0px } .switcherLabel { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .helpLink { POSITION: relative; TOP: 1px } .helpLink A.browseIcon { DISPLAY: inline-block } .vtbeSwitch { POSITION: relative; FLOAT: right } .vtbeSwitch SPAN { DISPLAY: inline-block } .fileInputWrapper { POSITION: relative; FLOAT: left; OVERFLOW: hidden } .fileInputWrapper INPUT.hiddenInput { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: right; FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 210%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px; opacity: 0 } .fileInputWrapper INPUT[type='file'] { FILTER: alpha(opacity=0) !important } .fileInputWrapper INPUT.visibleInput { Z-INDEX: 1; POSITION: relative; TOP: 0px; RIGHT: 0px } .frameResizeToggle { POSITION: absolute; BOTTOM: 0px; DISPLAY: block; OVERFLOW: hidden; LEFT: 0px; _top: 68px } A.colorChip { DISPLAY: inline-block } A.colorChip SPAN { DISPLAY: inline-block } .clearfix:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfixParent > *:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfix { DISPLAY: block } .clearfixParent > * { DISPLAY: block } INPUT[type='button'] { } INPUT[type='submit'] { } BUTTON { } FORM#content { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } .reorder { POSITION: absolute; CURSOR: move } .contextMenuContainer { ZOOM: 1 } .gbtable .contextMenuContainer { DISPLAY: inline } .gbtable_header .contextMenuContainer { DISPLAY: inline } .gbtable_header TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } .gbtable THEAD TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } A.cmimg { ZOOM: 1 } HTML { FONT: 300 0.78em "Lucida Grande", Arial, sans-serif } H1 { FONT-SIZE: 148% } H2 { FONT-SIZE: 123.1% } H3 { FONT-SIZE: 110% } H1 { MARGIN: 1em 0px } H2 { MARGIN: 1em 0px } H3 { MARGIN: 1em 0px } A { COLOR: #128fa8; TEXT-DECORATION: none } A:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } TABLE { FONT-SIZE: 100% } THEAD TH { FONT-WEIGHT: bold } #contentFrame { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } #schemePreview { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY.topFrame { BACKGROUND: #f7f7f7 } BODY.login-page { POSITION: relative; MIN-HEIGHT: 800px } BODY.popup { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } BODY.csMenuFrame { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } BODY.popupMenu { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } .csMenuFrame { FONT-SIZE: 95% } BODY.my-places-popup { MIN-WIDTH: 300px; WIDTH: auto; BACKGROUND: #fff } BODY.external-breadcrumbs { BACKGROUND-IMAGE: none } BODY.picker { MIN-WIDTH: 400px; BACKGROUND: #fff } .breadcrumbs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 9px; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .locationPane { MARGIN-TOP: 12px } BODY.picker .locationPane { MARGIN: 0px; DISPLAY: block } .csPicker .locationPane { DISPLAY: block } .navigationPane { MARGIN: 0px; WIDTH: 210px; TOP: 0px; LEFT: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .menuWrap { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .contentPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px 0px 222px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portalPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .popup .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .picker .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .course-tools-page #listContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 0px } .picker .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } .popup .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } #puller { Z-INDEX: 3; POSITION: absolute; BOTTOM: 1px; TOP: -1px; RIGHT: -8px; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A { BORDER-BOTTOM: #777 1px solid; POSITION: relative; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 8px; BACKGROUND: url(images/reorder_bg.png) #bbb repeat-y; HEIGHT: 100%; OVERFLOW: visible; BORDER-TOP: #777 1px solid; BORDER-RIGHT: #777 1px solid; opacity: 0; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0; box-shadow: 1px 0 3px rgba(0, 0, 0, 0.4) inset } .menuWrap:hover #puller A { FILTER: alpha(opacity=100); opacity: 1; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A:after { BORDER-BOTTOM: #666 1px solid; POSITION: absolute; FILTER: alpha(opacity=0) !important; BORDER-LEFT: #666 0px solid; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1; BACKGROUND-COLOR: #777; PADDING-LEFT: 1px; PADDING-RIGHT: 6px; DISPLAY: none !important; COLOR: #fff; FONT-SIZE: 180%; BORDER-TOP: #666 1px solid; CONTENT: "\2190"; TOP: 200px; RIGHT: -30px; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 3px; opacity: 0; -webkit-transition: opacity .5s ease-in-out; -moz-transition: opacity .5s ease-in-out; border-radius: 0 12px 12px 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, .5); transition: opacity .5s ease-in-out } .pullcollapsed#puller A { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #00add0; opacity: 1 } #puller A:hover { BACKGROUND-COLOR: #777 } #puller A IMG { POSITION: relative; FILTER: alpha(opacity=0)\9; PADDING-BOTTOM: 3px; PADDING-LEFT: 1px; WIDTH: 12px; PADDING-RIGHT: 6px; BACKGROUND: url(images/menu_expand_rtl.gif) no-repeat 0px 0px; HEIGHT: 24px; TOP: 200px; RIGHT: -9px; PADDING-TOP: 3px } .pullcollapsed#puller A:hover { BACKGROUND-COLOR: #777; -webkit-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller A:after { CONTENT: "\2192"; opacity: 0 } .pullcollapsed#puller A:hover:after { opacity: 1 } #puller A:hover:after { opacity: 1 } .pullcollapsed#puller A:hover IMG { FILTER: alpha(opacity=100) } #puller A:hover IMG { FILTER: alpha(opacity=100) } .pullcollapsed#puller A:hover IMG { BACKGROUND: url(images/menu_collapse_rtl.gif) no-repeat 0px 0px } .navcollapsed { MARGIN-LEFT: -210px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller { RIGHT: -10px; opacity: 1; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navcollapsed .menuWrap { DISPLAY: block !important } .contcollapsed { MARGIN-LEFT: 12px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #topFrame { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .bgBanner { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .brandingImgWrap { HEIGHT: 46px } .brandingImgWrap A { MARGIN: 8px 12px 0px; DISPLAY: inline-block } .bannerImage { MAX-HEIGHT: 35px } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #555; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 89px; PADDING-TOP: 0px; -moz-box-shadow: 0 -6px 17px #333 inset; -webkit-box-shadow: 0 -6px 17px #333 inset } .topTabs-compact { HEIGHT: 47px } .tabWrapper-left { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-center { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-right { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .appTabs { POSITION: relative; WIDTH: auto } .topTabs-compact .tabWrapper-left { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-center { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-right { PADDING-TOP: 20px } #topTab { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A SPAN { BORDER-BOTTOM: transparent 1px dotted; PADDING-BOTTOM: 1px } .topTabs-compact .appTabs A SPAN { PADDING-BOTTOM: 0px } .appTabs A:hover { COLOR: #fff } .appTabs A:focus { COLOR: #fff } .appTabs A:hover SPAN { BORDER-BOTTOM: #fff 1px double } .appTabs A:focus SPAN { BORDER-BOTTOM: #fff 1px double } #topTabActive { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:hover { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:focus { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:hover SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:focus SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .topTabs-compact .appTabs .active .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs .active A:hover .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs A { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:hover { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:focus { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .round1 A { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .round2 A { -moz-border-radius: 12px 12px 0 0; -webkit-border-radius: 12px 12px 0 0; border-radius: 12px 12px 0 0 } .topGlobalLinks { TEXT-ALIGN: right; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); FLOAT: right; FONT-SIZE: 90%; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .topGlobalLinks UL { Z-INDEX: 1001 } .topGlobalLinks UL LI { MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; COLOR: #ccc } .loggedInAs { POSITION: relative; FONT: italic 100% Georgia; COLOR: #999; BORDER-TOP: 0px } .loggedInAs IMG { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 18px !important; PADDING-RIGHT: 1px; DISPLAY: inline-block; HEIGHT: 18px !important; TOP: -2px; RIGHT: -9px; PADDING-TOP: 1px; LEFT: auto } .loggedInAs SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: inline-block; PADDING-TOP: 6px } .topGlobalLinks A { BACKGROUND-IMAGE: none !important; MIN-WIDTH: 18px; TEXT-ALIGN: left; PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline-block; COLOR: #ccc; PADDING-TOP: 6px } .topGlobalLinks UL LI:first-child A { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks UL LI:first-child { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks A .link-icon { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); WIDTH: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; FLOAT: right; HEIGHT: 16px; OVERFLOW: hidden } .topGlobalLinks .myPlaces .link-icon { BACKGROUND-POSITION: -113px 0px } .topGlobalLinks .myPlaces:hover .link-icon { BACKGROUND-POSITION: -113px -16px } .topGlobalLinks .home .link-icon { BACKGROUND-POSITION: -129px 0px } .topGlobalLinks .home:hover .link-icon { BACKGROUND-POSITION: -129px -16px } .topGlobalLinks .logout .link-icon { DISPLAY: none } .topGlobalLinks .logout { PADDING-BOTTOM: 6px; TEXT-INDENT: 0px; PADDING-LEFT: 9px; WIDTH: auto !important; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .topGlobalLinks .help .link-icon { BACKGROUND-POSITION: -145px 0px } .topGlobalLinks .help:hover .link-icon { BACKGROUND-POSITION: -145px -16px } .topGlobalLinks A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topGlobalLinks A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topTabs-compact .loggedInAs SPAN { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks A { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks .logout { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } UL.nav LI.sub UL.narrow LI A { TEXT-INDENT: -5px; FONT-SIZE: 90% } .hotItems { Z-INDEX: 10000; POSITION: relative; WIDTH: 240px; FLOAT: right; HEIGHT: 28px; COLOR: #666; MARGIN-LEFT: 6px; FONT-SIZE: 90% } .topTabs-compact .hotItems { DISPLAY: none } .hotItems .hotLinks { POSITION: absolute; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; MAX-HEIGHT: 46px; OVERFLOW: auto; RIGHT: 0px; PADDING-TOP: 4px; LEFT: 0px; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; border-radius: 0 0 0 4px } .hotItems .hotLinks LI { DISPLAY: inline } .hotItems .hotLinks A { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT: italic 100% Georgia; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; TEXT-DECORATION: none; PADDING-TOP: 3px } .hotItems .hotLinks LI:after { POSITION: relative; COLOR: #999; CONTENT: "\2022"; RIGHT: 1px } .hotItems .hotLinks LI A:hover { COLOR: #eee; TEXT-DECORATION: underline } .path { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px } .breadcrumbs .noToggle { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .simplePath LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .path .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .path .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .simplePath .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .path A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .simplePath A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .path A:hover { COLOR: #333; TEXT-DECORATION: underline } .simplePath A:hover { COLOR: #333; TEXT-DECORATION: underline } .path .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .simplePath .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .path .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .simplePath .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .path .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='course_id']:before { CONTENT: "H" } .simplePath .root A[href*='course_id']:before { CONTENT: "H" } .path .root A[href*='admin']:before { CONTENT: "S" } .simplePath .root A[href*='admin']:before { CONTENT: "S" } .path .root A[href*='tabId=']:before { CONTENT: "m" } .simplePath .root A[href*='tabId=']:before { CONTENT: "m" } .path .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .simplePath .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .simplePath .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .path .root A:hover:before { COLOR: #888 } .simplePath .root A:hover:before { COLOR: #888 } .path .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .simplePath .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .path LI.contextPath { PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contextPath > DIV { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath > DIV:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath:hover > DIV { opacity: 1 } .contextPath:hover > DIV:hover { opacity: 1 } .contextPath A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .courseArrow A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .contextPath A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .contextPath A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow { DISPLAY: inline-block } .courseArrow A { DISPLAY: inline-block } .coursePath:hover .courseArrow { opacity: 1 } .banner + .breadcrumbs { BACKGROUND-COLOR: inherit; MARGIN: 0px } .breadcrumb-controls { FLOAT: right } .content { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #contentArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } #schemePreviewBody { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .contentBox { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .popup .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .picker .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .portal .contentBox { -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15) } #contentArea { MARGIN: 0px; COLOR: #444 } .container { MARGIN: 0px; COLOR: #444 } .containerOptions { MARGIN: 0px; COLOR: #444 } .containerPortal { MARGIN: 0px; COLOR: #444 } .containerPortal { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .portal .container { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .containerOptions .searchbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } .containerOptions .liveArea { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } #addFolderForm { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } DIV.okContainer { POSITION: relative; PADDING-BOTTOM: 60px } DIV.ok DIV.container { POSITION: relative; PADDING-BOTTOM: 60px } .collabContainer { POSITION: relative; PADDING-BOTTOM: 60px } .column-1 { MARGIN: 6px 0px 0px } .column-2 { MARGIN: 6px 0px 0px } .column-3 { MARGIN: 6px 0px 0px } .column-4 { MARGIN: 6px 0px 0px } .column-5 { MARGIN: 6px 0px 0px } .leftColumn-narrow { MARGIN: -20px 0px 0px -30px; WIDTH: 22%; FLOAT: left; OVERFLOW: auto; BORDER-RIGHT: #ccc 3px double } .picker .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .picker #bb-question-discover .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .rightColumn-narrow { WIDTH: 22%; FLOAT: right; MARGIN-LEFT: 1% } .rightColumn-wide { WIDTH: 74%; FLOAT: right } .leftColumn-wide { BORDER-LEFT: #ccc 3px double; WIDTH: 76%; FLOAT: left; MARGIN-LEFT: -3px } .picker .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker #bb-question-discover .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker .leftColumn-wide H1 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #bb-question-discover .leftColumn-wide { BORDER-LEFT: #ccc 3px double; MARGIN: -20px -20px 0px -3px; WIDTH: 80% } #bb-question-discover .leftColumn-wide + .leftColumn-wide { BORDER-LEFT: medium none; MARGIN: 0px; WIDTH: auto } #bb-question-discover .leftColumn-narrow { WIDTH: 24% } .leftColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .rightColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .leftColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .rightColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .columnPalette H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .leftColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .rightColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .leftColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } .rightColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } A.itemHead:hover { TEXT-DECORATION: underline } .leftColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .rightColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .leftColumn-narrow H3.hideoff { MARGIN: 0px } .leftColumn-narrow .columnPalette:first-child { BORDER-TOP: 0px } .paletteGroup { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .columnPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .paletteGroup DIV.columnPalette { BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .paletteItems { MARGIN: 0px 0px 4px; FONT-SIZE: 95% } .paletteItems LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 16px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } .paletteItems DIV { MARGIN: 0px 0px 0px 16px } #searchForm .paletteItems LI { MARGIN: 0px 0px 0px 24px } .paletteItems LI A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 110%; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .paletteItems LI LABEL { PADDING-LEFT: 21px; DISPLAY: inline-block } .picker .paletteItems LI LABEL { FONT-SIZE: 94% } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } UL.paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI:hover { BACKGROUND: #fff } .paletteItems LI A:hover { TEXT-DECORATION: underline } .paletteItems LI.selectedItem { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.selectedItem:hover { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active:hover { BACKGROUND: #fff4bf; COLOR: #000 } .columnActions UL LI A { DISPLAY: block } #copyright { POSITION: relative; MARGIN: 16px 0px 0px 9px; DISPLAY: inline-block; FONT-SIZE: 82% } .newCopyright { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 12px; PADDING-TOP: 20px } .logo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .legal { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .additionalInfo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 0px; MIN-HEIGHT: auto; PADDING-LEFT: 9px; PADDING-RIGHT: 12px; PADDING-TOP: 9px } .logo { POSITION: absolute; MARGIN-TOP: -20px; LEFT: 0px } .logo IMG { WIDTH: 45px } .additionalInfo { FLOAT: none } .legal P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P:first-child { PADDING-BOTTOM: 0px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } .additionalInfo P:first-child:after { POSITION: relative; COLOR: #ccc; CONTENT: "\2022"; RIGHT: -1px } .additionalInfo P:first-child A { PADDING-RIGHT: 12px } .additionalInfo P:first-child A:hover { BACKGROUND: url(images/micro_popup.png) no-repeat right 2px } .productTitle A { TEXT-ALIGN: right; LINE-HEIGHT: 1.1em; DISPLAY: block; COLOR: #333; FONT-SIZE: 125%; FONT-WEIGHT: bold; TEXT-DECORATION: none } .productTitle A:hover { TEXT-DECORATION: underline } .additionalInfo A:hover { TEXT-DECORATION: underline } .copyrightDetailContents { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #777; MARGIN: 0px; MIN-HEIGHT: 5em; PADDING-LEFT: 24px; WIDTH: 740px; PADDING-RIGHT: 24px; DISPLAY: none; COLOR: #fff; CLEAR: left; BORDER-TOP: #555 1px solid; TOP: 0px; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 12px; LEFT: 0px; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); border-radius: 3px } .productImg { MARGIN-TOP: 5px; FLOAT: left } .copyrightDetailContents UL { TEXT-ALIGN: left; MARGIN: 4px 0px 0px 24px; FLOAT: left } .copyrightDetailContents UL LI SPAN { FONT-WEIGHT: bold } A.closeCopyright { POSITION: relative; FLOAT: right; TOP: -5px; RIGHT: -16px } .contentBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 1em; MARGIN: 0px 1em 0.6em; PADDING-LEFT: 1.4em; PADDING-RIGHT: 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0.6em } .contentBlock H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; MARGIN: 0px 0px 1em; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .contentBlock UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentBlock UL.threeCol { WIDTH: 30%; FLOAT: left } .contentBlock UL.threeCol LI { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px 3px; FLOAT: none; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contentBlock UL.threeCol LI A { BACKGROUND-IMAGE: none } .contentBlock UL.threeCol LI A:hover { TEXT-DECORATION: underline } .contentBlock UL.threeCol LI A:focus { TEXT-DECORATION: underline } .contentBlock H3 INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock H3 SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock OL LI INPUT[type='checkbox'] { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .contentBlock H3 A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock INPUT.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } DIV.landingListWrapper { TEXT-ALIGN: center; MARGIN: 1.6em 0px 0px } DIV.landingListWrapper UL.landingList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI { TEXT-ALIGN: left; MARGIN: 0px 0px 1.6em; WIDTH: 50% } DIV.landingListWrapper UL.landingList-2cols LI { TEXT-ALIGN: left; MARGIN: 0px 3em 1.6em 0px; WIDTH: 45%; FLOAT: left } DIV.landingListWrapper UL.landingList LI.restart { MARGIN-TOP: -13.6em } DIV.landingListWrapper UL.landingList LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList-2cols LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList LI UL { LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em } DIV.landingListWrapper UL.landingList LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; CLEAR: left; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #000; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .containerLanding { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } DIV.landing DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } BODY.landingBody DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } .inst-email DIV.landing DIV.container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } DIV.landingPageColumn { PADDING-BOTTOM: 0px; MARGIN: 1.2em 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .twoCol { MARGIN: 1.2em 0px; WIDTH: 49% } .threeCol { MARGIN: 1.2em 0px; WIDTH: 32.5% } .landingPageColumn UL { MARGIN: 0px 0px 0px 30px } .landingPageColumn .outcomesLanding { PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI { TEXT-ALIGN: left; MARGIN: 0px 0px 2.2em } .inst-email .landingPageColumn UL LI { MARGIN: 0px } .landingPageColumn .outcomesLanding LI { MARGIN: 0px 0px 1.2em } .landingPageColumn UL LI A { TEXT-DECORATION: none } .landingPageColumn UL LI A:hover { TEXT-DECORATION: underline } .landingPageColumn H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI H3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 115%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } .landingPageColumn .outcomesLanding LI P { BORDER-TOP: 0px } .landingPageColumn H3 IMG { MARGIN: 0px 0px 0px -12px } .landingPageColumn H3.hiddenlink IMG { POSITION: absolute; FILTER: alpha(opacity=40); TOP: 0px; LEFT: 1.1em; opacity: .4 } .landingPageColumn UL LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em; PADDING-LEFT: 1.6em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #555; PADDING-TOP: 1px } .landingPageColumn UL LI UL LI.more { PADDING-TOP: 3px } .landingPageColumn UL LI UL LI.more A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; COLOR: #555; PADDING-TOP: 0px } .landingPageColumn UL LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn H3.hiddenlink { POSITION: relative; PADDING-BOTTOM: 0.6em; PADDING-LEFT: 4.2em; PADDING-RIGHT: 1.2em; PADDING-TOP: 1em } .landingPageColumn H3.hiddenlink A { COLOR: #777; TEXT-DECORATION: none } .landingPageColumn H3.hiddenlink A:hover { COLOR: #777; TEXT-DECORATION: none } .subhead_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #333; FONT-SIZE: 90%; PADDING-TOP: 0px } .list_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 1.3em; PADDING-RIGHT: 2px; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .landingPageColumn .outcomesLanding .list_text A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 3px; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; HEIGHT: 360px; OVERFLOW: auto; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.datalist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.landingPageColumn UL LI UL.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 250px; OVERFLOW: auto; BORDER-TOP: medium none; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.datalistScroll LI { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: white; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.datalistScroll LI:hover { BACKGROUND-COLOR: #ffc } DIV.landingPageColumn UL LI UL.datalistScroll LI:focus { BACKGROUND-COLOR: #ffc } DIV.datalist TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } DIV.datalistScroll TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } .emptylist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: white; MARGIN: 6px 0px 0px 1.4em; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 12px } DIV.landingPageColumn UL LI UL.subcaret { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.subcaret LI { PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.complete { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_complete_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.inprogress { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_active_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } .iconLegendLabel { MARGIN: 1px 0px 1px 1.6em; FONT-SIZE: 95% } DIV.landingPageColumn UL LI UL.subcaret LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI UL.datalist LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI DIV A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI TABLE A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI P A { TEXT-DECORATION: underline } .genericButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .genericButtonImg { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browse { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browseIcon { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } INPUT[type='submit'].submit { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble_top A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paging A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .itemHeaderControl A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .actionMenuButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paletteSearch .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } H3#cs_search + UL DIV.none:first-child .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .mainButton H2 { MARGIN: 0px; FONT-SIZE: 100% } .secondaryButton H2 { MARGIN: 0px; FONT-SIZE: 100% } #primaryButton { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble_top .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1 { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1-img { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } #secondaryButton { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2 { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2-img { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } #secondaryButton { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .sub A IMG { MARGIN: -2px -4px 0px 0px } .sub .button-1 IMG { MARGIN: -2px -4px 0px 0px } .sub .button-2 IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton A IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton .button-2 IMG { MARGIN: -2px -4px 0px 0px } .mainButton A { DISPLAY: block } .secondaryButton A { DISPLAY: block } .actionBar .button-1 { DISPLAY: block } .actionBar .button-2 { DISPLAY: block } .mainButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .mainButton H2 > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .secondaryButton > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .secondaryButton H2 > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .sub.mainButton A { PADDING-RIGHT: 12px } .sub.secondaryButton A { PADDING-RIGHT: 12px } .mainButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A { FONT-WEIGHT: 600 } .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 30px } .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 30px } .popup .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .popup .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .genericButtonImg { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } INPUT[type='submit'].genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browse { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browseIcon { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .paging A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .itemHeaderControl > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .actionMenuButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } #toolsSearchBox + .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .treeContainer .tree LI A.button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .threadButtons .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .dbThreadInfo .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .containerOptions INPUT.genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-2 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-3 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-4 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'] { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'].submit { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='button'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .genericButtonImg { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-3-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .itemHeaderControl A { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .browseIcon { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .genericButtonImg { DISPLAY: inline-block !important } INPUT[type='submit'].genericButton { FONT-WEIGHT: bold } .button-3 { FONT-WEIGHT: bold } .searchbar INPUT[type='submit'].genericButton { FONT-WEIGHT: normal } .u_reverseAlign#editGradeActionList A.genericButton { DISPLAY: inline-block; MARGIN-BOTTOM: 5px } .genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .threadButtons .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .dbThreadInfo .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img.contextArrow:hover { box-shadow: none } .button-4-img.contextArrow:focus { box-shadow: none } .paletteSearch .button-4:hover { BACKGROUND-IMAGE: none !important } .paletteSearch .button-4:focus { BACKGROUND-IMAGE: none !important } .button-5 { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5-img { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5:hover { BACKGROUND: #ededed; COLOR: black } .button-5-img:hover { BACKGROUND: #ededed; COLOR: black } .button-6 { TEXT-DECORATION: none } .mainButton A.disabled { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .rumble A { DISPLAY: block } .rumble_top A { DISPLAY: block } .rumble .sub A IMG { MARGIN: -2px -1px 0px 3px } .rumble_top .sub A IMG { MARGIN: -2px -1px 0px 3px } .paging A { DISPLAY: inline-block } .rumble_top .inventory_paging .gotolink { DISPLAY: inline-block } .rumble .inventory_paging .gotolink { DISPLAY: inline-block } .listItemSelect { MARGIN: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #555 } #threadArea .listItemSelect { MARGIN: 0px } .rumble_top .listItemSelect { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 4px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .listItemSelect { PADDING-BOTTOM: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .rumble .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble_top .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble .listItemSelect A:hover { TEXT-DECORATION: none } .rumble_top .listItemSelect A:hover { TEXT-DECORATION: none } .listItemSelect LABEL { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline; PADDING-TOP: 0px } .listItemSelect SELECT { FONT-SIZE: 95% } INPUT.calcButton { MARGIN: 2px 0px; WIDTH: 2em; DISPLAY: inline-block } INPUT#width { WIDTH: 5em } INPUT#height { WIDTH: 5em } SELECT#border { WIDTH: 5em } SELECT#controls { WIDTH: 5em } .smallControls INPUT[type='text'].width { WIDTH: 5em } .smallControls INPUT[type='text'].height { WIDTH: 5em } .smallControls SELECT.quality { WIDTH: auto } .smallControls SELECT.controls { WIDTH: auto } .smallControls SELECT.border { WIDTH: auto } .actionBarMicro .mainButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .secondaryButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .mainButton A IMG { MARGIN: 0px } .actionBarMicro .secondaryButton A IMG { MARGIN: 0px } .actionBarMicro A SPAN IMG { VISIBILITY: hidden } .actionBar A SPAN IMG { VISIBILITY: hidden } .actionBarMicro .access-reorder { -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .actionBarMicro A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBar A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBarMicro #quickViewLink A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #shortcutView A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #quickViewLink A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#quickViewLink A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #shortcutView A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#shortcutView A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #addCmItem > A SPAN { BACKGROUND-POSITION: -16px 0px } .actionBarMicro #detailViewLink2 UL LI A { WIDTH: 90px } .actionBarMicro #addCmItem:hover > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro .active#addCmItem > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro #detailViewLink A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #folderView A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #detailViewLink2 A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #folderView A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#folderView A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #courseMapButton A SPAN { BACKGROUND-POSITION: -48px 0px } .actionBarMicro #courseMapButton A:hover SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro .active#courseMapButton A SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro #refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshView A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshMenuLink A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro #refreshView A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshView A SPAN { BACKGROUND-POSITION: -64px -16px } A.access-reorder SPAN { BACKGROUND-POSITION: -80px 0px } A.access-reorder:hover SPAN { BACKGROUND-POSITION: -80px -16px } A.active.access-reorder SPAN { BACKGROUND-POSITION: -80px -16px } .actionBar .sub A .chevron { BACKGROUND-POSITION: -95px 0px } .actionBar .sub:hover A .chevron { BACKGROUND-POSITION: -95px -16px } .actionBar .sub A:focus .chevron { BACKGROUND-POSITION: -95px -16px } .actionBarMicro .active > A { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:hover { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:focus { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } A.liveAreaTab:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub H2 > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .mainButton.sub:hover H2 > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang H2:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang:hover H2:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub:hover > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .actionBarMicro UL:hover + UL .active A:after { DISPLAY: none } A.liveAreaTab:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang H2:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang:hover H2:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .sub:hover > A:after { BORDER-BOTTOM-COLOR: #d1eaef } .columnActions.actionBarMicro { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 3px } .alignPanel LI.sub { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .alignPanel LI.sub A.button-4:after { CONTENT: none } .columnActions UL { MARGIN: 0px 0px 2px } .columnActions .mainButton A { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .columnActions .mainButton A:hover { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .modeSwitchWrap { DISPLAY: inline-block; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; FONT-WEIGHT: bold; BORDER-RIGHT: transparent 1px dotted } .modeSwitch { PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: #ccc; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -moz-border-radius: 16px; -webkit-border-radius: 16px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); border-radius: 16px } .modeSwitch:before { POSITION: relative; LINE-HEIGHT: 0.9; COLOR: #bbb; FONT-SIZE: 22px; VERTICAL-ALIGN: middle; CONTENT: "\2022"; TOP: -1px; FONT-WEIGHT: normal; MARGIN-RIGHT: 2px; LEFT: 0px; font-effect: outline } .read-on { BACKGROUND-COLOR: #777; MARGIN-RIGHT: 0px } .read-on:hover { BACKGROUND: #555 } .read-on { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .read-on:before { COLOR: lime; text-shadow: 0 0 4px lime } .disabled.read-on:before { COLOR: #999 } .disabled.read-on { COLOR: #999 } .read-off:before { COLOR: #999 } .read-off { COLOR: #999 } .read-off.modeSwitch { TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } A.read-off IMG { DISPLAY: none } A.read-on IMG { DISPLAY: none } A.read-on .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } A.read-off .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } .modeSwitch SPAN { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .switcherLabel { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 4px !important; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 2px !important } .vtbeSwitch { TOP: 2px } .vtbeSwitch SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .legacy .vtbeSwitch { HEIGHT: 2.2em } .vtbeSwitch DIV.modeSwitchWrap { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ccc 1px solid; TOP: 2px; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .vtbeSwitch DIV.modeSwitchWrap A SPAN#statusText { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 0px !important } .vtbeSwitch DIV.modeSwitchWrap A.read-off { BACKGROUND-COLOR: #ddd } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover { BACKGROUND-COLOR: #fff } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover SPAN#statusText { COLOR: #000 } TABLE.vtbeTable-legacy { WIDTH: 100% } .vtbeTable-legacy TEXTAREA { WIDTH: 100% } .helpLink { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .helpLink A.browseIcon { BORDER-BOTTOM: 0px; POSITION: relative; TEXT-ALIGN: center; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#777777); BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; BACKGROUND: #777; FONT-SIZE: 115%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; box-shadow: none; border-radius: 12px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .helpLink A.browseIcon IMG { DISPLAY: none } .helpLink A.browseIcon:before { Z-INDEX: 1; POSITION: relative; WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: #fff; CONTENT: "?"; RIGHT: -4px; FONT-WEIGHT: bold } .helpLink A.browseIcon:hover { box-shadow: none } .helpLink A.browseIcon:focus { box-shadow: none } .helpLink A[title*='Off'].browseIcon:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bbbbbb,endColorstr=#bbbbbb); BACKGROUND: #bbb } .helpLink A[title*='Off'] { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } TABLE.reorder { opacity: 1 } .reorder SPAN { DISPLAY: inline-block; HEIGHT: 20px } TABLE.reorder SPAN { HEIGHT: auto } .item .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } .item .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .liItem .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .subList-reorder .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .buttonCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .dndHandle .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .portlet .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder { WIDTH: 16px } .subList-reorder .reorder { WIDTH: 16px } .buttonCm .reorder { WIDTH: 16px } .portlet .reorder SPAN { DISPLAY: block; BACKGROUND-POSITION: -237px -116px; HEIGHT: 24px } .portlet .reorder { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; BOTTOM: -1px; BORDER-TOP: #555 1px solid; TOP: -1px; BORDER-RIGHT: #555 0px solid; LEFT: -19px; opacity: 0; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px } .module-dragstate.portlet .reorder { BORDER-RIGHT-WIDTH: 0px; BOTTOM: -2px; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-LEFT-WIDTH: 2px; TOP: -2px; LEFT: -20px } .reorder IMG { FILTER: alpha(opacity=0); opacity: 0 } .item .reorder IMG { MARGIN: 6px 3px } .portlet .reorder IMG { WIDTH: 18px; HEIGHT: 20px } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .liItem:focus .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .listCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buttonCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .portlet H2:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentListPlain LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentList > LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg { MARGIN: 0px; WIDTH: 16px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -125px; HEIGHT: 16px } TABLE.inventory A.cmimg { FILTER: alpha(opacity=0); opacity: 0 } TABLE.inventory TR:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg:hover { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg:focus { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg IMG { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 15px; PADDING-RIGHT: 0px; HEIGHT: 15px; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .buttonCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .portlet A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } A.cmimg-small { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .listCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .listCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .courseMenu .subhead A.cmimg { TOP: 9px } .buttonCm .courseMenu .subhead .cmimg { TOP: 2px } .portlet A.cmimg { POSITION: relative; TOP: 2px; RIGHT: 0px } .listCm .courseMenu A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .portlet A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .buildList LI .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .item .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .buildList LI .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .item .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .listCm .courseMenu LI:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 3px; BOTTOM: 0px; PADDING-RIGHT: 4px; PADDING-TOP: 4px; -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); border-radius: 0 3px 0 0 } .frameResizeToggle A { WIDTH: 16px; DISPLAY: block; BACKGROUND: url(images/utilicons_sprite_rev.png) no-repeat -158px 0px; HEIGHT: 16px; OVERFLOW: hidden } .frameResizeToggle:hover { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle A.resize-on { BACKGROUND-POSITION: -175px 0px; opacity: .5 } .frameResizeToggle A.resize-off { BACKGROUND-POSITION: -159px 0px; opacity: .8 } .frameResizeToggle A.resize-on:hover { BACKGROUND-POSITION: -159px -16px; opacity: 1 } .frameResizeToggle A.resize-off:hover { BACKGROUND-POSITION: -175px -16px; opacity: 1 } .frameResizeToggle A IMG { WIDTH: 18px; HEIGHT: 18px } A.close { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close-menu { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close { TOP: 0px; RIGHT: 20px } A.close IMG { DISPLAY: none } A.close-menu IMG { DISPLAY: none } .lbAction IMG { DISPLAY: none } A.close:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } .lbAction:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT-SIZE: 14px } A.close:hover:before { COLOR: #888 } A.close-menu:hover:before { COLOR: #888 } .lbAction:hover:before { COLOR: #888 } .builderItem A.close { FILTER: alpha(opacity:0); opacity: 0 } .builderItem:hover A.close { FILTER: alpha(opacity:100); opacity: 1 } .liveArea A.close { TOP: 6px; RIGHT: 6px } .cmdiv A.close-menu { Z-INDEX: 100; POSITION: relative; FILTER: alpha(opacity=100); TOP: 0px; RIGHT: 0px; opacity: 1 } #bb-assessment-canvas [id*='receipt_nested'].receipt A.close { TOP: 6px; RIGHT: 6px } A.colorChip { PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 1px } .pageTitle A.colorChip { PADDING-BOTTOM: 4px; PADDING-LEFT: 7px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } A.colorChip SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -123px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } A.colorChip:hover SPAN { BACKGROUND-POSITION: -320px -141px } A.colorChip SPAN IMG { FILTER: alpha(opacity=0); WIDTH: 16px; HEIGHT: 16px; opacity: 0 } A.colorChip IMG.chipSwatch { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 16px; HEIGHT: 16px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #aaa 1px solid } SPAN.colorChipName { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: inline-block !important; VERTICAL-ALIGN: middle; PADDING-TOP: 0px !important } INPUT[type='text'] { FONT-SIZE: 90% } INPUT[type='password'] { FONT-SIZE: 90% } SELECT { FONT-SIZE: 90% } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .courseMenu INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .courseMenu INPUT[type='text'] { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { MARGIN-LEFT: 0px } #calculatorValue { MARGIN: 3px 0px; WIDTH: 10em } A.microControl { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A.microControl IMG { WIDTH: 12px; HEIGHT: 12px } A.save { BACKGROUND: url(images/controls.png) no-repeat -50px -123px } A.cancel { BACKGROUND: url(images/controls.png) no-repeat -70px -123px } .fileInputWrapper { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; MARGIN-RIGHT: 9px; PADDING-TOP: 0px } .fileInputWrapper INPUT.hiddenInput { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .backLink { POSITION: absolute; MARGIN: 0px; BOTTOM: 0px; RIGHT: 0px } .tocBottom_min .backLink { BOTTOM: 48px } .tocBottom_max .backLink { BOTTOM: 348px } .tocBottom_open .backLink { BOTTOM: 178px } .shortDoc .backLink { POSITION: relative; TEXT-ALIGN: left; MARGIN-TOP: 15px; BOTTOM: 0px; RIGHT: 0px } .backLink A { BORDER-BOTTOM: #cdcdcd 0px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 18px; DISPLAY: inline-block; BACKGROUND: #eee; COLOR: #888; BORDER-TOP: #cdcdcd 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #cdcdcd 0px solid; TEXT-DECORATION: none; PADDING-TOP: 8px; -moz-box-shadow: 1px 1px 4px #DDD inset; -webkit-box-shadow: 1px 1px 4px #ddd inset; -moz-border-radius: 4px 0 4px 0; -webkit-border-radius: 4px 0 4px 0; text-shadow: 0 1px 0 #fff } .shortDoc .backLink A { BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px } .backLink A:before { LINE-HEIGHT: 1.2; COLOR: #999; FONT-SIZE: 120%; CONTENT: "\2190" } .backLink A:hover { BACKGROUND: #ddd; COLOR: #777 } .backLink A:hover:before { COLOR: #00add0 } .sliderWrapper { BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 0px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 13px; BACKGROUND: #fff; FLOAT: left; FONT-SIZE: 85%; PADDING-TOP: 14px; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0 } #sliderHandle { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: -2px 0px 0px; WIDTH: 4px; DISPLAY: block; BACKGROUND: #999; HEIGHT: 4px; BORDER-TOP: #555 1px solid; CURSOR: ew-resize; BORDER-RIGHT: #555 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } #sliderTrack { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 6px; WIDTH: 60px; DISPLAY: inline-block; BACKGROUND: #ededed; HEIGHT: 2px; BORDER-TOP: #ccc 1px solid; TOP: -2px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .itemCounter { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #cdcdcd; FONT-SIZE: 115%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #pageHeader { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitleSmall { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } #pageHeader { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #schemePreviewHead { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitle H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitleError H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #pageHeader { FONT-SIZE: 185% } .pageTitle H1 { FONT-SIZE: 185% } .pageTitleError H1 { FONT-SIZE: 185% } .picker .pageTitle H1 { FONT-SIZE: 160% } .popup .pageTitle H1 { FONT-SIZE: 160% } .pageTitle #titleicon { DISPLAY: inline-block } .pageTitle H1 { DISPLAY: inline-block } .pageTitle A.cmimg { DISPLAY: inline-block } .pageTitle H1 + .contextMenuContainer { POSITION: relative; MARGIN-LEFT: 2px; VERTICAL-ALIGN: top; TOP: 4px } .pageTitle A.cmimg { MARGIN: 0px } .pageTitle #titleicon { MARGIN: 0px 6px 0px 0px; DISPLAY: none } .pageTitle [src*='slideshare']#titleicon { BORDER-BOTTOM: #dedede 1px solid; POSITION: absolute; BORDER-LEFT: #dedede 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; WIDTH: auto; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #fff; HEIGHT: 39px; BORDER-TOP: #dedede 0px solid; TOP: 1px; RIGHT: 7px; BORDER-RIGHT: #dedede 0px solid; PADDING-TOP: 4px; border-radius: 0 4px 0 4px } .pageTitle [src*='youtube']#titleicon { POSITION: absolute; WIDTH: auto; DISPLAY: block; HEIGHT: 44px; TOP: 8px; RIGHT: 14px } .pageTitleSmall H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #fff; FONT-SIZE: 135%; PADDING-TOP: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.9) } #pageHeader { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } #schemePreviewHead { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .hierarchy-page .pageTitle + .container { MARGIN-TOP: -20px; BACKGROUND: #fff } .picker .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popup .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } #pageHeader { BACKGROUND-COLOR: #dedede } #schemePreviewHead { BACKGROUND-COLOR: #dedede } .pageTitleIcon { DISPLAY: table-row } .pageTitle .details { DISPLAY: none } .pageTitle .contextMenuContainer { DISPLAY: inline-block !important } .pageTitle .titleButtons { DISPLAY: inline-block !important } .pageTitleEdit { DISPLAY: inline-block !important } #pageTitleBar { DISPLAY: inline-block; MARGIN-RIGHT: 6px } .pageTitle H2 { MARGIN: 0px; COLOR: #333; CLEAR: both; FONT-SIZE: 100% } .pageTitle H2 SPAN { FONT-WEIGHT: normal } .contextString { COLOR: #777; FONT-WEIGHT: normal } .pageTitle .label { COLOR: #777; FONT-WEIGHT: normal } .error .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#DB0F0F,endColorstr=#FC0202); box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6) inset } .error .pageTitle H1 { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2) } .customBanner { TEXT-ALIGN: center; BACKGROUND-COLOR: transparent; MARGIN: 0px; OVERFLOW: hidden } DIV.localViewToggle + DIV.pageTitle { PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #fafafa inset; border-radius: 0 } DIV#lightboxContent H2 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; FONT-SIZE: 130%; PADDING-TOP: 18px } .helphelp { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .pageTitle P { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .label.details { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .mapTabs + .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .mapTabs ~ .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .helphelp A { BORDER-BOTTOM: #666 1px dotted; COLOR: #666; TEXT-DECORATION: none } .helphelp A:hover { BORDER-BOTTOM-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-TOP-STYLE: solid; BORDER-LEFT-STYLE: solid } DIV.helphelp UL { MARGIN: 6px 0px } .version { MARGIN-TOP: 6px; DISPLAY: inline-block; COLOR: #666; FONT-SIZE: 60%; FONT-WEIGHT: normal } .version I { FONT-STYLE: normal; FONT-WEIGHT: bold } .version SPAN { POSITION: relative; WIDTH: 13px; DISPLAY: inline-block; OVERFLOW: hidden; TOP: -2px; LEFT: -5px } .version SPAN:before { POSITION: relative; COLOR: #00add0; FONT-SIZE: 105%; CONTENT: "+"; TOP: 0px; FONT-WEIGHT: bold; LEFT: 0px } .colophon { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px 14px; PADDING-LEFT: 55px; WIDTH: 30em; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: right; FONT-SIZE: 85%; OVERFLOW: visible; RIGHT: 0px; PADDING-TOP: 0px } .colophon IMG { POSITION: absolute; LEFT: 0px } .installation { LINE-HEIGHT: 1.3em; COLOR: #666 !important } .installation SPAN { FONT-WEIGHT: bold } .actionBar { Z-INDEX: 110; BORDER-TOP: #444 1px solid; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .hierarchy-page .actionBar { MARGIN-TOP: -21px } .hierarchy-page #toolsTabForm .actionBar { MARGIN: -21px -30px 0px } .actionBar UL LI { POSITION: relative } .actionBar UL LI.mainButton { Z-INDEX: 210 } .actionBar UL LI.secondaryButton { Z-INDEX: 209 } .actionBar UL LI.mainButton:hover { Z-INDEX: 112 } .pageTitle + .actionBar { -moz-border-radius: 0; border-radius: 0 } .actionBar .mainButton { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBar .secondaryButton { MARGIN: 0px; FLOAT: right } .actionMenu { Z-INDEX: 111; POSITION: relative } .actionMenuItem { Z-INDEX: 123; POSITION: relative } .actionBarMicro { -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .csMenuFrame .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popupMenu .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .portlet .actionBarMicro { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .portlet .actionBarMicro UL { MARGIN: 2px } .actionBarMicro UL LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBarMicro .mainButton { Z-INDEX: 1000 } .actionBarMicro .secondaryButton { Z-INDEX: 10; FLOAT: right } .actionBar { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .actionBarMicro { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .searchbar { POSITION: relative } .searchbarPicker { POSITION: relative } .subActionBar { POSITION: relative } .searchbarCanvas.searchbar { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN: -24px -30px 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dfdfdf 0px 0px; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #F0F0F0 inset; -webkit-box-shadow: 1px 0 0 #F0F0F0 inset } .picker .searchbarCanvas.searchbar { MARGIN: -24px -20px 20px } .picker .leftColumn-narrow H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } .picker .leftColumn-wide H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } #bb-question-discover .searchbarCanvas.searchbar FIELDSET H2 { DISPLAY: inline-block; FONT-SIZE: 100%; FONT-WEIGHT: normal } .subActionBar { FONT-SIZE: 95% } .searchbar TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE TD TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE FIELDSET { PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 3px } .searchbar TABLE DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .searchbar FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchbarPicker { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .searchbar:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .searchbarPicker:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .receipt A.close { FILTER: alpha(opacity=70); TOP: 1px; RIGHT: 4px; opacity: .7 } .slideshowControls { TEXT-ALIGN: center; MARGIN: 8px auto 12px; FONT-SIZE: 100% } .searchbar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbarPicker FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .subActionBar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbar H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .searchbarPicker H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .picker .searchbar H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbarPicker H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbar .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbarPicker .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .liveArea FIELDSET .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbar OL LI { MARGIN: 5px; FLOAT: left } .searchbarPicker OL LI { MARGIN: 5px; FLOAT: left } .liveArea FIELDSET OL LI { MARGIN: 5px; FLOAT: left } .searchbar OL LI > DIV { MARGIN: 0px 4px 4px 0px; DISPLAY: inline-block } .searchbar OL LI.options { FLOAT: right } .searchbarPicker OL LI.options { FLOAT: right } .liveArea FIELDSET OL LI.options { FLOAT: right } .searchbarPicker SPAN { DISPLAY: inline } .searchbar SPAN.spacer { MARGIN: 0px 4px } .cmImg { TEXT-ALIGN: center; MARGIN: 0px 0px 6px 12px; WIDTH: 180px; OVERFLOW: hidden } .cmImg IMG { WIDTH: 180px } .navDivider { PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; MARGIN: 0px 0px 4px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; LETTER-SPACING: 2px; COLOR: #999; FONT-SIZE: 80%; FONT-WEIGHT: bold; PADDING-TOP: 18px; text-shadow: 0 1px 0 #f9f9f9 } .cmPreviewWrapper { WIDTH: 212px } .navPalette { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .csMenuFrame .navPalette { MARGIN: 0px 0px 18px } .navPalette H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 105%; PADDING-TOP: 0px } .navPaletteTitle { POSITION: relative } .navPaletteTitle H3 + H3 { POSITION: absolute; TOP: 0px; RIGHT: 0px } .navPaletteCol H3 { BORDER-BOTTOM: 0px } .navPalette H4 { MARGIN: 0px; FONT-SIZE: 100% } .navPaletteContent UL LI { POSITION: relative; ZOOM: 1 } .navPaletteContent { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .listCm .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .singleControl .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .tools .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } #courseMenuPalette DIV.navPaletteContent { PADDING-BOTTOM: 14px; PADDING-TOP: 14px; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset } #courseMenuPalette { MARGIN-BOTTOM: 0px } .singleControl .navPaletteContent { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .singleControl { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPalette .discover { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPaletteContent A { PADDING-BOTTOM: 3px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; WORD-BREAK: normal; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 3px } .navPaletteContent A:hover { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A:focus { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A.comboLink { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.open { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.submenuLink { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink_active { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent A.submenuLink_active IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent UL LI:first-child H4 A { BORDER-TOP: medium none } .navPaletteContent UL LI:first-child A { BORDER-TOP: medium none } .navPaletteContent UL LI H4 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPaletteContent H3 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px; text-shadow: 0 1px 0 #f9f9f9 } .navPaletteContent H3 A:hover { TEXT-DECORATION: none } .navPaletteContent H3 A:focus { TEXT-DECORATION: none } #courseMenu { BACKGROUND-COLOR: #0078cb; COLOR: #fff } .controlpanel UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .controlpanel A { BORDER-TOP: #ccc 1px dotted } .controlpanel A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .controlpanel A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { DISPLAY: inline-block } .navPaletteContent H3 A.submenuLink_active { DISPLAY: inline-block } .controlpanel A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .controlpanel A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink_active:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .navPaletteContent H3 A.submenuLink_active:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .controlpanel A.submenuLink:hover:after { COLOR: #aaa } .controlpanel A.submenuLink_active:hover:after { COLOR: #aaa } .tools A.submenuLink:hover:after { COLOR: #aaa } .tools A.submenuLink_active:hover:after { COLOR: #aaa } .navPaletteContent H3 A.submenuLink:hover:before { COLOR: #aaa } .navPaletteContent H3 A.submenuLink_active:hover:before { COLOR: #aaa } .controlpanel A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .tools A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel H4 A.open { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navPaletteContent UL LI:first-child H4 A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore H4 { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel A.comboLink_active { Z-INDEX: 1; POSITION: relative } .tools A.comboLink_active { Z-INDEX: 1; POSITION: relative } .controlpanel H4 A.open { Z-INDEX: 1; POSITION: relative } .treeViewCs .navPaletteContent { } .treeViewCs .bottomRound B { } .courseFilesPalette { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .paletteSearch { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 6px } .classFiles H4#cs_search + UL LI:first-child { BORDER-BOTTOM: #aaa 1px dotted; PADDING-BOTTOM: 6px; MARGIN: 2px 9px 2px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 95%; PADDING-TOP: 0px } .classFiles H4#cs_search + UL LI { BACKGROUND-IMAGE: none } .classFiles A#filesPaletteContentCollectionLink { BACKGROUND-IMAGE: url(images/indicators.png); PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 98% -143px; COLOR: #aaa; PADDING-TOP: 3px } .navPaletteContent .submenu .paletteSearchElement { PADDING-BOTTOM: 9px; MARGIN: 6px 0px 0px -16px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BORDER-TOP: #bbb 1px dotted; PADDING-TOP: 10px } .paletteSearchElement INPUT { WIDTH: 99px } .classFiles UL.tree > LI { BACKGROUND-IMAGE: none !important } .listCm .courseMenu { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .ineditmode DIV.listCm UL.courseMenu { MARGIN: 0px } .ineditmode DIV.listCm UL.courseMenu LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px -1px 0px 0px; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid } .ineditmode DIV.listCm UL.courseMenu LI:hover { BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff !important; -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -moz-transition: border, margin, background, -moz-box-shadow 500ms cubic-bezier(0.420, 0.000, 1.000, 1.000); box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-transition-property: background, border, -webkit-box-shadow; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000); background-clip: padding-box } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder { -webkit-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder:before { -webkit-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .listCm .courseMenu LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .buttonCm LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .buttonCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .listCm .courseMenu A:hover { TEXT-DECORATION: underline } .listCm .courseMenu A:focus { TEXT-DECORATION: underline } .buttonCm LI A:hover { TEXT-DECORATION: underline } .buttonCm LI:focus { TEXT-DECORATION: underline } .listCm .courseMenu > LI:hover A SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:hover { COLOR: #128fa8 !important } .listCm .courseMenu A:focus { COLOR: #128fa8 !important } .listCm .courseMenu A:hover SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:focus SPAN { COLOR: #128fa8 !important } .listCm .courseMenu .here A { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:hover { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:focus { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A.cmimg { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu .here A.cmimg:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .listCm .subhead H3 { PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #courseMenu_folderView H4 A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } #courseMenu_folderView .subhead { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .navPaletteContent .subhead H3 A { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .navPaletteContent .subhead H3 A:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .listCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { BACKGROUND-IMAGE: none !important } .noteditmode .listCm .courseMenu .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .noteditmode .listCm .buttonCm .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .listCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .buttonCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .listCm .courseMenu .collapsed { PADDING-BOTTOM: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; HEIGHT: 2px; PADDING-TOP: 0px } .buttonCm .navPaletteContent { BACKGROUND: none transparent scroll repeat 0% 0% } .buttonCm LI { BACKGROUND-COLOR: transparent; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 12px 0px } .buttonCm .courseMenu .here A { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .buttonCm .courseMenu .here A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .cmLink-hidden { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-empty { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-hidden IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -123px } .cmLink-hidden { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -138px } .buttonCm .invisible .cmLink-hidden { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { RIGHT: 32px } .buttonCm .bottomRound { DISPLAY: none } .pickerMenu { POSITION: absolute; MARGIN: 0px; WIDTH: 150px; TOP: 0px; LEFT: 14px } .pickerMenu UL LI A { BACKGROUND-IMAGE: none } DIV.pickerMenu A.simpleLink { BACKGROUND-IMAGE: none } .pickerMenu A.open { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:hover { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:focus { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .discover .topRound B { } .discover .bottomRound B { } .discover .navPaletteContent { } .singleControl .topRound B { } .singleControl .bottomRound B { } .singleControl .navPaletteContent { } .discover A IMG { DISPLAY: none } .discover.navPalette { MARGIN-BOTTOM: 0px } .singleControl A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .navPalette .discover A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .singleControl A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A.enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .discover A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { COLOR: #3c0; CONTENT: "+" } .discover A:before { COLOR: #eee; CONTENT: "F" } .navPaletteContent .submenu { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; FONT-SIZE: 90%; PADDING-TOP: 0px; -moz-box-shadow: 0 1px 4px #ccc; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore .submenu { BACKGROUND: #fff; FONT-SIZE: 90% } .navPaletteContent .submenu LI { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent .submenu LI UL LI { PADDING-LEFT: 12px } .navPaletteContent .submenu LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } H4#cs_search + UL DIV A { DISPLAY: block; FONT-SIZE: 90% } .controlpanel .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu .emptyMsg { COLOR: #777 } .controlpanel .submenu A:hover { TEXT-DECORATION: underline } .controlpanel .submenu A.here { TEXT-DECORATION: underline } .controlpanel .submenu A:focus { TEXT-DECORATION: underline } .explore .submenu A:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .explore .submenu A:focus { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .tools .submenu { BACKGROUND: #fff } .controlpanel .submenu { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel .submenu LI UL { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND-COLOR: transparent } .navPalette A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .controlpanel A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPalette A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPalette A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPaletteCol H3 A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol H3 A.comboLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol .navPaletteContent H3 { BACKGROUND-IMAGE: none } .navPaletteCol .actionBarMicro { DISPLAY: none } .shortcutViewCs UL LI A { TEXT-ALIGN: center; BORDER-TOP: #ededed 1px dotted } .shortcuts LI A { BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted } .shortcuts LI A:hover { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .shortcuts LI A:focus { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .treeContainer#courseMenu_folderView { OVERFLOW-X: auto } DIV.expTreeContainer { BACKGROUND: #eee } DIV.treeContainer UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.treeContainer > UL.tree { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree > UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.listCm DIV.treeContainer UL.tree { OVERFLOW-X: auto; ZOOM: 1 } DIV.treeContainer UL.tree LI H4 + UL { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; ZOOM: 1; FONT-SIZE: 90%; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .sideTOC UL.tree > LI { OVERFLOW-X: visible } DIV.treeContainer UL.tree LI.last { BACKGROUND-IMAGE: none } UL.tree LI.last { BACKGROUND-IMAGE: none } DIV.treeContainer UL.tree LI.here A { BACKGROUND-COLOR: #ededed } UL.tree LI.here A { BACKGROUND-COLOR: #ededed } DIV.treeContainer UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.open_folder { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: #ebeffa; FONT-SIZE: 95%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.exp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folder.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI A.collapse { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folderopen.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer H4.treehead { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 2px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.treeContainer H4.first { MARGIN: 0px 0px 2px } DIV#userTreeDiv { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead { BACKGROUND-IMAGE: none; MARGIN: 0px; BORDER-TOP: #ccc 1px dotted } DIV.treeContainer UL.tree LI.subhead H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.first A { BORDER-TOP: medium none } DIV.treeContainer UL.tree LI.subhead H4 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 6px } UL.tree LI.subhead:first-child { MARGIN-TOP: 0px } UL.tree LI.subhead:first-child > A { BORDER-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.treeSubhead-collapsed A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: normal } .tableOverflowControl { OVERFLOW-X: auto } .inventory { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 0px; BORDER-SPACING: 0; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-COLLAPSE: separate; BACKGROUND: #fff; COLOR: #000; CLEAR: both; PADDING-TOP: 0px } .inventory CAPTION { TEXT-ALIGN: left; COLOR: #999; FONT-SIZE: 85% } .inventory > THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .splashTable THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .inventory > THEAD TR TH:first-child { BORDER-LEFT: medium none; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .inventory > TBODY { BORDER-BOTTOM: #ccc 2px solid } .inventory > TBODY TR { BORDER-BOTTOM: #ccc 1px solid } .inventory > TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory > TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory#drawerItems TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory#drawerItems TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory > TBODY TR TH { TEXT-ALIGN: left; FONT-WEIGHT: normal } .inventory > TBODY TR TD:first-child { BORDER-LEFT: medium none } .inventory > TBODY .gray TD { BACKGROUND: #fff4bf } .inventory > TBODY .gray TH { BACKGROUND: #fff4bf } .inventory > THEAD TR TH.sorted { BACKGROUND: #ccc } TH.sorted { BACKGROUND: #ccc } .splashTable THEAD TR TH.sorted { BACKGROUND: #ccc } .inventory > TBODY TR TD.sorted { BACKGROUND: #eee } .inventory > THEAD TR TH.sorted A { COLOR: #000 !important; FONT-WEIGHT: bold } .sortable > THEAD TH A { COLOR: #666; MARGIN-RIGHT: 9px } .sortable > THEAD TH A:hover { COLOR: #333; TEXT-DECORATION: underline } .sortable A.sortheader { POSITION: relative; PADDING-RIGHT: 17px; DISPLAY: block; MARGIN-RIGHT: 0px; text-shadow: 0 1px 0 #fff } .sortable .sortarrow { COLOR: #ff0; TOP: 0px; RIGHT: 0px; TEXT-DECORATION: none; LEFT: auto } TR.high { BACKGROUND: #fff4bf } .high { BACKGROUND: #fff4bf } .disabledCell { BACKGROUND-COLOR: #f0f0f0 } .inventory .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .inventory > TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments { WIDTH: 100% } .inventory .dndHandle { POSITION: static; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 5px } .inventory .dndHandle .reorder IMG { HEIGHT: 20px } .inventory .dndHandle .reorder:hover IMG { HEIGHT: 20px } .inventory .dndHandle .reorder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory .dndHandle .reorder:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory TR:hover .dndHandle { BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px } .reorderable > TBODY TR:hover { -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset } .reorderable > TBODY TR:hover TD { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable > TBODY TR:hover TH { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable TBODY TR TD:first-child { BORDER-LEFT: transparent 1px solid } .inventory TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .inventory > TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .attachments TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .attachments TBODY TR { BORDER-TOP: #eee 1px solid } .inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } .attachments TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .attachments TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory > TBODY UL.subtabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } TABLE.inventory > TBODY UL.subtabs LI { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.status { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; BACKGROUND: #f9f9f9; COLOR: #000; FONT-SIZE: 90%; PADDING-TOP: 1px } DIV.status A IMG { VERTICAL-ALIGN: middle } DIV.status P { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left !important; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; LINE-HEIGHT: 10%; MARGIN: 2px auto 4px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } DIV.status P IMG { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #8dafaf; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 8px; PADDING-TOP: 0px } DIV.stopped P IMG { BACKGROUND: url(images/controls.png) #fff no-repeat -20px -180px } DIV.status A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.status DIV { POSITION: relative; TEXT-ALIGN: center } DIV.status A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } TABLE.inventory-simple { MARGIN: 0px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } TABLE.attachments THEAD TR.warningRow { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TABLE.inventory-simple THEAD TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } TABLE.inventory-simple TBODY TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TH { COLOR: #000 } TABLE.inventory-simple .removeCell { BACKGROUND: #ededed; COLOR: #777 } TABLE.inventory-simple .removeCell TD { COLOR: #999 } TABLE.inventory-simple .removeCell TH { COLOR: #999 } TABLE.inventory-simple .removeCell TD A IMG { FILTER: alpha(opacity=40); opacity: .4 } TABLE.inventory-simple .smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.inventory-simple TBODY TR.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TD { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TH { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.stepItems-reorder { BORDER-SPACING: 0; MARGIN-BOTTOM: 12px; FONT-SIZE: 85% } TABLE.gbColumns { ZOOM: 1; FONT-SIZE: 90% } TABLE.stepItems-reorder TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BACKGROUND: #fff; COLOR: #999 } TABLE.gbColumns THEAD TR TH { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TD { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TH.sorted { BORDER-LEFT: #777 1px solid; BACKGROUND: #999; BORDER-RIGHT: #777 1px solid } TABLE.gbColumns THEAD TR TH A { COLOR: #fff } TABLE.gbColumns THEAD TR TD A { COLOR: #fff } TABLE.stepItems-reorder THEAD TR.lowerHeader TH { BORDER-BOTTOM: #ccc 2px solid; COLOR: #333 } TABLE.stepItems-reorder TBODY TR TD.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder THEAD TR TH.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder TR TH.clearCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TD { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TH { BORDER-TOP: 0px } TABLE.stepItems-reorder THEAD TR:first-child { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; TEXT-ALIGN: right; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD SPAN.reorder { POSITION: relative; FILTER: alpha(opacity=100); WIDTH: 18px !important; DISPLAY: block; BACKGROUND: url(images/controls.png) #ededed no-repeat -177px -122px; HEIGHT: 20px; TOP: 2px; CURSOR: move; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; LEFT: auto; opacity: 1; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } TABLE.gbColumns TBODY TR TD SPAN.reorder { BACKGROUND: url(images/controls.png) #ededed no-repeat -237px -122px } TABLE.stepItems-reorder TBODY TR.frozenbar TD SPAN.reorder { TOP: 1px } TABLE.stepItems-reorder TBODY TR TD INPUT { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: 95%; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } TABLE.stepItems-reorder TBODY TR TD.points INPUT { WIDTH: 3em } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=text] { WIDTH: 90% } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=checkbox] { WIDTH: auto } TABLE.stepItems-reorder TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px 4px 0px 0px } TABLE.gbColumns TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px; WIDTH: auto } TABLE.gbColumns TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; PADDING-TOP: 6px } TABLE.gbColumns TBODY TR.frozenbar TD { BACKGROUND: #ccc; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: 0px } TABLE.gbColumns TFOOT TR.lastRow TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #999; HEIGHT: 2px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.frozen TD { BACKGROUND: #ededed } TABLE.gbColumns THEAD TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } TABLE.gbColumns TBODY TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } DIV.areaHighlight TABLE.gbColumns THEAD TR TD.clear { BACKGROUND: inherit } TD.clear { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozen TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TFOOT TR.lastRow TD.clear { BACKGROUND: inherit } TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.gbColumns TBODY TR.placeholder TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.placeholder TD.clear { BACKGROUND: inherit } UL.dragableHighlight LI TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozen TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TFOOT TR.lastRow TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TR.rowdrag { Z-INDEX: 1; BACKGROUND: #ccc } .insertImg { Z-INDEX: 20; POSITION: relative; TOP: 12px } .insertImgUp { Z-INDEX: 20; POSITION: absolute; RIGHT: -10px } TABLE.inventory > TBODY TR TD.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > THEAD TR TH.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > TBODY TR TD.hideCell { DISPLAY: none } TABLE.inventory > THEAD TR TH.hideCell { DISPLAY: none } .clickOrder { DISPLAY: none } TABLE.inventory > TBODY TR TD.clickOrder { BORDER-LEFT: medium none; BACKGROUND-COLOR: #ddd } TABLE.inventory TR TD.endCell { PADDING-BOTTOM: 0px !important; BACKGROUND-COLOR: #ddd !important; PADDING-LEFT: 0px !important; WIDTH: 1px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.inventory TR.orderRow TD.clickOrder { TEXT-ALIGN: center; BACKGROUND-COLOR: #ddd } TABLE.inventory TR.orderRow TD.clickOrder DIV { POSITION: relative } .sortedplus { BACKGROUND-IMAGE: url(images/controls.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 48% -995px } .dragCol { BACKGROUND-COLOR: #999 } TABLE.splashTable { BORDER-BOTTOM: #ccc 2px solid; MARGIN: 3px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.splashTable THEAD TR { COLOR: #999 } TABLE.splashTable THEAD TR TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } TABLE.splashTable THEAD TR TH A { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #666; TEXT-DECORATION: none } TABLE.splashTable THEAD TR TH A:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; TEXT-DECORATION: underline } TABLE.splashTable TBODY TR { BORDER-TOP: #ddd 1px solid } TABLE.splashTable TBODY TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TH { TEXT-ALIGN: left; COLOR: #000 } TABLE.splashTable TH.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.splashTable TD.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } .contentBlock A { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -450px; TEXT-DECORATION: none } .contentBlock A.collapse { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -1045px; TEXT-DECORATION: none } .contentBlock A.collapse:hover { TEXT-DECORATION: underline } .contentBlock A.hover { TEXT-DECORATION: underline } TABLE.reorderCols { MARGIN: 18px 0px 9px; WIDTH: 100%; BORDER-COLLAPSE: collapse; CLEAR: both; FONT-SIZE: 95% } TABLE.reorderCols THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #ededed; BORDER-TOP: #ccc 1px solid; CURSOR: move; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } TABLE.reorderCols THEAD TR TH.noReorderCol { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; CURSOR: default; BORDER-RIGHT: medium none } TABLE.reorderCols TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed; COLOR: #555 } TABLE.reorderCols THEAD TH SPAN.reorderToolTip { BACKGROUND: url(images/controls.png) #ddd no-repeat -347px -122px } TABLE.reorderCols THEAD TR TH.axis { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed 0px 50%; COLOR: #555 } .ghostTd { BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; FONT: 10px arial; BACKGROUND: #eee; HEIGHT: auto; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 2px } TABLE.reorderCols THEAD TH.dragging { BACKGROUND: #ccc } TABLE.reorderCols THEAD TH.hovering { BACKGROUND: #666 } TABLE.reorderCols THEAD TH.hovering IMG { DISPLAY: none } .rumble { MARGIN: 0px 0px 9px; BACKGROUND: url(images/selected_items.png) no-repeat -1974px center } .rumble_top { MARGIN: 12px 0px 0px; BACKGROUND: url(images/selected_items.png) no-repeat 12px center } #mapCanvasForm .rumble_top { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble_top { BORDER-BOTTOM: #eee 2px solid } .noBatchActions { BACKGROUND-IMAGE: none !important; PADDING-BOTTOM: 5px !important; PADDING-LEFT: 5px !important; PADDING-RIGHT: 5px !important; PADDING-TOP: 5px !important } .rumbleBuildList { MARGIN: 0px 0px 0px 18px; BORDER-TOP: #eee 2px solid } .rumbleBuildList UL LI { Z-INDEX: 1000 } .rumbleBuildListTop UL LI { Z-INDEX: 1000 } .rumble_top UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble_top UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .rumble UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .contentListPlain .rumble LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentListPlain .rumble_top LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble_top LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .selectList .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble_top LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble LI.listActionGroup A { DISPLAY: inline } .rumble_top LI.listActionGroup A { DISPLAY: inline } .paging { TEXT-ALIGN: right; FLOAT: right; CLEAR: left } .pagingprefs { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN-TOP: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 3px } .paging SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BORDER-RIGHT: #ccc 1px dotted; PADDING-TOP: 1px } .rumble_top .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .rumble .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .jumptopage INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } .jumptopage INPUT { WIDTH: 2em; FONT-WEIGHT: normal; -moz-border-radius: 0; -webkit-border-radius: 0 } .rumble_top .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .inventory_paging A { DISPLAY: inline-block } .inventory_paging IMG { DISPLAY: inline-block } .inventory_paging SPAN { DISPLAY: inline-block } .inventory_paging DIV { DISPLAY: inline-block } .jumptopage DIV { DISPLAY: inline-block } .inventory_paging A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px } .inventory_paging IMG { MARGIN: 2px 2px 3px } .inventory_paging A.inactive { FILTER: alpha(opacity=40); opacity: .4 } A.jumpToPageOpen { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } A.jumpToPageOpen:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } DIV.jumptopage INPUT#currentpage_bot { WIDTH: auto } DIV.jumptopage INPUT#currentpage_top { WIDTH: auto } INPUT#currentpage_bot { WIDTH: auto } INPUT#currentpage_top { WIDTH: auto } .jumptopage { FLOAT: right } .jumptopage DIV { MARGIN: 0px 0px 0px 3px } .jumptopage BUTTON { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; TOP: -2px; RIGHT: 0px; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .jumptopage BUTTON IMG { MARGIN: 0px } .rumble_top .secondaryControl { FLOAT: right } .rumble .secondaryControl { FLOAT: right } .key-valueTable TR { BORDER-BOTTOM: medium none } .key-valueTable TH { BORDER-BOTTOM: medium none } .key-valueTable TD { BORDER-BOTTOM: medium none } .key-valueTable TBODY { BORDER-BOTTOM: medium none } .key-valueTable TBODY TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TH { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TR:first-child TH { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TR:first-child TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TH { COLOR: #555 } .infoListWrapper .key-valueTable { MARGIN: 3px 9px 6px } TD.removeCell { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A IMG { FILTER: alpha(opacity=30); opacity: .3 } .contentList { MARGIN: -20px -30px } .buildList { MARGIN: -20px -30px } .contentListPlain { MARGIN: -20px -30px } .announcementList { MARGIN: -20px -30px } #bb-assessment-canvas .contentListPlain { MARGIN: 0px -30px } .gradingList { MARGIN: 0px -30px } .buildList#survey { MARGIN: 0px -30px } #manageFormCanvasForm .buildList { MARGIN: 0px -30px } #mapCanvasForm .buildList { MARGIN: 0px 30px } .hierarchy-page #toolSettingsForm #dataCollectionContainer { MARGIN: -10px -30px } .leftColumn-wide .contentListPlain { MARGIN: 0px } .contentList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .buildList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentListPlain > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .announcementList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPageItem { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentList > LI.read:first-child:hover { BORDER-TOP: transparent 1px solid } .buildList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentListPlain > LI:first-child { BORDER-TOP: transparent 1px solid } .announcementList > LI:first-child { BORDER-TOP: transparent 1px solid } #bb-assessment-canvas .contentListPlain > LI:first-child { BORDER-TOP-COLOR: #ccc } #bb-assessment-canvas .contentListPlain > LI { MIN-HEIGHT: 16px; PADDING-LEFT: 42px } #bb-assessment-canvas .contentListPlain > LI .item { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-assessment-canvas .contentListPlain > LI .details { PADDING-BOTTOM: 5px; PADDING-TOP: 12px } .takeQuestionDiv { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='_'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='step'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer H3.submittitle.steptitle { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } .takeQuestionDiv H3 { MARGIN: 0px } .takeQuestionDiv + H3 { PADDING-LEFT: 28px } #assessmentGradeForm #dataCollectionContainer { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .contentList > LI { MIN-HEIGHT: 50px } .buildList > LI { MIN-HEIGHT: 50px } .contentListPlain > LI { MIN-HEIGHT: 50px } .announcementList > LI { MIN-HEIGHT: 50px } .contentPageItem { MIN-HEIGHT: 50px } .liItem:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList > LI:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList LI:first-child:hover { BORDER-TOP-COLOR: #666 } .contentList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .gradingList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .liItem A[onclick*='toggleDetails'] { POSITION: relative; VISIBILITY: hidden; TOP: -6px; RIGHT: -19px } .liItem:hover A[onclick*='toggleDetails'] { VISIBILITY: visible } .liItem A[onclick*='toggleDetails'] IMG { VISIBILITY: hidden } .liItem A[title*='Hide'] { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 0px 0px } .liItem A[title*='Show'] { BACKGROUND: url(images/portlet_expand_alt_rev.png) no-repeat 0px 0px } .contentListPlain .item_icon { DISPLAY: none } .item { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; CURSOR: move; PADDING-TOP: 0px } .contentList .item { PADDING-BOTTOM: 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .gradingList .item { PADDING-RIGHT: 120px } .announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .announcementList-read .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } #announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .item:hover { CURSOR: move } .item:focus { CURSOR: move } .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .announcementList-read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .contentList-slim .read .item { PADDING-LEFT: 48px } .read .item:hover { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .read .item:focus { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .tab-groups H3.item { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 8px; MARGIN: 0px 11em 8px -12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tab-groups H3.item .reorder + SPAN { FONT-STYLE: italic; MARGIN: 0px 4px 0px 0px; FONT-FAMILY: Georgia; COLOR: #999; FONT-SIZE: 90%; FONT-WEIGHT: normal } .item_icon { POSITION: absolute; MARGIN: 0px; TOP: 12px; LEFT: 24px } .read .item_icon { MARGIN: 0px; LEFT: 18px } .item H3 { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item .contextMenuContainer { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item H3 + .contextMenuContainer { POSITION: relative; TOP: 2px } .tab-groups .item .contextMenuContainer { FLOAT: none } .item INPUT[type=checkbox] { MARGIN: 2px 6px 0px -6px; FLOAT: left } .iconsOnly { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 24px auto; WIDTH: 80% } .iconsOnly LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 0px; FLOAT: left !important; PADDING-TOP: 0px } .iconsOnly > LI:first-child { BORDER-TOP-COLOR: #ccc } .iconsOnly .read { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconsOnly .item_icon { PADDING-BOTTOM: 0px; MIN-HEIGHT: 50px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 12px; LEFT: auto } .iconsOnly .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MIN-HEIGHT: 3em; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .iconsOnly .read .item { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .iconsOnly .item H3 { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly .item .contextMenuContainer { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly LI:hover .item_icon { BACKGROUND: #ededed } .iconsOnly LI:hover .item { BACKGROUND: #ededed } .iconsOnly LI:focus .item_icon { BACKGROUND: #ededed } .iconsOnly LI:focus .item { BACKGROUND: #ededed } .iconsOnly .read .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .read .item_icon { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read:hover .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:hover .item { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item { BACKGROUND: none transparent scroll repeat 0% 0% } .buildList LI INPUT { MARGIN: 2px 8px; FLOAT: left } .buildList INPUT.browse { MARGIN: 0px 0px 6px } .buildList INPUT.genericButton { MARGIN: 0px 0px 6px } .buildList INPUT[type=button] { MARGIN: 0px 0px 6px } .contentListRight { POSITION: absolute; RIGHT: 6px; FONT-WEIGHT: normal; LEFT: auto } .pagedContentListRight { TOP: 4px } .contentListRightOffset { MARGIN-RIGHT: 12em } .contentList .details { PADDING-LEFT: 60px } .contentListPlain .contentListRight + .details { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; PADDING-LEFT: 28px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } .announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } #announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } .contentList-slim .read .details { MARGIN-LEFT: 48px } .staffInfoList .details { MARGIN-RIGHT: 160px } .staffInfoList .hasPhoto .details { MIN-HEIGHT: 135px } .details > P { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .details .note { FONT-WEIGHT: bold } .details > P.important { PADDING-BOTTOM: 0px; MARGIN: 3px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .details > P.important SPAN { COLOR: #888; FONT-WEIGHT: normal } .itemDetails { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .itemDetails P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .announcementInfo P SPAN { COLOR: #999 } .announcementInfo SPAN { COLOR: #999 } .itemDetails SPAN { COLOR: #999 } .announcementInfo P SPAN SPAN { FONT-SIZE: 95% !important } .noItems { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } .additional + P .warnFont { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } #listContainer .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .additional + P .warnFont { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { TEXT-ALIGN: center; PADDING-TOP: 100px } .hierarchy-page .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { MARGIN: 0px auto; DISPLAY: block } .additional + P .warnFont { DISPLAY: block; PADDING-TOP: 100px } .details .attachments { WORD-WRAP: break-word; MARGIN-BOTTOM: 9px; WORD-BREAK: normal } .buildList > LI.separator { Z-INDEX: 0; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; MIN-HEIGHT: 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #ededed; TOP: 0px; PADDING-TOP: 14px; LEFT: 0px } .separator H3.item { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .external-breadcrumbs .receipt { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .separator .line { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: relative; MARGIN: 0px 24px 0px 30px; TOP: 6px; LEFT: 0px } .separator .text { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .external-breadcrumbs .receipt { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .buildList .detailList .hidden { DISPLAY: none } .buildList .detailList .tagContainer { POSITION: relative } .buildList .detailList .tagContainer .hidden { DISPLAY: none } .buildList .detailList .tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer .newTagForm { BORDER-LEFT: #999 1px dotted; MARGIN-LEFT: 6px } .tagContainer .newTagForm LABEL { PADDING-LEFT: 6px } .currentTags { Z-INDEX: 100; POSITION: absolute; LINE-HEIGHT: 1.8; WIDTH: 16em; ZOOM: 1; DISPLAY: none; OVERFLOW: hidden; TOP: 1.2em; RIGHT: 0px } .currentTags SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 18px } .currentTags A { FONT-WEIGHT: bold } .currentTags A.closeCloud { POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 1px; LINE-HEIGHT: 1; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; TOP: 0px; PADDING-TOP: 0px; LEFT: 0px } .auto_complete { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; WIDTH: 12em; BACKGROUND: #e2eefe; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid } .auto_complete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .auto_complete UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3%; WIDTH: 96%; PADDING-RIGHT: 1%; OVERFLOW: hidden; CURSOR: pointer; PADDING-TOP: 2px } .auto_complete UL LI.selected { BACKGROUND-COLOR: #fff } .auto_complete UL STRONG.highlight { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .freq1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 90%; PADDING-TOP: 0px } .freq2 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 105%; PADDING-TOP: 0px } .freq3 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 120%; PADDING-TOP: 0px } .freq4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 135%; PADDING-TOP: 0px } .freq5 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 150%; PADDING-TOP: 0px } .freq6 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 165%; PADDING-TOP: 0px } .freq1:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq2:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq3:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq4:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq5:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq6:hover { BACKGROUND: white; TEXT-DECORATION: none } .currentTags A.tagDisabled { FILTER: alpha(opacity=70); FONT-WEIGHT: normal; TEXT-DECORATION: none; opacity: .7 } .currentTags A.tagDisabled:hover { BACKGROUND: none transparent scroll repeat 0% 0% } .tab-groups .tab-group-label { FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #999 } .subList { MARGIN: 3px 0px 6px } .subList-reorder { MARGIN: 3px 0px 6px } .subList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .buildList .detailList { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .subList-reorder LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 6px } .subList-reorder LI:hover { BORDER-BOTTOM-COLOR: #bbb !important; BORDER-TOP-COLOR: #bbb !important; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #bbb !important; BORDER-LEFT-COLOR: #bbb !important } .subList LI A IMG { VERTICAL-ALIGN: middle } .subList-reorder LI A IMG { VERTICAL-ALIGN: middle } .subList LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList-reorder LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList LI P { VISIBILITY: hidden } .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .buildList .detailList LI .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder .itemDetails { DISPLAY: none } .subList-reorder .details { DISPLAY: none } .subList .details { DISPLAY: none } .itemDetails + .details { OVERFLOW: visible; MARGIN-RIGHT: 13em } .subList LI P SPAN { FONT-WEIGHT: bold } .subListArtifact { CLEAR: both } .detailList .subListArtifact { CLEAR: both } .subListArtifact LI { POSITION: static } .detailList .subListArtifact LI { POSITION: static } .detailList .subListArtifact { ZOOM: 1 } .detailList .subListArtifact LI { ZOOM: 1 } .detailList .subListArtifact LI A { ZOOM: 1 } .buildList .detailList { MARGIN: 0px 0px 0.6em 0.7em } .buildList .detailList .subList { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.buildList UL.detailList OL.subList { LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: decimal } UL.buildList UL.detailList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 0.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: table-row; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } UL.buildList UL.detailList LI SPAN { WIDTH: 135px; DISPLAY: block; FLOAT: left; FONT-WEIGHT: bold } UL.buildList UL LI > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; WIDTH: 79%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: 135px; PADDING-TOP: 0px } UL.buildList UL LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } UL.noimg LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } .buildList .pageBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } .buildList .sectionBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } DIV.itemHeaderControl { POSITION: absolute; TOP: 9px; RIGHT: 14.5em } DIV.itemHeaderControl A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.cartMode { PADDING-BOTTOM: 49px } .addedRow { COLOR: #999 } TABLE.sortable TBODY TR.addedRow TH LABEL A { COLOR: #999 } .addedRow TD A { COLOR: #999 } .addedRow { } .addedRow IMG { FILTER: alpha(opacity=50); opacity: .5 } TABLE#datatable2 TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 THEAD TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .itemSelector { MARGIN: 0px auto; WIDTH: 20px; HEIGHT: 20px } .itemSelector INPUT { FILTER: alpha(opacity=0); opacity: 0 } .available { BACKGROUND: url(../../../images/ci/ng/available_ti.png) no-repeat 0px 0px } .inprogress { BACKGROUND: url(../../../images/ci/ng/progress.png) red no-repeat 0px 0px } .remove { BACKGROUND: url(../../../images/ci/ng/remove_ti.png) no-repeat 0px 0px } .itemTray { Z-INDEX: 10000; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 18px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .picker .itemTray { RIGHT: 12px; LEFT: 12px } DIV.itemTrayContentPane { LEFT: 200px } DIV.itemTrayContentPaneWide { LEFT: 0px } .itemTray H2 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H3 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H2 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H3 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H2 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H3 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H2 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray H3 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray DIV.noItems { TEXT-ALIGN: center; COLOR: #777 } .itemTray #cartList { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .itemTray #selectedItemsWrapper { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #777; PADDING-TOP: 4px } .itemTray .cartTableWrapper { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; OVERFLOW-Y: auto; BACKGROUND: #fff; MAX-HEIGHT: 130px; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .sideTOC .cartTableWrapper { OVERFLOW: auto } #count { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .itemTray #numberOfElements { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #progress { Z-INDEX: 300; POSITION: absolute; MARGIN: 300px 50%; WIDTH: 100px; DISPLAY: none } #progress DIV { MARGIN-LEFT: -100% } #cartSubmit { Z-INDEX: 200 } #cartList FIELDSET { PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #f6f6f6; PADDING-TOP: 3px } #cartList FIELDSET UL LI INPUT[type=text] { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 2.3em; PADDING-RIGHT: 0px; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 0px } .itemGallery { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .itemGallery > LI { TEXT-ALIGN: center; MARGIN: 5px 5px 20px; WIDTH: 1.2em; ZOOM: 1; VERTICAL-ALIGN: top; PADDING-TOP: 0.06em; _height: 130px } .itemGallery .stackFix { WIDTH: 100%; HEIGHT: auto } .itemIconHolder { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px auto 0.05em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 1em; PADDING-TOP: 0px } .itemIconHolder A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; ZOOM: 1; DISPLAY: block; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .itemIconHolder A:hover { BORDER-BOTTOM-COLOR: #777; BORDER-TOP-COLOR: #777; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777 } .itemIconWrapper { BORDER-BOTTOM: #f1f1f1 0.02em solid; POSITION: absolute; BORDER-LEFT: #f1f1f1 0.02em solid; MARGIN: 0px 50%; WIDTH: auto; BOTTOM: 0px; BORDER-TOP: #f1f1f1 0.02em solid; BORDER-RIGHT: #f1f1f1 0.02em solid } .x-small LI { WIDTH: 1.8em; FONT-SIZE: 70px } .small LI { FONT-SIZE: 100px } .normal LI { FONT-SIZE: 140px } .large LI { FONT-SIZE: 180px } .x-large LI { FONT-SIZE: 220px } .u_resetFont-px { FONT-SIZE: 12px } .itemIconLink-vertical A { WIDTH: 0.78em; HEIGHT: 0.9em } .itemIconLink-square A { WIDTH: 0.78em; HEIGHT: 0.78em } .itemIconLink-horizontal A { WIDTH: 1em; HEIGHT: 0.78em } .itemIconLink-vertical IMG { WIDTH: 0.8em; HEIGHT: 0.9em; VERTICAL-ALIGN: top } .itemIconLink-square IMG { WIDTH: 0.8em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-horizontal IMG { WIDTH: 1em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-vertical .itemIconWrapper { LEFT: -0.39em } .itemIconLink-square .itemIconWrapper { LEFT: -0.39em } .itemIconLink-horizontal .itemIconWrapper { LEFT: -0.5em } .itemInfo { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-SIZE: 12px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.2em } .itemInfo LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; LINE-HEIGHT: 1.25em; MARGIN: 0px; WIDTH: 100%; FONT-SIZE: 95%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .itemInfo LI SPAN { VERTICAL-ALIGN: top } .itemInfo LI .label { TEXT-ALIGN: right } .itemInfo .cmimg { WIDTH: 18px } .itemInfo .cmimg IMG { WIDTH: 18px } .itemInfo .title { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .itemInfo INPUT[type='text'] { WIDTH: 100% } .itemInfo .high { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; BACKGROUND: #fff1c5; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .lb-content .itemInfo { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 3px } .lb-content .itemInfo LI { LINE-HEIGHT: 1.45em } .lb-content .itemInfo .title { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .iconGallery > LI { MARGIN: 5px 5px 12px; WIDTH: 75px } .iconGallery .itemIconHolder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; HEIGHT: 60px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemIconHolder A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemTitle { COLOR: #666; FONT-SIZE: 85% } .iconGallery .itemIconWrapper { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: auto; PADDING-RIGHT: 4px; BACKGROUND: #fff; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px; LEFT: -30px } .sideTOC_panelMin .container { POSITION: static !important } .sideTOC_panel .container { POSITION: static !important } .sideTOC_panelMax .container { POSITION: static !important } .tocWrapper { Z-INDEX: 200; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 0px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .tocHidden { TOP: -10000px !important } .tocHead { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #333; PADDING-TOP: 10px } .tocHead H2 { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .tocActions { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .sideTOC H2 { FLOAT: none !important; FONT-SIZE: 110%; text-shadow: 0 1px 0 #f0f0f0 } .tocActions { WHITE-SPACE: nowrap } .tocActions A { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions SPAN { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions > IMG { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .actionBar .tocNavText { PADDING-BOTTOM: 13px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; COLOR: #eee; PADDING-TOP: 13px } .actionBar .tocNavText + A { MARGIN-RIGHT: 12px } .actionBar .tocNavText + IMG { MARGIN-RIGHT: 12px } .tocActions SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .tocTreeWrapper { PADDING-BOTTOM: 0px; OVERFLOW-Y: auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .sideTOC .tocTreeWrapper { OVERFLOW: auto } UL#tocTree LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL#tocTree A.itemActive { FONT-WEIGHT: bold; TEXT-DECORATION: none } UL#tocTree SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; COLOR: #555; PADDING-TOP: 0px } .treeNodeIcon { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .sideTOC { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 200px; BOTTOM: auto; PADDING-RIGHT: 0px; BACKGROUND: #ddd; BORDER-TOP: #aaa 1px solid; TOP: 0px; RIGHT: auto; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -2px 0 2px rgba(0, 0, 0, .2) inset, 0px 3px 2px #ddd inset, 0px -3px 2px #ddd inset; -webkit-box-shadow: none; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: none } .sideTOCMinimize { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 9px !important; BOTTOM: auto; PADDING-RIGHT: 0px; BORDER-TOP: medium none; TOP: 0px; RIGHT: auto; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } .sideTOCMinimize .tocActions { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 1px; LEFT: -24px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .sideTOCMinimize .tocActions A { MARGIN: -1px 0px 0px; DISPLAY: block } .tocBottom_pullExpanded { LEFT: 228px } .tocBottom_pullCollapsed { LEFT: 18px } .tocSide_pullExpanded { TOP: 4px; LEFT: 222px } .tocSide_pullCollapsed { LEFT: 13px } .sideTOC_panel { PADDING-LEFT: 201px } .sideTOC_panelMin { PADDING-LEFT: 21px } .sideTOC_panelMax { PADDING-LEFT: 351px } .tocBottom_min { PADDING-BOTTOM: 30px } .tocBottom_max { PADDING-BOTTOM: 330px } .tocBottom_open { PADDING-BOTTOM: 160px } .tocBottom_open .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_max .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_min .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panel .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMax .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMin .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .localViewToggle { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .localViewToggle UL { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .localViewToggle UL LI { FLOAT: right } .localViewToggle UL LI.active { POSITION: relative } .localViewToggle A { PADDING-BOTTOM: 7px; TEXT-TRANSFORM: inherit; MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; DISPLAY: block; FONT-SIZE: 90%; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .localViewToggle A:hover { TEXT-DECORATION: underline } .localViewToggle .active A:hover { TEXT-DECORATION: none } .localViewToggle A.active { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } DIV.localViewToggle H2 { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } .localViewToggle A.active:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } DIV.localViewToggle H2:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .localViewToggle .separator { BORDER-LEFT: #d7bb66 1px dotted; PADDING-LEFT: 6px; MARGIN-LEFT: 6px } .localViewToggle A.miniComboButton { BORDER-BOTTOM: #d7bb66 1px solid; BORDER-LEFT: #d7bb66 1px solid; PADDING-RIGHT: 16px; BACKGROUND: url(images/controls.png) #f5e7bd no-repeat -1px -500px; COLOR: #444; BORDER-TOP: #d7bb66 1px solid; BORDER-RIGHT: #d7bb66 1px solid; TEXT-DECORATION: none !important } .containerTabs { MARGIN: 6px 24px 0px; FONT-SIZE: 100% } .containerTabs LI { POSITION: relative; FLOAT: left } .containerTabs LI A { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI H3 { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs LI H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs .active A { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:hover { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:focus { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active H3 { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .active H3:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .tabhead H3 { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 18px; COLOR: #555; PADDING-TOP: 9px } .collapseTabs .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #d1eaef } .collapseTabs .containerTabs .active A:before { CONTENT: none } .portlet .containerTabs { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 8px } .portlet .containerTabs LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .containerTabs LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } .portlet .containerTabs .active A { MARGIN: 0px } .collapseTabs .containerTabs { MARGIN: 0px } .portlet .containerTabs .active A:before { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:after { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:before { BORDER-BOTTOM-COLOR: #ddd } .portlet .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #fff4bf; BOTTOM: -1px } .mapTabs { POSITION: relative; MARGIN: 20px -30px 0px; BACKGROUND: #d1eaef; CLEAR: both; BORDER-TOP: #aaa 1px solid; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .lesson-plan-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { BORDER-BOTTOM: #bbb 1px solid } .evidence-page .mapTabs LI:before { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:after { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:before { Z-INDEX: 100; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #bbb 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 1px } .evidence-page .mapTabs LI.active + LI:after { BORDER-LEFT-COLOR: #eaeaea } .evidence-page .mapTabs LI:first-child:before { DISPLAY: none } .evidence-page .mapTabs LI:first-child:after { DISPLAY: none } .evidence-page .mapTabs LI A { PADDING-LEFT: 30px } .evidence-page .mapTabs LI.active H3 { PADDING-LEFT: 30px } .mapTabs UL { MARGIN-TOP: 0px; MARGIN-LEFT: 0px } DIV.mapTabs UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mapTabs UL LI.active H3 { POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; BACKGROUND: #eaeaea; FONT-SIZE: 100%; PADDING-TOP: 14px } .mapTabs UL LI.active H3:before { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #eaeaea; BOTTOM: -1px } .mapTabs UL LI.active:first-child H3:after { MARGIN-LEFT: 0px } .mapTabs UL LI.active:first-child H3:before { MARGIN-LEFT: 0px } .lesson-plan-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .hierarchy-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .lesson-plan-page .mapTabs UL LI.active H3:before { DISPLAY: none } .hierarchy-page .mapTabs UL LI.active H3:before { DISPLAY: none } .evidence-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #fff } .mapTabs UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; COLOR: #01869e; FONT-SIZE: 100%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .mapTabs UL LI A:hover { TEXT-DECORATION: underline } .mapTabs UL LI SPAN:hover { BORDER-BOTTOM-STYLE: solid } .mapTabs A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs LI:first-child A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 54px; BACKGROUND-POSITION: 30px 50% } .mapTabs UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI:first-child H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI DIV { PADDING-BOTTOM: 7px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: none; PADDING-TOP: 7px } .mapTabs UL LI.saveTab A { DISPLAY: none } UL.containerTabs LI.saveTab IMG { DISPLAY: none } .mapTabs UL LI.saveFadeIn { FILTER: alpha(opacity=0); opacity: 0 } .mapTabs UL LI.saveTab DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/tab_receipt_back.gif) #44b10e repeat-x center bottom; COLOR: white; FONT-WEIGHT: bold; PADDING-TOP: 5px } DIV.mapHelp { PADDING-BOTTOM: 0px; MARGIN: -1px 0px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff1c5; PADDING-TOP: 4px } UL.setStatus { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 3px; LIST-STYLE-TYPE: none; MARGIN: 15px 0px 9px 30px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #eee 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 3px } UL.setStatus LI { MARGIN: 0px 6px 0px 0px; FONT-SIZE: 95% } UL.setStatus LI INPUT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.setStatus LI LABEL { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 1px 0px } UL.setStatus LI LABEL.complete { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_complete.gif) no-repeat 1px 0px } FORM.mapCanvasForm DIV.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } FORM.mapCanvasForm H3.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } .mapTabs .containerTabs { BORDER-BOTTOM: 0px } #mapCanvasForm { MARGIN: 0px -30px } #mapCanvasForm #containerDiv { MARGIN: 20px 0px } .evidence-page .infoListWrapper H3 A.itemHead { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .infoListWrapper H3 A.itemHeadOpen { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .leftColumn-narrow { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f9f9f9; MARGIN: 0px; PADDING-LEFT: 6px; WIDTH: 26%; PADDING-RIGHT: 6px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; border-radius: 3px 3px 3px 3px } .evidence-page .leftColumn-wide { WIDTH: 69% } .sessionBox { WIDTH: 95% } .sessionBox .key-valueTable { } .sessionBox .key-valueTable TBODY TD { PADDING-RIGHT: 40px } .sessionBox .key-valueTable TBODY TH { PADDING-RIGHT: 40px } .evidence-page .criteriaSummary { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; MARGIN: 0px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 12px } .evidence-page .paletteItems LI { MARGIN-LEFT: 0px } .paneTabs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: -12px 0px 12px; ZOOM: 1; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .subtabs-framed .paneTabs { -moz-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -webkit-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; border-radius: 0 } .paneTabs UL { CLEAR: both } .paneTabs UL LI { Z-INDEX: 200; POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs .active { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs A { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 12px } .paneTabs UL LI:first-child A { BORDER-LEFT: 0px } .paneTabs A:hover { TEXT-DECORATION: underline } .paneTabs .active A:hover { TEXT-DECORATION: none } .paneTabs .active A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:focus { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active H3 { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:after { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #ccc 8px solid; BOTTOM: 0px } .paneTabs .active A:after { BOTTOM: -1px } .paneTabs .activepersonal A { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .activepersonal A:hover { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .personal A { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dedede; TEXT-DECORATION: none; PADDING-TOP: 3px } .paneTabs .external A { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #dedede no-repeat 2px center } .paneTabs .external A:hover { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #fff1c5 no-repeat 2px center } .paneTabs .activepersonal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs .personal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs A.paneTabOptions { DISPLAY: none } .paneTabs .activepersonal:hover A.paneTabOptions { FILTER: alpha(opacity=100); opacity: 1 } .paneTabs A.hiddenTabsLink { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center 6px } .paneTabs A.hiddenTabsLink IMG { FILTER: alpha(opacity=0); WIDTH: 2px; HEIGHT: 2px; opacity: 0 } .panelTabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .panelTabs LI { BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FLOAT: right; TOP: 2px !important; RIGHT: -3px; PADDING-TOP: 0px !important } .panelTabs LI.active { Z-INDEX: 2 } .panelTabs LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI.active A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI A:hover { BACKGROUND-COLOR: #f6f6f6 } .panelTabs LI.active A { BORDER-BOTTOM: 0px; COLOR: #333; FONT-WEIGHT: bold } .panelTabs LI.active A.preview { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 2px solid; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .panelTabs LI.active A.edit { BORDER-BOTTOM: 0px; MARGIN: 0px } .collapseTabs { MARGIN-BOTTOM: 12px } .collapseTabsData { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; BACKGROUND: #d1eaef; PADDING-TOP: 12px; -moz-border-radius: 3px } .containerTabsCollapsed { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .collapseTabs LI A { TEXT-DECORATION: underline } .collapseTabs LI.active { Z-INDEX: 1000 } .sequenceMapHead { MARGIN: 6px 0px } .sequenceMapHead H3 { MARGIN: 12px 0px 6px } .sequenceMapHead P { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 0px } DIV.sequenceMapHead DIV.actionBar { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #fff7de; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.searchResultList-sortOptions { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: right; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; MIN-HEIGHT: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 15px; PADDING-TOP: 10px } DIV.searchResultList-sortOptionsCount { WIDTH: auto; FLOAT: left } DIV.dropzone { BORDER-BOTTOM: #aaa 2px dashed; BORDER-LEFT: #aaa 2px dashed; BORDER-TOP: #aaa 2px dashed; BORDER-RIGHT: #aaa 2px dashed; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -moz-border-radius: 3px; -webkit-border-radius: 3px } .container DIV.dropzone { TOP: 3px !important } .modalOverlay { Z-INDEX: 90; POSITION: fixed; FILTER: alpha(opacity=1); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .01 } .cmdiv { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .menumini { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.quickAddPal { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.keyboardAccess { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .nav .sub UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .gb_currView.nav .sub > UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .menumini UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .keyboardAccess { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } SPAN.currentTags { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea-slim { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .previewArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .jumptopage { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .bcContent .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI IMG + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } DIV.treeContainer UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #learningUnitToc UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #loginLang UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .actionBar .mainButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .secondaryButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBarMicro .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton:first-child .flyout { MARGIN: 0px 0px 0px -2px } DIV.calPicker.quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI IMG + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } DIV.treeContainer UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } #learningUnitToc UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.nestedList { -moz-box-shadow: none; -webkit-box-shadow: none } .liveArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } .previewArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } #addFolderForm { MARGIN: 0px -30px } UL.tree LI A + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI IMG + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } DIV.treeContainer UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #learningUnitToc UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .builderItem .liveArea { Z-INDEX: 100; POSITION: absolute; TOP: 12px; LEFT: 22px } .previewArea { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; MARGIN-TOP: 0px; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .jumptopage { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 8px } .jumptopage LABEL { FONT-SIZE: 90% } .liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.secondaryButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { OVERFLOW: hidden } .actionBar UL LI.secondaryButton A.liveAreaTab { OVERFLOW: hidden } .liveArea-slim { PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 3px } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .columnActions .nav .sub UL { MARGIN-TOP: 0px } .nav .sub UL { POSITION: absolute; DISPLAY: none } .nav .sub .flyout { POSITION: absolute; DISPLAY: none } .nav .sub UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .nav .sub UL UL { DISPLAY: block } .nav .sub .flyout UL { DISPLAY: block } .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .nav .sub:hover .flyout { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { TOP: 18px } .rumble_top .nav .sub:hover UL { TOP: 18px } .rumble .nav .sub:hover UL { TOP: 18px } .quickAddPal { WIDTH: auto } .quickAddColor { WIDTH: 311px } .quickAddColor A.genericButton { MARGIN: 2px 0px; FLOAT: left } .cmdiv { Z-INDEX: 1150 !important; BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .cmdiv UL { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; WIDTH: 180px; PADDING-RIGHT: 4px; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 3px } .cmdiv UL:first-child { BORDER-TOP: medium none } .menumini UL:first-child { BORDER-TOP: medium none } .cmdiv UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .menumini UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .nav .sub UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .menumini A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } #loginLang UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: auto; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .nav .sub UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .nav LI.sub UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .actionBarMicro .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .actionBarMicro .nav LI.sub UL LI A:focus { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:focus { BACKGROUND-IMAGE: none } .nav LI.sub UL LI A:focus { BACKGROUND-COLOR: #fff !important } .cmdiv A:focus { BACKGROUND-COLOR: #fff !important } .menumini A:focus { BACKGROUND-COLOR: #fff !important } .nav .sub UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .paneTabs .nav .sub UL LI A { TEXT-ALIGN: left } .timediv UL LI A:hover { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { BACKGROUND-COLOR: #369; COLOR: #444 } .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; LEFT: 0px } .topTabs-compact .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; RIGHT: 0px; LEFT: auto } .cmdiv LI.contextmenubar_top { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .menumini LI.contextmenubar { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-border-radius: 0; -webkit-border-radius: 0 } .quickAddPal H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .keyboardAccess H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .quickAddPalHeader { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .comText .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .e_expandArea .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess P.paletteHelp { BORDER-BOTTOM: #fc0 1px solid; BORDER-LEFT: #fc0 1px solid; PADDING-BOTTOM: 3px; MARGIN: 6px 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; WHITE-SPACE: normal; BACKGROUND: #fff1c5; FONT-SIZE: 90%; BORDER-TOP: #fc0 1px solid; BORDER-RIGHT: #fc0 1px solid; PADDING-TOP: 3px } .bcMenuDiv-1 { WIDTH: 190px } .bcMenuDiv-2 { WIDTH: 380px } .bcMenuDiv-3 { WIDTH: 570px } .bcMenuDiv-4 { WIDTH: 760px } .bcMenuDiv-5 { WIDTH: 950px } .flyout { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 12px !important; PADDING-RIGHT: 12px !important; PADDING-TOP: 9px !important } .nav .sub .flyout DIV { POSITION: static; PADDING-BOTTOM: 6px; MARGIN: 0px; MIN-HEIGHT: 1px; FLOAT: left } .flyout H3 { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 95% Georgia, serif; LETTER-SPACING: 2px; PADDING-TOP: 0px } .flyout H3 .line { HEIGHT: 1px; BORDER-TOP: #ccc 1px solid } .flyout H3 .text { BACKGROUND: #d1eaef } .nav .sub .flyout UL { Z-INDEX: 1000; BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted; BORDER-RIGHT: 0px; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .nav .sub .flyout DIV H3 + UL { BORDER-TOP: 0px } .nav .sub .flyout DIV UL:first-child { BORDER-TOP: 0px } .nav .sub .flyout A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .quickAddPal .colorlist { MARGIN: 6px 0px 9px 6px; WIDTH: 288px } .quickAddPal .stepcontent .colorlist LI { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 14px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 14px; OVERFLOW: hidden; BORDER-TOP: #333 1px solid; CURSOR: pointer; BORDER-RIGHT: #333 1px solid; PADDING-TOP: 0px } .quickAddPal .colorlist LI A { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:link { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: 12px; HEIGHT: 12px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .quickAddPal .colorlist LI A:active { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A:focus { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:active { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:focus { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorPreview { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: white; PADDING-TOP: 3px } .quickAddPal .colorPreview IMG { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #444 1px solid; MARGIN: 3px; WIDTH: 42px; DISPLAY: block; BACKGROUND: black; FLOAT: left; HEIGHT: 42px; BORDER-TOP: #444 1px solid; BORDER-RIGHT: #444 1px solid } .quickAddPal .colorPreview DIV { WIDTH: 66%; FLOAT: left; MARGIN-LEFT: 3px } .quickAddPal .colorPreview SPAN { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 0px } SPAN.title_color_name { COLOR: #666 } .receipt { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .warning { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .inlineDialog { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .contentPaneWide.tabbedPane .receipt { Z-INDEX: 201; BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; PADDING-BOTTOM: 12px; MARGIN: -12px 0px 10px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .contentPane .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .contentPaneWide .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .container .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px; box-shadow: none } .receipt ~ #editmodeWrapper { Z-INDEX: 1; POSITION: relative } .receipt ~ .contentBox { Z-INDEX: 1; POSITION: relative } .sideTOC_panel .receipt ~ #editmodeWrapper { POSITION: static } .sideTOC_panel .receipt { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .tabbedPane .receipt A.close IMG { DISPLAY: none } .contentPane .receipt A.close IMG { DISPLAY: none } .contentPaneWide .receipt A.close IMG { DISPLAY: none } A.closeCopyright IMG { DISPLAY: none } .tabbedPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPaneWide .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .receipt A.close:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { } .receipt A.close:hover:before { COLOR: #fff } A.closeCopyright:hover:before { COLOR: #fff } .inlineDialog { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .inlineReceipt { POSITION: absolute; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .miniReceipt { Z-INDEX: 300; BORDER-BOTTOM: #bbb 1px solid; POSITION: absolute; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .bad { COLOR: #fff; FONT-WEIGHT: bold } .good { COLOR: #fff; FONT-WEIGHT: bold } .removing { COLOR: #fff; FONT-WEIGHT: bold } .adding { COLOR: #fff; FONT-WEIGHT: bold } .infoReceipt { COLOR: #fff; FONT-WEIGHT: bold } .brokenFileLink { COLOR: #fff; FONT-WEIGHT: bold } .portlet SPAN.warning.due { COLOR: #fff; FONT-WEIGHT: bold } .good A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .removing { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .brokenFileLink { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .portlet SPAN.warning.due { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .container .warningReceipt { PADDING-RIGHT: 24px } .warningReceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.areceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.close:before { } .contentPane .warningReceipt A.close { TOP: 5px; RIGHT: 5px } .warningReceipt A.close:hover:before { } .good { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .adding { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .infoReceipt { BORDER-BOTTOM-COLOR: #62758f; BORDER-TOP-COLOR: #62758f; BACKGROUND: #6d8aaf; BORDER-RIGHT-COLOR: #62758f; BORDER-LEFT-COLOR: #62758f } .attention { BORDER-BOTTOM-COLOR: #fc3; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #fc3; MARGIN: 0px 0px 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff4bf; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; BORDER-LEFT-WIDTH: 2px; FONT-WEIGHT: normal; PADDING-TOP: 4px } .removing { FONT-WEIGHT: normal } .adding { FONT-WEIGHT: normal } .brokenFileLink { FONT-WEIGHT: normal } .portlet SPAN.warning.due { FONT-WEIGHT: normal } .brokenFileLink { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet SPAN.warning.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .infoBox { BORDER-BOTTOM: #afdf61 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #afdf61 1px solid; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #afdf61 1px solid; BORDER-RIGHT: #afdf61 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .infoBox > .message { DISPLAY: block; MARGIN-BOTTOM: 4px } .info-ok { BORDER-BOTTOM-COLOR: #afdf61; BORDER-TOP-COLOR: #afdf61; BACKGROUND: #d9efa4; COLOR: #360; BORDER-RIGHT-COLOR: #afdf61; BORDER-LEFT-COLOR: #afdf61 } .nestedReceipt { Z-INDEX: 1001; PADDING-BOTTOM: 12px !important; MARGIN: 0px 20% 6px 0px; PADDING-LEFT: 12px !important; PADDING-RIGHT: 30px !important; PADDING-TOP: 6px !important } [id*='receipt_nested'].receipt { PADDING-RIGHT: 28px } .columnMsgWrapper { MARGIN-LEFT: 60% } .columnMsgWrapper .column-2 { MIN-HEIGHT: 1px } .smsIssue { POSITION: relative; MARGIN: 3px 3px 9px } .t2vIssue { POSITION: relative; MARGIN: 3px 3px 9px } .bubbleStem-bottom-center { BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: transparent 10px solid; WIDTH: 0px; BOTTOM: -12px; HEIGHT: 0px; MARGIN-LEFT: -8px; BORDER-TOP: #fc3 12px solid; BORDER-RIGHT: transparent 10px solid; LEFT: 50% } .nextStepsReceipt { BACKGROUND-IMAGE: url(images/reorder_bg.png); POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4; BACKGROUND-COLOR: #eee; MARGIN: 10px -30px -20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #545454; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3) } .nextStepsText { PADDING-BOTTOM: 18px; MARGIN: 0px 0px 0px 20px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fefefe; PADDING-TOP: 18px } .nextStepsText H5 { MIN-WIDTH: 6em; LINE-HEIGHT: 2em; DISPLAY: inline-block; COLOR: #545454; text-shadow: 1px 1px 1px #fff } .receiptCollapsed { POSITION: relative; FONT-SIZE: 90% } .external-breadcrumbs .receipt { BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; BORDER-TOP: 0px; TOP: -9px; BORDER-RIGHT: 0px; box-shadow: none } .stepcontent LI.fieldError { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; BACKGROUND: #fff1c5; PADDING-TOP: 2px } .stepcontent LI.fieldError .fieldErrorText { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { DISPLAY: inline; MARGIN-LEFT: 0px } .criteriaSummary { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px -28px 0px 0px; PADDING-LEFT: 12px; BACKGROUND: #f9f9f9 } #bb-question-discover H2 { FONT-SIZE: 110% } #filterContainer H2 { MARGIN-LEFT: 14px } #filterContainer .columnActions { MARGIN-LEFT: 14px } .criteriaSummary H3 { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .criteriaSummary .hidden { DISPLAY: none; VISIBILITY: hidden } .criteriaSummary UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .criteriaSummary UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FLOAT: left; FONT-SIZE: 90%; PADDING-TOP: 3px; border-radius: 12px } .criteriaSummary UL LI:first-child { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG { MARGIN: 0px; DISPLAY: block; FLOAT: left; COLOR: #aaa; FONT-WEIGHT: normal } .receipt-highlight { BACKGROUND: #fff4bf; box-shadow: 0 0 4px #fff } .receipt-default { BACKGROUND: none transparent scroll repeat 0% 0%; box-shadow: none } .criteriaSummary UL LI STRONG:before { POSITION: relative; LINE-HEIGHT: 1; COLOR: #aaa; FONT-SIZE: 120%; CONTENT: "+"; FONT-WEIGHT: bold; LEFT: -2px } .criteriaSummary UL LI SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI A { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI SPAN { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG + SPAN { MARGIN-LEFT: 3px } .criteriaSummary UL LI A { PADDING-RIGHT: 18px; BACKGROUND: url(../../../images/ci/icons/delete_li.gif) #eee no-repeat 96% 2px; TEXT-DECORATION: none } .search-element { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 18px; PADDING-LEFT: 9px; PADDING-RIGHT: 3px; BACKGROUND: #f9f9f9; PADDING-TOP: 18px } .search-element H2 { LINE-HEIGHT: 1; MARGIN: 0px; WIDTH: 0px; DISPLAY: inline-block; HEIGHT: 22px; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; OVERFLOW: hidden; FONT-WEIGHT: normal } .search-element H2:before { POSITION: relative; MARGIN: 0px 3px 6px 0px; FONT: 17px/1 "Utilicons"; COLOR: #aaa; VERTICAL-ALIGN: middle; CONTENT: "F"; TOP: 2px } .search-element INPUT[type='text'] { WIDTH: 60%; -moz-appearance: searchfield; -webkit-appearance: searchfield } .calPicker { Z-INDEX: 1500 !important } .calPicker .calHead { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .calPicker H3 { BORDER-BOTTOM: medium none; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 40px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .calPicker .previous { POSITION: absolute; TOP: 2px; LEFT: 2px } .calPicker .next { POSITION: absolute; TOP: 2px; RIGHT: 2px } .calPicker DIV.calFoot { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; CLEAR: both; PADDING-TOP: 6px } .calPicker A.contextmenubar { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .calPicker A.contextmenubar:hover { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .timediv { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .timediv UL { WIDTH: 8em; HEIGHT: 200px; OVERFLOW: auto } .timediv UL LI.contextmenubar_top { WIDTH: 114px; TOP: -18px } .timediv UL LI A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .csPicker { MIN-WIDTH: 300px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 12px; FONT-SIZE: 95%; PADDING-TOP: 0px } .csPicker .actionBar { FONT-SIZE: 110% } .csPicker .localViewToggle { FONT-SIZE: 110% } .csPicker .contentPaneWide { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .breadcrumbs { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .itemTray { Z-INDEX: 1000 } .csPicker .itemTray .taskbuttondiv { MARGIN: 0px; FONT-SIZE: 105% } .csPicker .itemTray H3 { FONT-SIZE: 115% } .csPicker #titleicon + H1 { MARGIN-TOP: 2px } .csPicker .itemTray #numberOfElements { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.lb-overlay { Z-INDEX: 1001; POSITION: fixed; BACKGROUND-COLOR: #000; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px } DIV.lb-wrapper { Z-INDEX: 1002; POSITION: fixed; OVERFLOW: hidden } DIV.lb-wrapper DIV.lb-header { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #dedede; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } DIV.lb-wrapper DIV.lb-header H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 15px; HEIGHT: 1.23em; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-header A { POSITION: absolute; DISPLAY: block; TOP: 10px; RIGHT: 10px } DIV.lb-wrapper DIV.lb-header A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; VERTICAL-ALIGN: top; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.lb-wrapper DIV.lb-content { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: auto; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-content DIV.lb-loading { BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) no-repeat center center } DIV.lb-wrapper DIV.topRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #lightbox DIV.bottomRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } DIV.lb-wrapper DIV.topRound B { DISPLAY: block; OVERFLOW: hidden } #lightbox DIV.bottomRound B { DISPLAY: block; OVERFLOW: hidden } DIV.lb-wrapper DIV.topRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } #lightbox DIV.bottomRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } #lightbox DIV.bottomRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightbox DIV.bottomRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightboxWrapper { Z-INDEX: 1001; POSITION: absolute; TOP: 0px; RIGHT: 0px; LEFT: 0px } #lightboxWrapper-inner { Z-INDEX: 1002; POSITION: relative; TEXT-ALIGN: center; WIDTH: 100%; TOP: 0px; LEFT: 0px } #lightbox { Z-INDEX: 1003; POSITION: relative; TEXT-ALIGN: left; MARGIN: 40px 0px 0px; DISPLAY: block; TOP: auto; LEFT: auto } .my-places-popup #lightbox { MARGIN: 0px } .my-places-popup #lightboxWrapper { POSITION: relative } #lightbox #lightboxContent { BORDER-BOTTOM: #333 2px solid; POSITION: relative; BORDER-LEFT: #333 2px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff !important; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP: #333 2px solid; BORDER-RIGHT: #333 2px solid; PADDING-TOP: 1px; -moz-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -moz-border-radius: 5px; -webkit-border-radius: 5px } .my-places-popup #lightbox #lightboxContent { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .lb-container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lb-content .container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lbAction { Z-INDEX: 1005; POSITION: absolute; TOP: 9px; RIGHT: 9px } #overlay { Z-INDEX: 1000; POSITION: fixed; FILTER: alpha(opacity=30); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .30 } .done#lightbox #lbLoadMessage { DISPLAY: none } .done#lightbox #lbContent { DISPLAY: block } .loading#lightbox #lbContent { DISPLAY: none } .loading#lightbox #lbLoadMessage { DISPLAY: block } .myPlacesContent { PADDING-BOTTOM: 16px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; HEIGHT: auto !important; MAX-HEIGHT: 500px !important; FONT-SIZE: 95%; OVERFLOW: auto; PADDING-TOP: 16px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .avatar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .myavatar { MARGIN-BOTTOM: 12px; MAX-HEIGHT: 150px; OVERFLOW: hidden } #lightbox .tallPara { PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 14px } #lightbox UL { MARGIN: 4px 0px 12px } #lightbox UL LI { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } #lightbox UL LI A:hover { TEXT-DECORATION: underline } DIV.lbContainer P.taskButtonsContent { MARGIN: 12px 0px 6px } .toBeRemoved { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .toBeRemoved > TD { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .unsavedItem { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD:first-child { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD { BACKGROUND-IMAGE: none } A.selectedItem { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } A.selectedItem:focus { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } TR.inEditMode-row { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TR.inEditMode-row TD { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 6px !important } #dataCollectionContainer { MARGIN: -20px -30px 0px } .popup #dataCollectionContainer { MARGIN: -12px -20px } DIV#dataCollectionContainer DIV.contentBlock { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-question-discover .inventoryListContainerDiv { PADDING-LEFT: 12px } .picker .inventoryListContainerDiv { PADDING-LEFT: 12px } .blogContainer .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV[id*='step'] { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } .submittitle { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #infoStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #taskStatusStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #linkedContentStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } DIV[id*='stepcontent'] { PADDING-BOTTOM: 0px; PADDING-LEFT: 48px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-TOP: 0px } .steptitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { PADDING-BOTTOM: 18px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .steptitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { MARGIN-RIGHT: 3px } #toolSettingsForm .steptitle SPAN { DISPLAY: none } #toolSettingsForm .stepcontent { PADDING-LEFT: 20px } #toolSettingsForm .steptitle { PADDING-LEFT: 9px } #toolSettingsForm .submittitle.steptitle { PADDING-LEFT: 27px } H3.noNumber { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 4px } .stepcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .stepcontent LI { PADDING-BOTTOM: 6px; MARGIN-BOTTOM: 6px } .stepcontent LI LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .stepcontent LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .stepcontent .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepcontent .stepHelp:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .stepcontent .fieldHelp { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 2px } A.browse + .fieldHelp { PADDING-TOP: 9px } .stepcontent .nonHelp { COLOR: #000; FONT-SIZE: 95% } .stepcontent .nestedList LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .nestedListSmall LI { FONT-SIZE: 90% } .nestedSubList { MARGIN: 6px 6px 6px 30px } .stepLite { PADDING-BOTTOM: 12px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 6px } .columnStep .column-3 { MIN-HEIGHT: 200px } .columnStep .column-3 TABLE.attachments { FONT-SIZE: 90% } .columnStep DIV H3 { MARGIN: 6px } .columnStep DIV DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } OL.nestedList LI DIV.imgLabel { WIDTH: auto } OL.nestedList LI DIV.imgLabel SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } OL.nestedList LI DIV.imgLabel SPAN.control { DISPLAY: inline } #title_color_value { PADDING-TOP: 6px } DIV.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.gb_gridCell_inner H3.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.field { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { WIDTH: 100% } DIV.label SPAN.contextMenuContainer { DISPLAY: inline } DIV.noLabelField BR { DISPLAY: none } SPAN.stepHelp BR { DISPLAY: block } SPAN.fieldHelp BR { DISPLAY: block } DIV.field OL P { PADDING-BOTTOM: 3px } DIV.noLabelField UL P { PADDING-BOTTOM: 3px } DIV.field EM { MARGIN-TOP: 5px; DISPLAY: inline-block; FONT: italic 100% Georgia, serif; COLOR: #888 } FIELDSET.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } DIV.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } FIELDSET.info DIV.label { COLOR: #666 } .reqfield { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 40px; PADDING-RIGHT: 0px; FONT: italic 105% Georgia, serif; FLOAT: left; COLOR: #777; PADDING-TOP: 24px } .reqfield:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .required > .label > LABEL:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .reqfield IMG { DISPLAY: none } .required > .label > LABEL IMG { DISPLAY: none } .requiredField { PADDING-BOTTOM: 6px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(../../../images/ci/icons/required.gif) no-repeat 0px center; PADDING-TOP: 6px } DIV.label IMG.indicator { POSITION: absolute; TOP: 0px; LEFT: -18px } .largeText DIV.label { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText DIV.field { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 75% !important; FONT-WEIGHT: normal } .field A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 95% } DIV.editBlock { FLOAT: left; MARGIN-RIGHT: 12px } .largeText DIV.field DIV.editBlock LABEL { FONT-SIZE: 80%; FONT-WEIGHT: normal } .largeText DIV.field DIV.exemptdiv LABEL { FONT-SIZE: 65% } .largeText TEXTAREA { FONT-SIZE: 80% } LI.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; PADDING-TOP: 3px; -moz-border-radius: 6px; -webkit-border-radius: 6px } .e_expandArea { MARGIN-TOP: 21px } #e_groups_menu { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #ceeaee; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .parent-child-listing { WIDTH: 50% } .parent-child-listing .stepHelp { MARGIN-LEFT: 24px } .parent-child-listing UL { BORDER-LEFT: #ccc 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 12px 10px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .parent-child-listing LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .stepcontent .hierarchy { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .stepcontent .hierarchy LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; PADDING-TOP: 0px } OL.hierarchy LI H5 { POSITION: relative; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 11em; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 8px } OL.hierarchy LI H5 SPAN { BORDER-BOTTOM: medium none; DISPLAY: inline; COLOR: #888; FONT-SIZE: 100% } OL.hierarchy LI H5 A { POSITION: absolute; FONT-SIZE: 90%; TOP: 9px; RIGHT: 0px; FONT-WEIGHT: normal } OL.hierarchy LI DIV { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 2px; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } OL.hierarchy LI DIV.gbData SPAN { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 2px } OL.hierarchy LI DIV.gbData SPAN:first-child { BORDER-LEFT: medium none; PADDING-LEFT: 0px; MARGIN-LEFT: 0px } OL.hierarchy LI DIV INPUT.points { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT.points { WIDTH: 2em } OL.hierarchy LI DIV INPUT.name { WIDTH: 16em } LI.parent { PADDING-BOTTOM: 0px !important } OL.hierarchy LI.parent OL LI H5 { BACKGROUND-IMAGE: none } .stepPanels { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .stepPanels LI { BORDER-BOTTOM: medium none } .panelTitle { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 4px 0px 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; CURSOR: pointer; PADDING-TOP: 3px } .mdHead A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { WIDTH: 100%; DISPLAY: block } .panelTitle .date { POSITION: absolute; COLOR: #666; FONT-SIZE: 95%; TOP: 2px; RIGHT: 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none } .panelTitle A SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 2px } .mdHead A SPAN.date { FONT-WEIGHT: normal } .mdList { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel P SPAN { COLOR: #666 } .mdList H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .mdList P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanelControls { FONT-SIZE: 90% } .contentAreaBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px 24px 24px; BACKGROUND: #fff; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .contentAreaBlock #step1 { BORDER-TOP: 0px } .taskbuttondiv { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .taskButtonsContent { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .okbutton { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .picker .taskbuttondiv { PADDING-BOTTOM: 9px; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .container .taskbuttondiv:first-child { MARGIN-TOP: 0px } DIV#dataCollectionContainer .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#dataCollectionContainer .reqfield + .taskbuttondiv { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#containerdiv .mapCanvasForm .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } #customizeDataCollection .taskbuttonhelp { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px } DIV#dataCollectionContainer .taskbuttonhelp + .taskbuttondiv { PADDING-BOTTOM: 18px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 0px } SPAN.stepTitleRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } SPAN.contentListRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } .taskButtonsContent { PADDING-BOTTOM: 0px; MARGIN: 24px -12px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 9px } P.okbutton INPUT { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 100%; PADDING-TOP: 1px } .taskbuttonhelp { PADDING-BOTTOM: 0px; FONT-STYLE: italic; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } #taskbuttondiv P { BORDER-BOTTOM: red 1px solid; TEXT-ALIGN: left; BORDER-LEFT: red 1px solid; FONT-STYLE: italic; MARGIN: 6px 0px; DISPLAY: block; FONT-SIZE: 90%; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .stepTitleRight { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; TOP: -2px; RIGHT: -2px; PADDING-TOP: 6px; LEFT: auto } LEGEND { POSITION: absolute; LINE-HEIGHT: 0; HEIGHT: 0px; TOP: -10000px } FIELDSET OL LI SPAN.tagContainer INPUT { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer A.browse { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.hidden { DISPLAY: none } .contentBlock OL LI SPAN.hidden { DISPLAY: none } .selectItems { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 639px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .selectItems SELECT { MARGIN: 6px 0px 0px; WIDTH: 300px; DISPLAY: block; MAX-WIDTH: 300px; HEIGHT: 115px; FONT-SIZE: 100% } #dataCollectionContainer .noLabelField > .selectItems { POSITION: relative; PADDING-BOTTOM: 15px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 15px } #dataCollectionContainer .noLabelField > .userRoleSelect:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems.userRoleSelect:before { LEFT: 358px } #dataCollectionContainer .noLabelField > .selectItems.cumulativeSelectItems:before { LEFT: 47% } .selectItems INPUT[type=button] { MARGIN: 6px 0px 0px } .selectItems INPUT[type=text] { MARGIN: 6px 0px; WIDTH: 300px; DISPLAY: block; FONT-SIZE: 100% } .selectArrows { POSITION: relative; MARGIN-TOP: 60px } .selectArrows A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectArrows BUTTON { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectItems H4 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px 56px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .userRoleSelect { WIDTH: auto } .userSelectedRoles { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 56px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .userSelectedRoles .selectArrows { POSITION: absolute; MARGIN: 0px; TOP: 28px; LEFT: 20px } .selectItems .available-roles H4 { MARGIN-LEFT: 0px } .selectItems .available-roles SELECT { HEIGHT: 200px } .multiSelect { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .multiSelect > DIV { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; WIDTH: 46%; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } .multiSelect SELECT { WIDTH: 100% } .multiSelect .selectArrows { TEXT-ALIGN: center; MARGIN: 40px 0px; WIDTH: 5% } .widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: 6px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } .widgetControls { FONT-SIZE: 90% } TABLE .widgetControls { FONT-SIZE: 90% } .widget .spellCheck { FLOAT: right } .widget .textBoxItem { FLOAT: right } DIV.liveArea FIELDSET.stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.liveArea FIELDSET.stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.liveArea FIELDSET.stepcontent TEXTAREA { WIDTH: 100% } DIV.liveArea FIELDSET.stepcontent SPAN.inlineHelp { DISPLAY: inline } .quickAddPal .stepcontent { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; PADDING-TOP: 3px } .quickAddPal .stepcontent LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .quickAddPal .stepcontent .label { WIDTH: 30%; PADDING-RIGHT: 2px; OVERFLOW: visible } .quickAddPal .stepcontent .field { WIDTH: 65% } .quickAddPal LI.fieldError .fieldErrorText { DISPLAY: block; COLOR: red; MARGIN-LEFT: 74px; FONT-SIZE: 85%; FONT-WEIGHT: normal } DIV.quickAddPal DIV.field INPUT[type=text] { WIDTH: 100% } DIV.quickAddPal DIV.field SELECT { WIDTH: 100% } DIV.quickAddPal DIV.field TEXTAREA { WIDTH: 100% } DIV.quickAddPal LI.stepHelp { WIDTH: auto } DIV.quickAddPal LI DIV SPAN { WIDTH: auto } DIV.field SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.field SPAN.control { DISPLAY: inline } DIV.quickAddPal DIV.field INPUT.datePickerInput { WIDTH: 8em } DIV.quickAddPal DIV.field INPUT.timePickerInput { WIDTH: 8em } .dtpickerEndDiv { PADDING-TOP: 10px } DIV#texteditor { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } DIV#texteditor TEXTAREA { WIDTH: 450px; DISPLAY: block; MARGIN-LEFT: 0px } DIV#texteditor A.textBoxItem { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 80%; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 2px } SELECT.survey_question { MAX-WIDTH: 100% } .htmlarea .toolbar DIV > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FLOAT: left; HEIGHT: 22px; PADDING-TOP: 0px } .htmlarea IFRAME { MIN-WIDTH: 300px !important } .htmlarea .toolbar A.wikiButton { WIDTH: auto !important } .htmlarea .toolbar A.wikiButton IMG { WIDTH: auto !important } .vtbe_footer { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .vtbe_footer SPAN { FONT-SIZE: 100% } .vtbe_footer INPUT[type=button] { FONT-SIZE: 95% } .vtbe_footer A { MARGIN: 0px 0px 0px 3px } .resize_handle { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BACKGROUND: url(images/controls.png) #ccc no-repeat 50% -1px; HEIGHT: 12px; BORDER-TOP: #ddd 1px solid; CURSOR: n-resize } .resize_handle:hover { BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #bbb; BORDER-TOP-COLOR: #ccc } .resize_handle IMG { WIDTH: 100%; HEIGHT: 8px } .tabGroupsPreview { MARGIN: -11px -12px 24px; FONT-SIZE: 100% } .previewContent { Z-INDEX: 1; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; BACKGROUND: url(images/backgrounds_h.png) #aaa repeat-x 0px -320px; PADDING-TOP: 14px } .previewContent IFRAME { WIDTH: 100%; HEIGHT: 300px } .previewContent .appTabs { TOP: -3px } .tabGroupsPreview TABLE DIV { DISPLAY: block } .previewOverlay { POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=30); TEXT-TRANSFORM: uppercase; WIDTH: 100%; LETTER-SPACING: 10px; COLOR: #555; FONT-SIZE: 300%; TOP: 130px; FONT-WEIGHT: bold } .tabGroupsPreview .previewOverlay { TOP: 40px } .previewOverlay SPAN { FILTER: alpha(opacity=30); PADDING-BOTTOM: 6px; BACKGROUND-COLOR: white; PADDING-LEFT: 24px; PADDING-RIGHT: 12px; PADDING-TOP: 6px; opacity: .30 } P.warning { PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #cf1d19; MARGIN: 12px 0px 24px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 9px } .warning { BACKGROUND: #a7d0df } DIV.tabPreview { Z-INDEX: 1; BORDER-BOTTOM: #cdcdcd 12px solid; POSITION: relative; BORDER-LEFT: #cdcdcd 12px solid; MARGIN: 0px 6px 6px; WIDTH: auto; BACKGROUND: #cdcdcd; BORDER-TOP: #cdcdcd 12px solid; BORDER-RIGHT: #cdcdcd 12px solid } DIV.tabPreview DIV.paneTabs { MARGIN-TOP: 12px } .buttonLibrary { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 207px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .buttonLibrary LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FLOAT: left; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .buttonLibrary LI A { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 3px } .buttonLibrary LI A.selected { FONT-WEIGHT: bold; TEXT-DECORATION: none } .buttonLibrary LI A:hover { TEXT-DECORATION: underline } DIV.menuStyleStep { MARGIN: 9px 40px 0px 0px; WIDTH: 212px; FLOAT: left } DIV.menuDefaultStyleStep { MARGIN: 9px auto; WIDTH: 212px } .schemeWrapper { MARGIN: 0px 12px 0px 0px; FLOAT: left } .buttonLibrary .schemeWrapper { PADDING-BOTTOM: 10px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #fff; FLOAT: none; PADDING-TOP: 10px; -moz-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); border-radius: 4px } .buttonLibrary .selected .schemeWrapper { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #bbb; PADDING-TOP: 10px } #selectedPalette .schemePreview { BORDER-BOTTOM: #bbb 10px solid; BORDER-LEFT: #bbb 10px solid; BORDER-TOP: #bbb 10px solid; BORDER-RIGHT: #bbb 10px solid; -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); border-radius: 4px } .schemeWrapper SPAN { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: italic 100% Georgia; PADDING-TOP: 6px } UL.buttonLibrary LI.selected { POSITION: absolute; TOP: 6px; LEFT: 0px } UL.buttonLibrary LI.selected A.selected { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A.selected SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .schemePreview { PADDING-BOTTOM: 0px; PADDING-LEFT: 16px; WIDTH: 160px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .modulePreview { BORDER-BOTTOM: 0px solid; POSITION: relative; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px !important; MARGIN: 6px 0px 0px auto; PADDING-LEFT: 0px !important; WIDTH: 140px; BOTTOM: 0px; PADDING-RIGHT: 0px !important; HEIGHT: 57px; FONT-SIZE: 85%; BORDER-TOP: 1px solid; RIGHT: 0px; BORDER-RIGHT: 0px solid; PADDING-TOP: 0px !important; LEFT: auto } .schemePreviewHead { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 6px !important } .modulePreviewHead { PADDING-BOTTOM: 4px !important; MARGIN: 0px; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-WEIGHT: bold; PADDING-TOP: 4px !important } .schemePreviewBody { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 3px } .modulePreviewBody { PADDING-BOTTOM: 3px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 4px !important } .moduleList { BORDER-TOP: #ccc 1px solid } .moduleItem { BORDER-BOTTOM: #ccc 1px solid } .module { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } .moduleHeading { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 10px } .module H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 110% } .moduleDescription { WIDTH: 90% } .more { DISPLAY: none } .moduleAction { MARGIN: 10px 0px } .moduleCategory { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .moduleCategory A { FONT-WEIGHT: bold } .moduleSample { PADDING-LEFT: 10px; DISPLAY: none } .expandedModule { BACKGROUND-COLOR: #efefef } .expandedModule .moduleDetails { WIDTH: 47% } .expandedModule .moduleSample { WIDTH: 47% } .expandedModule .more { DISPLAY: inline } .expandedModule .moduleSample { DISPLAY: block } .leftColumn-wide#moduleList .contentListPlain { PADDING-LEFT: 18px } .moduleListActionBar { PADDING-LEFT: 18px } #moduleList .contentListPlain > LI.expandedModule .moduleSample > DIV { MIN-HEIGHT: 50px !important; WORD-WRAP: normal } #moduleBody { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } #moduleBorder { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .portlet { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #efede3; MARGIN: 0px 10px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #444; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 0 2px 4px rgba(0, 0, 0, .05); border-radius: 3px } .containerPortal > DIV:first-child .portlet { MARGIN: 0px 10px 20px 0px } .reorderableModule:hover { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; -webkit-transition-property: border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border, background; -moz-transition-duration: 200ms; -moz-transition-timing-function: ease-in-out } .reorderableModule:hover H2 { COLOR: #000 } .module-dragstate { BORDER-BOTTOM-COLOR: #555; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: 2px; opacity: .9; -moz-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-transition-property: border-width, border-color, background, -webkit-box-shadow; -webkit-transition-duration: 50ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border-width, border-color, background, -moz-box-shadow; -moz-transition-duration: 50ms; -moz-transition-timing-function: ease-in-out } #moduleTitle { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 .moduleTitle { WORD-WRAP: break-word } .portlet H2.dragHandle { PADDING-LEFT: 20px } .portlet H2.dragHandle:hover { CURSOR: move } .portlet H2 A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; COLOR: #fff; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .portlet H2 A:hover { TEXT-DECORATION: underline } .portlet H2 A IMG { VERTICAL-ALIGN: middle } .portlet H2.noTitle { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 1.4em; PADDING-TOP: 0px } .portlet H2.noTitle:hover { BACKGROUND: #ededed } .portlet A { WORD-WRAP: break-word; TEXT-DECORATION: none } .portlet A:hover { TEXT-DECORATION: underline } .edit_controls { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FLOAT: right; PADDING-TOP: 7px } .portlet .edit_controls { VISIBILITY: hidden } .portlet:hover .edit_controls { VISIBILITY: visible } .edit_controls A { Z-INDEX: 201; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 1px; TEXT-DECORATION: none; PADDING-TOP: 0px; verical-align: top } .portlet .edit_controls A:hover { TEXT-DECORATION: none } .portlet:hover .edit_controls A { TEXT-DECORATION: none } .edit_controls .moduleToggleLink { Z-INDEX: 201; POSITION: absolute; FILTER: alpha(opacity=50); PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 14px; PADDING-RIGHT: 3px; HEIGHT: 14px; TOP: 3px; PADDING-TOP: 3px; LEFT: -4px; opacity: .5 } .edit_controls A IMG { DISPLAY: none } .edit_controls A:before { FONT: 16px/1 "Utilicons"; COLOR: #bcbcbc; text-shadow: 0 1px 0 #fff } .edit_controls A:hover:before { COLOR: #888 } .edit_controls A.moduleToggleLink { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px } .edit_controls A[title*='Expand'].moduleToggleLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .edit_controls A.moduleCloseLink:before { CONTENT: "X" } .edit_controls A.moduleDetachLink:before { FONT: 16px/1 "Utilicons"; CONTENT: "w" } .edit_controls A[href*='edit_module']:before { CONTENT: "S" } .collapsible { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px } .collapsible TABLE { BORDER-SPACING: 3px 2px; BORDER-COLLAPSE: separate; FONT-FAMILY: Helvetica, Arial, sans-serif; COLOR: #333; FONT-SIZE: 90% } .collapsible .help { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .imgWrapper { TEXT-ALIGN: center; MARGIN: 6px auto; OVERFLOW: auto } .portlet H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } #lightbox H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.portletBlock H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.blockContents H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .flyout H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 5px } .portlet H4 { PADDING-BOTTOM: 2px; TEXT-INDENT: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 1px } .portlet .portletList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList LI:first-child { BORDER-TOP: medium none } .portlet .portletList LI IMG { DISPLAY: none } .portlet .courseListing LI > A { FONT-WEIGHT: bold } .portlet .courseRole { COLOR: #777 } .portlet .dataBlockLabel { COLOR: #777 } .portlet .eventDate { COLOR: #777 } .portlet .eventList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .eventList LI .date { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f0f0f0; COLOR: #597298; FONT-WEIGHT: bold; PADDING-TOP: 2px; -moz-border-radius: 1px; -webkit-border-radius: 1px; border-radius: 1px } .portlet .eventList LI .event { PADDING-BOTTOM: 2px; PADDING-LEFT: 18px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .portlet .eventList LI .description { FONT-SIZE: 90% } .portlet .eventDate { FONT-SIZE: 90% } .portlet .eventList LI .event A { FONT-WEIGHT: bold } .portlet SPAN.origin { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #999; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet .portletList-img > LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList-img > LI:first-child { BORDER-TOP: medium none; PADDING-TOP: 0px } .portlet .portletList-img > LI IMG { DISPLAY: none } .portlet .courseInformation { PADDING-BOTTOM: 0px; TEXT-INDENT: -16px; MARGIN: 4px 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock { PADDING-BOTTOM: 0px; TEXT-INDENT: -4px; MARGIN: 4px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock UL { MARGIN-TOP: 5px } .portlet .courseDataBlock UL LI { TEXT-INDENT: 0px } .portlet .calculatorModule { TEXT-ALIGN: center } .portlet .calculator { PADDING-BOTTOM: 6px; MARGIN: 0px auto; PADDING-LEFT: 6px; WIDTH: 10em; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .portlet .portletPath { MARGIN: 4px; BACKGROUND: #f0f0f0; FONT-SIZE: 90%; -moz-border-radius: 1px; -webkit-border-radius: 1px } .portlet .portletPath SPAN { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; DISPLAY: inline-block; BACKGROUND: #ddd; COLOR: #666; FONT-WEIGHT: bold; PADDING-TOP: 1px; -moz-border-radius: 1px 0 0 1px; -webkit-border-radius: 1px 0 0 1px } .portlet .courseDataBlock UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px -895px; PADDING-TOP: 0px } .portlet .courseDataBlock A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock LI A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock A:hover { TEXT-DECORATION: underline } .portlet .courseDataBlock LI A:hover { TEXT-DECORATION: underline } .portletHelp { PADDING-BOTTOM: 2px; MARGIN: 4px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #688ba8; FONT-SIZE: 95%; PADDING-TOP: 1px } DIV.module_actions { PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.8em; MARGIN: 4px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.module_actions A:link { BORDER-BOTTOM: #ccc 1px outset; BORDER-LEFT: #ccc 1px outset; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 5px; COLOR: #036; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px outset; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px outset; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.module_actions A:hover { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions A:active { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions IMG { MARGIN: 0px 3px; VERTICAL-ALIGN: middle } DIV.module_actions SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.module_actions LABEL { FONT-WEIGHT: bold } DIV.scroll_div { MAX-HEIGHT: 300px; OVERFLOW: auto } .portlet DIV.scroll_div { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN-BOTTOM: 3px; BACKGROUND: #fff4bf; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .submission_list { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .submission_list LI { PADDING-BOTTOM: 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; PADDING-TOP: 9px } .submission_list LI:first-child { BORDER-TOP: medium none } .submission_list LI A { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .submission_list LI A.label { MARGIN-LEFT: 0px; FONT-SIZE: 100%; FONT-WEIGHT: bold } .submission_list LI DIV.button { MARGIN: 4px 0px 0px; FLOAT: right } .submission_list LI SPAN { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .eudModule { PADDING-BOTTOM: 24px; MARGIN: 0px } .styledModule-dark { PADDING-BOTTOM: 24px; MARGIN: 0px } .portlet .noItems { TEXT-ALIGN: center; FONT-STYLE: italic } .eudModule .eudModule-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .styledModule-dark .module-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .eud-button-wrap { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } IMG.eud-avatar { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 28px; PADDING-RIGHT: 2px; BACKGROUND: #fff; HEIGHT: 28px; PADDING-TOP: 2px; -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -moz-border-radius: 2px; -webkit-border-radius: 2px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } .actionMenuButton { FILTER: none; PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: block; BACKGROUND: #eee; VERTICAL-ALIGN: middle; PADDING-TOP: 3px } DIV[id*='actionMenu_'] { Z-INDEX: 1000; MARGIN-TOP: -4px; MARGIN-LEFT: -3px } .portlet .portletBlock { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 6px } .portlet .portletBlock:first-child { BORDER-TOP: 0px } .moduleActions + .portletBlock { BORDER-TOP: 0px } .blockGroups LI:first-child { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .portlet .memberList { MARGIN: 0px 0px 5px } .itemGroups { PADDING-BOTTOM: 0px; MARGIN: 4px 9px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .itemGroups .itemGroups { MARGIN-BOTTOM: 4px; MARGIN-LEFT: 0px } .portlet .blockGroups LI { FONT-SIZE: 100% } .portlet .itemGroups LI { PADDING-BOTTOM: 7px; LINE-HEIGHT: 120%; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .memberList LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 14px !important; PADDING-TOP: 0px } .portlet .course { DISPLAY: block; FONT-SIZE: 90% } .portlet UL.memberList { DISPLAY: block; FONT-SIZE: 90% } .portlet SPAN.refresh { DISPLAY: block; FONT-SIZE: 90% } .portlet .course { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet SPAN.noIndent { MARGIN-LEFT: 0px !important } .portlet .whatsNew SPAN.course { MARGIN-LEFT: 0px !important } .portlet SPAN.course { MARGIN-LEFT: 0px !important } .portlet UL.hierarchyList { MARGIN-LEFT: 22px } .portlet UL.hierarchyList LI { OVERFLOW-X: visible; TEXT-INDENT: -18px } .portlet UL.hierarchyList LI * { TEXT-INDENT: 0px } .portlet UL.hierarchyList LI.childless { TEXT-INDENT: 0px } .portlet UL LI UL LI SPAN.warning { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.newItemCount { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .flag { BORDER-BOTTOM: #efa495 1px solid; BORDER-LEFT: #efa495 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; BACKGROUND: #ffe4df; COLOR: #c30; FONT-SIZE: 90%; BORDER-TOP: #efa495 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #efa495 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL.memberList SPAN { FONT-SIZE: 100% } .portlet UL.memberList SPAN.newItemCount { FONT-SIZE: 100% } .portletInfoFooter { POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 9px; BOTTOM: 5px; PADDING-RIGHT: 9px; COLOR: #999; FONT-SIZE: 90%; RIGHT: 0px; PADDING-TOP: 2px } .dateSelector { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .blockGroups LI SPAN.newItemCount { COLOR: #999; FONT-WEIGHT: normal } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHead A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .portlet .portletBlock H4 A:hover { BACKGROUND: #eee } .portlet .portletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .portlet .portletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .portlet .subCategories LI A { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead:hover { CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) #fff no-repeat 1px 9px; COLOR: #0099b6 } .blockGroups .itemHeadOpen:hover { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen:focus { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups LI IMG.spacer { WIDTH: 50px; HEIGHT: 0px } .blockGroups LI SPAN.headerText:hover { CURSOR: pointer; TEXT-DECORATION: underline } .viewHeader { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .viewHeader H3 { COLOR: #666; FONT-WEIGHT: bold } DIV.waitingFrame { BACKGROUND: #fff } .moduleControlWrapper { MARGIN: 6px 0px 0px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 6px } .moduleControlWrapper A { POSITION: relative; MARGIN: 0px 2px } .moduleControlWrapper A:after { POSITION: relative; COLOR: #bbb; FONT-SIZE: 14px; CONTENT: "\2192"; RIGHT: 0px; FONT-WEIGHT: bold } .moduleBlock { MARGIN: 6px } .portlet H1 { MARGIN: 6px; FONT-SIZE: 120% } .assessmentPortlet DIV.assessmentPortletBlock { BORDER-BOTTOM-COLOR: #777; PADDING-BOTTOM: 0px; BORDER-TOP-COLOR: #777; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #f9f9f9; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4 A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4 A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet UL.subCategories { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock UL.subCategories LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet UL.subCategories LI A { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead:hover { BACKGROUND-COLOR: #e3efff; TEXT-DECORATION: underline } UL.assessmentBlockGroups LI A.itemHeadOpen { BACKGROUND: #fff no-repeat 3px center } UL.assessmentBlockGroups LI A.itemHeadOpen:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .assessmentPortlet UL.subCategories LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } UL.assessmentBlockGroups LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .assessmentPortlet UL.subCategories LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } UL.assessmentBlockGroups LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } .assessmentPortlet UL.itemGroup LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.assessmentBlockGroups LI UL.itemGroups LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet UL.itemGroup LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI UL.items { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; FONT-SIZE: 110%; PADDING-TOP: 2px } UL.assessmentBlockGroups LI UL.itemGroups LI A { FONT-WEIGHT: normal } UL.itemGroups LI UL.items LI A { FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H3 { MARGIN: 0px } .assessmentPortlet DIV.assessmentPortletBlock H3 A { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f0f0f0; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet DIV.assessmentPortletBlock H3 A:hover { TEXT-DECORATION: none } .assessmentPortlet DIV.assessmentPortletBlock:first-child H3 A { BORDER-TOP: medium none } .assessmentPortlet DIV.assessmentPortletBlock H3 A.open { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/less_options.gif) #e3efff no-repeat 99% center; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet UL.objectList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortletBlock UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .blockContents UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.memberList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet .blockContents UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet .blockContents UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .portlet #loginBoxFull { PADDING-BOTTOM: 16px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull P { MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; COLOR: #444; FONT-SIZE: 0.95em } .portlet #loginBoxFull P.welcome { PADDING-BOTTOM: 0px; MARGIN: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000; FONT-SIZE: 1em; FONT-WEIGHT: bold; PADDING-TOP: 0px } .portlet #loginBoxFull UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } .portlet #loginBoxFull LI LABEL { FONT-SIZE: 100%; FONT-WEIGHT: normal } .portlet #loginBoxFull INPUT[type='text'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='password'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull A { FONT-SIZE: 0.9em } .portlet #loginBoxFull P A { FONT-SIZE: 1em } .portlet #loginBoxFull P.welcome A { FONT-SIZE: 1em } .portlet #loginBoxFull LI + LI + LI { FLOAT: left } .portlet #loginBoxFull LI + LI + LI + LI { TEXT-ALIGN: right; FLOAT: right } .portlet #loginBoxFull LI INPUT.submit { MARGIN: -14px -3px 0px 0px } #body { PADDING-BOTTOM: 60px } #loadstatus { POSITION: relative; HEIGHT: 180px } FIELDSET.highlight { BACKGROUND: #eee } FIELDSET.highlight DIV.input { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .builderItem .item { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FONT-SIZE: 100%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 12px } .builderItem:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } #lessonPlanForm #dataCollectionContainer .contentListPlain LI:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } LI.builderItem { MIN-HEIGHT: auto } .builderItem .close { POSITION: absolute; TOP: 5px; CURSOR: pointer; RIGHT: 5px } .builderItem IFRAME { WIDTH: 100% !important } DIV.subheading { FONT-WEIGHT: bold } DIV.required DIV.inputField { PADDING-LEFT: 1.5em; BACKGROUND: url(../../images/ci/icons/required.gif) no-repeat left 2px; MARGIN-LEFT: -1.5em } .inputOptions { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.5em } .offscreen { POSITION: absolute; HEIGHT: 0px; LEFT: -999em } .label A:hover { CURSOR: pointer } #lessonPlanForm #customFormBuilderDiv { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer .contentListPlain { MARGIN: 0px } .alignPanelLightbox { MIN-WIDTH: 650px; PADDING-BOTTOM: 10px; MIN-HEIGHT: 250px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .alignHeader { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .alignPanel TABLE TD { FONT-SIZE: 90% } .alignPanel TABLE TH { FONT-SIZE: 90% } .alignPanel TABLE TD.descriptionCell { MIN-WIDTH: 120px; WORD-WRAP: break-word } .alignPanel THEAD TH.smallCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .alignPanel THEAD TH { WHITE-SPACE: nowrap } .alignPanel TD.actionCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 4px } .pageBreadcrumb { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #fff; HEIGHT: 1em; PADDING-TOP: 6px } .pageBreadcrumb UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .pageBreadcrumb LI { FLOAT: left; COLOR: #999; MARGIN-LEFT: 3px; FONT-WEIGHT: bold } .pageBreadcrumb LI A { COLOR: #036; FONT-WEIGHT: bold; MARGIN-RIGHT: 3px; TEXT-DECORATION: none } .pageBreadcrumb LI A.active { COLOR: #036; FONT-WEIGHT: bold; TEXT-DECORATION: none } .sStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #063; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .sStatusI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #c00; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .panelList { PADDING-BOTTOM: 0px; MARGIN: 2px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; PADDING-TOP: 0px } .panelList > LI { MARGIN: 0px 0px 1px } .panelNested { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #fff; MARGIN: 4px 0px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; OVERFLOW: hidden; PADDING-TOP: 4px } .panelHead { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; WORD-WRAP: break-word; BACKGROUND: #efefef; PADDING-TOP: 6px } .panelHead A { COLOR: #000; TEXT-DECORATION: none } .panelItem { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 6px } .panelList_leftCol { POSITION: absolute; TOP: 6px; LEFT: 6px } .panelList_rightCol { POSITION: absolute; TOP: 6px; RIGHT: 6px } .panelList_centerCol { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 0px } UL.logMessages { LIST-STYLE-TYPE: none; TEXT-INDENT: -1em; PADDING-LEFT: 1em; MARGIN-LEFT: 0px; LIST-STYLE-IMAGE: none } LI.logError { COLOR: red } LI.logWarning { COLOR: blue } LI.logMessage { MARGIN-TOP: 0.1em } .connectionWrapper { POSITION: relative; MARGIN-TOP: 1px; PADDING-RIGHT: 30px } .connectionWrapper A { POSITION: absolute; MARGIN-TOP: -14px; TOP: 50%; RIGHT: 0px } .invertItems { POSITION: relative; DISPLAY: block !important; MARGIN-RIGHT: 26px } .invertItems A { POSITION: absolute; TOP: -14px; RIGHT: -33px } .subcategories { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 11px !important; PADDING-RIGHT: 11px !important; PADDING-TOP: 6px !important } .subcategories H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.calendarTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.announcementTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.calendarTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.announcementTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.calMonth { PADDING-BOTTOM: 6px; MARGIN: 10px 4px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; OVERFLOW: auto; PADDING-TOP: 2px } DIV.calMonth TABLE { BORDER-BOTTOM: #a8beda 2px solid; BORDER-LEFT: #a8beda 1px solid; MARGIN: 0px auto; BORDER-COLLAPSE: collapse; BORDER-TOP: #a8beda 2px solid; BORDER-RIGHT: #a8beda 2px solid } DIV.calMonth TABLE THEAD TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE TBODY TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE THEAD TD DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TBODY TH DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE THEAD TH { BORDER-BOTTOM: #a0a0a0 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 8em; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; OVERFLOW: hidden; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } DIV.calMonth TABLE TBODY TD { BORDER-BOTTOM: #a8beda 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 8em; PADDING-RIGHT: 0px; BACKGROUND: url(images/backgrounds_h.png) white repeat-x 0px -400px; HEIGHT: 8em; OVERFLOW: hidden; BORDER-RIGHT: #a8beda 1px solid; PADDING-TOP: 0px } DIV.calMonth TABLE TH:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:focus { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:active { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD A.daylink { BORDER-BOTTOM: #a8beda 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; WIDTH: 1.2em; PADDING-RIGHT: 0.2em; DISPLAY: block; BACKGROUND: #e3efff; FLOAT: left; FONT-SIZE: 110%; FONT-WEIGHT: bold; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0.2em } DIV.calMonth TABLE TD A.daylink:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD A.daylink SPAN { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TD.today { BACKGROUND-COLOR: #fff4bf } DIV.calMonth TABLE TD.today A.daylink { BACKGROUND: #fff4bf; FONT-WEIGHT: bold } DIV.calMonth TABLE TD.today A.daylink:hover { BACKGROUND: url(images/backgrounds_h.png) #fff4bf repeat-x 0px -50px } DIV.calMonth TABLE TD.offday { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:hover { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:focus { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD DIV { WIDTH: 8em; CLEAR: both; OVERFLOW: hidden } DIV.calMonth TABLE TD DIV UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.calMonth TABLE TD DIV UL LI { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FONT-SIZE: 90%; PADDING-TOP: 1px } TABLE.calYear { POSITION: relative; MIN-WIDTH: 200px; MARGIN: 6px; BORDER-COLLAPSE: collapse; FONT-SIZE: 95% } TABLE.calYearFloat { MARGIN: 6px 0.66%; WIDTH: 32%; FLOAT: left } TABLE.calYear THEAD TD { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear TBODY TH { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear CAPTION { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 108%; PADDING-TOP: 2px } TABLE.calYear CAPTION A { FONT-WEIGHT: bold; TEXT-DECORATION: none } TABLE.calYear CAPTION A:hover { TEXT-DECORATION: underline } TABLE.calYear THEAD TH { BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } TABLE.calYear TBODY TD { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; WHITE-SPACE: nowrap; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } TABLE.calYear TD A { POSITION: relative; WIDTH: 100%; DISPLAY: block; TEXT-DECORATION: none } TABLE.calYear TD A IMG { FLOAT: left } TABLE.calYear TD:hover { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:focus { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:active { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TH:hover { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:focus { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:active { BACKGROUND-COLOR: #ccc } TABLE.calYear TD.today { BACKGROUND: #999 } TABLE.calYear TD.today:hover { BACKGROUND: #999 } TABLE.calYear TD.today:focus { BACKGROUND: #999 } TABLE.calYear TD.today A { COLOR: #fff; FONT-WEIGHT: bold; text-shadow: 0 -1px 0 #555 } TABLE.calYear TD.today A:hover { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:active { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:focus { BACKGROUND-IMAGE: none } TABLE.calYear TD.offday { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:hover { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:focus { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.hasEvent { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -50px; FONT-WEIGHT: bold } TABLE.calendarDay { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; MARGIN: 10px 0px 0px; WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #cdcdcd 1px solid; BORDER-RIGHT: #cdcdcd 1px solid } TABLE.calendarDay THEAD { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay THEAD TH { POSITION: absolute; TOP: 0px; LEFT: -1000px } UL.calendarWeek LI TABLE.calendarDay { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } TABLE.calendarDay TBODY TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 3px; WIDTH: 6%; PADDING-RIGHT: 12px; BACKGROUND: #f3f3f3; COLOR: #555; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } TABLE.calendarDay TBODY TH:hover { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:focus { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:active { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #fff; VERTICAL-ALIGN: top; BORDER-TOP: #cdcdcd 1px solid; PADDING-TOP: 0px } TABLE.calendarDay TBODY TD.hasEvent { PADDING-LEFT: 6px } TABLE.calendarDay TBODY TD.hasEvent A.jumpToEvent { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay TBODY TR.halfHour TH { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.halfHour TD { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.midday TH { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TBODY TR.midday TD { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TR.notBusinessHours TH { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #f3f3f3; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TABLE.calendarDay TR.notBusinessHours TD { BACKGROUND: #fafafa } TABLE.calendarDay TBODY TR.notBusinessHours TD.hasEvent { BACKGROUND: #fafafa } TABLE.calendarDay TR TH SPAN.ampm { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #bbb; LETTER-SPACING: 0.1em; COLOR: #fff; FONT-SIZE: 75%; TOP: -1.2em; PADDING-TOP: 0px; LEFT: -4px } TABLE.calendarDay TBODY TR:hover { -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calendarDay TBODY TR:hover TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TD DIV DIV { PADDING-BOTTOM: 1px; MARGIN: 0px 4px 0px -6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: #b5ccea; FLOAT: left; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } TABLE.calendarDay TD DIV DIV.contextMenuContainer { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px -3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: none; PADDING-TOP: 0px } TABLE.calendarDay TD DIV SPAN { COLOR: #555; FONT-SIZE: 90% } UL.calendarWeek { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #cdcdcd 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #cdcdcd 1px solid; PADDING-TOP: 0px } UL.calendarWeek LI { BORDER-BOTTOM: #cdcdcd 1px solid; POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } UL.calendarWeek LI UL:first-child { BORDER-TOP: medium none } UL.calendarWeek UL LI:first-child { BORDER-TOP: medium none } UL.calendarWeek LI H3.weekDay { PADDING-BOTTOM: 0.3em; MARGIN: 0px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BACKGROUND: #e3efff; COLOR: #666; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 0.3em } UL.calendarWeek LI H3.weekDay:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.calendarWeek LI UL LI { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ededed 1px solid; PADDING-TOP: 6px } UL.calendarWeek LI UL LI:hover { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:focus { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:active { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI H4 { PADDING-BOTTOM: 1px; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 3px; WIDTH: 10em; PADDING-RIGHT: 3px; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 1px } UL.calendarWeek LI DIV { MARGIN-LEFT: 11em } UL.calendarWeek LI DIV.contextMenuContainer { MARGIN: 0px 0px 0px -3px } UL.calendarWeek LI UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } .diffbox-wrapper { MARGIN: 9px auto; WIDTH: 80% } .legendbox-wrapper { MARGIN: 9px auto; WIDTH: 90% } .legendbox-wrapper > DIV { BORDER-LEFT: #ddd 1px solid } .legendbox-wrapper > DIV:first-child { BORDER-LEFT: medium none } .diffbox-left { FLOAT: left } .diffbox-right { FLOAT: left } .diffbox-arrow { FLOAT: left } .legendbox { FLOAT: left } .diffbox-left { WIDTH: 44% } .diffbox-right { WIDTH: 44% } .legendbox-3 { WIDTH: 33% } .legendbox-2 { WIDTH: 48% } .diffbox-left > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .diffbox-right > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #fff; PADDING-TOP: 3px } .diffbox-right > DIV { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .diffbox-left UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-right UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .legendbox UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-left UL LI:first-child { BORDER-TOP: 0px } .diffbox-right UL LI:first-child { BORDER-TOP: 0px } .legendbox UL LI:first-child { BORDER-TOP: 0px } .diffbox-left .label { WIDTH: 30%; COLOR: #666 } .diffbox-right .label { WIDTH: 30%; COLOR: #666 } .legendbox .label { WIDTH: 30%; COLOR: #666 } .diffbox-left .field { WIDTH: 59% } .diffbox-right .field { WIDTH: 59% } .legendbox .label { WIDTH: 45%; FONT-SIZE: 90% } .legendbox .field { WIDTH: 55% } .diffbox-arrow { TEXT-ALIGN: center; WIDTH: 6%; PADDING-TOP: 50px } .diffLegend-sample { POSITION: static !important; WIDTH: 90px !important; HEIGHT: 17px !important } .addedImg-sample { HEIGHT: 13px !important } .removedImg-sample { HEIGHT: 13px !important } .changedImg-sample { HEIGHT: 13px !important } .diff-html-added { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-removed { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .added-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .removed-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-added { BACKGROUND-COLOR: #cfc } .added-sample { BACKGROUND-COLOR: #cfc } .diff-html-removed { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .removed-sample { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .diff-html-changed { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .changed-sample { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .diff-html-added IMG { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .addedImg-sample { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .diff-html-removed IMG { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .removedImg-sample { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .diff-html-changed IMG { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } .changedImg-sample { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } DIV.diff-removed-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-added-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } .diff-addedImg-sample { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-removed-image { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } .diff-removedImg-sample { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } DIV.diff-added-image { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } .diff-addedImg-sample { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } DIV.blogContainer DIV.wikiPage { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid } DIV.blogContainer DIV.wikiPage H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; FONT-SIZE: 120%; PADDING-TOP: 9px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryDate { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 6px } .editWiki { MARGIN: 9px } .topRound { DISPLAY: none } .bottomRound { DISPLAY: none } .playerControls { POSITION: relative; PADDING-BOTTOM: 6px !important; MARGIN-TOP: 0px; PADDING-LEFT: 6px !important; PADDING-RIGHT: 6px !important; MARGIN-BOTTOM: 2px; PADDING-TOP: 6px !important } IMG.managedPluginStatusIcon { MARGIN: 1px 7px 3px 0px } UL.metaDataList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.metaDataList LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } UL.metaDataList LI H3 { MARGIN: 0px; DISPLAY: inline } .bb-cpgbtd { FONT-SIZE: 90% } .bb-cpgbth { FONT-SIZE: 90% } .bb-cpmgtd { COLOR: #000; FONT-SIZE: 85% } .bb-cpmgth { FONT-SIZE: 85%; FONT-WEIGHT: bold } #resizeHandle { BORDER-BOTTOM: #999 1px solid; POSITION: absolute; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 0px; WIDTH: 3px; BOTTOM: 0px; BACKGROUND: #ddd; BORDER-TOP: #999 1px solid; TOP: 0px; BORDER-RIGHT: #999 1px solid; LEFT: 200px; -moz-border-radius: 1px; -webkit-border-radius: 1px } #resizeHandle:hover { BACKGROUND: #aaa; CURSOR: e-resize } #resizeHandle .collapseControl { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #resizeHandle .pullcollapsed { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .collapseControl:hover { CURSOR: pointer } .caretTitleModifier { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; COLOR: #444; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } .landingPageColumn H3.hiddenlink .linkStatus { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0.4em } TABLE.inventory .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .additional { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .additional .left { FLOAT: left } .additional .right { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: right; COLOR: #777; PADDING-TOP: 2px } .additional .right SPAN.size { COLOR: #000; FONT-WEIGHT: bold } .additional .left SPAN.suboption { DISPLAY: block } A.add { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #b3efb3; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.add:hover { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #e4ffdf; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.remove { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffc4bf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } A.remove:hover { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffd2cf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .listColumnHead { BORDER-BOTTOM: #ccc 1px dotted; MARGIN-BOTTOM: 3px; COLOR: #555; FONT-SIZE: 90%; FONT-WEIGHT: bold } .customFormBuilderLabel { WIDTH: 88%; DISPLAY: block; WORD-WRAP: break-word } .textareaWrapper TEXTAREA { WIDTH: 100% } .textareaWrapper TABLE { WIDTH: 100% } .tools.navPalette { } DIV.instructionData { MARGIN: 0px 0px 12px } DIV.instructionData UL { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } DIV.instructionData UL LI H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 100% } DIV.instructionData UL LI.instructions { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px } DIV.instructionData UL LI.saving { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.instructionData UL LI.instructions A.browse { BORDER-BOTTOM: medium none; BORDER-LEFT: #ccc 1px solid; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .assessmentInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } .assessmentInstructions H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px }

.assessmentPortlet { Z-INDEX: 1; POSITION: fixed; RIGHT: 43px } .assessmentPortlet H3 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.assessmentPortletBlock H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.blockContents H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .savingQuestion { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: none; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #c03; FONT-SIZE: 150%; PADDING-TOP: 2px } TR.dummyVTBEFooter TD { BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 2px } .qIncomplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; COLOR: #333; BORDER-TOP: #999 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } .qComplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; BACKGROUND-COLOR: #ccc; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; FLOAT: left; COLOR: #888; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } DIV.canvasHead { PADDING-BOTTOM: 12px; MARGIN: 0.6em 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #f6f6f6; PADDING-TOP: 6px } DIV.canvasHead UL LI { BORDER-TOP: #eee 1px solid } DIV.canvasHead UL LI:first-child { BORDER-TOP: medium none } DIV.canvasHead UL LI DIV.label { COLOR: #555 } .peer_instructions { MARGIN: 12px 6px } .peerHelp { COLOR: #555 } H2.evaluator { MARGIN: 1em 0px 0.3em } H2.evaluator SPAN { FONT-SIZE: 90%; FONT-WEIGHT: normal } DIV.peerCriteriaStatus { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; BACKGROUND: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 0.3em } DIV.peerCriteriaStatus A.itemHeadOpen { MARGIN: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 90%; FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV.peerCriteriaStatus A.itemHeadOpen:hover { TEXT-DECORATION: underline } DIV.peerCriteriaStatus TD.qStatus { PADDING-BOTTOM: 4px; PADDING-LEFT: 1px; WIDTH: 5%; PADDING-RIGHT: 1px; PADDING-TOP: 4px } DIV.peerCriteriaStatus TD.qStatus A SPAN { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #fff 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 1px solid; PADDING-TOP: 1px } DIV.peerCriteriaStatus TD.qStatus A SPAN.qComplete { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qComplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qIncomplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus A SPAN IMG { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 12px; PADDING-RIGHT: 2px; HEIGHT: 12px; PADDING-TOP: 2px } .questionNumber { FONT-WEIGHT: bold } .questionType { FONT-WEIGHT: bold } .questionNumber { COLOR: #aaa } .questionDiv { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: -1px 0px 6px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.6em } .questionDiv H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: 0px 0px 0.6em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv P { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv DIV.criteriaText { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .questionDiv DIV.submission_text { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; WIDTH: 100%; PADDING-RIGHT: 4px; HEIGHT: 150px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .questionDiv TABLE { WIDTH: 98% } .questionDiv TABLE TABLE { WIDTH: auto } .questionDiv TD.label { WIDTH: 150px; WHITE-SPACE: nowrap } #creceipt { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: red; FONT-WEIGHT: bold; PADDING-TOP: 4px } UL.fileData { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.fileData LI { BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FLOAT: left; PADDING-TOP: 2px } UL.listNav { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: #ddd; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.listNav LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: #ededed; FLOAT: left; COLOR: #2d2680; PADDING-TOP: 0px } UL.listNav LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.listNav LI A:hover { BACKGROUND-COLOR: #dedede; TEXT-DECORATION: underline } UL.listNav LI A.active { BORDER-BOTTOM: #000 2px solid; BORDER-LEFT: #000 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BACKGROUND: #fff; COLOR: #000; BORDER-TOP: #000 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 2px solid; PADDING-TOP: 2px } UL.evaluation { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.evaluation LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 4px } UL.evaluation LI P { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 0px; WIDTH: 79%; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } UL.evaluation H4 { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 4px; WIDTH: 20%; PADDING-RIGHT: 0px; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } UL.evaluation LI P SPAN { COLOR: #555 } DIV.stepPanel DIV.user_html { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.stepPanels H4.defaultCursor { CURSOR: default } H4.defaultCursor { CURSOR: default } .qShow { DISPLAY: block } .qHide { DISPLAY: none } .completionContainer { PADDING-BOTTOM: 6px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainerLarge { PADDING-BOTTOM: 6px; HEIGHT: 75px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainer A IMG { VERTICAL-ALIGN: baseline } .pagedRumble { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 14px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px } .pagedPointsOutsideBar { POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; TOP: 0px; RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 0px; LEFT: auto } .pagedPoints { PADDING-BOTTOM: 6px; LINE-HEIGHT: 100%; MARGIN: -5px 24px -5px -10px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 5px } .designAreaHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaFooter { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaFooter H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaHeader .headertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .designAreaFooter .footertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV#emptyText { MARGIN: 0.6em 16px } .infoListWrapper { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #assessmentGradeForm .infoListWrapper { MARGIN: 0px -12px 18px } .infoListWrapper H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .infoListWrapper H3 A { PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -443px; PADDING-TOP: 3px } .infoListWrapper H3 A.open { BACKGROUND: url(images/indicators.png) no-repeat 0px -1040px } .infoList { MARGIN: 6px 12px } .infoList > LI { PADDING-BOTTOM: 0px !important; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 3px !important } .infoListWrapper .infoList > LI { BORDER-TOP: #cdcdcd 1px dotted } .infoList LI:first-child { BORDER-TOP: medium none } .infoList LI DIV H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .details .infoList { MARGIN-TOP: 0px !important } .infoListFloat { MARGIN: 0px } .infoListFloat LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 3px !important; PADDING-LEFT: 10px !important; PADDING-RIGHT: 10px !important; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 3px !important } .copyQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .linkQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .copyQuestion { BACKGROUND: url(/images/ci/icons/file_copy_ti.png) no-repeat 1px center } .linkQuestion { BACKGROUND: url(/images/ci/icons/file_link_ti.png) no-repeat 1px center } DIV.contentListRight { Z-INDEX: 1000; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 9px; RIGHT: 9px; FONT-WEIGHT: normal; PADDING-TOP: 4px } DIV.contentListRight A { MARGIN-LEFT: 4px; FONT-WEIGHT: bold } DIV.contentListRight SPAN:first-child + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN[style*='none']:first-child + SPAN { DISPLAY: none } DIV.contentListRight SPAN[style*='none']:first-child + SPAN + SPAN { DISPLAY: none } DIV.contentListRight SPAN SPAN { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 9px } DIV.contentListRight STRONG { PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.assessmentHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } DIV.assessmentHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 3px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.assessmentHeader DIV { MARGIN: 3px; COLOR: #555 } .questionShell { WIDTH: 100% } .questionShell > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TBODY > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell > TBODY > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH.labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell .labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell TD.valueCell { WIDTH: 83% } .questionShell .correctAnswer { WIDTH: 2% } .questionShell .field { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 15px; WIDTH: 95%; PADDING-RIGHT: 15px; PADDING-TOP: 0px } .questionShell .field IMG { POSITION: absolute; TOP: 52%; LEFT: -2px } .questionShell .field .vtbegenerated IMG { POSITION: relative; TOP: auto; LEFT: auto } .questionShell .vtbegenerated { WIDTH: 95%; DISPLAY: inline !important } .questionShell TD.valueCell TABLE .vtbegenerated { DISPLAY: inline !important } .takeQuestionDiv .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } #assessmentGradeForm .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } DIV.multiAssign { MARGIN: 3px 0px 9px } DIV.multiAssign UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; LIST-STYLE-IMAGE: none; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI.read { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI P { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } DIV.multiAssign UL LI.label { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.1em; PADDING-LEFT: 0px; WIDTH: 12em; PADDING-RIGHT: 0px; WHITE-SPACE: normal; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #888; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI P SPAN { COLOR: #888 } DIV.multiAssign A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } H3 A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.multiAssign A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.simpleLink { DISPLAY: block; COLOR: #666; FONT-WEIGHT: normal } H3 SPAN.status A.buttonMicro { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } H3 SPAN.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 DIV.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 SPAN.status SPAN { COLOR: #888 } H3 DIV.status SPAN { COLOR: #888 } H3 DIV.status { DISPLAY: inline } .gbtable_header DIV.gbText { text-shadow: 0 -1px 0 #777 } .gbtable THEAD DIV.gbText { text-shadow: 0 -1px 0 #777 } .subActionBar:hover { Z-INDEX: 1000 } .subActionBar DIV.block { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar DIV.button { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar SPAN.block { FLOAT: none } .subActionBar SPAN.button { FLOAT: none } .subActionBar LI.sub { POSITION: relative } .subActionBar FIELDSET LEGEND + DIV.block { BORDER-LEFT: 0px } .subActionBar SELECT { MAX-WIDTH: 180px; VERTICAL-ALIGN: middle } .subActionBar DIV.button { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .subActionBar DIV.last { BORDER-RIGHT: medium none } .subActionBar FIELDSET { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .subActionBar OPTGROUP { FONT-STYLE: normal; MARGIN-TOP: 6px; COLOR: #777; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal } .subActionBar OPTGROUP OPTION { COLOR: #000 } .subActionBar UL LI.sortableSelector A { PADDING-LEFT: 18px } .navPageHeader { TEXT-ALIGN: center; MARGIN: 1em 0px } .navPageHeader H3 { DISPLAY: inline; MARGIN-LEFT: 12px } .navPageHeader SPAN { MARGIN: 0px 6px 0px 0px; COLOR: #888; FONT-WEIGHT: normal } FIELDSET.secondaryActions { FLOAT: right } DIV.secondaryBlock { FLOAT: right } .cellInfoPanel { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #eee 1px solid; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid } .cellStatus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #f6f6f6; FONT-SIZE: 85%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .cellStatus DIV { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 2px } .statusTitle { BACKGROUND: #eee; COLOR: #666 } .statdata { COLOR: #000; OVERFLOW: hidden } .cellStatus DIV.gbTableTimeStamp { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; FLOAT: right; COLOR: #666; PADDING-TOP: 2px } .sortImage { POSITION: absolute; TOP: 9px; LEFT: 6px } .bubble { Z-INDEX: 1000; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } .bubble UL { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #e2eefe; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; OVERFLOW: hidden; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid; PADDING-TOP: 6px } .bubble UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 4px; PADDING-LEFT: 0px; WIDTH: 174px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #666; CLEAR: left; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .bubble UL LI SPAN { WIDTH: 80px; DISPLAY: block; FLOAT: left; COLOR: #666; FONT-WEIGHT: normal; MARGIN-RIGHT: 3px } .bubble UL LI SPAN.icon { WIDTH: 20px; FLOAT: left; OVERFLOW: hidden } .bubble UL LI SPAN.label { WIDTH: 147px; FONT-SIZE: 100%; FONT-WEIGHT: normal } .bubbleStem { POSITION: relative; WIDTH: 190px; HEIGHT: 14px } .bottom .bubbleStem { BOTTOM: 4px } .top .bubbleStem { TOP: -2px } .left .bubbleStem { PADDING-LEFT: 24px } .right .bubbleStem { TEXT-ALIGN: right; RIGHT: 24px } .selectList { Z-INDEX: 100; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #viewList { Z-INDEX: 1000 !important } .selectList LI { Z-INDEX: 101; MARGIN: 0px 4px 0px 0px; FLOAT: left } .selectList .sub A { DISPLAY: block; TEXT-DECORATION: none } .selectList .sub:hover UL { TOP: 20px !important; LEFT: 0px } .selectList .sub UL LI { POSITION: static !important; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .selectList .sub UL LI H4 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #888; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .selectList .sub UL LI H4 { WIDTH: 152px } .selectList .sub UL LI A { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:hover { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:focus { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub A #currentView { BACKGROUND-IMAGE: none } .selectList .sub A #currentSortBy { BACKGROUND-IMAGE: none } .selectList .sub A #currentColSortDir { BACKGROUND-IMAGE: none } UL.selectList LI.sub UL LI.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } UL.selectList LI.sub UL LI.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } DIV.gradeDetails { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 6px } DIV.gradeDetails DIV.label { WIDTH: 15% } SPAN.unstyled { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 0px } @media Print { DIV.hideOnPrint { DISPLAY: none } } DIV.gradeDetailsStep { BORDER-BOTTOM: #ccc 2px solid; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px 0px 6px } .gradeInfoHeader { PADDING-BOTTOM: 3px; MARGIN: 0px -12px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3 { PADDING-BOTTOM: 3px; MARGIN: 0px 4px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 3px } .gradeInfoHeader H3 SPAN { COLOR: #000; FONT-WEIGHT: bold } .gradeInfoHeader H3.root { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #888; COLOR: #fff; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3.root SPAN { COLOR: #fff } UL.gb_currView LI.sub UL LI.favorite A { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } UL.gb_currView LI.sub UL LI.favorite A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } .navStatusButtons .taskbuttondiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.staticFooter DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader { MARGIN: 10px 0px 0px } DIV.staticFooter DIV.details { BORDER-BOTTOM: #ddd 1px solid } .gbColumns_rumble { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ddd 1px solid } .staticHeader { POSITION: relative; ZOOM: 1; CLEAR: both } .staticFooter { POSITION: relative; ZOOM: 1; CLEAR: both } .staticHeader DIV.itemHeaderControl { RIGHT: 0px } .staticFooter DIV.itemHeaderControl { RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { RIGHT: 0px } .staticHeader DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticFooter DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticHeader DIV.itemHeaderControl A { DISPLAY: inline-block } .staticFooter DIV.itemHeaderControl A { DISPLAY: inline-block } UL.gbCategories LI DIV.itemHeaderControl A { DISPLAY: inline-block } UL.dragableHighlight { BORDER-BOTTOM: #999 1px dashed; PADDING-BOTTOM: 3px; MARGIN: 12px -30px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; BORDER-TOP: #999 1px dashed; PADDING-TOP: 12px } UL.gbCategories LI H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticHeader H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticFooter H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } UL.gbCategories LI H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticHeader H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticFooter H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.areaHighlight DIV.container { BACKGROUND: #f9f9f9 } DIV.areaHighlight DIV.bottomRound B { BACKGROUND: #f9f9f9 } UL.dragableHighlight LI H3.item { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .dragableHighlight DIV.details { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } .dbThreadInfo DL { MARGIN: 1em } .dbThreadInfo DT { PADDING-BOTTOM: 0.1em; MARGIN: 0px; PADDING-LEFT: 0.1em; WIDTH: 8em; PADDING-RIGHT: 0.1em; FLOAT: left; COLOR: #999; CLEAR: left; FONT-WEIGHT: bold; PADDING-TOP: 0.1em } .dbThreadInfo DD { PADDING-BOTTOM: 0.1em; MARGIN: 0px 0px 0px 9em; PADDING-LEFT: 0.1em; PADDING-RIGHT: 0.1em; PADDING-TOP: 0.1em } .rating { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 80px; PADDING-RIGHT: 0px; BACKGROUND: url(images/controls.png) no-repeat 0px -20px; HEIGHT: 16px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .star0 { BACKGROUND-POSITION: 0px -20px } .star1 { BACKGROUND-POSITION: 0px -36px } .star2 { BACKGROUND-POSITION: 0px -52px } .star3 { BACKGROUND-POSITION: 0px -68px } .star4 { BACKGROUND-POSITION: 0px -84px } .star5 { BACKGROUND-POSITION: 0px -100px } UL.rating LI { TEXT-INDENT: -999em; CURSOR: pointer } UL.rating LI A { Z-INDEX: 200; POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 0px; TEXT-DECORATION: none; LEFT: 0px } UL.rating LI.one A { LEFT: 0px } UL.rating LI.two A { LEFT: 16px } UL.rating LI.three A { LEFT: 32px } UL.rating LI.four A { LEFT: 48px } UL.rating LI.five A { LEFT: 64px } UL.rating LI A:hover { Z-INDEX: 2; WIDTH: 80px; BACKGROUND: url(images/controls.png) no-repeat -90px -36px; HEIGHT: 16px; OVERFLOW: hidden; LEFT: 0px } UL.rating LI.one A:hover { BACKGROUND-POSITION: -90px -36px } UL.rating LI.two A:hover { BACKGROUND-POSITION: -90px -52px } UL.rating LI.three A:hover { BACKGROUND-POSITION: -90px -68px } UL.rating LI.four A:hover { BACKGROUND-POSITION: -90px -84px } UL.rating LI.five A:hover { BACKGROUND-POSITION: -90px -100px } DIV.collectionViewReadMessageBorder { BORDER-LEFT: #ccc 1px solid; MARGIN-LEFT: 30px } DIV.collectionViewUnreadMessageBorder { BORDER-BOTTOM: #999 3px solid; BORDER-LEFT: #999 3px solid; MARGIN-LEFT: 30px; BORDER-TOP: #999 3px solid; BORDER-RIGHT: #999 3px solid } TABLE.treeframe TR TD { VERTICAL-ALIGN: middle } TABLE.tree_view TR TD IMG { VERTICAL-ALIGN: middle } TABLE.treeframe { MARGIN: 0px } TABLE.treeframe TBODY TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe THEAD TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe TR.high { BACKGROUND-COLOR: transparent } TR.thread TD { VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid } TR.thread TD IMG { VERTICAL-ALIGN: middle } TABLE.unreadmessageborder { BORDER-BOTTOM: #666 3px solid; BORDER-LEFT: #666 3px solid; BORDER-TOP: #666 3px solid; BORDER-RIGHT: #666 3px solid } TABLE.readmessageborder { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TR.show { DISPLAY: table-row } TR.hide { DISPLAY: none } .loadingelipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #ffc; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .gradefield { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 9px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #000; FONT-SIZE: 120%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 4px } .gradefield INPUT { BORDER-BOTTOM: #666 2px solid; BORDER-LEFT: #666 2px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-FAMILY: arial, sans-serif; BACKGROUND: #fff; FONT-SIZE: 110%; VERTICAL-ALIGN: middle; BORDER-TOP: #666 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #666 2px solid; PADDING-TOP: 1px } .gradefield INPUT.inputtypebutton { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; DISPLAY: inline; BACKGROUND: #ededed; HEIGHT: auto; FONT-SIZE: 80%; OVERFLOW: visible; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .gradefield A { FONT-SIZE: 120%; FONT-WEIGHT: bold } .gradefield SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; COLOR: #555; FONT-SIZE: 80%; PADDING-TOP: 0px } .overridegrade { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 3px 0px 3px 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline; FONT-SIZE: 80%; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .overridegrade INPUT.inputtypebutton { MARGIN-TOP: -3px; FONT-SIZE: 70%; VERTICAL-ALIGN: middle; FONT-WEIGHT: normal } DIV.parentmessage { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #ededed; CLEAR: both; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .availability { PADDING-BOTTOM: 1px; FONT-STYLE: italic; MARGIN: 6px 0px; PADDING-LEFT: 3px; WIDTH: auto; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TD.tag_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.msg_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.checkbox_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } TD.prevnextpostarea { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } H3.dbheading { MARGIN-TOP: 0px; DISPLAY: inline; MARGIN-BOTTOM: 0px; FONT-WEIGHT: normal } .dbThread { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa 1px solid; MARGIN: 24px 30px; BACKGROUND: #eee; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 3px 6px #ccc; -webkit-box-shadow: 0 3px 6px #ccc; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbThreadCheckbox { POSITION: absolute } .dbThreadCheckbox INPUT { MARGIN: 10px } .dbThread .dbThreadInfo { PADDING-BOTTOM: 1em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; COLOR: #555; PADDING-TOP: 1em } .dbThreadInfo DL { MARGIN: 0px; WIDTH: 50%; FLOAT: left; FONT-SIZE: 95% } .dbThreadBody { PADDING-BOTTOM: 2em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; BACKGROUND: #fff; PADDING-TOP: 2em } P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbParentPost P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbThreadHeader { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter { PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadHeader .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadFooter .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } .dbThreadHeader .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } DIV.spacerDiv { CLEAR: both } .threadButtons .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .dbThreadInfo .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo P { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.6em } .dbThreadInfo P.detailButtons { FLOAT: right } .dbThreadTree { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MIN-HEIGHT: 80px; MAX-HEIGHT: 200px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #threadArea { PADDING-BOTTOM: 18px; MARGIN: 0px -30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } #message { MARGIN: 0px -30px -20px; BORDER-TOP: #ccc 1px solid } #message_upper { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: -20px -30px 0px } .dbParentPost { BORDER-BOTTOM: #bbb 1px dashed; BORDER-LEFT: #bbb 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -0.6em 0px 1.2em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #bbb 1px dashed; BORDER-RIGHT: #bbb 1px dashed; PADDING-TOP: 0.6em; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbParentPost H4 { MARGIN: 0px 0px 0.6em } .dbParentPost H4 A { WIDTH: 100%; DISPLAY: block } .dbParentPost P { PADDING-BOTTOM: 1.2em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .dbParentPostBody { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; MARGIN-BOTTOM: 0.6em; BACKGROUND: #fcfcfc; CLEAR: both; PADDING-TOP: 0.6em } .loadingElipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: 12px auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #fff7de; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .unreadmessage { FONT-WEIGHT: bold } H3.unreadmessage { FONT-WEIGHT: bold } .unreadmessage.dbheading { FONT-SIZE: 100% } .unread-count { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #128fa8; COLOR: #fff; PADDING-TOP: 2px; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px } #threadArea DIV.checked { BACKGROUND-COLOR: #eee } #threadArea DIV.checked_top { BACKGROUND-COLOR: #eee } #threadArea DIV.checked { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } #threadArea DIV.checked_top { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } DIV.blogContainer { WIDTH: 74%; FLOAT: left } DIV.blogContainer H3.blogHead { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer DIV.blogEntry { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogContainer DIV.blogEntry H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; WORD-WRAP: break-word; BACKGROUND: url(images/small_discussions.gif) no-repeat 8px 9px; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 9px } DIV.blogContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 3px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } DIV.blogContainer DIV.entryDate { COLOR: #444; FONT-SIZE: 95% } DIV.blogContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.blogContainer DIV.entryFooter { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #eaeaea; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.5% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px -12px; DISPLAY: none; BORDER-TOP: #999 1px solid; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.blogContainer DIV.entryFooter DIV.addBlogComment H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .addBlogComment .stepcontent OL { WIDTH: 100% } .addBlogComment .stepcontent OL LI { WIDTH: 100% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment DIV.controls { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.blogContainer UL.entryComments { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eaeaea; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.blogContainer UL.entryComments LI P { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } DIV.blogContainer UL.entryComments LI P.commentDate { Z-INDEX: 10; BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: right; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; MARGIN: 2px 0px -1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bubble_top_thin.gif) no-repeat 15px 100%; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #444; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.blogContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.blogContainer DIV.blogInstructions H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.journalNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.contentAreaNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } .messageCollectionContainer { FLOAT: left } DIV.blogNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { WORD-WRAP: break-word; OVERFLOW: hidden } DIV.blogNav UL.blogArchiveList LI A { WIDTH: 100%; WORD-WRAP: break-word } .indentedWikiList { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 22px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .indentedWikiList IMG { MARGIN: 0px 3px 0px -22px } .blogNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .journalNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .blogNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } .journalNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogNav LI.currentBlog { FONT-WEIGHT: bold } DIV.blogNav LI.currentBlog SPAN { FONT-WEIGHT: normal } DIV.blogContainer .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.blogNav .newItems { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav .gradeStatus { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.blogNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.blogNav UL UL { MARGIN-LEFT: 9px } DIV.blogNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } DIV.journalContainer { WIDTH: 74%; FLOAT: left; MARGIN-RIGHT: 1% } DIV.journalContainer H3.blogHead { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.journalContainer DIV.blogEntry { BORDER-BOTTOM: #eee 3px solid; POSITION: relative; BORDER-LEFT: #eee 0px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 36px; PADDING-RIGHT: 0px; BACKGROUND: url(images/blog_notebook_paper.gif) #fff repeat-y 0px 0px; BORDER-TOP: #eee 3px solid; BORDER-RIGHT: #eee 3px solid; PADDING-TOP: 0px } DIV.journalContainer DIV.blogEntry H4 { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 12px } DIV.journalContainer DIV.entryDate { Z-INDEX: 100; BORDER-BOTTOM: #c0dace 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; PADDING-TOP: 3px } DIV.journalContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; PADDING-TOP: 12px } DIV.journalContainer DIV.entryFooter { PADDING-BOTTOM: 12px; MARGIN: 0px 0px 0px -31px; PADDING-LEFT: 43px; PADDING-RIGHT: 12px; ZOOM: 1; BACKGROUND: url(images/blog_notebook_paper_bot.gif) repeat-x center bottom; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.35% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment { DISPLAY: none; MARGIN-BOTTOM: 6px } DIV.journalContainer UL.entryComments { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #c0dace 1px solid; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.journalContainer UL.entryComments LI P { PADDING-BOTTOM: 0px; MARGIN: 4px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI P.commentDate { COLOR: #444; MARGIN-LEFT: 19px; FONT-SIZE: 90% } DIV.journalContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: url(images/small_blog_comment.gif) no-repeat 0px 3px; COLOR: #000; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 3px } DIV.journalContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.journalContainer DIV.blogInstructions H4 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.blogInstructions P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { OVERFLOW: hidden } DIV.journalNav LI.currentBlog { FONT-WEIGHT: bold } DIV.journalNav LI.currentBlog SPAN { FONT-WEIGHT: normal } .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.journalNav .newItems { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.journalContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.journalNav UL UL { MARGIN-LEFT: 9px } DIV.journalNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } #blogNavLinks { POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 6px; RIGHT: 6px; PADDING-TOP: 0px } .contentAreaPalette UL#aboutBlog LI.currentBlogView { BORDER-BOTTOM: #0078cb 2px solid; BORDER-LEFT: #0078cb 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; MARGIN-BOTTOM: 3px; BACKGROUND: #eff6ff; BORDER-TOP: #0078cb 2px solid; BORDER-RIGHT: #0078cb 2px solid; PADDING-TOP: 2px } .currentBlogView A { COLOR: black; TEXT-DECORATION: none } UL.blogArchiveList { MARGIN-LEFT: 16px } UL.blogArchiveList LI { PADDING-BOTTOM: 4px } #gradeWidget SPAN#blogGradeValue { POSITION: relative; PADDING-LEFT: 6px } #blogGradeValue IMG { POSITION: absolute; TOP: 0px; LEFT: 0px } .contentAreaNav A.itemHead { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 6px } .contentAreaPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } DIV.blogNav .contentAreaPalette:first-child { BORDER-TOP: 0px } DIV.journalNav .contentAreaPalette:first-child { BORDER-TOP: 0px } .rightColumn-narrow .contentAreaPalette:first-child { BORDER-TOP: 0px } .contentAreaPalette UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .contentAreaPalette LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 0px } .contentAreaPalette LI LI { FONT-SIZE: 100% } DIV.iconLegendBlog { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .contentAreaNav A#blogListLink { PADDING-RIGHT: 48px } #loginPageContainer { MARGIN: 0px auto; MIN-HEIGHT: 100%; HEIGHT: auto !important } #loginHeader { POSITION: absolute; TOP: 0px; RIGHT: 0px } #loginHeader UL LI { POSITION: relative; MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; BACKGROUND: #888; VERTICAL-ALIGN: top; BORDER-TOP: 0px } #loginHeader UL LI A { PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 12px; WIDTH: 28px; PADDING-RIGHT: 12px; DISPLAY: inline-block; HEIGHT: 18px; PADDING-TOP: 6px } #loginHeader UL LI:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang H2:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang:hover H2 { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginHeader UL LI:first-child { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI:first-child A { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI IMG { DISPLAY: none } #loginHeader UL LI.font-size:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.contrast:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.font-size A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast:before { CONTENT: "c" } #loginHeader UL LI:hover:before { COLOR: #fff; CURSOR: pointer } #loginHeader UL LI.contrast { BORDER-LEFT: #777 1px solid; MARGIN-LEFT: -4px } #loginLang { POSITION: absolute; TOP: 0px; LEFT: 0px } #loginLang H2 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; BACKGROUND: #888; HEIGHT: 17px; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 4px; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0 } #loginLang H2 SPAN { TEXT-INDENT: -999px; WIDTH: 0px; DISPLAY: inline-block; OVERFLOW: hidden } #loginLang H2:before { FONT: 140%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "W"; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginLang H2:hover:before { COLOR: #fff } #loginLang UL { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 150px; PADDING-RIGHT: 6px; TOP: -1000px; PADDING-TOP: 6px; LEFT: -1000px } #loginLang:hover UL { WIDTH: 175px; TOP: 28px; LEFT: 0px; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0 } #loginLang H2:hover:after { Z-INDEX: 100 } #loginLang:hover H2:after { Z-INDEX: 100 } #loginLang UL LI A { WIDTH: auto } DIV.loginBody { PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BACKGROUND: url(images/Bb_learn_small.png) no-repeat 94px 94px; PADDING-TOP: 260px } DIV.loginBody .receipt { PADDING-BOTTOM: 14px; MARGIN: 0px auto 16px; PADDING-LEFT: 19px; WIDTH: 409px; PADDING-RIGHT: 4px; PADDING-TOP: 12px } #loginBox { TEXT-ALIGN: center } #loginBox UL { MARGIN: 0px auto; WIDTH: 415px } #loginBox LI { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #loginBox LI + LI + LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } #loginBox LI + LI + LI + LI { POSITION: relative; TEXT-ALIGN: right; DISPLAY: block } #loginBox LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #loginBox LI INPUT { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100%; PADDING-RIGHT: 10px; FONT-SIZE: 140%; PADDING-TOP: 10px; -moz-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1) } #loginBox INPUT[type='text'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='password'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='text']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox LI INPUT[type='submit'] { PADDING-BOTTOM: 7px; MARGIN: -31px -9px 0px 12px; PADDING-LEFT: 22px; WIDTH: auto; PADDING-RIGHT: 22px; FONT-SIZE: 130%; PADDING-TOP: 7px } #loginFormTitle { POSITION: absolute; DISPLAY: none } #loginFormText { POSITION: absolute; DISPLAY: none } DIV.portlet #loginFormTitle { POSITION: static; DISPLAY: block } DIV.portlet #loginFormText { POSITION: static; DISPLAY: block } #loginOptions { TEXT-ALIGN: center; MARGIN: 38px auto 26px; WIDTH: 600px } #loginOptions H2 { MARGIN: 10px } #loginOptions P { MARGIN: 10px; COLOR: #444; FONT-SIZE: 0.85em } #loginOptions UL LI { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI.subOption { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } #loginOptions UL LI.subOption A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } .forgot A { BORDER-BOTTOM: #0099b6 1px dotted } #loginOptions UL LI A:hover { BORDER-BOTTOM-STYLE: solid } #loginOptions UL LI.subOption A:hover { BORDER-BOTTOM-STYLE: solid } .forgot A:hover { BORDER-BOTTOM-STYLE: solid } #loginText { TEXT-ALIGN: center; PADDING-BOTTOM: 18px; PADDING-LEFT: 80px; PADDING-RIGHT: 80px; DISPLAY: none; BACKGROUND: #5f6062; BORDER-TOP: #777 1px solid; PADDING-TOP: 12px } #loginText P SPAN { COLOR: #fff; FONT-SIZE: 105%; FONT-WEIGHT: bold } #loginText P { MARGIN: 0px; COLOR: #ededed; FONT-SIZE: 95% } #loginImage { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } #loginImage IMG { MARGIN: 0px auto } #loginAnnouncements { PADDING-BOTTOM: 7px; MARGIN: 0px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 24px } #loginAnnouncements H3 { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 9px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: none; COLOR: #555; FONT-SIZE: 110%; PADDING-TOP: 6px } #loginAnnouncements UL { TEXT-ALIGN: center; MARGIN: 0px auto; WIDTH: 800px } #loginAnnouncements UL LI:before { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:after { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:before { LEFT: 8px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } #loginAnnouncements UL LI:after { RIGHT: 8px; -moz-transform: rotate(2deg); -webkit-transform: rotate(2deg) } #loginAnnouncements LI { POSITION: relative; TEXT-ALIGN: justify; PADDING-BOTTOM: 24px; MARGIN: 0px 0px 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; ZOOM: 1; BACKGROUND: #fff; COLOR: #666; FONT-SIZE: 95%; VERTICAL-ALIGN: top; PADDING-TOP: 18px; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15) } #loginAnnouncements UL LI STRONG:first-child { MARGIN: 0px 0px 12px; FONT-FAMILY: Georgia, serif; FLOAT: left; COLOR: #000; FONT-SIZE: 115% } #loginAnnouncements UL LI STRONG + EM { TEXT-ALIGN: right; MARGIN: 0px; DISPLAY: block; FONT-FAMILY: Georgia; FLOAT: right } #loginAnnouncements UL LI STRONG + EM + BR { DISPLAY: none } #loginAnnouncements UL LI .vtbegenerated { LINE-HEIGHT: 1.38; CLEAR: both } #loginAnnouncements UL LI:first-child { BORDER-TOP: 0px } #loginAnnouncements A { BORDER-BOTTOM: #128fa8 1px dotted } #loginAnnouncements A:hover { BORDER-BOTTOM-STYLE: solid } #loginAnnouncements A:focus { BORDER-BOTTOM-STYLE: solid } #loginHeader H1 { DISPLAY: none } #loginHeader H2 { DISPLAY: none } #loginHeader .productLogo { DISPLAY: none } #loginOptions #gatewayButtonsTitle { DISPLAY: none } #loginOptions #gatewayButtonsInstructions { DISPLAY: none } .login-page #copyright { POSITION: absolute; TEXT-ALIGN: center; MARGIN-TOP: 24px; WIDTH: 900px; BOTTOM: 24px; MARGIN-LEFT: -450px; LEFT: 50% } #loginAnnouncements + #copyright { POSITION: relative } .loginCopyright { WIDTH: 580px !important } .login-page #copyright .logo { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; PADDING-TOP: 0px } .login-page #copyright .newCopyright { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .loginCopyright .legal { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .additionalInfo { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .legal { BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; WIDTH: 24.5em; PADDING-RIGHT: 12px; PADDING-TOP: 3px } #loginPane + #copyright .legal P { MARGIN: 0px; DISPLAY: inline } #loginPane + #copyright .additionalInfo P { MARGIN: 0px; DISPLAY: inline } .login-page .copyrightDetailContents { MIN-HEIGHT: 6.5em; MARGIN-LEFT: -394px; LEFT: 50% } H1.pageTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .caliperTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .discoverTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .unitHomePageTitle { MARGIN: -60px -30px 5px } .caliperTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .unitHomePageTitle H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .discoverTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } .unitHomePageTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .caliperTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .unitHomePageTitle A.browseNoImg { PADDING-BOTTOM: 3px; PADDING-TOP: 2px } .reports { MIN-WIDTH: 810px; BACKGROUND: #f0f0f0 } .reports .navigationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .container { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports #dataCollectionContainer { MARGIN: 0px } .reports DIV[id*='step'] { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .reports UL { MARGIN: 12px } .reports .stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports UL LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; PADDING-TOP: 0px } .reports .label { COLOR: #777 } .reports .field { COLOR: #000 } .reports UL LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .reports H1 { PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 9px } .reports H2 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; PADDING-TOP: 3px } .reports H3 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .reports H3 A IMG { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .reports H3.steptitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; LETTER-SPACING: 0px; COLOR: #fff; FONT-SIZE: 110%; PADDING-TOP: 4px } .reports H4 { PADDING-BOTTOM: 3px; MARGIN: 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; COLOR: #fff; FONT-SIZE: 115%; PADDING-TOP: 3px } .reports H5 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 6px; MARGIN: 12px -12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .reports .attachments { MARGIN: 0px } .reports t.wide { MARGIN: 0px; WIDTH: 100% } #toc { LIST-STYLE-POSITION: outside; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: decimal; MARGIN: 12px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #toc UL { MARGIN: 0px 24px 24px } .toc_div { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; PADDING-BOTTOM: 4px; MARGIN: 6px 18px 18px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid; PADDING-TOP: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .toc_div OL LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports .toc_div H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .toc_div H2 A IMG { MARGIN-RIGHT: 6px } .toc_div A.toggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #f6f6f6; FLOAT: right; FONT-SIZE: 95%; TOP: -4px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .toc_div A.toggle:hover { BACKGROUND: #fff } .backtotop { FLOAT: right } .dateofreport { FLOAT: right } .dateofreport { MARGIN: 6px 18px 12px 0px } .reports .block { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 18px 24px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px 4px 0 4px; -webkit-border-radius: 4px 4px 0 4px } .backtotop { POSITION: relative; MARGIN-BOTTOM: -40px; FLOAT: right; MARGIN-RIGHT: -1px } .backtotop A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f6f6f6; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .backtotop A:hover { BACKGROUND: #fff } .backtotop A IMG { MARGIN-RIGHT: 5px } DIV.fontPreview { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 4px; MARGIN: 3px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 4px } .textareaDiv { PADDING-BOTTOM: 6px } .textareaDiv TABLE { WIDTH: 98% } .textareaDiv TABLE TABLE { WIDTH: 100% } .textareaDiv TABLE TABLE TABLE { WIDTH: 100% } .textareaDiv TEXTAREA { WIDTH: 100%; BORDER-TOP: #666 2px solid } DIV.textToolbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 97.7%; PADDING-RIGHT: 0px; BACKGROUND: #f6f6f6; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } DIV.textToolbar A { WHITE-SPACE: nowrap; FONT-SIZE: 90% } DIV.textToolbar LABEL { PADDING-LEFT: 4px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.textToolbar SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } .previewTextArea { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #999 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 459px; PADDING-RIGHT: 0px; DISPLAY: none; BACKGROUND: #fff; HEIGHT: 112px; OVERFLOW: auto; BORDER-TOP: #999 2px solid; BORDER-RIGHT: #999 2px solid; PADDING-TOP: 0px } .previewTextArea DIV.previewTitle { BORDER-BOTTOM: #eee 2px solid; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; PADDING-TOP: 2px } .previewTextArea DIV.previewTitle A { FLOAT: right } .previewTextArea DIV.previewTitle H6 { MARGIN: 0px; FLOAT: left; FONT-SIZE: 90% } .previewTextArea DIV.previewContent { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .messageContainer H6 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .messageContainer P { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .messageVariable { BORDER-BOTTOM: #ed9 1px solid; BORDER-LEFT: #ed9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; BORDER-TOP: #ed9 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ed9 1px solid; PADDING-TOP: 0px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .myPlaces .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .explore .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .myPlaces A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .myPlaces A:hover { TEXT-DECORATION: underline } .myPlaces A:focus { TEXT-DECORATION: underline } .myPlaces A.home { PADDING-RIGHT: 20px } .myPlaces SPAN.homeIconWrap { POSITION: absolute; BACKGROUND: url(/images/ci/icons/clphomepage/home_ti.gif) no-repeat 0px 0px; TOP: 3px; RIGHT: 3px } .myPlaces SPAN.homeIconWrap IMG { WIDTH: 16px; HEIGHT: 16px } .myPlaces A.unit { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.course { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.ee { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.program { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.workspace { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.unit { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.unit:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.course { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.course:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.ee { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.ee:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.program { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.program:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.workspace { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .myPlaces A.workspace:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .explore A { PADDING-LEFT: 30px; BACKGROUND: url(images/indicators.png) no-repeat 9px -1489px } .explore H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .wizardBody .locationPane { MARGIN: 0px; DISPLAY: block } .wizardBody .breadcrumbs .courseName { DISPLAY: none } .wizardBody .breadcrumbs .courseId { DISPLAY: none } .wizardBody .breadcrumbs { HEIGHT: 24px } .wizardBody .path .root A:before { POSITION: relative; FONT-FAMILY: "Pictos"; COLOR: #aaa; FONT-SIZE: 20px; CONTENT: "H"; TOP: -2px; FONT-WEIGHT: normal } .wizardBody .modeSwitchWrap { POSITION: absolute; TOP: 15px; RIGHT: 12px } .wizardBody { BACKGROUND: #fff } .wizardBody .container { POSITION: static } .wizardBody #contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 210px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 10px; PADDING-TOP: 12px } .wizardBody FORM#contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .topRound { DISPLAY: none } .wizardBody > .locationPane > .contentPaneWide > .topRound { POSITION: absolute; DISPLAY: block; TOP: 60px } .wizardBody #pageTitleDiv IMG { DISPLAY: none } .wizardBody .reqfield { MARGIN: 0px 0px 6px -6px; FLOAT: none } .wizardBody #containerdiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardHead H2 { MARGIN: 0px; FONT-SIZE: 110% } .wizardHead .helphelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .contentPaneWide > .contentBox > .pageTitle H1 { FONT-SIZE: 150% } .wizardBody .containerWizard { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .wizardBody .contentPaneWide > .contentBox > .pageTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 18px; MARGIN: -13px -12px 24px -224px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .wizardBody .contentPaneWide > .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .wizardHead { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; MARGIN-BOTTOM: 24px; BACKGROUND: #efede3; PADDING-TOP: 12px } .wizardBody #dataCollectionContainer { MARGIN: 0px } .wizardHead + .container { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px 4px 4px 4px } .wizardBody .containerWizard .container { HEIGHT: auto } .wizardBody .containerWizard .locationPane { MARGIN-TOP: 12px } .wizardBody UL.contentList LI DIV.details { OVERFLOW-X: visible } .wizardFinishText { MARGIN: 6px 0px 150px } .wizardSubmit { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px -79px -210px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #ccc 1px solid; TOP: 18px; PADDING-TOP: 18px } .wizardSubmit INPUT[name='cancel'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='Previous'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='finish'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='cancel']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='cancel']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[type=image] { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .wizardSubmit SPAN { MARGIN: 0px 18px; COLOR: #999 } .wizardSubmit SPAN STRONG { COLOR: #000 } .wizardBottomRound B.inner { BACKGROUND: #fff1c5 } .wizardBottomRound B.outer { BACKGROUND: #fff1c5 } .wizardBottomRound B.middle { BACKGROUND: #fff1c5 } .navigationPaneWizard { PADDING-BOTTOM: 0px; MARGIN-TOP: 63px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .navigationPaneWizard DIV B.inner { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.middle { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.outer { MARGIN-RIGHT: 0px !important } .navigationPaneWizard .navPalette { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .wizardBody #courseMenuPalette { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .wizardBody #courseMenuPalette DIV.navPaletteContent { -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navigationPaneWizard H2 { PADDING-BOTTOM: 6px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; LETTER-SPACING: 0.2em; COLOR: #00add0; FONT-SIZE: 90%; FONT-WEIGHT: 100; PADDING-TOP: 6px } .navigationPaneWizard .navPalette SPAN { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #ededed; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .navigationPaneWizard .navPalette LI { PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #777; FONT-SIZE: 95%; PADDING-TOP: 6px } .navigationPaneWizard .navPalette UL LI:first-child { POSITION: relative; BORDER-TOP: medium none } .navigationPaneWizard .navPalette UL LI.currentStep { COLOR: #000; FONT-WEIGHT: bold } .navigationPaneWizard .navPalette UL LI.currentStep:after { POSITION: absolute; LINE-HEIGHT: 0.5; COLOR: #999; FONT-SIZE: 18px; CONTENT: "?"; TOP: 9px; RIGHT: 0px } .containerWizard .controlPanel .navPaletteContent A { PADDING-BOTTOM: 4px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(../../../images/ci/ng/portlet_expand.gif) no-repeat 2px 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 4px } .containerWizard .navPaletteContent H2 { MARGIN: 0px; FONT-SIZE: 105% } .containerWizard .navPaletteContent H2 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px } .containerWizard .controlpanel LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #logDetail { OVERFLOW-Y: auto; HEIGHT: 300px } .totalMsgs { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 14px !important; PADDING-RIGHT: 6px !important; COLOR: #555; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 11px !important } .latestEntry { FLOAT: right !important; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal } .log-summary { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } .log-summary A { MARGIN: 0px 3px; DISPLAY: inline-block } .log-summary LI { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .sis-seperator { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .log-summary LI:first-child { BORDER-LEFT: medium none } .log-type { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; COLOR: #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .log-summary .log-type { FONT-SIZE: 120% } .log-error { BACKGROUND: #ef3e36 } .log-warning { BACKGROUND: #fcb040 } .log-message { BACKGROUND: #0b9444 } .log-debug { BACKGROUND: #00aeef } .log-header { MARGIN: 0px 0px 9px } .attachments .log-type { MIN-WIDTH: 6em; TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; LETTER-SPACING: 0.1em; FONT-SIZE: 90%; FONT-WEIGHT: normal } .table-scroll-wrapper TABLE { MARGIN: 0px } .table-scroll-wrapper TBODY { OVERFLOW-Y: auto; HEIGHT: 200px; OVERFLOW: hidden } .row-selected { BACKGROUND-COLOR: #e2eefe !important } .log-search > DIV > DIV { PADDING-BOTTOM: 0px !important; MARGIN: 6px 6px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 9px !important; DISPLAY: inline-block; BORDER-RIGHT: #bbb 1px dotted; PADDING-TOP: 0px !important } .answerSavedButton { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavingButton { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .timeUpWarning { COLOR: #cf0c0c } .thirtySecondWarning { COLOR: #cf0c0c } .oneMinuteWarning { COLOR: #cf0c0c } .fiveMinuteWarning { COLOR: #000 } .halfTimeWarning { COLOR: #000 } .headerForProgressBar { Z-INDEX: 100; POSITION: relative } DIV.assessmentPortletBlock H3.headerForProgressBar A { BACKGROUND: none transparent scroll repeat 0% 0% } .progressBar { Z-INDEX: 90; POSITION: absolute; BOTTOM: 0px; TOP: 0px; LEFT: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .progressBarStyle { BACKGROUND: #b6f796 } .progressBarStyleOneMin { BACKGROUND: #ffe79f } .progressBarStyleThirtySec { BACKGROUND: #ffafaf } .progressBarStyleOvertime { BACKGROUND: #ffafaf } .timerBar { BORDER-BOTTOM: #fff 2px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: #fff 2px solid; PADDING-BOTTOM: 3px; MARGIN: 4px 14px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; FONT-SIZE: 105%; BORDER-TOP: #fff 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 2px solid; PADDING-TOP: 3px; -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 9px; -webkit-border-radius: 9px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timer STRONG { Z-INDEX: 100; POSITION: relative } .timerText { PADDING-BOTTOM: 6px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; PADDING-TOP: 6px } .liveArea.timer { PADDING-BOTTOM: 9px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 6px } .questionStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 3px } .timedQuestionStatus { PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 2px groove; PADDING-TOP: 3px } .completionContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .questionStatus .questionStatusLabel { MARGIN: 0px; LETTER-SPACING: 0px; FONT-WEIGHT: normal } .questionStatus .questionStatusLabel A { COLOR: #666; TEXT-DECORATION: none } .questionStatus .questionStatusLabel A:hover { COLOR: #000; TEXT-DECORATION: underline } .timerMessage { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 2px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timeLabel { COLOR: #666; FONT-WEIGHT: normal } .timeValue { FONT-SIZE: 120% } .timer-collapsed.timer-toggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 0px 2px; PADDING-TOP: 0px } .timer-expanded.timer-toggle { POSITION: absolute; WIDTH: 20px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 3px 4px; HEIGHT: 20px; TOP: 5px; LEFT: 4px } .timerBar .timerLabel:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .timerMessage:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .progressBarStyleOvertime + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "t" } .progressBarStyleOneMin + .timerLabel:before { COLOR: #7f6b2f; CONTENT: "!" } .progressBarStyleThirtySec + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "!" } .timerMessage:before { CONTENT: "t" } .halfTimeWarning:before { COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } #collabRubricList .collabRubricListTypeContainer { MARGIN: 4px } .rubricGradingTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricGradingTable TH { COLOR: #45586f } .rubricTable TH { COLOR: #45586f } .rubricTable THEAD TH { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .rubricTable THEAD TH:first-child { BORDER-LEFT: medium none } .rubricGradingTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .rubricGradingTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH LABEL { FONT-WEIGHT: normal } .rubricTable TBODY TH INPUT { FONT-WEIGHT: normal } .rubricTable TBODY TH > SPAN { FONT-WEIGHT: normal } .rubricGradingTable .rubricCellHeader { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rubricGradingTable .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricSelectedValue { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricCellDescription { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingList .radioLabel { PADDING-BOTTOM: 3px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT-WEIGHT: bold; PADDING-TOP: 3px } .rubricGradingTable .rubricCellContainer { POSITION: relative; MIN-HEIGHT: 30px; OVERFLOW: hidden } .rubricCellRadio { POSITION: absolute; TOP: 6px } .rubricGradingList .rubricCellRadio { POSITION: absolute; TOP: 2px } .selectedCell .rubricCellRadio { TOP: -60px } .pointContainer { FONT-WEIGHT: bold } .rubricGradingTable .feedback { DISPLAY: none } .rubricGradingTable .selectedCell .feedback { DISPLAY: block } .rubricGradingTable .feedback TEXTAREA { WIDTH: 99% } .rubricGradingTable .selectedCell { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px; COLOR: #000; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .3); box-shadow: 0 0 6px rgba(0, 0, 0, .3) } .rubricGradingList .selectedCell { BACKGROUND: url(images/button_ok_ti.png) no-repeat 4px 3px } .rubricGradingTable TBODY TD:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #d1eaef; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .rubricTable TBODY TD:hover { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricGradingTable TBODY .selectedCell:hover { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px } .rubricCriteriaHead { WIDTH: 15% !important } .rubricInlineEdit { POSITION: relative } .rubricInlineEdit > DIV { Z-INDEX: 100; POSITION: absolute; WHITE-SPACE: nowrap } .gridActionBar { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gridActionBar .data TH { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .stepcontent .gridActionBar LI { PADDING-BOTTOM: 0px; MARGIN-BOTTOM: 0px } .rubricGradingTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricSelectedValue { DISPLAY: block; FONT-SIZE: 130%; FONT-WEIGHT: bold } .rangePercent { COLOR: #666; FONT-SIZE: 90%; FONT-WEIGHT: normal } .selectedCell .rangeValue { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #aaa 1px dashed; PADDING-TOP: 6px } .rubricControlContainer .containerTabs { MARGIN: 0px } .rubricControlContainer .contentAreaBlock { MARGIN: 0px } .rubricGradingList .rubricGradingCell { POSITION: relative; MARGIN: 1px 0px; OVERFLOW: hidden } .rubricGradingList .feedback { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .rubricGradingList .feedback TEXTAREA { WIDTH: 99% !important } .rubricGradingList H4 { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .rubricGradingList H4 SPAN { POSITION: absolute; PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 0px; RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 1px } .rubricGradingTotalPoints { MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingOverride { PADDING-BOTTOM: 6px; MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingComments .editor { MARGIN-TOP: 20px } .rubricGradingComments .rubricVtbeLabel { DISPLAY: block; MARGIN-BOTTOM: 10px } .alignmentPanel TR { COLOR: #555 } .alignmentPanel .gradingRubric { BACKGROUND-COLOR: #ffd; COLOR: #000 } .alignmentPanel .gradingRubric .title { FONT-WEIGHT: bold } .alignmentPanel UL.nav SPAN { PADDING-LEFT: 3px } .rubricPanel THEAD TR TH { WHITE-SPACE: normal !important } .rubricPopupContainer .rubricControlContainer { MARGIN: 0px 0px 10px } .rubricPopupContainer .onlyOne.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .onlyOne.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .last.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricGradingCell .pointRangeEdit { DISPLAY: none } .selectedCell.rubricGradingCell .pointRangeView { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .last.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricGradingTable .pointRangeView { DISPLAY: block; FONT-WEIGHT: bold } .selectedCell.rubricGradingCell .pointRangeEdit { DISPLAY: block; FONT-WEIGHT: bold } TD[align='right'] { TEXT-ALIGN: right !important } TD[align='left'] { TEXT-ALIGN: left !important } TR[align='right'] { TEXT-ALIGN: right !important } TR[align='left'] { TEXT-ALIGN: left !important } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: small; PADDING-TOP: 0px !important } .vtbegenerated P { MARGIN-BOTTOM: 4px } .vtbegenerated ADDRESS { FONT-STYLE: italic; DISPLAY: block } .vtbegenerated IMG { FILTER: alpha(opacity = auto) !important; opacity: auto } .vtbegenerated UL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated OL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated LI { LIST-STYLE-POSITION: inside } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated H5 { FONT-SIZE: 90% } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 35px } .vtbegenerated UL[type='circle'] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type='square'] LI { LIST-STYLE-TYPE: square } .vtbegenerated UL[type='disc'] LI { LIST-STYLE-TYPE: disc } .inlineVtbegenerated { DISPLAY: inline } .tree .treeNodeIcon { WIDTH: 16px; HEIGHT: 16px } .navPaletteContent .submenu LI.favorite { PADDING-LEFT: 10px } .navPaletteContent UL[id*='files_groupContents'] .favorite { PADDING-LEFT: 0px } .columnPalette H5 { MARGIN: 6px 0px 3px; COLOR: #555 } .blogNav .stepcontent { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .button-split-left { DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #f6f6f6 2px solid; -webkit-border-bottom-right-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -moz-border-radius-bottomright: 0 } .button-split-left:hover { BORDER-RIGHT: #555 2px solid } .button-split-right { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FLOAT: left; MARGIN-LEFT: -1px; PADDING-TOP: 4px; -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0 } .full_evaluation_view_component H3 { MARGIN: 18px 0px 3px } .full_evaluation_view_component H3:first-child { MARGIN: 9px 0px 3px } .gradeSide_panel .container { POSITION: relative; PADDING-RIGHT: 45% } .gradeSide_panel .contentListPlain { MARGIN: -20px 0px 0px -30px } .collabContainer { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .gradeSide { WIDTH: 36%; TOP: 20px; RIGHT: 20px } .gradeSide { BORDER-BOTTOM: #555 3px solid; POSITION: absolute; BORDER-LEFT: #555 3px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; BOTTOM: auto; PADDING-RIGHT: 4px; BACKGROUND: #888 0px 0px; BORDER-TOP: #555 3px solid; TOP: 20px; RIGHT: 20px; BORDER-RIGHT: #555 3px solid; PADDING-TOP: 4px; LEFT: auto; border-radius: 4px } .collapseTabsData A.close { TOP: 4px; RIGHT: 4px } .evalColumn .taskbuttondiv { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .gradeItemsWrapper { OVERFLOW: visible } .gradeSide .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .evalColumn { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 18px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2) } .evalColumn .liveArea { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .column-wrapper { POSITION: relative; OVERFLOW: visible !important } .column-nav { WIDTH: 190px; FLOAT: left } .colspan2 { POSITION: relative; MARGIN-LEFT: 190px } .colspan2#standards-column { BORDER-LEFT: #ccc 3px double; PADDING-BOTTOM: 12px; MARGIN-BOTTOM: -41px; TOP: -20px; LEFT: -3px } .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; COLOR: #555; PADDING-TOP: 18px } .column-nav .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; PADDING-TOP: 18px } .pageHead-2 H2 { MARGIN: 0px; FONT-SIZE: 120%; FONT-WEIGHT: normal } .pageHead-2 SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .pageHead-2 SPAN:first-child { BORDER-RIGHT: #aaa 1px dotted } .column-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .column-nav-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .category-column .column-nav-inner { BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee',endColorstr = '#cccccc',GradientType = 1); BORDER-LEFT: medium none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #column_lrn_std_category { BORDER-RIGHT: #ccc 3px double } .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 18px !important; BACKGROUND: #fff; PADDING-TOP: 6px !important } #standards-column .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 6px !important } .column-nav .column-inner { DISPLAY: none } .navmenu-list-item { BORDER-BOTTOM: #777 1px solid; POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 21px; DISPLAY: block; WORD-WRAP: break-word; PADDING-TOP: 12px } .navmenu-list > LI:hover { BACKGROUND: #777 } .navmenu-list > LI > A { COLOR: #f6f6f6; FONT-SIZE: 110%; FONT-WEIGHT: 200; TEXT-DECORATION: none } .navmenu-list A SPAN { DISPLAY: none } .navmenu-list .active { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active:hover { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active A { COLOR: #000 } .column2-nav .category-column .navmenu-list LI > A { PADDING-LEFT: 24px } .column-wrapper .actionBar > UL > LI > A { PADDING-BOTTOM: 8px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; COLOR: #333; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 8px } .column-wrapper .actionBar > UL > LI > A:hover { BACKGROUND: #ccc } .standards .button-2 { COLOR: #444 } .standards .button-2:hover { BORDER-BOTTOM-COLOR: #aaa; BORDER-TOP-COLOR: #aaa; BORDER-RIGHT-COLOR: #aaa; BORDER-LEFT-COLOR: #aaa } .category-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .category-column .navmenu-list-item { BORDER-BOTTOM-COLOR: #d6d6d6; BORDER-TOP-COLOR: #d6d6d6; BORDER-RIGHT-COLOR: #d6d6d6; BORDER-LEFT-COLOR: #d6d6d6 } .category-column .navmenu-list-item A { COLOR: #333 } .category-column .navmenu-list-item:hover { FILTER: alpha(opacity = 100) !important; BACKGROUND-COLOR: #e0e0e0; opacity: 1 } .category-column .navmenu-list .active { Z-INDEX: 1001; BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; RIGHT: -4px; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; -moz-box-shadow: -4px 3px 5px #DDD; -webkit-box-shadow: -4px 3px 5px #DDD; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #DDD; border-radius: 4px 0 0 4px } .navmenu-list .inactive { FILTER: alpha(opacity = 75); opacity: .75 } .standards .actionBar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 32px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .actionBar#actionbarlrn_std_doc { BORDER-BOTTOM-COLOR: #777 } .actionBar#actionbarlrn_std_doc > UL > LI > A { COLOR: #f0f0f0; -moz-border-radius: 4px 0 0 0; -webkit-border-radius: 4px 0 0 0; border-radius: 4px 0 0 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .actionBar#actionbarlrn_std_doc > UL > LI > A:hover { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_doc > UL > LI:hover > A { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_category > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std_category > UL > LI > A:hover { BACKGROUND: #ccc; COLOR: #000 } .actionBar#actionbarlrn_std { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 9px 0px 20px; BACKGROUND: #f0f0f0; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .actionBar#actionbarlrn_std > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std > UL > LI > A:hover { BACKGROUND: #ddd; COLOR: #000 } .standards .actionBar > UL { MARGIN: 0px; HEIGHT: 32px } .standards .actionBar UL LI { FLOAT: left } .standards .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .standards .searchbar .selectedItem LABEL SPAN { FONT-SIZE: 90% } .navmenu-actions-1 { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #f0f0f0; BORDER-TOP: #ccc 1px solid; TOP: 4px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px; LEFT: -4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .active .navmenu-actions-1 { LEFT: -4px } .navmenu-actions-2 { POSITION: absolute; PADDING-BOTTOM: 1px !important; PADDING-LEFT: 1px !important; PADDING-RIGHT: 1px !important; TOP: 22px; PADDING-TOP: 1px !important; LEFT: -4px } .navmenu-list-item .contextMenuContainer { POSITION: absolute; MARGIN-TOP: -8px; TOP: 50%; RIGHT: 9px; opacity: 0 } .navmenu-list .active .contextMenuContainer { opacity: 1 } .navmenu-list .active:hover .contextMenuContainer { opacity: 1 } .navmenu-list-item:hover .contextMenuContainer { opacity: .5 } .navmenu-list-item:hover .contextMenuContainer:hover { opacity: 1 } .standards .column-1 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-3 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 1%; WIDTH: 46%; PADDING-RIGHT: 1%; PADDING-TOP: 0px } .standards .column-3 { MARGIN: 0px; WIDTH: 31% } .standardForm > H3 + DIV.column-2 { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standards .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .standards .stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standardForm { POSITION: absolute !important; TOP: 38px; LEFT: 6px } .inline-form-title { MARGIN: 6px 0px } .docs-column .column-nav-inner { BORDER-BOTTOM: #777 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#999999',endColorstr = '#777777',GradientType = 1); BORDER-LEFT: #777 1px solid; MIN-HEIGHT: 400px; BACKGROUND: #999; COLOR: #fff; BORDER-TOP: #777 1px solid; BORDER-RIGHT: medium none; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px } .docs-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .iconToggleWrapper { ZOOM: 1; DISPLAY: inline-block } .iconToggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px -5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .quickAddPal .iconToggle { MARGIN: 0px 0px 0px -1px } .iconToggle:first-child { MARGIN: 0px; -moz-border-radius: 2px 0 0 2px; -webkit-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px } .iconToggle:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #e8f0fe; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .stepcontent .iconToggle .fieldHelp { Z-INDEX: 100; BORDER-BOTTOM: #555 1px solid; POSITION: absolute; MIN-WIDTH: 200px; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #fff; FONT-SIZE: 90%; BORDER-TOP: #555 1px solid; TOP: 100%; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 3px; LEFT: 0px; -moz-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .iconToggle:hover .fieldHelp { Z-INDEX: 10; DISPLAY: block } .iconToggleWrapper .selectedItem { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #cdcdcd; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset } .iconToggle LABEL SPAN { DISPLAY: none; COLOR: #555 } .selectedItem LABEL SPAN { DISPLAY: inline } .selectedItem .fieldHelp STRONG { DISPLAY: none } #lrn_std .panelHead { PADDING-BOTTOM: 9px; PADDING-LEFT: 25px; PADDING-RIGHT: 16px; PADDING-TOP: 9px } #lrn_std .sHeader { MARGIN-LEFT: -21px } #lrn_std .contextMenuContainer { } .lb-content .itemTray { POSITION: absolute } .lb-drawer { PADDING-BOTTOM: 54px } .lb-noTitleBar #pageTitleBar { DISPLAY: none } .lb-locationPane { MARGIN: 0px } .lb-locationPane #contentPanel { MARGIN: 0px } .lb-contentBox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none; border-radius: 0 } .overSoftLimit { COLOR: red } .autocomplete_pos { TOP: 15px !important; LEFT: 0px !important } .autocomplete { Z-INDEX: 5; BORDER-BOTTOM: #888 1px solid; POSITION: absolute; BORDER-LEFT: #888 1px solid; BACKGROUND-COLOR: #fff; WIDTH: 250px; BORDER-TOP: #888 1px solid; BORDER-RIGHT: #888 1px solid; box-shadow: 0 0 3px rgba(0, 0, 0, .3) } .autocomplete .selected { BACKGROUND-COLOR: #ccc } .autocomplete UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; CURSOR: pointer; PADDING-TOP: 2px } .quickAddPal .field { POSITION: relative } .quickAddPal .noLabelField { POSITION: relative } .renameCategory { Z-INDEX: 1200; POSITION: absolute; BOTTOM: 0px; DISPLAY: block; TOP: 0px; RIGHT: 0px; LEFT: 0px } .renameCategory A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } LI SPAN.labelMenuItem { COLOR: #000; FONT-WEIGHT: bold } #toolSettingsWrapper_table TBODY TR { BORDER-TOP: #ddd 1px dashed } #toolSettingsWrapper_table TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #toolSettingsWrapper_table TBODY TR.rowTitle TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle { BACKGROUND-COLOR: #ebebeb; BORDER-TOP: #ddd 1px solid } #toolSettingsWrapper_table TBODY TR.rowTitle H3 { MARGIN: 0.5em 0px } .tooltipContainer { POSITION: relative; TEXT-DECORATION: none } .tooltip { DISPLAY: none; WORD-WRAP: break-word } .tooltip-top { DISPLAY: none; WORD-WRAP: break-word } .tooltipContainer:hover .tooltip { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltipContainer:hover .tooltip-top { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltip:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip-top:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 1px; COLOR: #3b3b3b; LEFT: 1px; -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); -khtml-transform: rotate(90deg) } .tooltip-top:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: auto; COLOR: #4f4f4f; TOP: 0px; LEFT: -2px; -moz-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -o-transform: rotate(-90deg); -khtml-transform: rotate(-90deg) } .paddedMetadata { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 6px !important; PADDING-TOP: 6px !important } .quickAddPal .colorlist LI A.transparent { BACKGROUND-IMAGE: url(/images/swatches/transparent.gif); BACKGROUND-POSITION: -1px -1px; COLOR: transparent } .quickAddPal .colorlist LI A.transparent:hover { BACKGROUND-POSITION: -2px -2px } DIV.checkListActions { PADDING-BOTTOM: 10px } .quickAddPal .colorlist LI A.transparent:active { BACKGROUND-POSITION: -3px -3px } .quickAddPal .colorlist LI A.transparent:focus { BACKGROUND-POSITION: -3px -3px } .theme_scrollbar_content H2 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; FONT-STYLE: italic; MARGIN: -35px 0px 15px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; LETTER-SPACING: 0.06em; COLOR: #333; FONT-SIZE: 130%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #wizard .theme_scrollbar_content H2 { COLOR: #ccc } .theme-switch-wrapper { DISPLAY: inline-block } .theme-switch { POSITION: relative; MARGIN: -14px 9px -14px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-RIGHT: #ccc 1px solid } .theme-switch .sub > A { PADDING-BOTTOM: 14px; LINE-HEIGHT: 1; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; OVERFLOW: hidden; PADDING-TOP: 14px } .theme-switch .sub > A:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .theme-switch .sub:hover > A { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .dummy-switch.theme-switch:hover { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .theme-switch A SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch SPAN SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:after { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM-COLOR: #999; TOP: -8px } .theme-switch .nav .sub UL { WIDTH: 180px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .theme-switch .nav .sub UL LI H4 { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#999999,endColorstr=#333333); PADDING-BOTTOM: 4px; MARGIN-TOP: 5px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #fff; PADDING-TOP: 4px } .theme-switch .nav .sub UL A { PADDING-BOTTOM: 4px; PADDING-LEFT: 18px; WIDTH: 142px; PADDING-RIGHT: 4px; FONT-SIZE: 95%; PADDING-TOP: 4px } BODY DIV.lb-overlay { BACKGROUND: url(images/reorder_bg.png) #bbb -10px 0px } #wizard { Z-INDEX: 1100; BORDER-BOTTOM: #666 1px solid; POSITION: fixed; BORDER-LEFT: #666 1px solid; WIDTH: 900px; BACKGROUND: #555; MARGIN-LEFT: -450px; BORDER-TOP: #666 1px solid; TOP: 5px; BORDER-RIGHT: #666 1px solid; LEFT: 50%; box-shadow: 0 11px 20px rgba(0, 0, 0, .7); border-radius: 9px; background-clip: content-box } #wizard H1 { BORDER-BOTTOM: #666 1px solid; PADDING-BOTTOM: 10px; MARGIN: 1px 0px 0px 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #494949; COLOR: #bbb; FONT-SIZE: 110%; PADDING-TOP: 10px; box-shadow: 0 -1px 0 #363636 inset; border-radius: 9px 9px 0 0; text-shadow: 0 -1px 0 #111 } #wizard .accordion-wrapper { MARGIN: 0px 30px; BACKGROUND: none transparent scroll repeat 0% 0%; border-radius: 0 0 6px 6px } #wizard .accordion_toggle { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_content { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_toggle { POSITION: relative; TEXT-ALIGN: right; PADDING-RIGHT: 60px; COLOR: #aaa; FONT-SIZE: 90%; BORDER-TOP: #444 1px solid; CURSOR: pointer; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .accordion_toggle .accordionTabLabel { FLOAT: left; COLOR: #eee; FONT-SIZE: 125%; TEXT-DECORATION: none } #wizard .accordion_toggle SPAN#selectedStructureName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle SPAN#selectedThemeName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle_help { TEXT-ALIGN: left } #wizard .accordion_toggle A#unselectStructure { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectTheme { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectStructure:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectTheme:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectStructure:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle A#unselectTheme:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle:first-child { BORDER-TOP: 0px; box-shadow: none } #wizard .accordion_content { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #3d3b3b; HEIGHT: 245px; OVERFLOW: hidden; PADDING-TOP: 0px } #wizard .accordion_content A { COLOR: #1ec8ea } #wizard .accordion_toggle_addstructure .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-1.png) no-repeat } #wizard .accordion_toggle_choosetheme .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-2.png) no-repeat } #wizard .accordion_toggle_help .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-4.png) no-repeat } #wizard .right-image { POSITION: absolute; WIDTH: 30px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center center; HEIGHT: 30px; TOP: 6px; RIGHT: 8px; opacity: .5 } #wizard .previewArea { PADDING-BOTTOM: 5px; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #474747; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 235px; MAX-HEIGHT: 235px; FONT-SIZE: 85%; OVERFLOW: hidden; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 5px } .course_welcome_help_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } .selected.course_welcome_help_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.course_welcome_help_scrollbar_handle { } .course_welcome_help_container { POSITION: relative } #wizard .previewArea .introduction { WIDTH: 80% } #wizard .previewArea .helplink { WIDTH: 80% } #wizard .previewArea .customHelp { WIDTH: 80% } #wizard .previewArea .conclusion { POSITION: absolute; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #3d3b3c; PADDING-LEFT: 10px; WIDTH: 20%; BACKGROUND-ATTACHMENT: fixed; PADDING-RIGHT: 10px; COLOR: #bbb; FONT-SIZE: 90%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } #wizard .previewArea .customHelp { PADDING-BOTTOM: 1em; MARGIN-TOP: 0.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; COLOR: #bbb; FONT-SIZE: 90%; BORDER-TOP: #555 1px dotted; PADDING-TOP: 1em } #wizard .previewArea H3 { MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 3px; FONT-SIZE: 140%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN { TEXT-TRANSFORM: uppercase; DISPLAY: block; COLOR: #888; FONT-SIZE: 65%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN SPAN { TEXT-TRANSFORM: lowercase; FONT-STYLE: italic; DISPLAY: inline; FONT-SIZE: 95% } #wizard .helplink .easylist { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN-TOP: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 0px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } #wizard .helplink .easylist LI { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; WIDTH: 46%; PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #555 2px dotted; PADDING-TOP: 3px } #wizard .helplink .easylist LI H3 { FONT-FAMILY: Georgia, serif } #wizard .helplink .easylist LI P { PADDING-LEFT: 0px } #wizard .helplink .easylist LI P { COLOR: #ddd } #wizard .log-summary { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; box-shadow: 0; border-radius: 0 } #wizard .conclusion H3 { TEXT-TRANSFORM: uppercase; MARGIN-TOP: 10px; COLOR: #888; FONT-SIZE: 100%; FONT-WEIGHT: normal } #wizard .conclusion UL { MARGIN-BOTTOM: 15px } #wizard .conclusion UL LI { MARGIN-BOTTOM: 5px } #wizard .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #wizard .content-inner { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #3d3b3b; BORDER-TOP: 0px; BORDER-RIGHT: 0px } #wizard .introtext { PADDING-BOTTOM: 1em; LINE-HEIGHT: 1.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 2em; FLOAT: left; COLOR: #ccc; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 1em } #wizard .introtext LABEL { FONT-STYLE: italic; DISPLAY: none; MARGIN-LEFT: 15px; FONT-SIZE: 85% } #wizard .introtext INPUT { FONT-STYLE: italic; FONT-FAMILY: Georgia, serif; MARGIN-BOTTOM: 10px; FONT-SIZE: 200% } #wizard .introtext .courseNameAndDescription TABLE TABLE { WIDTH: 99%; MARGIN-LEFT: 7px } #wizard .introtext TEXTAREA { FONT-SIZE: 110% } #wizard .introtext INPUT { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext TEXTAREA { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext .courseNameAndDescription { WIDTH: 60%; PADDING-RIGHT: 0.8em; FLOAT: left; MARGIN-RIGHT: 1em; BORDER-RIGHT: #666 3px dotted } #wizard .introtext P { LINE-HEIGHT: 1.4em; FONT-STYLE: italic; MARGIN: 55px 20px 0px 0px; FONT-FAMILY: Georgia, serif; FONT-SIZE: 90% } .themes .horizontal-block { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 8px; MARGIN: 35px 10px 0px; PADDING-LEFT: 0px; WIDTH: 230px; PADDING-RIGHT: 0px; HEIGHT: 184px; BORDER-TOP: #ddd 1px solid; CURSOR: pointer; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 8px } #wizard .themes .horizontal-block { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555 } .help .horizontal-block { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 250px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .themes .horizontal-block IMG { MARGIN: 0px auto; WIDTH: 203px; HEIGHT: 152px } .theme-selector { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 26px; PADDING-RIGHT: 26px; PADDING-TOP: 10px } .structure .theme-selector { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .theme-selector SPAN { FONT-SIZE: 110%; FONT-WEIGHT: bold } #wizard .selected .theme-selector SPAN { COLOR: #333 } .selected .theme-selector SPAN { COLOR: #fff } .structure .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } .themes .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } #wizard .structure .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard .themes .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected A { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard LI.selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .themes .selected.horizontal-block:hover { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } DIV.scroller { HEIGHT: 200px; OVERFLOW: hidden } .themes DIV.scroller { HEIGHT: 245px } DIV.scroller DIV.section { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: 780px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 225px; OVERFLOW: hidden; PADDING-TOP: 0px } .horizontal-block { TEXT-ALIGN: left; PADDING-BOTTOM: 6px; MARGIN: 8px 0px 0px 7px; PADDING-LEFT: 18px; WIDTH: 167px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: none; HEIGHT: 214px; FONT-SIZE: 80%; VERTICAL-ALIGN: top; PADDING-TOP: 3px; border-radius: 5px } .horizontal-block UL { MARGIN-LEFT: 4px } .structure .horizontal-block { HEIGHT: 178px; CURSOR: pointer } #wizard .gotocourse { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; PADDING-RIGHT: 2px; COLOR: #ccc; BORDER-TOP: #444 1px solid; PADDING-TOP: 10px; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .gotocourse LABEL { WIDTH: auto; DISPLAY: inline-table } #wizard .gotocourse LABEL SPAN { DISPLAY: block; COLOR: #999; FONT-SIZE: 10px } #wizard .gotocourse .button-2 { BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 8px; BORDER-TOP-COLOR: #333; MARGIN-BOTTOM: 7px; BORDER-RIGHT-COLOR: #333; FONT-SIZE: 115%; BORDER-LEFT-COLOR: #333; MARGIN-RIGHT: 25px; PADDING-TOP: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 1px 1px 0 #fefefe inset, -1px -1px 0 #888 inset; text-shadow: 0 1px 0 #BBB } #wizard .gotocourse .button-2:hover { BORDER-BOTTOM-COLOR: #222; BORDER-TOP-COLOR: #222; BORDER-RIGHT-COLOR: #222; BORDER-LEFT-COLOR: #222 } #wizard .number { POSITION: relative; LINE-HEIGHT: 1; FLOAT: left; COLOR: #999; FONT-SIZE: 150%; VERTICAL-ALIGN: middle; TOP: -1px; FONT-WEIGHT: bold; MARGIN-RIGHT: 18px } #wizard .accordion_toggle_help .number { TEXT-INDENT: -9999px; WIDTH: 20px; BACKGROUND: url(/images/ci/icons/step_star_light.png) no-repeat; HEIGHT: 20px; MARGIN-RIGHT: 14px; opacity: .4; background-size: 100% 100% } #wizard .gotocourse .secondary.button-2 { COLOR: #555; FONT-WEIGHT: normal; text-shadow: none } #wizard .gotocourse #welcomePageCancelButton { MARGIN-RIGHT: 10px } #wizard A.wizard-close:before { FONT: 150% "Utilicons"; CONTENT: "X" } #wizard A.wizard-close { POSITION: absolute; COLOR: #888; TOP: 8px; RIGHT: 13px } .theme_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 2px } #wizard .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { } .theme_scrollbar_content { TEXT-ALIGN: center; HEIGHT: 245px; OVERFLOW: hidden } .structure_scrollbar_container { POSITION: relative } .structure_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } DIV.courseStructureDescriptions .structure_scrollbar_track { MARGIN: 1px 3% 1px 0px; TOP: 10px } #wizard .structure_scrollbar_track { MARGIN: 1px 0px; TOP: 0px } #wizard .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } #wizard .selected.structure_scrollbar_handle:hover { BACKGROUND-COLOR: #777 } .selected.structure_scrollbar_handle { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle { } .selected.structure_scrollbar_handle:hover { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle:hover { } .structure_scrollbar_content { MARGIN-TOP: 30px; HEIGHT: 370px; OVERFLOW: hidden } #wizard .structure_scrollbar_content { MARGIN-TOP: 22px; HEIGHT: 200px } .courseStructureOuterDiv { MIN-WIDTH: 800px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 10px; PADDING-TOP: 0px } #wizard .courseStructureOuterDiv { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #3d3b3b; MIN-HEIGHT: 250px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .courseStructureNameScroller { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #fff; MARGIN: 10px 0px 0px; WIDTH: 170px; FLOAT: left; HEIGHT: 400px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; box-shadow: -1px 0 4px #CCC; border-top-left-radius: 4px; border-bottom-left-radius: 4px } #wizard .courseStructureNameScroller { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0px; HEIGHT: 220px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none; border-radius: 0 } .courseStructureNameScroller OL LI { MARGIN-BOTTOM: 3px; CURSOR: pointer } .courseStructureNameScroller OL LI:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .courseStructureNameScroller OL LI.courseStructureChoiceLink:focus { OUTLINE-COLOR: #fff; -moz-box-shadow: inset 0 0 6px #128FA8; -webkit-box-shadow: inset 0 0 6px #128FA8; box-shadow: inset 0 0 6px #128FA8 } #wizard .courseStructureNameScroller OL LI { MARGIN-LEFT: 13px } .courseStructureHeader { PADDING-BOTTOM: 5px; FONT-STYLE: italic; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #999; FONT-SIZE: 85%; CURSOR: default !important; PADDING-TOP: 15px } #structureDescription H3 { TEXT-ALIGN: center; MARGIN-TOP: 110px; FONT: italic 100% Georgia, serif } #wizard .courseStructureHeader { PADDING-LEFT: 0px; COLOR: #aaa; PADDING-TOP: 0px; text-shadow: 0 0 1px #222 } .courseStructureChoiceLink { PADDING-BOTTOM: 5px; PADDING-LEFT: 33px; PADDING-RIGHT: 5px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 5px } #wizard .courseStructureChoiceLink { PADDING-LEFT: 20px } .courseStructureChoiceSelected { BACKGROUND-COLOR: #f5f4ef; COLOR: #3d3b3b; border-top-left-radius: 4px; border-bottom-left-radius: 4px } .courseStructureChoiceSelected A { COLOR: #333 } #wizard .courseStructureChoiceSelected A { COLOR: #333 } .courseStructureDescriptions { POSITION: relative; HEIGHT: 400px; MARGIN-LEFT: 170px } #wizard .courseStructureDescriptions { POSITION: relative; MARGIN: 10px 0px 10px 170px; HEIGHT: 225px } .courseStructureDescriptionAndMenu { BORDER-BOTTOM: #ccc 1px solid; POSITION: static; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; BACKGROUND-COLOR: #f5f4ef; MARGIN: 10px 0px 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 20px; WIDTH: 95%; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 400px; COLOR: #333; FONT-SIZE: 12px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px } #wizard .courseStructureDescriptionAndMenu { BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; MARGIN-TOP: 0px; MIN-HEIGHT: 225px; WIDTH: 635px; HEIGHT: 225px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .courseStructureDescriptions P { MARGIN-BOTTOM: 15px } .courseStructureDescriptions H3 { TEXT-ALIGN: center; MARGIN-TOP: 30px; MARGIN-BOTTOM: 0px; COLOR: #666; FONT-SIZE: 120% } .courseStructureDescriptions BR { DISPLAY: none } .structureIncludeSampleContentCheck { BACKGROUND-COLOR: #f4f1e3; PADDING-LEFT: 15px; WIDTH: 100%; DISPLAY: block; HEIGHT: 40px; MARGIN-LEFT: -20px; PADDING-TOP: 10px; box-shadow: -10px 0 6px #CCC inset } #wizard .structureIncludeSampleContentCheck { Z-INDEX: 1; POSITION: absolute; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 7px; WIDTH: 630px; PADDING-RIGHT: 0px; HEIGHT: 25px; MARGIN-LEFT: -12px; BORDER-TOP: #ccc 1px solid; TOP: 185px; PADDING-TOP: 7px; box-shadow: 0 0 2px #999; border-radius: 5px 5px 0 0 } #wizard .accordion_content .useSelectedStructure { MARGIN-RIGHT: 15px } #wizard .accordion_content .useSelectedStructure { COLOR: #333 } #wizard .accordion_content .useExistingMenu { COLOR: #333 } #wizard .courseStructureDescriptions .structure_scrollbar_track { RIGHT: 15px } .courseStructureMenu { POSITION: relative; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; MARGIN: 0px 0px 0px 20px; MIN-HEIGHT: 400px; PADDING-LEFT: 10px; WIDTH: 200px; PADDING-RIGHT: 10px; FLOAT: right; OVERFLOW: hidden; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-top-right-radius: 5px; border-bottom-right-radius: 5px } #wizard .courseStructureMenu { PADDING-BOTTOM: 35px; MIN-HEIGHT: 265px } .courseStructureMenu .listCm .courseMenu A { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .courseStructureMenu .listCm .courseMenu .divider { PADDING-BOTTOM: 6px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 6px } .courseStructureMenu .topRound { DISPLAY: none } .courseStructureMenu .actionBarMicro { DISPLAY: none } .courseStructureMenu .bottomRound { DISPLAY: none } .courseStructureMenu #courseMenuPalette DIV.navPaletteContent { PADDING-TOP: 0px } .arrow_guide { POSITION: absolute; WIDTH: 156px; BACKGROUND: url(/images/ci/icons/left-arrow-point.png) no-repeat; HEIGHT: 34px; LEFT: 3% } #wizard .arrow_guide { TOP: 81% } .courseStructureDescription IMG { TEXT-ALIGN: center; MARGIN: 10px 0px 5px } .courseStructureDescription P.existing_text { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription P.existing_icon { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription A.button-3 { COLOR: #333; MARGIN-RIGHT: 15px } .courseStructureDescription A.existingstructure.unselectStructureButton { MARGIN-TOP: 5px; MARGIN-RIGHT: 37% } .courseStructureNameScroller .current-value { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png); BORDER-BOTTOM: #555 1px solid; POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 17px; WIDTH: 130px; BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-POSITION: 0px 20%; FONT-SIZE: 85%; TOP: 5px; FONT-WEIGHT: normal; LEFT: 15px; box-shadow: 0 -1px 0 #333 inset } #wizard .courseStructureNameScroller .current-value { TOP: 0px } .noSectionDivider { BORDER-TOP: medium none } .dividerRow { PADDING-BOTTOM: 0px !important; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 5px !important } .keyboardAccess .selectArrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .selectArrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess LABEL { DISPLAY: inline-block; FONT: italic 100% Georgia, serif; MARGIN-BOTTOM: 3px; COLOR: #777 } .keyboardAccess .selectArrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .keyboardAccess .y-arrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .access-reorder-block { MIN-WIDTH: 200px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 0px } .access-reorder-block SELECT { MIN-WIDTH: 200px } .y-arrows { TEXT-ALIGN: center; CLEAR: both } .brandingImgWrap IMG[src*='header_institution'] { POSITION: absolute; MAX-HEIGHT: 60px; TOP: 0px; LEFT: 12px } .sample-content { FONT: 113% Georgia, serif; BACKGROUND: url(images/bg_chalk_dark_s.png) 0px 0px } .sample-content .item H3 SPAN { FONT: bold 120% Georgia, serif; COLOR: #25bfcb !important } .sample-content TABLE { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated UL { MARGIN: 4px 0px } .sample-content .vtbegenerated P { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sample-content .vtbegenerated BR { HEIGHT: 1px } .sample-content.liItem:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } .buildList > LI.sample-content:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } DIV.loading-overwrite { Z-INDEX: 10000; POSITION: absolute; TEXT-ALIGN: center; WIDTH: 100%; BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) white no-repeat center 100px; HEIGHT: 100%; TOP: 0px; LEFT: 0px; opacity: 100 } DIV.loading-overwrite SPAN { POSITION: relative; FONT-SIZE: 200%; TOP: 10px } .sample-content DL { MARGIN: 0px } .sample-content DT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 9em; PADDING-RIGHT: 0px; FLOAT: left; FONT-WEIGHT: bold; PADDING-TOP: 0px } .sample-content DD { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 10em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .dueDate { COLOR: #063 } .dueDatePassed { COLOR: #900 } .inventory_paging A.inactive { opacity: .4 } .inactive { opacity: .4 } .linkLeftSpacesp { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .codeFragment { FONT-FAMILY: "Courier New" } .filteredTextHeader { BORDER-BOTTOM: 1px dotted; TEXT-ALIGN: center; BORDER-LEFT: 1px dotted; PADDING-BOTTOM: 5px; LINE-HEIGHT: 150%; BACKGROUND-COLOR: lightyellow; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline-block; BORDER-TOP: 1px dotted; BORDER-RIGHT: 1px dotted; PADDING-TOP: 5px } .filteredText { BACKGROUND-COLOR: lightyellow; COLOR: red } .floatedReceipt { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 10px !important; LINE-HEIGHT: 1.3em; BACKGROUND-COLOR: #fcfbd1 !important; MARGIN: 0px 0px 6px; PADDING-LEFT: 10px !important; WIDTH: 300px; PADDING-RIGHT: 22px !important; FONT-FAMILY: Helvetica, serif; COLOR: #333 !important; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal !important; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 10px !important; box-shadow: 1px 1px 5px #666; border-radius: 4px } .floatedReceipt A.close:before { } .floatedReceipt A.close:hover:before { } .floatedReceipt EM { FONT-WEIGHT: bold } .floatedReceipt A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: url(none); COLOR: #333 !important; BORDER-TOP: 0px; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important } .floatedReceipt A:hover { TEXT-DECORATION: none !important } .floatedReceipt#receipt_floated_theme { Z-INDEX: 1001; POSITION: absolute; TOP: 50px; RIGHT: 45px } .floatedReceipt#receipt_floated_courseMenu { Z-INDEX: 1201; POSITION: absolute; LEFT: 180px } .floatedReceipt .arrow { BORDER-BOTTOM: transparent 15px dashed; POSITION: absolute; BORDER-LEFT: transparent 15px dashed; HEIGHT: 0px; FONT-SIZE: 0px; BORDER-TOP: transparent 15px dashed; BORDER-RIGHT: transparent 15px dashed } .pointTop.floatedReceipt .arrow { BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #fcfbd1; TOP: -30px; LEFT: 58% } .pointLeft.floatedReceipt .arrow { BORDER-RIGHT-STYLE: solid; BORDER-RIGHT-COLOR: #fcfbd1; TOP: 10px; LEFT: -30px } .nav .sub .flyout .slideoutLink { FONT-WEIGHT: bold } .nav .sub .slideoutLink IMG { WIDTH: 16px; BACKGROUND: url(images/utilicons_arrows_dark.png) 16px 16px; FLOAT: right; HEIGHT: 16px } .nav .sub .slideoutLink-active { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; box-shadow: -3px 0 3px rgba(0, 0, 0, .3); border-radius: 0 } .nav .sub .slideoutLink-active IMG { BACKGROUND: url(images/utilicons_arrows_dark.png) 0px 16px } .slideoutOpen { MARGIN-LEFT: -1px !important; BORDER-RIGHT: #ccc 1px solid } .statusFilter { POSITION: relative; PADDING-LEFT: 8px; FONT-SIZE: 13px } LABEL.statusFilter { TOP: 0px } SPAN.statusFilter { TOP: 1px } .collapsible TABLE.reportcard TR TD:first-child { DISPLAY: block !important } #loginRedirectProviders H3 { MARGIN: 10px } #loginRedirectProviderList LI { MARGIN: 0px 10px 5px 0px; DISPLAY: inline-block } #loginRedirectProviderList LI IMG { WIDTH: 16px; HEIGHT: 16px } .paletteItems LABEL { MAX-WIDTH: 90%; WORD-WRAP: break-word } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems .inactive { MARGIN: 0px; opacity: .4 } DIV.comments DIV DIV.collabComments { BACKGROUND-COLOR: white; MAX-HEIGHT: 100px; OVERFLOW: auto !important } DIV.studentGradesCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetEditTabCommentPreview { WIDTH: 110px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetHistTabCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } .tooltip_show:focus { POSITION: static; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible } .radio-list { PADDING-LEFT: 20px } .radio-list LI { PADDING-BOTTOM: 4px !important; TEXT-INDENT: -26px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .radio-list LI INPUT[type=radio] { VERTICAL-ALIGN: bottom; MARGIN-RIGHT: 6px } .radio-list LI .button-4 { MARGIN-LEFT: 4px } .cartMode.csPicker #copyright { DISPLAY: none } .details .key-valueTable + .vtbegenerated { MARGIN-TOP: 12px !important } .ondemand-module { POSITION: relative; MARGIN: 14px 3px } .ondemand-module DIV { MARGIN-BOTTOM: 12px } .ondemand-module DIV A { PADDING-BOTTOM: 10px; PADDING-LEFT: 4%; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 10px; border-radius: 5px } .ondemand-module DIV A:hover { BACKGROUND: #00b3be; TEXT-DECORATION: none; box-shadow: 0 0 12px #2cb673; text-shadow: 0 -1px 0 rgba(0, 0, 0, .4) } .ondemand-module DIV A > SPAN { DISPLAY: block; MARGIN-BOTTOM: 3px; FONT-SIZE: 80%; FONT-WEIGHT: normal } .ondemand-module SPAN.release { BORDER-BOTTOM: #00add0 1px solid; POSITION: absolute; BORDER-LEFT: #00add0 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 13px; PADDING-RIGHT: 10px; BACKGROUND: #9dddea; COLOR: #000; FONT-SIZE: 85%; BORDER-TOP: #00add0 1px solid; TOP: -7px; RIGHT: -4px; BORDER-RIGHT: #00add0 1px solid; PADDING-TOP: 3px; border-radius: 12px 12px 12px 12px; text-shadow: 0 1px 0 rgba(255, 255, 255, .3) } .ondemand-module P { MARGIN: 0px 13px; FONT: italic 93%/1.45 Georgia, serif; COLOR: #666 }

@import url( theme1.css?v=9.1.90132.0 ); @import url( theme2.css?v=9.1.90132.0 );

BODY { HEIGHT: auto } HTML { HEIGHT: auto } BODY { MIN-WIDTH: 0px } DIV.topGlobalLinks { MIN-WIDTH: 0px } .navigationPane { DISPLAY: none } .contentPane { MARGIN: 0px 14px } .questionDiv .submission_text { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainerLarge { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry H4 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry .entryText { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogContainer .entryComments LI P { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .journalNav UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE THEAD TH { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TBODY TD { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TD DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .modeSwitch { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } A.cmimg-small { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .fileInputWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .field { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .noLabelField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .liveArea .stepcontent TEXTAREA { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonLibrary { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .previewTextArea { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .rating LI A:hover { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .dbThreadTree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .nav .sub UL LI A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmdiv A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .menumini A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .timediv UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentTags { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .auto_complete UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-header H2 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-content { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myPlacesContent { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myavatar { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble .detailComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeDetailsStep { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tableOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .inventory { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .brandingImgWrap { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList-read .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentListPlain .contentListRight + .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .landingPageColumn UL LI UL.datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .panelNested { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .module { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .moduleHeading { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .collapsible { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .imgWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .scroll_div { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .eudModule .eudModule-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .styledModule-dark .module-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet .itemGroups LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet UL.hierarchyList LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .customBanner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .loggedInAs { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #loggedInUserName { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .topTabs .hotItems UL.hotLinks { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmImg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemTray .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemIconHolder A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .title { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .high { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .navPaletteContent A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu H3 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .expTreeContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeContainer .tree LI H4 + UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #pickerPalette .tree > LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeScrollable { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #logDetail { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .table-scroll-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gridOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeItemsWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeSide .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV UL LI DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.comments DIV DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.studentGradesCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetEditTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetHistTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .u_scrollPanel-vertical { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentScore { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable_header DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gc_info UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI SPAN { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cumulativeSelectItems .selected_items .itemList { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .flynav UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .overrow DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .weightField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .criteriaItem { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important }

/* ================================================================== * General i18n functions * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ // internal methods function _escape(string) { // ?= does not seem to work return (''+string).replace(/^'|([^\\])'/g, "$1\\'").replace(/\n/g, "&crlf;"); } function _unescape(string) { return string.replace(/&crlf;/g, "\n"); } function _substitute(string, parameters) { for ( var key in parameters) { if ( parameters.hasOwnProperty( key ) ) { string = eval( "string.replace(/\\{" + key + "\\}/g, '" + _escape(parameters[key]) + "')" ); } } return _unescape(string); } // Public methods: these methods are instance methods of dynamically generated // Javascript bundle objects. See Java class blackboard.platform.intl.JsResource // and Perl module CI::L10n::JsResource. // Get a string from a resource bundle function i18n_get_string(key) { return this[key]; } // Get string and perform substitution using positions (arrays) or names (object) function i18n_get_formatted_string(key, parameters) { var string = this.getString(key); if (string && parameters) { // Convert to object keyed by string representation of array index if ( parameters.constructor.toString() == [].constructor.toString() ) { var array = parameters; parameters = {}; for (var i = 0; i < array.length; ++i) { parameters[''+i] = array[i]; } } string = _substitute(string, parameters); } return string; }

/* Prototype JavaScript framework, version 1.7 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key], type = typeof value; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError(); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (object.hasOwnProperty(property)) { results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toJSONEx: toJSON, // Leaving this in here to assist in debugging odd stringify issues in IE if we see them again in other contexts. toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); } function unescapeHTML() { return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#<Enumerable:' + this.toArray().inspect() + '>'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); }, hasResponder: function( callback ) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { return true; } }); return false; } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState]; // quite a high number of Interactive events can be generated on some browsers // triggering a memory issue in FF3 when building the response object. So if there is no // registered listener, quick return // see https://bugzilla.mozilla.org/show_bug.cgi?id=453709 if ( state == 'Interactive' ) { if ( this.notListeningToInteractive ) { if ( this.notListeningToInteractive.value ) return; } else { this.notListeningToInteractive = new Object(); this.notListeningToInteractive.value = ( !this.options['onInteractive'] && !Ajax.Responders.hasResponder( state ) ); if ( this.notListeningToInteractive.value ) return; } } var response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $s(element) { if (Object.isString(element)) { return document.getElementById(element); } return element; } function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { function shouldUseCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement('<input name="x">'); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCache(tagName, attributes) ? cache[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.idCounter = 1; Element.cache = { }; Element._purgeElement = function(element) { var uid = element._prototypeUID; if (uid) { Element.stopObserving(element); element._prototypeUID = void 0; delete Element.Storage[uid]; } } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, // only extend the element if it is a string - otherwise we don't need to extend the element remove: function(element) { if (Object.isString(element)) { element = $(element); } if (element.parentNode) { element.parentNode.removeChild(element); } return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = "<option value=\"test\">test</option>"; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = "<link>"; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var purgeElement = Element._purgeElement; var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) { while (element.firstChild) { element.removeChild(element.firstChild); } var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); nodes.each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(), value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType == 1) elements.push(Element.extend(element)); if (elements.length == maximumLength) break; } return elements; }, // Collect items without extending them all: rawRecursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) { elements.push(element); } return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === 1) { results.push(Element.extend(child)); } child = child.nextSibling; } return results; }, // Find the immediate descendents of the given element without extending them all rawImmediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).rawNextSiblings()); return []; }, previousSiblings: function(element, maximumLength) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, // Find the next siblings without actually extending them all rawNextSiblings: function(element) { return $(element).rawRecursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Prototype.Selector.find(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.previousSiblings(), expression, index); } else { return element.recursivelyCollect("previousSibling", index + 1)[index]; } }, next: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.nextSiblings(), expression, index); } else { var maximumLength = Object.isNumber(index) ? index + 1 : 1; return element.recursivelyCollect("nextSibling", index + 1)[index]; } }, select: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); }, adjacent: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element.parentNode).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $s(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, makePositioned: function(element) { element = $s(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source), delta = [0, 0], parent = null; element = $(element); if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className', forProp = 'for', el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'), f; el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if (element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(), fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html, force) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; var workaround = false; if (t) workaround = true; else if (force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = '&nbsp;' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) { div = div.firstChild; } } else { div.innerHTML = html; } return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')); Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); if (document.documentElement.hasAttribute) { Element.hasAttribute = function(element, attribute) { return element.hasAttribute(attribute); }; } else { Element.hasAttribute = Element.Methods.Simulated.hasAttribute; } Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = Element.Storage.UID++; uid = element._prototypeUID; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); }, purge: function(element) { if (!(element = $(element))) return; var purgeElement = Element._purgeElement; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } }); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = element.getStyle(property); } if (value === null) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value); var whole = null; var position = element.getStyle('position'); var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) { return number; } return number + 'px'; } function isDisplayed(element) { var originalElement = element; while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._prepared) return; var element = this.element; if (isDisplayed(element)) { this._prepared = true; return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = element.getStyle('position'), width = element.getStyle('width'); if (width === "0px" || width === null) { element.style.display = 'block'; width = element.getStyle('width'); } var context = (position === 'fixed') ? document.viewport : element.parentNode; element.setStyle({ position: 'absolute', visibility: 'hidden', display: 'block' }); var positionedWidth = element.getStyle('width'); var newWidth; if (width && (positionedWidth === width)) { newWidth = getPixelValue(element, 'width', context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getPixelValue(element, 'width', context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._prepared = true; }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._prepared = false; }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#<Element.Layout>"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } // Implementing a new method to avoid retesting the entire application with clientHeight function getDimensionsEx(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display != 'none') { // Safari bug return {width: element.clientWidth, height: element.clientHeight}; } return getDimensions(element); } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { element = $(element); var valueT = 0, valueL = 0, docBody = document.body; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getDimensions: getDimensions, getDimensionsEx: getDimensionsEx, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); Prototype._original_property = window.Sizzle; /*! * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; var origContext = context = context || document; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), soFar = selector; while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) selector += parts.shift(); set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { var ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { var ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { var cur = parts.pop(), pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { throw "Syntax error, unrecognized expression: " + (cur || selector); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set, match; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.match[ type ].exec( expr )) != null ) { var filter = Expr.filter[ type ], found, item; anyFound = false; if ( curLoop == result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr == old ) { if ( anyFound == null ) { throw "Syntax error, unrecognized expression: " + expr; } else { break; } } old = expr; } return curLoop; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part, isXML){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag && !isXML ) { part = part.toUpperCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part, isXML){ var isPartStr = typeof part === "string"; if ( isPartStr && !/\W/.test(part) ) { part = isXML ? part : part.toUpperCase(); for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName === part ? parent : false; } } } else { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context, isXML){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { if ( !inplace ) result.push( elem ); } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ for ( var i = 0; curLoop[i] === false; i++ ){} return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); }, CHILD: function(match){ if ( match[1] == "nth" ) { var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return /h\d/i.test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 == i; }, eq: function(elem, i, match){ return match[3] - 0 == i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } } return true; } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; case 'nth': var first = match[2], last = match[3]; if ( first == 1 && last == 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first == 0 ) { return diff == 0; } else { return ( diff % first == 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value != check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 ); } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return 0; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } (function(){ var form = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = "<a name='" + id + "'/>"; var root = document.documentElement; root.insertBefore( form, root.firstChild ); if ( !!document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = "<a href='#'></a>"; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "<p class='TEST'></p>"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; if ( !seed && context.nodeType === 9 && !isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ var div = document.createElement("div"); div.innerHTML = "<div class='test e'></div><div class='test'></div>"; if ( div.getElementsByClassName("e").length === 0 ) return; div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) return; Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ){ elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ) { elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } var contains = document.compareDocumentPosition ? function(a, b){ return a.compareDocumentPosition(b) & 16; } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; var isXML = function(elem){ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; while (element) { if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { return Element.extend(element); } element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { if (eventName === "beforeunload") { responder = function(event) { Event.extend(event, element); return handler.call(element, event); }; } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K, translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { return (translations[eventName] || eventName); }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (!registry) return element; if (!eventName) { registry.each( function(pair) { var eventName = pair.key; stopObserving(element, eventName); }); return element; } var responders = registry.get(eventName); if (!responders) return element; if (!handler) { responders.each(function(r) { stopObserving(element, eventName, r.handler); }); return element; } var i = responders.length, responder; while (i--) { if (responders[i].handler === handler) { responder = responders[i]; break; } } if (!responder) return element; if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } var _getElementsByClassName = instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return _getElementsByClassName( parentElement || document.body, className ); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#<Selector: " + this.expression + ">"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); /* * * Copyright (c) 2007 Andrew Tetlaw * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * * * * FastInit * http://tetlaw.id.au/view/javascript/fastinit * Andrew Tetlaw * Version 1.4.1 (2007-03-15) * Based on: * http://dean.edwards.name/weblog/2006/03/faster * http://dean.edwards.name/weblog/2006/06/again/ * Help from: * http://www.cherny.com/webdev/26/domloaded-object-literal-updated * */ var FastInit = { onload : function() { if (FastInit.done) { return; } FastInit.done = true; for(var x = 0, al = FastInit.f.length; x < al; x++) { FastInit.f[x](); } }, addOnLoad : function() { var a = arguments; for(var x = 0, al = a.length; x < al; x++) { if(typeof a[x] === 'function') { if (FastInit.done ) { a[x](); } else { FastInit.f.push(a[x]); } } } }, listen : function() { if (/WebKit|khtml/i.test(navigator.userAgent)) { FastInit.timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(FastInit.timer); delete FastInit.timer; FastInit.onload(); }}, 10); } else if (document.addEventListener) { document.addEventListener('DOMContentLoaded', FastInit.onload, false); } else if(!FastInit.iew32) { if(window.addEventListener) { window.addEventListener('load', FastInit.onload, false); } else if (window.attachEvent) { return window.attachEvent('onload', FastInit.onload); } } }, f:[],done:false,timer:null,iew32:false }; /*@cc_on @*/ /*@if (@_win32) FastInit.iew32 = true; document.write('<script id="__ie_onload" defer src="' + ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); document.getElementById('__ie_onload').onreadystatechange = function(){if (this.readyState == 'complete') { FastInit.onload(); }}; /*@end @*/ FastInit.listen(); /** * Only include the contents of this file once - for example, if this is included in a lightbox we don't want to re-run * all of this - just use the loaded version. (i.e. rerunning would clear page.bundle which would remove all the * language strings for the current page) */ if (!window.page) { var page = {}; page.isLoaded = false; /** * Utility for adding and using localized messages on the page. */ page.bundle = {}; page.bundle.messages = {}; page.bundle.addKey = function( key, value ) { page.bundle.messages[key] = value; }; page.bundle.getString = function( key /*, arg1, arg2, ..., argN */ ) { var result = page.bundle.messages[key]; if ( !result ) { return "!!!!" + key + "!!!!!"; } else { if ( arguments.length > 1 ) { for ( var i = 1; i < arguments.length; i++ ) { result = result.replace( new RegExp("\\{"+(i-1)+"\\}","g"), arguments[i] ); } } return result; } }; /** * Provides support for lazy initialization of javascript behavior when a certain * event happens to a certain item. */ page.LazyInit = function( event, eventTypes, initCode ) { var e = event || window.event; var target = Event.element( event ); // This is because events bubble and we want a reference // to the element we registered the handlers on. target = page.util.upToClass(target, "jsInit"); for (var i = 0; i < eventTypes.length; i++ ) { target['on'+eventTypes[i]] = null; } eval( initCode ); //initCode can reference "target" }; /** * Evaluates any <script> tags in the provided string in the global scope. * Useful for evaluating scripts that come back in text from an Ajax call. * If signalObject is passed then signalObject.evaluatingScripts will be set to false when done. */ page.globalEvalScripts = function(str, evalExternalScripts, signalObject) { //Get any external scripts var waitForVars = []; var scriptVars = [ { script: 'bb_htmlarea', variable: ['HTMLArea'] }, { script: 'w_editor', variable: ['WebeqEditors'] }, { script: 'wysiwyg.js', variable: ['vtbe_attchfiles'] }, { script: 'gradebook_utils.js', variable: ['gradebook_utils'] }, { script: 'rubric.js', variable: ['rubricModule'] }, { script: 'gridmgmt.js', variable: ['gridMgmt'] }, { script: 'calendar-time.js', variable: ['calendar'] }, { script: 'widget.js', variable: ['widget'] }, { script: 'vtbeTinymce.js', variable: ['tinyMceWrapper'] }, { script: 'WhatsNewView.js', variable: ['WhatsNewView'] }, { script: 'tiny_mce.js', variable: ['tinymce','tinyMCE'] } ]; if (evalExternalScripts) { var externalScriptRE = '<script[^>]*src=["\']([^>"\']*)["\'][^>]*>([\\S\\s]*?)<\/script>'; var scriptMatches = str.match(new RegExp(externalScriptRE, 'img')); if (scriptMatches && scriptMatches.length > 0) { $A(scriptMatches).each(function(scriptTag) { var matches = scriptTag.match(new RegExp(externalScriptRE, 'im')); if (matches && matches.length > 0 && matches[1] != '') { var scriptSrc = matches[1]; if (scriptSrc.indexOf('/dwr_open/') != -1) { // dwr_open calls will ONLY work if the current page's webapp == the caller's webapp, // otherwise we'll get a session error. THis will happen if a lightbox is loaded with // dynamic content from a different webapp (say /webapps/blackboard) while the main page // is loaded from /webapps/discussionboard. To avoid this, rewrite the url to use the // webapp associated with the current page. var newparts = scriptSrc.split('/'); var oldparts = window.location.pathname.split('/'); newparts[1] = oldparts[1]; newparts[2] = oldparts[2]; scriptSrc = newparts.join('/'); } var scriptElem = new Element('script', { type: 'text/javascript', src: scriptSrc }); var head = $$('head')[0]; head.appendChild(scriptElem); for ( var i = 0; i < scriptVars.length; i++ ) { if ( scriptSrc.indexOf( scriptVars[i].script ) != -1 ) { scriptVars[ i ].variable.each( function( s ) { waitForVars.push( s ); } ); break; } } } }); } } page.delayAddExtractedScripts(str.extractScripts(), waitForVars, signalObject); }; // Evaluate any inline script - delay a bit to give the scripts above time to load // NOTE that this is not guaranteed to work - if there are delays loading and initializing // the scripts required then code in these scripts might fail to find the required variables // If it is for our code then updating waitForVars appropriately per script will work page.delayAddExtractedScripts = function (scripts, waitForVars, signalObject) { var count = 0; if (waitForVars.length === 0) { page.actuallyAddExtractedScripts(scripts, signalObject); } else { new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( page.allVariablesDefined(waitForVars) ) { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } } else // give up if it takes longer than 5s to load { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } }.bind(this), 0.05 ); } }; page.allVariablesDefined = function(vars) { var result = true; for ( var i = 0; i < vars.length; i++ ) { if ( !window[vars[i]] ) { result = false; break; } } return result; }; page.actuallyAddExtractedScripts = function (scripts, signalObject) { var scriptExecutionDelay = 0; if( signalObject ) { scriptExecutionDelay = signalObject.delayScriptExecution; } scripts.each(function(script) { if ( script != '' ) { if ( Prototype.Browser.IE && window.execScript ) { ( function() { window.execScript( script ); }.delay( scriptExecutionDelay ) ); } else { ( function() { var scriptElem = new Element( 'script', { type : 'text/javascript' } ); var head = $$( 'head' )[ 0 ]; script = document.createTextNode( script ); scriptElem.appendChild( script ); head.appendChild( scriptElem ); head.removeChild( scriptElem ); }.delay( scriptExecutionDelay ) ); } } } ); if (signalObject) { signalObject.evaluatingScripts = false; } }; page.setIframeHeight = function () { try { var iframeElements = $$('iframe.cleanSlate'); iframeElements.each( function( iframeElement ) { if ( iframeElement.contentWindow && iframeElement.contentWindow.document && iframeElement.contentWindow.document.body ) { iframeElement.style.height = iframeElement.contentWindow.document.body.scrollHeight + 50 + 'px'; } }); } catch( e ){} }; page.onResizeChannelIframe = function( channelExtRef ) { var frameId = 'iframe' + channelExtRef; var listId = 'list_channel' + channelExtRef; var f = $( frameId ); f.style.height = f.contentWindow.document.getElementById( listId ).scrollHeight + 15 + "px"; }; /** * Contains page-wide utility methods */ page.util = {}; /** * Returns whether the specific element has the specified class name. * Same as prototype's Element.hasClassName, except it doesn't extend the element (which is faster in IE). */ page.util.hasClassName = function ( element, className ) { var elementClassName = element.className; if (elementClassName.length === 0) { return false; } if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) { return true; } return false; }; page.util.fireClick = function ( elem ) { if (Prototype.Browser.IE) { elem.fireEvent("onclick"); } else { var evt = document.createEvent("HTMLEvents"); evt.initEvent("click", true, true); elem.dispatchEvent(evt); } }; page.util.useARIA = function () { if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); var ffversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ffversion >= 1.9) { return true; } } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; var ieversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ieversion>=8) { return true; } } return false; }; // Find an element with the given className, starting with the element passed in page.util.upToClass = function ( element, className ) { while (element && !page.util.hasClassName(element, className)) { element = element.parentNode; } return $(element); }; page.util.isRTL = function () { var els = document.getElementsByTagName("html"); var is_rtl = (typeof(els) != 'undefined' && els && els.length == 1 && els[0].dir == 'rtl' ); return is_rtl ; }; page.util.allImagesLoaded = function (imgList) { var allDone = true; if (imgList) { for ( var i = 0, c = imgList.length; i < c; i++ ) { var animg = imgList[i]; // TODO - this doesn't appear to work on IE. if ( !animg.complete ) { allDone = false; break; } } } return allDone; }; // Exposes (display but keep invisible) an invisible element for measurement // recursively traverses up the DOM looking for // a parent node of element whose display == 'none' // If found, sets its style to: display:block, position:absolute, and visibility:hidden // and saves it as element.hiddenNode so it can be easily unexposed page.util.exposeElementForMeasurement = function ( element ) { element = $(element); var e = element; var hiddenNode; // find parent node that is hidden while ( !hiddenNode && e && e.parentNode) { if ( $(e).getStyle('display') === 'none') { hiddenNode = $(e); } e = $(e.parentNode); } if ( hiddenNode ) { // save original style attributes: visibility, position, & display element.hiddenNode = hiddenNode; var style = hiddenNode.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') { newStyles.position = 'absolute'; } hiddenNode.originalStyles = originalStyles; // set new style for: visibility, position, & display hiddenNode.setStyle( newStyles ); } }; // undo previous call to exposeElementForMeasurement page.util.unExposeElementForMeasurement = function ( element ) { element = $(element); if ( element && element.hiddenNode && element.hiddenNode.originalStyles ) { Element.setStyle( element.hiddenNode, element.hiddenNode.originalStyles ); element.hiddenNode.originalStyles = null; element.hiddenNode = null; } }; /** * Returns whether any part of the two elements overlap each other. */ page.util.elementsOverlap = function ( e1, e2 ) { var pos1 = $(e1).cumulativeOffset(); var a = { x1: pos1.left, y1: pos1.top, x2: pos1.left + e1.getWidth(), y2: pos1.top + e1.getHeight() }; var pos2 = $(e2).cumulativeOffset(); var b = { x1: pos2.left, y1: pos2.top, x2: pos2.left + e2.getWidth(), y2: pos2.top + e2.getHeight() }; return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; }; /** * To handle the case where the focus is visible but too close to the bottom of the page, scroll the page up a bit. */ page.util.focusAndScroll= function(elem) { elem.focus(); return page.util.ensureVisible(elem); }; page.util.ensureVisible= function(elem) { var scrolltop = document.viewport.getScrollOffsets().top; var mytop = elem.cumulativeOffset()[1]; var height = document.viewport.getDimensions().height; var realtop = mytop - scrolltop; var thirty = height * 0.3; if (realtop > (height-thirty)) { window.scrollBy(0,thirty); } return false; }; page.util.processJSProtoString = function (string, checkToken) { // This value must match the value passed as the 2nd parameter to this string. // The goal is to pass a known value, as a constant, through the javascript: pseudo-protocol // handler. We can then examine the result to determine the decoding method used by the current // browser. var sniffToken = '%C3%A9'; // There are three known decoding cases, non-translated, UTF8, and unescape if (checkToken === unescape(sniffToken)) { // Unescape decoded return decodeURIComponent(escape(string)); } else if (checkToken === sniffToken) { // Non-translated return decodeURIComponent(string); } else { // UTF8 Decoded/Unknown return string; } }; /** * Find the first action bar that precedes sourceElement * Returns the action bar div element if found, null otherwise * * @param sourceElement */ page.util.findPrecedingActionBar = function( sourceElement ) { var actionBar = null; // Loop through each ancestor of sourceElement, // starting with parent, until an action bar is found sourceElement.ancestors().each( function( item ) { actionBar = item.previous('div.tabActionBar') || item.previous('div.actionBarMicro') || item.previous('div.actionBar'); if (actionBar) { throw $break; } }); return actionBar; }; page.util.getLargestDimensions = function (element) { var width = 0; var height = 0; var dim; while (element != document) { dim = $(element).getDimensions(); if (dim.width > width) { width = dim.width; } if (dim.height > height) { height = dim.height; } element = element.up(); } return { width: width, height: height }; }; /* * Resize the current window so that it will fit the largest dimensions found for the given element. * Will also reposition on the screen if required to fit. Will not size larger than the screen. * NOTE that this will only work for popup windows - main windows are typically in a tabset in * the browser and they don't allow resizing like this. That's OK because the main use case * for this method is to make sure popup windows are resized appropriately for their content. */ page.util.resizeToContent = function (startElement) { var dim = page.util.getLargestDimensions(startElement); var newWidth = dim.width; newWidth += 25; // TODO: Haven't figured out why I need this extra space yet... if (window.innerWidth > newWidth) { newWidth = window.innerWidth; } if (newWidth > screen.width) { newWidth = screen.width; } var newHeight = dim.height; newHeight += 100; // TODO: Haven't figured out why I need this extra space yet if (window.innerHeight > newHeight) { newHeight = window.innerHeight; } if (newHeight > screen.height) { newHeight = screen.height; } var left = 0; var top = 0; if ( window.screenLeft ) { left = window.screenLeft; top = window.screenTop; } else if ( window.screenX ) { left = window.screenX; top = window.screenY; } if (left + newWidth > screen.width) { left = screen.width - newWidth; if (left < 0) { left = 0; } } if (top + newHeight > screen.height) { top = screen.height - newHeight; if (top < 0) { top = 0; } } window.moveTo(left,top); window.resizeTo(newWidth,newHeight); }; /** * Sets the css position of all li elements that are contained in action bars on the page. * Since z-index only works on positioned elements, this function can be used to ensure that * divs with a higher z-index will always appear on top of any action bars on the page. * * @param cssPosition */ page.util.setActionBarPosition = function( cssPosition ) { $$( 'div.actionBar', 'div.tabActionBar', 'div.actionBarMicro' ).each( function( actionbar ) { actionbar.select( 'li' ).each( function( li ) { li.setStyle( {position: cssPosition} ); }); }); }; /** * Class for controlling the course menu-collapser. Also ensures the menu is * the right height */ page.PageMenuToggler = Class.create(); page.PageMenuToggler.prototype = { /** * initialize */ initialize: function( isMenuOpen,key,temporaryScope ) { page.PageMenuToggler.toggler = this; this.key = key; if (temporaryScope) { this.temporaryScope = temporaryScope; } else { this.temporaryScope = false; } this.isMenuOpen = isMenuOpen; this.puller = $('puller'); this.menuPullerLink = $(this.puller.getElementsByTagName('a')[0]); this.menuContainerDiv = $('menuWrap'); this.navigationPane = $('navigationPane'); this.contentPane = $('contentPanel') || $('contentPane'); this.navigationPane = $('navigationPane'); this.locationPane = $(this.navigationPane.parentNode); this.breadcrumbBar = $('breadcrumbs'); this.menu_pTop = parseInt(this.menuContainerDiv.getStyle('paddingTop'), 10); this.menu_pBottom = parseInt(this.menuContainerDiv.getStyle('paddingBottom'), 10); this.loc_pTop = parseInt(this.locationPane.getStyle('paddingTop'), 10); if ( this.breadcrumbBar ) { this.bc_pTop = parseInt(this.breadcrumbBar.getStyle('paddingTop'), 10); this.bc_pBottom = parseInt(this.breadcrumbBar.getStyle('paddingBottom'), 10); } else { this.bc_pTop = 0; this.bc_pBottom = 0; } this.toggleListeners = []; this.onResize( null ); // fix the menu size // Doesn't work in IE or Safari.. //Event.observe( window, 'resize', this.onResize.bindAsEventListener( this ) ); Event.observe( this.menuPullerLink, 'click', this.onToggleClick.bindAsEventListener( this ) ); }, /** * Adds a listener for course menu toggle events */ addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, /** * Notifies all registered toggle event listeners that a toggle has occurred. */ _notifyToggleListeners: function( isOpen ) { this.toggleListeners.each( function( listener ) { listener( isOpen ); }); }, notifyToggleListeners: function( isOpen ) { // we call once the toggle is complete and the DOM in its new state. 2012 themes add transition, which seems // to collide with the logic to get dimensions of dom element, so the delay is a 1 sec to let time for those // transitions to be done. this._notifyToggleListeners.bind( this, isOpen ).delay( 1 ); }, /** * getAvailableResponse */ getAvailableResponse : function ( req ) { var originalMenuOpen = this.isMenuOpen ; if ( req.responseText.length > 0 ) { if ( req.responseText == 'true' ) { this.isMenuOpen = true; } else { this.isMenuOpen = false; } } if ( originalMenuOpen != this.isMenuOpen ) { this.notifyToggleListeners( this.isMenuOpen ); this.menuContainerDiv.toggle(); this.puller.toggleClassName("pullcollapsed"); this.contentPane.toggleClassName("contcollapsed"); this.navigationPane.toggleClassName("navcollapsed"); } }, /** * Expands the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ expand : function () { this.menuContainerDiv.show(); this.puller.removeClassName("pullcollapsed"); this.contentPane.removeClassName("contcollapsed"); this.navigationPane.removeClassName("navcollapsed"); this.isMenuOpen = true; var msg = page.bundle.messages[ "coursemenu.hide" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( true ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, true ); } else { UserDataDWRFacade.setStringPermScope( this.key, true ); } }, /** * Collapses the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ collapse : function () { this.menuContainerDiv.hide(); this.puller.addClassName("pullcollapsed"); this.contentPane.addClassName("contcollapsed"); this.navigationPane.addClassName("navcollapsed"); this.isMenuOpen = false; var msg = page.bundle.messages[ "coursemenu.show" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( false ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, false ); } else { UserDataDWRFacade.setStringPermScope( this.key, false ); } }, /** * Event triggered when the puller toggle control is clicked. Changes the * menu from open to closed or closed to open depending on existing state. */ onToggleClick: function( event ) { if ( this.isMenuOpen ) { this.collapse(); } else { this.expand(); } Event.stop( event ); }, /** * onResize */ onResize: function( event ) { var menuHeight = this.menuContainerDiv.getHeight(); var contentHeight = this.contentPane.getHeight(); var maxHeight = ( menuHeight > contentHeight ) ? menuHeight : contentHeight; this.contentPane.setStyle({height: maxHeight + 'px'}); this.navigationPane.setStyle({height: maxHeight + 'px'}); } }; page.PageMenuToggler.toggler = null; /** * Class for controlling the page help toggler in the view toggle area */ page.PageHelpToggler = Class.create(); page.PageHelpToggler.prototype = { initialize: function( isHelpEnabled, showHelpText, hideHelpText, assumeThereIsHelp ) { page.PageHelpToggler.toggler = this; this.toggleListeners = []; this.isHelpEnabled = isHelpEnabled; this.showText = showHelpText; this.hideText = hideHelpText; this.contentPanel = $('contentPanel') || $('contentPane'); var helperList = []; if ( this.contentPanel && !assumeThereIsHelp) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { helperList.push( $(el) ); } } } var helpTextToggleLink = $('helpTextToggleLink'); if ( ( !helperList || helperList.length === 0) && !assumeThereIsHelp ) { if ( helpTextToggleLink ) { helpTextToggleLink.remove(); } } else { if ( !isHelpEnabled ) { helperList.invoke( "toggle" ); } if ( !this.showText ) { this.showText = page.bundle.getString("viewtoggle.editmode.showHelp"); } if ( !this.hideText ) { this.hideText = page.bundle.getString("viewtoggle.editmode.hideHelp"); } this.toggleLink = helpTextToggleLink; this.toggleImage = $(this.toggleLink.getElementsByTagName('img')[0]); Event.observe( this.toggleLink, "click", this.onToggleClick.bindAsEventListener( this ) ); $(this.toggleLink.parentNode).removeClassName('hidden'); this.updateUI(); } }, addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, _notifyToggleListeners: function() { this.toggleListeners.each( function( listener ) { listener( this.isHelpEnabled ); }); }, notifyToggleListeners: function() { // we notify once the whole menu collapse/expand is done, so the DOM is in final state this._notifyToggleListeners.bind( this ).delay( ); }, updateUI: function( ) { if ( this.isHelpEnabled ) { $("showHelperSetting").value = 'true'; this.toggleImage.src = "/images/ci/ng/small_help_on2.gif"; this.toggleLink.setAttribute( "title", this.showText ); this.toggleImage.setAttribute( "alt", this.showText ); } else { $("showHelperSetting").value = 'false'; this.toggleImage.src = "/images/ci/ng/small_help_off2.gif"; this.toggleLink.setAttribute( "title", this.hideText ); this.toggleImage.setAttribute( "alt", this.hideText ); } }, onToggleClick: function( event ) { // Toggle all elements that have the css class "helphelp" var helperList = []; if ( this.contentPanel ) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { $(el).toggle(); } } } if ( this.isHelpEnabled ) { this.isHelpEnabled = false; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "false" ); } else { this.isHelpEnabled = true; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "true" ); } this.updateUI(); this.notifyToggleListeners(); Event.stop( event ); } }; /** * Class for controlling the display of a context menu. */ page.ContextMenu = Class.create(); page.ContextMenu.prototype = { initialize: function( contextMenuContainer, divId, forceMenuRefresh ) { this.displayContextMenuLink = contextMenuContainer.down("a"); this.contextMenuContainer = contextMenuContainer; this.forceMenuRefresh = forceMenuRefresh; this.uniqueId = this.displayContextMenuLink.id.split('_')[1]; this.contextMenuDiv = this.displayContextMenuLink.savedDiv; if ( !this.contextMenuDiv ) { this.contextMenuDiv = contextMenuContainer.down("div");//$('cmdiv_' + this.uniqueId); this.displayContextMenuLink.savedDiv = this.contextMenuDiv; page.ContextMenu.hiddenDivs.set(divId,this.contextMenuDiv); } this.originalContextMenuDiv = this.contextMenuDiv.cloneNode(true); $(this.contextMenuDiv).setStyle({zIndex: 200}); this.displayContextMenuLink.appendChild( this.contextMenuDiv ); // Temporarily add the menu back where it started this.closeContextMenuLink = contextMenuContainer.down(".contextmenubar_top").down(0); this.contextParameters = contextMenuContainer.readAttribute("bb:contextParameters"); this.menuGeneratorURL = contextMenuContainer.readAttribute("bb:menuGeneratorURL"); this.nav = contextMenuContainer.readAttribute("bb:navItem"); this.enclosingTableCell = contextMenuContainer.up("td"); this.menuOrder = contextMenuContainer.readAttribute("bb:menuOrder"); this.overwriteNavItems = contextMenuContainer.readAttribute("bb:overwriteNavItems"); this.beforeShowFunc = contextMenuContainer.readAttribute("bb:beforeShowFunc"); if (this.beforeShowFunc) { this.beforeShowFunc = eval(this.beforeShowFunc); } if ( this.menuOrder ) { this.menuOrder = this.menuOrder.split(','); } if ( !this.contextParameters ) { this.contextParameters = ""; } if ( !this.menuGeneratorURL ) { this.menuGeneratorURL = ""; } if ( !this.nav ) { this.nav = ""; } this.dynamicMenu = false; if ( this.menuGeneratorURL ) { this.dynamicMenu = true; } if (this.dynamicMenu) { Event.observe( this.displayContextMenuLink, "click", this.generateDynamicMenu.bindAsEventListener( this ) ); } else { Event.observe( this.displayContextMenuLink, "click", this.onDisplayLinkClick.bindAsEventListener( this ) ); } Event.observe( this.closeContextMenuLink, "click", this.onCloseLinkClick.bindAsEventListener( this ) ); Event.observe( this.contextMenuDiv, "keydown", this.onKeyPress.bindAsEventListener( this ) ); // adding nowrap to table cell containing context menu // If no enclosing td is found, try th if ( !this.enclosingTableCell ) { this.enclosingTableCell = contextMenuContainer.up("th"); } if ( this.enclosingTableCell ) { if ( !this.enclosingTableCell.hasClassName("nowrapCell") ) { this.enclosingTableCell.addClassName("nowrapCell"); } // if label tag is an immediate parent of context menu span tag, it needs nowrap as well if ( this.enclosingTableCell.down("label") && !this.enclosingTableCell.down("label").hasClassName("nowrapLabel")) { this.enclosingTableCell.down("label").addClassName("nowrapLabel"); } } if ( !this.dynamicMenu ) { var contexMenuItems = contextMenuContainer.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; // remove the context menu div from the page for performance reasons - add it back when we need to show it Element.remove( this.contextMenuDiv ); }, onKeyPress: function( event ) { var elem, children, index; var key = event.keyCode || event.which; if ( key == Event.KEY_UP ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_ESC ) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_TAB ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( (!event.shiftKey && index == children.length - 1) || (event.shiftKey && index === 0)) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } } else if ( key == Event.KEY_RETURN ) { if ( this.useARIA ) { elem = Event.element ( event ); (function() { page.util.fireClick( elem ); }.bind(this).defer()); Event.stop( event ); } } }, onAnchorFocus: function ( event ) { Event.element( event ).setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { Event.element( event ).setStyle({ backgroundColor: '' }); }, afterMenuGeneration: function( req ) { if ( this.dynamicMenu ) { var result; this.dynamicMenu = this.forceMenuRefresh; try { result = req.responseText.evalJSON( true ); if ( result.success == "true" ) { // append uniqueId to each li var menuHTML = result.contentMenuHTMLList.replace(/(<li.*?id=")(.*?)(".*?>)/g,"$1$2_"+this.uniqueId+"$3"); if ( this.forceMenuRefresh ) { this.contextMenuDiv.innerHTML = this.originalContextMenuDiv.innerHTML; } this.contextMenuDiv.insert({bottom:menuHTML}); $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); var contexMenuItems = this.contextMenuDiv.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } else { new page.InlineConfirmation("error", result.errorMessage, false ); } } catch ( e ) { new page.InlineConfirmation("error", result.errorMessage, false ); } } this.showMenu(); //focus on the first menu item (function() { this.contextMenuDiv.down("a").focus(); }.bind(this).defer()); }, appendItems: function( items, menuItemContainer ) { if (!menuItemContainer) { var uls = this.contextMenuDiv.getElementsBySelector("ul"); menuItemContainer = uls[uls.length-1]; } items.each( function ( item ) { if ( item.type == "seperator" ) { if (menuItemContainer.getElementsBySelector("li").length === 0) { return; } var ul = new Element('ul'); menuItemContainer.parentNode.appendChild( ul ); menuItemContainer = ul; return; } if ( !this.menuItemTempate ) { var menuItems = this.contextMenuDiv.getElementsBySelector("li"); this.menuItemTempate = menuItems[menuItems.length-1]; } var mi = this.menuItemTempate.cloneNode( true ); var a = mi.down('a'); var name = item.key ? page.bundle.getString( item.key ) : item.name ? item.name : "?"; a.update( name ); a.title = item.title ? item.title : name; a.href = "#"; menuItemContainer.appendChild( mi ); Event.observe( a, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( a, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( a, 'click', this.onItemClick.bindAsEventListener( this, item.onclick ) ); }.bind( this ) ); }, onItemClick: function( evt, func ) { this.onCloseLinkClick(); func(); Event.stop( evt ); }, setItems: function( items ) { // rather than try to match up new items with existing items, it's easier to delete the existing items // (except for the close item) and then add the new items // remove existing menu items, except close menu var menuItems = this.contextMenuDiv.getElementsBySelector("li").each( function (li ) { if ( !li.hasClassName("contextmenubar_top") ) { if (!this.menuItemTempate) { this.menuItemTempate = li; } li.stopObserving(); li.remove(); } }.bind( this ) ); // should only be one menuItemContainer var menuItemContainers = this.contextMenuDiv.getElementsBySelector("ul").each( function (ul) { if ( !ul.down("li") ) { ul.remove(); } }.bind( this ) ); this.appendItems(items, menuItems[0].parentNode); }, showMenu : function() { if (this.beforeShowFunc) { this.beforeShowFunc(this); } page.ContextMenu.registerContextMenu( this ); this.reorderMenuItems(); if ( this.useARIA ) { this.initARIA(); } var offset = this.displayContextMenuLink.cumulativeOffset(); var scrollOffset = this.displayContextMenuLink.cumulativeScrollOffset(); var viewportScrollOffset = document.viewport.getScrollOffsets(); if ( this.displayContextMenuLink.up( 'div.lb-content' ) ) { // Fix offset for context menu link inside a lightbox offset[0] = offset[0] + viewportScrollOffset[0]; offset[1] = offset[1] + viewportScrollOffset[1]; } else { // Fix the offset if the item is in a scrolled container offset[0] = offset[0] - scrollOffset[0] + viewportScrollOffset[0]; offset[1] = offset[1] - scrollOffset[1] + viewportScrollOffset[1]; } document.body.appendChild( this.contextMenuDiv ); this.contextMenuDiv.setStyle({display: "block"}); var width = this.contextMenuDiv.getWidth(); var bodyWidth = $(document.body).getWidth(); if ( page.util.isRTL() ) { offset[0] = offset[0] + this.displayContextMenuLink.getWidth() - width; } if ( offset[0] + width > bodyWidth ) { offset[0] = offset[0] - width + 30; } if ( this.keepMenuToRight ) { // In case the link is very wide (i.e. gradecenter accessible mode cell link for really wide cell) // make sure the menu renders to the right side of the link var linkWidth = this.displayContextMenuLink.getDimensions().width; if (linkWidth > width) { // Only worry if the link is actually wider than the menu offset[0] += (linkWidth-width); } } // Don't start the menu off the left side of the window if ( offset[0] < 0 ) { offset[0] = 0; } var height = this.contextMenuDiv.getHeight(); var bodyHeight = $(document.body).getHeight(); var ypos = offset[1] + this.displayContextMenuLink.getHeight() + 17; if ( ( height + ypos ) > bodyHeight ) { ypos -= height; ypos -= 34; } // Don't start the menu off the top of the screen if (ypos < 0 ) { ypos = 0; } if (height > bodyHeight) { // If the menu is too big to fit on the screen, set it to the height of the screen and allow scrollbars inside the menu this.contextMenuDiv.setStyle({ height: bodyHeight + "px", overflowY: "auto", overflowX: "hidden", left: offset[0] + "px", top: ypos + "px" }); } else { this.contextMenuDiv.setStyle({ left: offset[0] + "px", top: ypos + "px"}); } if ( !this.shim ) { this.shim = new page.popupShim( this.contextMenuDiv ); } this.shim.open(); }, initARIA: function() { if ( !this.initializedARIA ) { this.displayContextMenuLink.setAttribute( "aria-haspopup", "true" ); this.displayContextMenuLink.setAttribute( "role", "menubutton" ); this.contextMenuDiv.setAttribute( "role", "menu" ); this.contextMenuDiv.down( "ul" ).setAttribute( "role", "presentation" ); $A( this.contextMenuDiv.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval( decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "0"; link.setStyle( {cursor: 'pointer'} ); // make it look like a link. } }); this.initializedARIA = true; // Only initialize once. } }, reorderMenuItems : function() { if ( !this.menuOrder || this.menuOrder.length < 2 ) { return; } var orderMap = {}; var closeItem = null; var extraItems = []; // items not in order // Gather up all of the <li> tags in the menu and stick them in a map/object of id to the li object $A(this.contextMenuDiv.getElementsByTagName("li")).each( function( listItem ) { if (listItem.hasClassName("contextmenubar_top")) { closeItem = listItem; } else { if (this.menuOrder.indexOf(listItem.id) > -1) { orderMap[listItem.id] = listItem; // add item to map } else { extraItems.push(listItem); // listItem id not specified in menuOrder, so add listItem to extraItems } } }.bind(this) ); // Remove all the content from the context menu div $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list ) { Element.remove(list); }.bind(this) ); // Re-add the special "close" item as the first item. var ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); ulElement.insert({bottom:closeItem}); // Loop through the order, adding a <ul> at the start, and starting a new <ul> whenever a "*separator*" // is encountered, and adding the corresponding <li> for each of the ids in the order using the map/object this.menuOrder.each( function( id ) { if (id == "*separator*") { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); } else { ulElement.insert({bottom:orderMap[id]}); } }.bind(this) ); // Add any extraItems to thier own ul if (extraItems.length > 0) { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); extraItems.each( function( lineItem ) { ulElement.insert({bottom:lineItem}); }.bind(this) ); } // Remove any empty ULs and ensure that the added <ul>s have id of form "cmul${num}_${uniqueId}" $A(this.contextMenuDiv.getElementsByTagName("ul")).findAll( function( list ) { if ( list.childElements().length === 0 ) { list.remove(); return false; } else { return true; } }).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); this.menuOrder = null; // only re-order once }, generateDynamicMenu : function(event) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { var context_parameters = this.contextParameters; var menu_generator_url = this.menuGeneratorURL; var nav = this.nav; var overwriteNavItems = this.overwriteNavItems; if ( context_parameters ) { context_parameters = context_parameters.toQueryParams(); } else { context_parameters = {}; } var params = Object.extend({nav_item: nav }, context_parameters ); params = Object.extend( params, { overwriteNavItems : overwriteNavItems } ); new Ajax.Request(menu_generator_url, { method: 'post', parameters: params, onSuccess: this.afterMenuGeneration.bind( this ) }); } else { this.afterMenuGeneration(this); } $(event).preventDefault(); }, onDisplayLinkClick: function( event ) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { this.generateDynamicMenu(event); this.dynamicMenu = false; } else { this.showMenu(); //focus on the first menu item (function() { if (this.contextMenuDiv.style.display != 'none') { this.contextMenuDiv.down("a").focus(); } }.bind(this).defer()); $(event).preventDefault(); } }, onCloseLinkClick: function( event ) { this.close(); // grade center hides displayContextMenuLink onMouseOut, so we need to check if it is visible // before setting focus or IE will complain. Need to do funky visibility check because IE8 // sets display to empty string when removing parent container class (bug?) var disp = this.displayContextMenuLink.style.display; if ( disp != 'none' && disp != '' ) { this.displayContextMenuLink.focus(); } if (event) { Event.stop( event ); } }, close: function() { this.contextMenuDiv.style.display = "none"; // Delay the removal of the element from the page so firefox will continue to process // the click on the menu item chosen (otherwise it stops processing as soon as we remove the // element resulting in the menu not actually working) (function() { Element.remove( this.contextMenuDiv ); }.bind(this).delay(0.1)); if ( this.shim ) { this.shim.close(); } }, closeNow: function() { if (this.contextMenuDiv.style.display != "none") { this.contextMenuDiv.style.display = "none"; Element.remove( this.contextMenuDiv ); if ( this.shim ) { this.shim.close(); } } } }; /** * Function called to change the 'arrow' of a breadcrumb to face downward when they are clicked for the * contextual menu. * @param uniqId - unique number which identifies the crumb which was clicked * @param size - the size of the breadcrumb * @return */ page.ContextMenu.changeArrowInBreadcrumb = function (uniqId, event) { page.ContextMenu.alignArrowsInBreadcrumb(event); $('arrowContext_'+uniqId).addClassName('contextArrowDown').removeClassName('contextArrow'); //Stop the click event to propagate anymore -else all arrows will be aligned again Event.stop( event ); return false; }; //To align all breadcrumb arrows in one direction page.ContextMenu.alignArrowsInBreadcrumb = function (event) { if ($('breadcrumbs') !== null){ var bList = $($('breadcrumbs').getElementsByTagName('ol')[0]); var bs = bList.immediateDescendants(); if (bs.length !== null && bs.length >1){ for (var i = 2; i <= bs.length; i++) { var arrowSpan = $('arrowContext_'+i); if (arrowSpan !== null ){ $('arrowContext_'+i).addClassName('contextArrow').removeClassName('contextArrowDown'); } } } } return false; }; // "static" methods page.ContextMenu.LI = function(event, divId, forceMenuRefresh) { page.LazyInit(event,['focus','mouseover'],'new page.ContextMenu(page.util.upToClass(target,\'contextMenuContainer\'), \'' + divId + '\',' + forceMenuRefresh + ');'); }; page.ContextMenu.contextMenus = []; // _Open_ context menus page.ContextMenu.registerContextMenu = function( menu ) { page.ContextMenu.contextMenus.push( menu ); }; page.ContextMenu.hiddenDivs = $H(); // All the menu divs on the page - only needed for cases such as view_spreadsheet2.js where we try to modify the menus outside this framework page.ContextMenu.hideMenuDiv = function( uniqueId) { var linkId = 'cmlink_' + uniqueId; var link = document.getElementById(linkId); if (link && !link.savedDiv ) { var elementId = 'cmdiv_' + uniqueId; var element = link.nextSibling; // Should be the text between the link and div but check anyways if ( !element || element.id != elementId) { element = element.nextSibling; if ( !element || element.id != elementId) { element = document.getElementById(elementId); } } if (element) { link.savedDiv = element; page.ContextMenu.hiddenDivs.set(uniqueId,element); Element.remove( element ); } } }; page.ContextMenu.addDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { document.body.appendChild(ele); }); }; page.ContextMenu.removeDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { Element.remove(ele); }); }; page.ContextMenu.closeAllContextMenus = function( event ) { var deferClose = false; if ( event ) { var e = Event.findElement( event, 'a' ); if ( e && e.href.indexOf("#contextMenu") >= 0 ) { Event.stop( event ); return; } deferClose = true; } page.ContextMenu.contextMenus.each( function( menu ) { if ( menu != this ) { if (deferClose) { menu.close(); } else { menu.closeNow(); } } }); page.ContextMenu.contextMenus = []; }; /** * Enables flyout menus to be opened using a keyboard or mouse. Enables * them to be viewed properly in IE as well. */ page.FlyoutMenu = Class.create(); page.FlyoutMenu.prototype = { initialize: function( subMenuListItem ) { this.subMenuListItem = $(subMenuListItem); this.menuLink = $(subMenuListItem.getElementsByTagName('a')[0]); //special case to render iframe shim under new course content build menu if (this.subMenuListItem.hasClassName('bcContent')) { var buildContentDiv = this.subMenuListItem.down("div.flyout"); if ( !buildContentDiv ) { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } else { this.subMenu = buildContentDiv; } } else { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } this.menuLink.flyoutMenu = this; // calculate the next/previous tab stops this.previousSibling = this.subMenuListItem.previous(); while ( this.previousSibling && (!this.previousSibling.down('a') || !this.previousSibling.visible()) ) { this.previousSibling = this.previousSibling.previous(); } this.nextSibling = this.subMenuListItem.next(); while ( this.nextSibling && (!this.nextSibling.down('a') || !this.nextSibling.visible()) ) { this.nextSibling = this.nextSibling.next(); } var rumble = $(this.subMenuListItem.parentNode.parentNode); this.inListActionBar = rumble && ( rumble.hasClassName("rumble_top") || rumble.hasClassName("rumble") ); Event.observe( this.menuLink, 'mouseover', this.onOpen.bindAsEventListener( this ) ); Event.observe( subMenuListItem, 'mouseout', this.onClose.bindAsEventListener( this ) ); Event.observe( this.menuLink, 'click', this.onLinkOpen.bindAsEventListener( this ) ); Event.observe( this.subMenuListItem, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); $A( this.subMenu.getElementsByTagName('li') ).each ( function( li ) { $A(li.getElementsByTagName('a')).each( function( link ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( link, 'click', this.onLinkClick.bindAsEventListener( this, link ) ); }.bind( this ) ); }.bind( this ) ); // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; if ( this.useARIA ) { this.initARIA(); } this.enabled = true; }, initARIA: function() { var inListActionBar = this.inListActionBar; if ( inListActionBar ) { this.subMenuListItem.up('ul').setAttribute( "role", "menubar" ); } this.subMenuListItem.setAttribute( "role", "menuitem" ); this.subMenu.setAttribute( "role", "menu" ); if ( !this.menuLink.hasClassName("notMenuLabel") ) { this.subMenu.setAttribute( "aria-labelledby", this.menuLink.id ); } $A( this.subMenu.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); // List action bars have onclick handlers that prevent submission of the page // if no items are selected, so we can't register new onclicks here because // otherwise we can't stop them from executing. if ( !inListActionBar ) { if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval(decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "-1"; link.style.cursor = 'pointer'; // make it look like a link. } } }); }, setEnabled: function( enabled ) { this.enabled = enabled; if ( !enabled ) { this.subMenu.setStyle({ display: '' }); } }, onKeyPress: function( event ) { if (!this.enabled) { return; } var key = event.keyCode || event.which; var elem = Event.element ( event ); var children, index, link; if ( key == Event.KEY_UP ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } else if ( index === 0 ) { children[children.length - 1].focus(); // wrap to bottom } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index == -1 ) { this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); } else if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } else if ( index == ( children.length - 1 ) ) { children[0].focus(); // wrap to top } Event.stop( event ); } else if ( key == Event.KEY_LEFT ) { if ( !this.previousSibling || ( this.previousSibling.hasClassName("mainButton") || this.previousSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, true ); } else if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( !link || !this.previousSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_RIGHT ) { if ( !this.nextSibling || ( this.nextSibling.hasClassName("mainButton") || this.nextSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, false ); } else if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( !link || !this.nextSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_ESC ) { this.close(); this.menuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_RETURN && this.useARIA && !this.inListActionBar ) { page.util.fireClick( elem ); Event.stop( event ); } else if ( key == Event.KEY_TAB && this.useARIA ) { this.executeTab( event, false, event.shiftKey ); } }, executeTab: function( event, forceMenuLinkTab, shift ) { var elem = Event.element ( event ); var link; if ( ( elem != this.menuLink ) || forceMenuLinkTab ) { if ( shift ) { // Go to previous menu if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } else { // Go to next menu if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } this.close(); Event.stop( event ); } }, onOpen: function( event ) { if (!this.enabled) { return; } this.open(); }, onClose: function( event ) { var to = $(event.relatedTarget || event.toElement); if ( !to || to.up('li.sub') != this.subMenuListItem ) { this.close(); } }, onLinkOpen: function( event ) { if (!this.enabled) { return; } this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); Event.stop( event ); }, resizeAfterShowHide: function() { // TODO - ideally this would just resize the outer div, but closing and opening 'works' this.close(); this.open(); }, open: function() { var alreadyShown = this.subMenu.getStyle('display') === 'block'; // If the menu is already showing (i.e. as_ce4 theme, we don't need to position it) if ( !alreadyShown ) { // Set position of action bar elements to static to enable z-index stack order page.util.setActionBarPosition( 'static' ); var menuTop = this.subMenuListItem.getHeight(); if ( this.subMenu.hasClassName( 'narrow' ) ) { menuTop = 0; } this.subMenuListItem.setStyle( {position: 'relative'} ); this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: menuTop+'px', left: '0px', width: '', height: '', overflowY: '' }); var offset = Position.cumulativeOffset( this.subMenuListItem ); var menuDims = this.subMenu.getDimensionsEx(); var menuHeight = menuDims.height; var popupWidth = this.subMenu.getWidth(); var subListItemDims = this.subMenuListItem.getDimensions(); var menuWidth = subListItemDims.width; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); var offsetTop = offset[1] - scrollOffsets.top; this.subMenu.flyoutMenu = this; if ( (offsetTop + menuHeight + subListItemDims.height) > viewportDimensions.height) { if ( (offsetTop - menuHeight) > 0 ) { // if menu goes below viewport but still fits on-page, show it above button this.subMenu.setStyle({ top: '-'+menuHeight+'px' }); } else { // we need to create scrollbars var newWidth = this.subMenu.getWidth() + 15; popupWidth = newWidth + 5; var newMenuHeight = viewportDimensions.height - (offsetTop + subListItemDims.height) - 20; var newMenuTop = menuTop; if (newMenuHeight < offsetTop) { // More space above than below newMenuHeight = offsetTop; newMenuTop = -offsetTop; } this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: newMenuTop+'px', left: '0px', width: newWidth + 'px', height: newMenuHeight + 'px', overflowY: 'auto' }); } } var offsetLeft = offset[0] - scrollOffsets.left; if ( (offsetLeft + popupWidth) > viewportDimensions.width ) { var subMenuWidth = this.subMenuListItem.getWidth(); var newLeft = popupWidth - (viewportDimensions.width-offsetLeft); if ((newLeft > 0) && (newLeft < offsetLeft)) { newLeft = -newLeft; } else { newLeft = -offsetLeft; } this.subMenu.setStyle({ left: newLeft+'px' }); } if ( page.util.isRTL() ) { var newRight = 0; if ( (offsetLeft + menuWidth) - popupWidth < 0 ) { newRight = (offsetLeft + menuWidth) - popupWidth; } this.subMenu.setStyle({ left: '', right: newRight+'px'}); } if (!this.shim) { this.shim = new page.popupShim( this.subMenu); } this.shim.open(); } }, close: function() { // Reset position of action bar elements to relative page.util.setActionBarPosition( 'relative' ); this.subMenuListItem.setStyle({position: ''}); this.subMenu.setStyle({ display: '', top: '', left: '', width: '', height: '', overflowY: '' }); if ( this.shim ) { this.shim.close(); } }, onLinkClick: function( event, link ) { if (!this.enabled) { return; } setTimeout( this.blurLink.bind( this, link), 100); }, blurLink: function( link ) { link.blur(); if (page.util.hasClassName( link, "donotclose" )) { link.focus(); } else { this.close(); } }, onAnchorFocus: function ( event ) { if (!this.enabled) { return; } var link = Event.element( event ); link.setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { var link = Event.element( event ); link.setStyle({ backgroundColor: '' }); } }; /** * Class for providing functionality to menu palettes */ page.PaletteController = Class.create(); page.PaletteController.prototype = { /** * Constructor * * @param paletteIdStr Unique string identifier for a palette * @param expandCollapseIdStr Id value of anchor tag to be assigned * the palette expand/collapse functionality * @param closeOtherPalettesWhenOpen Whether to close all other palettes when this one is open */ initialize: function( paletteIdStr, expandCollapseIdStr, closeOtherPalettesWhenOpen, collapsed ) { // palette id string this.paletteItemStr = paletteIdStr; // palette element this.paletteItem = $(this.paletteItemStr); // default id string to palette contents container element this.defaultContentsContainerId = page.PaletteController.getDefaultContentsContainerId(this.paletteItemStr); // the currently active palette contents container element this.activeContentsContainer = $(this.defaultContentsContainerId); // expand/collapse palette toggle element this.paletteToggle = $(expandCollapseIdStr); if (this.paletteToggle) { Event.observe(this.paletteToggle, 'click', this.toggleExpandCollapsePalette.bindAsEventListener(this)); } this.closeOtherPalettesWhenOpen = closeOtherPalettesWhenOpen; page.PaletteController.registerPaletteBox(this); if (collapsed) { this.collapsePalette(true); } }, /** * Set the currently active palette contents container element * * @param container palette contents container element */ setActiveContentsContainer: function ( container ) { this.activeContentsContainer = container; }, /** * Get the currently active palette contents container element * * @return palette contents container element */ getActiveContentsContainer: function () { return this.activeContentsContainer; }, /** * Expands the palette if it's not already expanded. * * @return palette contents container element */ expandPalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display == "none" ) { itemList.style.display = "block"; itemPalClass.length = itemPalClass.length - 1; this.paletteItem.className = itemPalClass.join(" "); lastDiv.className = "bottomRound"; firstDiv.className = "topRound"; h2.className = ""; var itemTitle = expandCollapseLink.innerHTML.stripTags().trim(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_collapse.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.collapse.section.param', itemTitle); } if ( doNotPersist ) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Collapses the palette if it's not already collapsed. * * @return palette contents container element */ collapsePalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display != "none" ) { itemList.style.display = "none"; itemPalClass[itemPalClass.length] = 'navPaletteCol'; this.paletteItem.className = itemPalClass.join(" "); if (itemPalClass.indexOf('controlpanel') != -1) { lastDiv.className = "bottomRound controlpanelCol"; // colors the bottomRound to match the h2 background } if (itemPalClass.indexOf('listCm')!=-1) { lastDiv.className = "bottomRound listCmCol"; // colors the bottomRound to match the h2 background firstDiv.className = "topRound listCmCol"; // colors the topRound to match the h2 background h2.className = "listCmCol"; // colors h2 background (removes background image) } if (itemPalClass.indexOf('tools') != -1) { lastDiv.className = "bottomRound toolsCol"; firstDiv.className = "topRound listCmCol"; h2.className = "toolsCol"; } var itemTitle = expandCollapseLink.innerHTML.stripTags(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags().trim(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_expand.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.expand.section.param', itemTitle); } if (doNotPersist) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Takes in a key value pair to save to the session as sticky data. * * @param key The key that will have the current course id appended to it to be saved to the session. * @param value The value to the key. */ saveSessionStickyInfo: function( key, value ) { /* Get the course id off of the global variable if exists, so that data is saved per * user session per course. If course doesn't exist, use empty string. */ var current_course_id = window.course_id ? window.course_id : ""; UserDataDWRFacade.setStringTempScope( key + current_course_id, value ); }, /** * Whether the first tag has js onclick event binding on it for palette collapse/expand * * @param h2 */ useFirstTagForExpandCollapse: function ( h2 ) { return h2.getElementsByTagName('a')[0].id.indexOf( "noneExpandCollapseTag" ) > -1 ? false : true; }, /** * Toggles a palette from expand to collapse and vice versa. * * @param event Optional event object if this method was bound to event. */ toggleExpandCollapsePalette: function ( event, doNotPersist ) { // To prevent default event behavior if ( event ) { Event.stop( event ); } if ( this.activeContentsContainer.style.display == "none" ) { // palette is currently closed, so we will be expanding it if ( this.closeOtherPalettesWhenOpen ) { // if closeOtherPalettesWhenOpen is set to true for this palette, close all other palettes page.PaletteController.closeAllOtherPalettes(this.paletteItemStr, doNotPersist); } this.expandPalette( doNotPersist ); } else { // palette is currently expanded, so we will be collapsing it this.collapsePalette( doNotPersist ); } } }; // "static" methods page.PaletteController.paletteBoxes = []; page.PaletteController.registerPaletteBox = function( paletteBox ) { page.PaletteController.paletteBoxes.push( paletteBox ); }; /** * Get the palette controller js object by palette id * * @param paletteId */ page.PaletteController.getPaletteControllerObjById = function( paletteId ) { return page.PaletteController.paletteBoxes.find( function( pb ) { return ( pb.paletteItemStr == paletteId ); } ); }; /** * Closes all palettes except the specified one * * @param paletteToKeepOpen */ page.PaletteController.closeAllOtherPalettes = function( paletteToKeepOpen, doNotPersist ) { for(var i = 0; i < page.PaletteController.paletteBoxes.length; i++) { var paletteItem = page.PaletteController.paletteBoxes[i]; if (paletteToKeepOpen !== paletteItem.paletteItemStr) { paletteItem.collapsePalette( doNotPersist ); } } }; /** * Toggles (expand/collapse) the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.toggleExpandCollapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.toggleExpandCollapsePalette( null, doNotPersist); }; /** * Collapses the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.collapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.collapsePalette( doNotPersist); }; /** * Expand the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.expandPalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.expandPalette( doNotPersist); }; /** * Set the active palette contents container (element containing the body * contents of a palette). The active contents container is used to toggle * visibility when expanding and collapsing menu palettes. * * @param paletteId * @param paletteContentsContainer Optional container to set. * If not given, the palette's active * container will not be changed. * @return The new active palette contents container element. * If no paletteContentsContainer element was passed, * The current active palette contents container element * will be returned. */ page.PaletteController.setActivePaletteContentsContainer = function( paletteId, paletteContentsContainer ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); if ( paletteContentsContainer ) { paletteObj.setActiveContentsContainer( paletteContentsContainer ); } return paletteObj.getActiveContentsContainer(); }; /* * Get the default palette contents container id string * * @param paletteId */ page.PaletteController.getDefaultContentsContainerId = function( paletteId ) { return paletteId + "_contents"; }; /** * Class for providing expand/collapse functionality (with dynamic loading) */ page.ItemExpander = Class.create(); page.ItemExpander.prototype = { /** * Constructor * - expandLink - the link that when clicked will expand/collapse the item * - expandArea - the actual area that will get expanded/collapsed (if the item is dynamically loaded, this area will be populated dynamically) * - expandText - the text to show as a tooltip on the link for expanding * - collapseText - the text to show as a tooltip on the link for collapsing * - expandTitleText - the customized text for link title afer expanding the item; if null/undefined, use expandText * - collapseTitleText - the customized text for link title after collapsing the item;if null/undefined, use collapseText * - dynamic - whether the contents are dynamically loaded * - dynamicUrl - the URL to get the contents of the item from * - contextParameters - additional URL parameters to add when calling the dynamicUrl * - sticky - load/save expand state from UserData; true if null/undefined * - expanded - initially expanded; false if null/undefined */ initialize: function( expandLink, expandArea, expandText, collapseText, dynamic, dynamicUrl, contextParameters, expandTitleText, collapseTitleText, sticky, expanded ) { this.expandLink = $(expandLink); this.expandLinkImage = this.expandLink.down('img'); this.expandArea = $s(expandArea); // Register the expander so it can be found page.ItemExpander.itemExpanderMap[this.expandLink.id] = this; this.expandText = expandText.unescapeHTML(); this.collapseText = collapseText.unescapeHTML(); if ( expandTitleText !== null && expandTitleText !== undefined ) { this.expandTitleText = expandTitleText.unescapeHTML(); } else { this.expandTitleText = this.expandText; } if ( collapseTitleText !== null && collapseTitleText !== undefined ) { this.collapseTitleText = collapseTitleText.unescapeHTML(); } else { this.collapseTitleText = this.collapseText; } this.dynamic = dynamic; this.dynamicUrl = dynamicUrl; if ( contextParameters !== null && contextParameters !== undefined ) { this.contextParameters = contextParameters.toQueryParams(); } else { this.contextParameters = {}; } this.sticky = ( sticky !== null && sticky !== undefined ) ? sticky : true; this.expanded = ( expanded !== null && expanded !== undefined ) ? expanded : false; this.hasContents = !this.dynamic; if ( this.sticky ) { // get the course id off of the global variable if exists, because data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.getStringTempScope( this.expandLink.id + current_course_id, this.getAvailableResponse.bind( this ) ); } this.expandCollapse( !this.expanded ); Event.observe( this.expandLink, "click", this.onToggleClick.bindAsEventListener( this ) ); }, getAvailableResponse : function ( response ) { var originalExpanded = this.expanded ; var cachedExpanded = false; if ( response.length > 0 ) { if ( response == 'true' ) { cachedExpanded = true; } else { cachedExpanded = false; } } if ( originalExpanded != cachedExpanded ) { //because we want the menu to be in the cached state, //we pass in the opposite so that expandCollapse changes the menu state. this.expandCollapse(originalExpanded); } }, onToggleClick: function( event ) { if ( event ) { Event.stop( event ); } this.expandCollapse(this.expanded); if ( this.sticky ) { // get the course id off of the global variable if exists, so that data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.setStringTempScope( this.expandLink.id + current_course_id, this.expanded ); } }, expandCollapse: function(shouldCollapse) { var combo; if ( shouldCollapse ) //Collapse the item { $(this.expandArea).hide(); this.expandLink.title = this.expandTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.expandText; this.expandLinkImage.src = "/images/ci/icons/generic_expand.gif"; } if ( this.expandLink.hasClassName("comboLink_active") ) { combo = this.expandLink.up("li").down(".submenuLink_active"); this.expandLink.removeClassName("comboLink_active"); this.expandLink.addClassName("comboLink"); if ( combo ) { combo.removeClassName("submenuLink_active"); combo.addClassName("submenuLink"); } } else { this.expandLink.removeClassName("open"); } this.expanded = false; } else //Expand the item { if ( this.hasContents ) { $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.collapseText; this.expandLinkImage.src = "/images/ci/icons/generic_collapse.gif"; } if ( this.expandLink.hasClassName("comboLink") ) { combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } } else if ( this.dynamic ) { this.loadData(); } this.expanded = true; } }, loadData: function() { new Ajax.Request( this.dynamicUrl, { method: "post", parameters: this.contextParameters, requestHeaders: { cookie: document.cookie }, onSuccess: this.afterLoadData.bind( this ) }); }, afterLoadData: function( req ) { try { var result = req.responseText.evalJSON( true ); if ( result.success != "true" ) { new page.InlineConfirmation("error", result.errorMessage, false ); } else { this.hasContents = true; this.expandArea.innerHTML = result.itemContents; $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; this.expandLinkImage.alt = this.collapseText; if ( this.expandLink.hasClassName("comboLink") ) { var combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } this.expanded = true; } } catch ( e ) { //Invalid response } } }; page.ItemExpander.itemExpanderMap = {}; /** * Class for controlling the "breadcrumb expansion" (i.e. the "..." hiding the inner * breadcrumbs) */ page.BreadcrumbExpander = Class.create(); page.BreadcrumbExpander.prototype = { initialize: function( breadcrumbBar ) { var breadcrumbListElement = $(breadcrumbBar.getElementsByTagName('ol')[0]); var breadcrumbs = breadcrumbListElement.immediateDescendants(); if ( breadcrumbs.length > 4 ) { this.ellipsis = document.createElement("li"); var ellipsisLink = document.createElement("a"); ellipsisLink.setAttribute("href", "#"); ellipsisLink.setAttribute("title", page.bundle.getString('breadcrumbs.expand') ); ellipsisLink.innerHTML = "..."; this.ellipsis.appendChild( ellipsisLink ); this.ellipsis = Element.extend( this.ellipsis ); Event.observe( ellipsisLink, "click", this.onEllipsisClick.bindAsEventListener( this ) ); this.hiddenItems = $A(breadcrumbs.slice(2,breadcrumbs.length - 2)); breadcrumbListElement.insertBefore( this.ellipsis, this.hiddenItems[0] ); this.hiddenItems.invoke( "hide" ); } // Make sure the breadcrumbs don't run into the mode switcher var breadcrumbContainer = $(breadcrumbListElement.parentNode); var modeSwitcher = breadcrumbBar.down('.modeSwitchWrap'); if ( modeSwitcher ) { var containerWidth = breadcrumbContainer.getWidth(); var containerOffset = breadcrumbContainer.cumulativeOffset(); var modeSwitcherOffset = modeSwitcher.cumulativeOffset(); var modeSwitcherWidth = modeSwitcher.getWidth(); if ( page.util.isRTL() ) { if ( modeSwitcherOffset[0] + modeSwitcherWidth > containerOffset[0] ) { breadcrumbContainer.setStyle({ paddingLeft: ( modeSwitcherOffset[0] + modeSwitcherWidth ) + 'px'} ); } } // else //{ // breadcrumbContainer.setStyle({ paddingRight: ( containerWidth - ( modeSwitcherOffset[0] - containerOffset[0] ) ) + 'px'} ); //} } }, onEllipsisClick: function( event ) { this.hiddenItems.invoke( "show" ); this.ellipsis.hide(); Event.stop( event ); } }; /** * Dynamically creates an inline confirmation. */ page.InlineConfirmation = Class.create(); page.InlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, oneReceiptPerPage ) { var receiptId = $s('receipt_id'); // do not insert a duplicate receipt, if one already exists if(receiptId && oneReceiptPerPage) { return; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if ( type == "warning" ) { cssClass = "warningReceipt"; } var contentPane = $('contentPanel') || $('portalPane'); var receiptHtml = '<div id="receipt_id" class="receipt '+ cssClass +'">'+ '<a name="inlineReceipt" tabindex="-1" style="color:#FFFFFF">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } receiptHtml += '<a class="close" href="#close" title="'+ page.bundle.getString("inlineconfirmation.close") +'" onClick="Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="'+ page.bundle.getString("inlineconfirmation.close") +'" src="/images/ci/ng/close_mini.gif"></a></div>'; contentPane.insert({top:receiptHtml}); // use aria live region to announce this confirmation message rather than setting focus to it. (Too many things are fighting over setting focus) // Note: if this confirmation is invoked from a menu handler, it may not announce if focus is lost when the menu closes. See how courseTheme.js sets focus before invoking. var insertedA = contentPane.down('a[name="inlineReceipt"]'); insertedA.setAttribute("aria-live","assertive"); insertedA.parentNode.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced } }; page.NestedInlineConfirmationIdCounter = 0; page.NestedInlineConfirmation = Class.create(); page.NestedInlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, previousElement,showCloseLink, extracss, insertBefore, oneReceiptPerPage, fadeAway, focusDiv, fadingTime, insertTop, receiptDivId, focusOnRender ) { if ( Object.isUndefined( focusOnRender ) ) { focusOnRender = true; } var receiptId = $s('receipt_nested_id'); // do not insert a duplicate receipt, if one already exists var newDivId = 'receipt_nested_id'; if(receiptId) { if (oneReceiptPerPage) { return; } newDivId = newDivId + (page.NestedInlineConfirmationIdCounter++); } if (receiptDivId) { // Remove the old message with the same receiptDivId if there is one before adding a new one if ( $( receiptDivId ) != null ) $( receiptDivId ).remove(); newDivId = receiptDivId; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if (type == "warning") { cssClass = "warningReceipt"; } if (!extracss) { extracss = ""; } var arrowSpan = ''; if (extracss.indexOf( "point", 0 ) != -1) { arrowSpan = '<span class="arrow"></span>'; } var contentPane = $(previousElement); if (!contentPane) { // TODO - if we can't find the element we wanted to insert before, is it OK to just drop the notification? return; } var receiptHtml = '<div id="'+newDivId+'" style="display:none" class="receipt '+ cssClass +' '+extracss +'">'+arrowSpan+ '<a name="inlineReceipt" class="areceipt" tabindex="-1">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } if (showCloseLink) { // either this is a JS Snippet to execute on close or a simple true in which case we do nothing extra var onCloseFunction = ""; if ( typeof showCloseLink === "string" || showCloseLink instanceof String ) { if ( !page.closeReceiptLinkCounter ) { page.closeReceiptLinkCounter = 0; } else { ++page.closeReceiptLinkCounter; } onCloseFunction = "onReceiptClosed" + page.closeReceiptLinkCounter; receiptHtml += "<script type='text/javascript'>window." + onCloseFunction + " = function( ) { " + showCloseLink + " ; }; </script>"; onCloseFunction += "( );" } receiptHtml += '<a class="close" href="#close" style="z-index:1000" title="' + page.bundle.getString("inlineconfirmation.close") + '" onClick="' + onCloseFunction + 'Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="' + page.bundle.getString("inlineconfirmation.close") + '" src="/images/ci/ng/close_mini.gif"></a></div>'; } if ( insertBefore ) { contentPane.insert({before:receiptHtml}); } else if (insertTop) { contentPane.insert({top:receiptHtml}); } else { contentPane.insert({after:receiptHtml}); } this.insertedDiv = insertBefore?contentPane.previousSibling:(insertTop?contentPane.firstChild:contentPane.nextSibling); $(this.insertedDiv).show(); var insertedA = $(this.insertedDiv).down('a[name="inlineReceipt"]'); var fadingDuration = fadingTime ? fadingTime : 5000; if ( focusOnRender ) { try { ( function() { try { if ( focusDiv ) { page.util.focusAndScroll( $( focusDiv ) ); } else { page.util.focusAndScroll( insertedA ); } } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } }.defer() ); } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } } else { // not setting focus to this confirmation, so we make it an aria live region so it will be announced to the screen reader if ( focusDiv ) { page.util.ensureVisible( $( focusDiv ) ); } else { page.util.ensureVisible( insertedA ); } insertedA.setAttribute("aria-live","assertive"); this.insertedDiv.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced (needed for jaws 12) } if ( fadeAway ) { setTimeout( function() { Element.fade( contentPane.nextSibling, { duration : 0.3 } ); }, fadingDuration ); } }, close: function() { if ( this.insertedDiv ) { this.insertedDiv.remove(); } } }; page.NestedInlineFadeAwayConfirmation = Class.create(); page.NestedInlineFadeAwayConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; page.NestedInlineFadeAwaySingleConfirmation = Class.create(); page.NestedInlineFadeAwaySingleConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time, newDivId ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore, false /*only one instance*/, null, null, null, null, newDivId ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; /** * Make sure the container as position: relative so that the offset can work */ page.MiniReceipt = Class.create(); page.MiniReceipt.prototype = { initialize: function( message, containerElement, top, left, time ) { var visibleDuration = time ? time : 2000; var top = top?top:-22; // usually show receipt above var left = left?left:0; var alreadyExistingReceipt = $( containerElement ).down( "div.miniReceipt" ); if ( alreadyExistingReceipt ) { alreadyExistingReceipt.hide( ); } var receiptHtml = '<div class="miniReceipt adding" style="display: none; top:' + top + 'px; left:'+ left + 'px" role="alert" aria-live="assertive">' + message + '</div>'; var receiptElement = $( containerElement ).insert( { top:receiptHtml } ).firstDescendant( ); receiptElement.show( ); setTimeout( function() { Element.fade( receiptElement, {duration:0.3, afterFinish: function() { receiptElement.remove() } } ); }, visibleDuration ); } }; page.extendedHelp = function( helpattributes, windowName ) { window.helpwin = window.open('/webapps/blackboard/execute/viewExtendedHelp?' + helpattributes,windowName,'menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); window.helpwin.focus(); }; page.decoratePageBanner = function() { var bannerDiv = $('pageBanner'); var containerDiv = $('contentPanel') || $('contentPane'); if ( bannerDiv && containerDiv ) { // append hasTopBanner class to container div to hide topRound containerDiv.addClassName('hasTopBanner'); // hide empty title bar if ( !$('pageTitleText') && $('pageTitleDiv') ) { $('pageTitleDiv').hide(); } } }; page.initializeSinglePopupPage = function( pageId ) { // Initialize the single popup page, make sure the window will be closed by clicking submit or cancel, and the parent // window will be refreshed after submit. var items = document.forms; for ( var i = 0; i < items.length; i++ ) { var formItem = items[ i ]; formItem.observe( 'submit', function() { (function() { window.close(); if( window.opener.refreshConfirm ) { window.opener.refreshConfirm(pageId); } }.defer()); } ); if ( formItem.top_Cancel ) { Event.observe( formItem.top_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } if ( formItem.bottom_Cancel ) { Event.observe( formItem.bottom_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } } }; page.openLightbox = function( link, title, url, width, height ) { var lightboxParam = { defaultDimensions : { w : width ? width : 1000, h : height ? height : 800 }, contents : '<iframe src="' + url + '" width="100%" height="100%"/>', title : title, closeOnBodyClick : false, showCloseLink : true, useDefaultDimensionsAsMinimumSize : true }; var lightboxInstance = new lightbox.Lightbox( lightboxParam ); lightboxInstance.open(); }; page.printAndClose = function() { (function() { window.print(); window.close(); }.defer()); }; /** * Utility for data collection step manipulation */ page.steps = {}; page.steps.HIDE = "hide"; page.steps.SHOW = "show"; /** * Hide or show an array of steps given the step ids and * renumber all visible steps on the page. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepIdArr - string array of step ids */ page.steps.hideShowAndRenumber = function ( action, stepIdArr ) { // hide or show each of the step ids given ($A(stepIdArr)).each( function( stepId ) { page.steps.hideShow( action, stepId ); }); // get all H3 elements that contain css class of "steptitle" var stepTitleTags = []; $A(document.getElementsByTagName('h3')).each( function( tag ) { if ( page.util.hasClassName( tag, 'steptitle' ) ) { stepTitleTags.push( $(tag) ); } }); // starting at number 1, renumber all of the visible steps var number = 1; stepTitleTags.each(function( stepTitleTag ) { if ( stepTitleTag.up('div').visible() ) { stepTitleTag.down('span').update(number); number++; } }); }; /** * Hide or show a single step given the step id. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepId - string identifier to a single step */ page.steps.hideShow = function ( action, stepId ) { if ( action == page.steps.SHOW ) { $(stepId).show(); } else if ( action == page.steps.HIDE ) { $(stepId).hide(); } }; page.showChangeTextSizeHelp = function( ) { page.extendedHelp('internalhandle=change_text_size&helpkey=change_text_size','change_text_size' ); return false; }; page.showAccessibilityOptions = function() { var win = window.open('/webapps/portal/execute/changePersonalStyle?cmd=showAccessibilityOptions', 'accessibilityOptions','menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); win.focus(); }; page.toggleContrast = function( ) { new Ajax.Request('/webapps/portal/execute/changePersonalStyle?cmd=toggleContrast', { onSuccess: function(transport, json) { var fsWin; if (window.top.nav) { fsWin = window.top; } else if (window.opener && window.opener.top.nav) { fsWin = window.opener.top; window.close(); } if (fsWin) { fsWin.nav.location.reload(); fsWin.content.location.reload(); } else { window.top.location.reload(); } } }); return false; }; /** * IFrame-based shim used with popups so they render on top of all other page elements (including applets) */ page.popupShim = Class.create(); page.popupShim.prototype = { initialize: function( popup ) { this.popup = popup; }, close: function( ) { this.toggleOverlappingEmbeds( false ); }, open: function( ) { this.toggleOverlappingEmbeds( true ); }, toggleOverlappingEmbeds: function( turnOff ) { ['embed','object','applet','select'].each( function( tag ) { var elems = document.getElementsByTagName( tag ); for ( var i = 0, l = elems.length; i < l; i++ ) { var e = $(elems[i]); if ( !turnOff || ( page.util.elementsOverlap( this.popup, e ) && !e.descendantOf( this.popup ) ) ) { elems[i].style.visibility = ( turnOff ? 'hidden' : '' ); } } }.bind( this ) ); } }; /** * Class for controlling the vtbe enable toggle. */ page.VTBEToggle = Class.create(); page.VTBEToggle.prototype = { initialize: function( vtbeDiv, vtbeOnOffToolKey ) { var toggleFunc = this.toggleVTBE.bindAsEventListener( this ); this.vtbeOnOffToolKey = ( vtbeOnOffToolKey ) ? vtbeOnOffToolKey : "textbox.wysiwyg"; var vtbeDivs = null; if ( vtbeDiv ) { // autowire the specified vtbe vtbeDivs = [ vtbeDiv ]; } else { // autowire all vtbe divs on the page vtbeDivs = document.getElementsByTagName('div'); } $A(vtbeDivs).each( function( div ) { // add toggle listener for each vtbe switch if ( page.util.hasClassName(div, 'vtbeSwitch') ) { div = $(div); if ( div.up('form') ) { var anchor = div.down('a'); page.VTBEToggle.form = div.up('form'); Event.observe( anchor, 'click', toggleFunc ); // save original form data so we can detect unsaved data when toggling VTBE if ( page.VTBEToggle.form && !page.VTBEToggle.origFormData ) { page.VTBEToggle.origFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); } } } }); }, toggleVTBE: function( event ) { // Stop the event to handle firefox behavior when posting into a page. Event.stop(event); // check & warn user of modified form data if ( page.VTBEToggle.form && page.VTBEToggle.origFormData ) { var origFormData = page.VTBEToggle.origFormData; if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var currentFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); for(var i in origFormData) { if ( origFormData.hasOwnProperty( i ) ) { var origVal = origFormData[i]; var currVal = currentFormData[i]; if ( currVal && typeof currVal != 'object' && ( ( typeof currVal != 'string' && origVal != currVal ) || ( typeof currVal == 'string' && origVal.trim() != currVal.trim().replace("&nbsp;","") ) ) ) { if (!confirm( page.bundle.getString("wysiwyg.visual.editor.confirm.unsaved.changes") )) { return; } break; } } } } // get current state of vtbe, toggle it, then reload page UserDataDWRFacade.getStringPermScope( this.vtbeOnOffToolKey, function( wysiwyg ) { UserDataDWRFacade.setStringPermScope( this.vtbeOnOffToolKey, (wysiwyg == 'Y') ? 'N' : 'Y', function() { // If there's a lightbox open, give it a chance to update itself instead of reloading the window if (!window.lightbox || !lightbox.deferUpdateLightboxContent()) { window.location.reload(); } }); }.bind( this )); } }; /** * Looks through the children of the specified element for links with the specified * class name, and if it finds any, autowires lightboxes to them. If lightbox.js/effects.js * hasn't already been loaded, load it. */ page.LightboxInitializer = Class.create( { initialize: function( className, parentElement ) { this.className = className; var links = parentElement.getElementsByTagName('a'); for ( var i = 0, l = links.length; i < l; i++ ) { if ( page.util.hasClassName( links[i], className ) ) { if ( window.lightbox && window.Effect) { this._autowire(); } else { this._load(); } break; } } }, _autowire: function() { lightbox.autowireLightboxes( this.className ); }, _load: function() { var h = $$('head')[0]; var scs = ( !window.lightbox ? ['/javascript/ngui/lightbox.js'] : []).concat( !window.Effect ? ['/javascript/scriptaculous/effects.js'] : [] ); scs.each( function( sc ) { var s = new Element('script', { type: 'text/javascript', src: sc } ); h.appendChild( s ); }); this._wait(); }, _wait: function() { var count = 0; new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( window.lightbox && window.Effect ) { pe.stop(); this._autowire(); } } else // give up if it takes longer than 5s to load lightbox.js/effects.js { pe.stop(); } }.bind(this), 0.05 ); } }); page.YouTubeControls = { toggleAXControls : function( playerid, openYtControlsId, event ) { if( $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display != 'block' ) { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'block'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'block'; $( openYtControlsId ).addClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } else { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'none'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'none'; $( openYtControlsId ).removeClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } Event.stop( event ); }, formatTime : function ( sec ) { var duration = parseInt( sec, 10 ); var totalMinutes = Math.floor( duration / 60 ); var hours = Math.floor( totalMinutes / 60 ); var seconds = duration % 60; var minutes = totalMinutes % 60; if ( hours > 0 ) { return hours + ':' + this.padZero( minutes ) + ':' + this.padZero( seconds ); } else { return this.padZero( minutes ) + ':' + this.padZero( seconds ); } }, padZero : function ( number ) { if (number < 10) { return "0" + number; } else { return number; } }, updateButtonLabels : function ( ytplayer, muteBtnId, playBtnId, status ) { if( ytplayer.isMuted() ) { $( muteBtnId ).update( page.bundle.getString( 'yt.unmute' ) ); } else { $( muteBtnId ).update( page.bundle.getString( 'yt.mute' ) ); } if( status == 1 ) { $( playBtnId ).update( page.bundle.getString( 'yt.pause' ) ); } else { $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); } } }; function onYouTubePlayerReady( playerid ) { var ytplayer = $( playerid ); if( !ytplayer ) { //ie fix: grab object tag instead of embed tag var objTagId = playerid.sub( 'ytEmbed', 'ytObject' ); ytplayer = $( objTagId ); } var playBtnId = playerid.sub( 'ytEmbed', 'playVideo' ); Event.observe( $( playBtnId ), 'click', function( event ) { if( ytplayer.getPlayerState() == 1 ) { ytplayer.pauseVideo(); } else { ytplayer.playVideo(); } Event.stop( event ); } ); var stopBtnId = playerid.sub( 'ytEmbed', 'stopVideo' ); Event.observe( $( stopBtnId ), 'click', function( event ) { ytplayer.pauseVideo(); ytplayer.seekTo( "0" ); $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); Event.stop( event ); } ); var volUpBtnId = playerid.sub( 'ytEmbed', 'volUp' ); Event.observe( $( volUpBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol > 89 ) { ytplayer.setVolume( 100 ); } else { ytplayer.setVolume( currVol + 10 ); } Event.stop( event ); } ); var volDownBtnId = playerid.sub( 'ytEmbed', 'volDown' ); Event.observe( $( volDownBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol < 11 ) { ytplayer.setVolume( 0 ); } else { ytplayer.setVolume( currVol - 10 ); } Event.stop( event ); } ); var muteBtnId = playerid.sub( 'ytEmbed', 'mute' ); Event.observe( $( muteBtnId ), 'click', function( event ) { if( ytplayer.isMuted() ) { ytplayer.unMute(); } else { ytplayer.mute(); } Event.stop( event ); } ); var timeDivId = playerid.sub( 'ytEmbed', 'currentTime' ); var statusDivId = playerid.sub( 'ytEmbed', 'currentStatus'); var dtTime = new Date(); new PeriodicalExecuter( function( pe ) { //lightbox closed, so stop this PeriodicalExecuter if( !$( timeDivId ) ) { pe.stop(); return; } //update the current time $( timeDivId ).update( page.YouTubeControls.formatTime( ytplayer.getCurrentTime() ) ); //update the current status var status = ytplayer.getPlayerState(); var statusStr = page.bundle.getString( 'yt.stopped' ); switch( status ) { case -1 : statusStr = page.bundle.getString( 'yt.stopped' ); break; case 0 : statusStr = page.bundle.getString( 'yt.ended' ); break; case 1 : statusStr = page.bundle.getString( 'yt.playing' ); break; case 2 : statusStr = page.bundle.getString( 'yt.paused' ); break; case 3 : statusStr = page.bundle.getString( 'yt.buffering' ); break; case 5 : statusStr = page.bundle.getString( 'yt.cued' ); break; } page.YouTubeControls.updateButtonLabels( ytplayer, muteBtnId, playBtnId, status ); $( statusDivId ).update( statusStr ); }.bind(this), 0.5 ); //wire the open/close controls wrapper var openYtControlsId = playerid.sub( 'ytEmbed', 'openYtControls' ); Event.observe( $( openYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); var closeYtControlsId = playerid.sub( 'ytEmbed', 'closeYtControls' ); Event.observe( $( closeYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); } page.util.flyoutMenuMainButtonKeyboardHandler = function( event ) { var key = event.keyCode || event.which; if (key == Event.KEY_LEFT || key == Event.KEY_RIGHT) { var elem = Event.element( event ); var target = elem.up( 'li' ); while ( true ) { if ( key == Event.KEY_LEFT ) { target = target.previous(); } else if ( key == Event.KEY_RIGHT ) { target = target.next(); } if ( !target || page.util.hasClassName( target, 'sub' ) || page.util.hasClassName( target, 'mainButton' ) || page.util.hasClassName( target, 'mainButtonType' ) ) { break; } } if ( target ) { var menuLinks = $A( target.getElementsByTagName( 'a' ) ); if ( menuLinks && menuLinks.length > 0 ) { menuLinks[ 0 ].focus(); Event.stop( event ); } } } }; page.util.initFlyoutMenuBehaviourForListActionMenuItems = function( container ) { //Initialize accessible flyout menu behavior if ( !container ) { container = document; } var uls = document.getElementsByTagName('ul'); if (uls) { var numUls = uls.length; for (var i = 0; i < numUls; i++) { var ul = uls[i]; if (page.util.hasClassName(ul, 'nav')) { var lis = ul.getElementsByTagName('li'); if (lis) { var numLis = lis.length; for (var j = 0; j < numLis; j++) { var li = lis[j]; if (page.util.hasClassName(li, 'sub')) { new page.FlyoutMenu($(li)); } else if (page.util.hasClassName(li, 'mainButton') || page.util.hasClassName(li, 'mainButtonType')) { var menuLinks = $A($(li).getElementsByTagName('a')); if (menuLinks && menuLinks.length > 0) { Event.observe(menuLinks[0], 'keydown', page.util.flyoutMenuMainButtonKeyboardHandler.bindAsEventListener(menuLinks[0])); } } } } } } } }; page.subheaderCleaner = { init : function( entityKind ) { var allHidden = true; var firstUl = null; var className = 'portletList-img courseListing ' + entityKind; $A( document.getElementsByClassName( className ) ).each( function( ul ) { if ( !ul.down() ) { ul.previous( 'h3' ).hide(); ul.hide(); if ( !firstUl ) { firstUl = ul; } } else { allHidden = false; } }); if ( allHidden && firstUl ) { firstUl.previous( 'div' ).show(); } } }; /** * Set up any JavaScript that will always be run on load (that doesn't depend on * any application logic / localization) here. * * Please leave this at the bottom of the file so it's easy to find. * */ FastInit.addOnLoad( function() { Event.observe( document.body, "click", page.ContextMenu.closeAllContextMenus.bindAsEventListener( window ) ); Event.observe( document.body, "click", page.ContextMenu.alignArrowsInBreadcrumb.bindAsEventListener( window ) ); Event.observe( document.body, 'keydown', function(event) { var key = event.keyCode || event.which; if ( key == 116 ) // reload current page on F5 key press { Event.stop( event ); // prevent browser from reloading complete frameset if ( Prototype.Browser.IE ) { event.keyCode = 0; } (function() { window.location.reload( true ); }.defer()); return false; } }); page.util.initFlyoutMenuBehaviourForListActionMenuItems(); if ( $('breadcrumbs') ) { new page.BreadcrumbExpander($('breadcrumbs')); // If we're in the content wrapper, hide the content wrapper breadcrumb frame // so that we don't get stacked breadcrumbs. if ( window.name === 'contentFrame' ) { var parent = window.parent; if ( parent ) { var frameset = parent.document.getElementById( 'contentFrameset' ); if ( frameset ) { frameset.rows = "*,100%"; } } } } var contentPane = $('contentPanel') || $('portalPane'); if ( contentPane ) { new page.LightboxInitializer( 'lb', contentPane ); } // add a label for inventory table checkboxes, if needed $A(document.getElementsByTagName("table")).each( function( table ) { if ( !page.util.hasClassName( table, 'inventory' ) ) { return; } var rows = table.rows; if ( rows.length < 2 ) { return; } for (var r = 0, rlen = rows.length - 1; r < rlen; r++) { var cells = rows[r+1].cells; // skip header row for (var c = 0, clen = cells.length; c < clen; c++) { var cell = $(cells[c]); var inp = cell.down('input'); if ( !inp || ( inp.type != 'checkbox' && inp.type != 'radio' ) ) { // We're only looking for checkbox/radio cells to label, so move on continue; } var lbl = cell.down('label'); if (lbl && !lbl.innerHTML.blank()) { break; // skip cells that already have a non-blank label } if ( !lbl ) { // add new label to checkbox lbl = new Element('label', {htmlFor: inp.id} ); lbl.addClassName('hideoff'); cell.insert({bottom:lbl}); } var headerCell = $(cell.parentNode).down('th'); if ( !headerCell ) { break; // skip rows without header cell } // create a temporary clone of the header cell and remove any hidden divs I.e. context menus var tempCell = $(headerCell.cloneNode(true)); var tempCellDivs = tempCell.getElementsByTagName("div"); for ( var i = 0; i < tempCellDivs.length; i++ ) { var d = tempCellDivs[i]; if ( d && !$(d).visible() ) { d.remove(); } } var lblBody = tempCell.innerHTML.replace( /<\/?[^>]*>/g, '' ); // strip html tags from header lblBody = page.bundle.getString('inventoryList.select.item', lblBody); lbl.update( lblBody ); // set label to header contents (minus tags) break; } } }); //set default font sizes to display text. hack to fix IE7 default font size issue. var sizes = {1:'xx-small', 2:'x-small', 3:'small', 4:'medium', 5:'large', 6:'x-large', 7:'xx-large'}; var fonts = document.getElementsByTagName('font'); for ( var i = 0; i < fonts.length; i++ ) { var font = fonts[i]; if ( font.size ) { // Since some font elements may be manually created by end users we have to handle random // values in here. if (!font.size.startsWith("+") && !font.size.startsWith("-")) { var fsize = parseInt(font.size, 10); if (fsize > 0 && fsize < 8) { font.style.fontSize = sizes[fsize]; } } } } try { if ( top && top.document.getElementById( 'bbFrameset' ) && window.name != 'nav' ) { top.document.getElementsByName('content')[0].title = page.bundle.getString( "frameset.contentframe.title" ) + " : " + document.title; } } catch ( err ) { // When Content System is loaded within a Vista popup window, cross-site security will prevent // accesses to top.document. Ignore this error and continue } page.scrollToEnsureVisibleElement(); page.isLoaded = true; }); /** * Class for adding an insertion marker within a list */ page.ListInsertionMarker = Class.create(); page.ListInsertionMarker.prototype = { initialize: function( listId, position, key, text ) { var list = $(listId); var listElements = list.childElements(); // create a marker list item var marker = new Element('li',{'id':listId+':'+key, 'class':'clearfix separator' }); marker.update('<h3 class="item" id=""><span class="reorder editmode"><span><img alt="" src="/images/ci/icons/generic_updown.gif"></span></span><span class="line"></span><span class="text">'+text+'</span></h3>'); //marker.setStyle({ position: 'relative', minHeight: '10px', padding: '0px', background: '#CCCCCC' }); position = ( position > listElements.length ) ? listElements.length : position; // add marker to list if (listElements.length == 0) { list.insert({top:marker}); // add marker to top of empty list } else if (listElements.length == position) { list.insert({bottom:marker}); // add marker after last element } else { listElements[position].insert({before:marker}); // add marker before element at position } var select = $('reorderControls'+listId).down('select'); // add a option for the marker to the keyboard repostioning select, if any if (select) { var option = new Element('option',{'value':key}).update( '-- '+text+' --' ); if (listElements.length == 0) { select.insert({top:option}); } else if (listElements.length == position) { select.insert({bottom:option}); } else { $(select.options[position]).insert({before:option}); } } } }; page.scrollToEnsureVisibleElement = function( ) { var params = window.location.search.parseQuery(); var ensureVisibleId = params.ensureVisibleId; if ( !ensureVisibleId ) { return; } var ensureVisibleElement = $(ensureVisibleId); if ( !ensureVisibleElement ) { return; } var pos = ensureVisibleElement.cumulativeOffset(); var scrollY = pos.top; var bodyHeight = $( document.body ).getHeight(); if (scrollY + ensureVisibleElement.getHeight() < bodyHeight) { return; // element is already visible } var receipt = $('inlineReceipt_good'); if ( receipt && receipt.visible() ) // pin receipt to top { var offset = receipt.cumulativeOffset(); offset.top = 0; var w = parseInt(receipt.getStyle('width'), 10); if ( Prototype.Browser.IE ) // width in IE includes border & padding, need to remove it { var bw = parseInt(receipt.getStyle('borderLeftWidth'), 10) + parseInt(receipt.getStyle('borderRightWidth'), 10); var pw = parseInt(receipt.getStyle('paddingLeft'), 10) + parseInt(receipt.getStyle('paddingRight'), 10); w = w - bw - pw; } receipt.setStyle({ position:"fixed", zIndex:"1000", left: offset.left + "px", top: offset.top + "px", width: w + "px"}); scrollY = scrollY - 2 * receipt.getHeight(); } // scroll window to show ensureVisibleElement window.scrollTo(0, scrollY ); }; /** * Recursively walks up the frameset stack asking each window to change their * document.domain attribute in anticipation of making a cross-site scripting * call to an LMS integration. * * <p>This should only be called from popup windows, as changing the document.domain * value of a window that is going to be reused later could do surprising things. * * @param domain Domain name shared by the Learn and LMS servers. */ page.setLmsIntegrationDomain = function( domain ) { if ( '' == domain ) { return; } try { if ( parent.page.setLmsIntegrationDomain ) { parent.page.setLmsIntegrationDomain( domain ); } } catch ( err ) { /* Ignore */ } document.domain = domain; }; page.refreshTopFrame = function() { if ( window.top.nav ) { window.top.nav.location.reload(); } }; page.rewriteTaskStatusUntilDone = function( spanId, taskId) { var theSpan = $(spanId); if (theSpan) { new Ajax.Request("/webapps/blackboard/execute/getSystemTaskStatus?taskId=" + taskId, { method: 'post', onSuccess: function(transport, json) { var result = transport.responseText.evalJSON( true ); theSpan = $(spanId); // reload it just in case it was removed between the request and response if (theSpan) { theSpan.update(result.text); if (result.complete == "false") { setTimeout(function() {page.rewriteTaskStatusUntilDone(spanId, taskId);}, 3000); } } }, onFailure: function(transport, json) { theSpan = $(spanId); //reload the span as above if (theSpan) { theSpan.hide(); $(spanId+'error').show(); } } }); } }; /* * Clean up the task id which associated with the specified course, so that the inline warning does not show up again */ page.cleanTaskId = function( courseId ) { //we don't care about the result, at worse it will display again on the next page new Ajax.Request("/webapps/blackboard/execute/courseMain?action=cleanTaskId&course_id=" + courseId, { method: 'post' }); }; } /* ================================================================== *The JavaScript Validation objects to be used in form validation. * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ /** * General purpose DOM utility methods. There's probably a better place for this. * Private methods and properties have names prefixed with "_". */ var bbDomUtil = { _inputTypes: [ 'input', 'textarea', 'select', 'button' ], _maxRecursion: 500, /** * @param elName name of the form input element (the request parameter name). * @return an array of two or more elements, a single element, or null. */ getInputElementByName: function( elName ) { var elArray = this._getInputElementsByNameInSection( 'dataCollectionContainer', elName ); if ( elArray.length === 0 ) { elArray = this._getInputElementsByName( elName ); } return ( elArray.length === 0 ) ? null : ( elArray.length == 1 ? elArray[ 0 ] : elArray ); }, /* * @param sectionId the ID of any element inside a form * @return the enclosing form element or null */ getEnclosingForm: function( sectionId ) { var form = null; if ( sectionId ) { var count; var section = document.getElementById( sectionId ); while ( section ) { ++count; if ( count > this._maxRecursion ) { break; } if ( section.tagName && section.tagName.toLowerCase() == "form" ) { form = section; break; } section = section.parentNode; } } return ( !form ) ? ( document.forms.length === 0 ? null : document.forms[ 0 ] ) : form; }, /** * Adds some additional processing to account for an IE bug * @param id the ID of an element */ getElementById: function( id ) { var el = $( id ); try { if ( el && /msie|internet explorer/i.test( navigator.userAgent ) && el.attributes.id && el.attributes.id.value != id && document.all ) { // IE usually returns item at 0 for ( var i = 0; i < document.all[ id ].length; ++i ) { if ( document.all[ id ][ i ].attributes.id && document.all[ id ][ i ].attributes.id.value == id ) { return $( document.all[ id ][ i ] ); } } } } catch ( e ) { // Ignore all exceptions } return el; }, syncCheckboxToInput: function( checkboxElement, inputElement ) { var checkbox = $( checkboxElement ); var input = $( inputElement ); if ( checkbox && input ) { var checkIfNotEmpty = function( ) { checkbox.checked = ( input.value.strip?input.value.strip( ):input.value )?true:false; } input.observe( 'change', checkIfNotEmpty ); input.observe( 'blur', checkIfNotEmpty ); } }, /** * @param sectionId the ID of an element that restricts the scope of elements. Cannot be null. * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name in the scope of the specified parent element. */ _getInputElementsByNameInSection: function( sectionId, elName ) { var result = []; if ( sectionId ) { var section = document.getElementById( sectionId ); if ( section ) { for ( var i = 0; i < this._inputTypes.length; ++i ) { var elements = section.getElementsByTagName( this._inputTypes[ i ] ); for ( var j = 0; j < elements.length; ++j ) { if ( elements[ j ].name == elName ) { result.push( elements[ j ] ); } } } } } return result; }, /** * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name. */ _getInputElementsByName: function( elName ) { var result = []; var elArray = document.getElementsByName( elName ); var formName = null; for ( var i = 0; i < elArray.length; ++i ) { if ( elArray[ i ].tagName.match( /^(input|select|textarea|button)$/i ) ) { if ( elArray[ i ].form !== null ) { if ( !formName ) { formName = elArray[ i ].form.name; } else if ( formName != elArray[ i ] .form.name ) { // Ignore elements that don't belong to the same form as the first one found. continue; } result.push( elArray[ i ] ); } } } return result; } }; /************************************************************ * Object formCheckList. Use this object to hold form objects * to be validated and perform form validation ************************************************************/ var addElement, removeElement, removeAllElements, getElement, checkForm, CheckGroup; var formCheckList = new formCheckList(); var dblSubmit = false; var skipValidation=false; function formCheckList() { this.checkList = []; this.addElement = addElement; this.removeElement = removeElement; this.removeAllElements = removeAllElements; this.getElement = getElement; this.check = checkForm; } function addElement(element) { if ( typeof element.group != 'undefined' ) { for ( var i=0; i < this.checkList.length;i++ ) { if ( this.checkList[i].name == element.group ) { this.checkList[i].addElement(element); return; } } var grp = new CheckGroup(element); grp.addElement(element); this.checkList[this.checkList.length] = grp; return; } this.checkList[this.checkList.length] = element; } function removeElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { this.checkList.splice(i, 1); } } } function getElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { return this.checkList[i]; } } } function removeAllElements() { var valSize = this.checkList.length; this.checkList.splice(0, valSize); } function checkForm() { if ( typeof(window.invalidAnswersTmp)!='undefined' ) { window.invalidAnswersTmp=[]; } var valid =true; for ( var i=0;i<this.checkList.length;i++ ) { if ( this.checkList[i].canValidate && !this.checkList[i].canValidate() ) { // cannot validate the input so skip it and continue onto the next input continue; } if ( !this.checkList[i].check() ) { if ( this.checkList[i].answerChk ) { valid=false; } else { return false; } } } return valid; } ///////////////////End of object formCheckList//////////////// /************************************************************ * Object: inputText. Use this object to validate text input in * your form (for input type == text|password|textarea|BUT NOT FILE!!! (FILE IS READ-ONLY)) ************************************************************/ function inputText(h) { if (h.id) { this.element = bbDomUtil.getElementById( h.id ); } else { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; } this.shouldFocus = h.shouldFocus; if ( h.shouldFocus === undefined ) { this.shouldFocus = true; } if ( this.shouldFocus ) { this.formatElement = 'bbDomUtil.getInputElementByName("'+h.display_format+'")'; this.focusElement = h.focus_element; // override element for focus in case of error } this.fieldName = h.name; this.disable_script = h.disable_script; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.minlength = h.minlength; this.maxlength = h.maxlength; this.trim = h.trim; this.regex = h.regex; this.regex_msg = h.regex_msg; this.regex_match = h.regex_match; this.verify = h.verify; this.check = inputTextCheck; this.valid_number = h.valid_number; this.min_value = h.min_value; this.max_value = h.max_value; this.nonnegative = h.nonnegative; this.valid_float = h.valid_float; this.allow_negative_float = h.allow_negative_float; this.valid_percent = h.valid_percent; this.allow_negative_percent = h.allow_negative_percent; this.valid_efloat = h.valid_efloat; // float with optional exponent this.valid_email = h.valid_email; this.valid_url = h.valid_url; this.required_url = h.required_url; this.invalid_chars = h.invalid_chars; // eg: /[%&#<>=+,]/g this.cmp_element = 'bbDomUtil.getInputElementByName("'+h.cmp_field+'")'; this.cmp_ref_label = h.cmp_ref_label; this.xor = h.xor; this.cmp_required = h.cmp_required; this.activeX = h.activeX; // synch activeX to hidden field before submission this.isHtmlDoc = h.isHtmlDoc; // is portfolio with body and html this.img_check = h.img_check; this.empty_value_warn = h.empty_value_warn; this.valid_system_role_id = h.valid_system_role_id; this.required = h.required; this.canValidate = h.canValidate; // callback function to determine whether the inputtext should be validated if (h.ref_and_regex === undefined) { this.ref_and_regex = true; } else { this.ref_and_regex = h.ref_and_regex; } if ( document.all && document.getElementById(h.name+'_ax') ) { this.axobj = document.getElementById(h.name+'_ax'); } // Add here anything you need to validate } function isAnEmptyVtbe(val) { // Different browsers populate an 'empty' VTBE with a different blank line - look for any of the known combinations and ignore them. // NOTE: Changes to this method need to be reflected in AssessmentDisplayControl.isAnEmptyVtbe return ( !val || !val.replace(/<p><\/p>/gi,'').trim() || !val.replace(/<br \/>/gi,'').trim() || !val.replace(/&nbsp;/gi,'').trim()); } // Do actual check here function inputTextCheck() { if ( this.shouldFocus === undefined ) { this.shouldFocus = true; } var element = eval(this.element); var cmp_element = eval(this.cmp_element); if ( element ) { // don't validate disabled elements if (element.disabled) { return true; } var focusElement = element; if ( this.axobj ) { focusElement = this.axobj; } this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.custom_alert_cmp = (typeof this.custom_alert_cmp != 'undefined') ? this.custom_alert_cmp : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( isAnEmptyVtbe(val) ) { val=''; } var trimmedVal, numVal, isValidNum, re; if ( this.activeX && isEmptyWysiwyg(element) ) { element.value = ''; val = ''; } if ( typeof eval(this.formatElement) != "undefined" && eval(this.formatElement) !== null ) { //Check if it is a mathml where; if ( /<APPLET ID="(\d+)" NAME="(\w+)"/.test(element.value) ) { if ( getRadioValue(eval(this.formatElement)) == 'P' ) { if ( !confirm(JS_RESOURCES.getString('validation.plain_text.confirm')) ) { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } } if ( this.trim ) { val = val.trim(); element.value = val; } //Remove leading & trailing spaces if needed if ( typeof cmp_element != 'undefined' ) { if ( this.xor ) { if ( val.trim()=='' ^ cmp_element.value.trim()=='' ) { if ( val.trim()=='' ) { alert( this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } } else { alert(this.custom_alert_cmp ? this.custom_alert_cmp : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.cmp_ref_label, this.ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } } return false; } } } if ( this.disable_script ) { if ( typeof eval(this.formatElement) == "undefined" || getRadioValue(eval(this.formatElement)) != 'P' ) { re = /<\s*script/ig; var re1 = /<\s*\/\s*script\s*>/ig; val = val.replace(re,'<disabled-script'); val = val.replace(re1,'</disabled-script>'); var re2 = /href\s*=\s*(['"]*)\s*javascript\s*:/ig; val = val.replace(re2,"href=$1disabled-javascript:"); element.value = val; } } if ( this.valid_number ) { trimmedVal = val.trim(); //added this check bcoz for numeric fields which are not required, this function was not working if ( trimmedVal!="" ) { var numLocalizer = new NumberLocalizer(); if ( numLocalizer === undefined ) { numVal = parseInt(trimmedVal, 10); } else { numVal = numLocalizer.parseNumber( trimmedVal ); } isValidNum = !isNaN(numVal); if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if (this.nonnegative && numVal<0) { alert(JS_RESOURCES.getFormattedString('validation.negative', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if ( ( (this.min_value || this.min_value === 0) && numVal < this.min_value ) || ( this.max_value && ( numVal > this.max_value ) ) ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_value', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_float ) { trimmedVal = val.trim(); var numFormat; if ( this.allow_negative_float ) { numFormat = LOCALE_SETTINGS.getString('float.allow.negative.format'); } else { numFormat = LOCALE_SETTINGS.getString('float.format'); } if ( numFormat ) { //hand parse for l10n re = new RegExp( numFormat ); isValidNum = trimmedVal.search( re ) === 0; } else { //try to use platform native (non-localized) numVal = parseFloat(trimmedVal); isValidNum = !isNaN(numVal); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test(trimmedVal.substring(numVal.toString().length)); } } if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_percent ) { if ( this.allow_negative_percent ) { if ( !isValidNegativePercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.allow_negtive.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { if ( !isPercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_efloat ) { if ( !isNumeric(val) ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { focusElement = (this.focusElement ? this.focusElement : this.element); if ( focusElement.focus ) { safeFocus( focusElement ); } } return false; } } if ( this.valid_email ) { if ( val.trim() == '' ) { if ( confirm(JS_RESOURCES.getString('warning.email')) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { re = /^(['`a-zA-Z0-9_+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; if ( !re.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.email', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } // confirms via javascript pop-up if input field is empty; // user can click Ok to proceed or cancel to go back with the element focused // the message that pops up is the message passed in with ref_label if ( this.empty_value_warn ) { if ( val.trim() == '' ) { if ( confirm(this.ref_label) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } var extra = 0; if (navigator.appName=="Netscape" && parseInt(navigator.appVersion, 10 )>=5) { var index = val.indexOf('\n'); while(index != -1) { extra += 1; index = val.indexOf('\n',index+1); } } if ( this.maxlength < val.length + extra ) { var newlength = val.length + extra; if ( (newlength - this.maxlength) > 1 ) { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.plural', [this.ref_label,this.maxlength,(newlength-this.maxlength)])); } else { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.singular', [this.ref_label,this.maxlength])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } // required_url, unlike valid_url, flags empty strings as invalid URLs. if ( this.required_url ) { if ( val.trim() == '' ) { alert(JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } if ( !isValidUrl(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_url ) { if ( val.trim()=='' ) { return true; } var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; if ( !oRegExp.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( typeof(this.regex) == 'string' ) { this.regex=eval(this.regex); } if ( (typeof(this.regex) == 'object' || typeof(this.regex) == 'function') && val.trim() != '' ) { re =this.regex; if ( this.regex_match && val.search(re) == -1 ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } if ( !this.regex_match && re.test(val) ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.invalid_chars ) { // if string was passed, convert to regular expression object if( Object.isString( this.invalid_chars ) ) { var stringToParse = this.invalid_chars; var firstSlashPos = stringToParse.indexOf("/"); var lastSlashPos = stringToParse.lastIndexOf("/"); var pattern = stringToParse.substring( ++firstSlashPos, lastSlashPos ); var modifier = stringToParse.substring( ++lastSlashPos, stringToParse.length ); this.invalid_chars = new RegExp( pattern, modifier ); } var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.verify ) { var chk_field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'_chk')); var field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'')); if ( chk_field.value != val ) { alert(JS_RESOURCES.getFormattedString('validation.mismatch', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( chk_field ); } return false; } // Encode password if ( element.type == 'password' ) { element.value = element.value.trim(); if ( element.value != '' ) { element.value = field.value = chk_field.value = calcMD5(element.value); } else { alert(JS_RESOURCES.getString('validation.password')); element.value = field.value =''; if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.cmp_required && element.value.trim()!='' ) { if ( !cmp_element.value.trim().length ) { alert(JS_RESOURCES.getFormattedString('validation.cmp_field.rejected', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } return false; } } if ( this.img_check ) { return image_check(element); } //AS-102122, if a image tag without ALT properties <img src="1.jpg">, add a null ALT for it. <img src="1.jpg" alt=""> imgTag_check(element,0); // System role ids cannot begin with "BB" as of 7.2; such ids are reserved for solely for Blackboard use // Checks field to see if string begins with "BB" case-insensitive and if so, alert the user if ( this.valid_system_role_id ) { if ( element.value.indexOf('BB') === 0 || element.value.indexOf('bb') === 0 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.system_role.reserve', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } else { return true; } } } return true; } ///////////////////End of object inputText/////////////////// //check ALT propertity for <img tag, if there isn't ALT propertiry, add ALT="" for this tag function imgTag_check(element , start){ var imgStart = element.value.indexOf("<img",start); // img: <img src=... > if (imgStart > -1 ){ var end = element.value.indexOf(">",imgStart); if (end == -1 ){ return; } var imgData = element.value.substring(imgStart, end+1); // <img src=... > if(imgData.indexOf("alt") == -1){ imgData = "<img alt=\"\" " + imgData.substring(4); element.value = element.value.substring(0,imgStart) + imgData + element.value.substring(end+1); } imgTag_check(element, end); } } function image_check(element) { var ext = element.value.match(/.*\.(.*)/); ext = ext ? ext[1] :''; var re = /gif|jpeg|png|tif|bmp|jpg/i; if ( ! re.test(ext) && element.value ) { if ( ! confirm(JS_RESOURCES.getFormattedString('validation.image_type', [ext])) ) { element.focus(); return false; } } return true; } /************************************************************ * Object: inputDate. Use this object to validate that the * associated date fields are not empty ************************************************************/ var inputDateCheck; function inputDate(h) { this.element_mm = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mm")'; this.element_dd = 'bbDomUtil.getInputElementByName("'+h.name+'_0_dd")'; this.element_yyyy = 'bbDomUtil.getInputElementByName("'+h.name+'_0_yyyy")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputDateCheck; // Add here anything you need to validate } // Do actual check here function inputDateCheck() { var element_mm = eval(this.element_mm); var element_dd = eval(this.element_dd); var element_yyyy = eval(this.element_yyyy); if ( typeof element_mm != 'undefined' && element_dd !='undefined' && element_yyyy !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = ( this.ref_label ) ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_mm.name]); if ( element_mm.selectedIndex == -1 || element_dd.selectedIndex == -1 || element_yyyy == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.date.required', [this.ref_label])); if ( element_mm.selectedIndex == -1 ) { element_mm.focus(); } else if ( element_dd.selectedIndex == -1 ) { element_dd.focus(); } else { element_yyyy.focus(); } return false; } } return true; } ///////////////////End of object inputDate/////////////////// /************************************************************ * Object: inputTime. Use this object to validate that the * associated time fields are not empty ************************************************************/ var inputTimeCheck; function inputTime(h) { this.element_hh = 'bbDomUtil.getInputElementByName("'+h.name+'_0_hh")'; this.element_mi = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mi")'; this.element_am = 'bbDomUtil.getInputElementByName("'+h.name+'_0_am")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputTimeCheck; // Add here anything you need to validate } // Do actual check here function inputTimeCheck() { var element_hh = eval(this.element_hh); var element_mi = eval(this.element_mi); var element_am = eval(this.element_am); if ( typeof element_hh != 'undefined' && element_mi !='undefined' && element_am !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_hh.name]); if ( element_hh.selectedIndex == -1 || element_mi.selectedIndex == -1 || element_am == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.time.required', [this.ref_label])); if ( element_hh.selectedIndex == -1 ) { element_hh.focus(); } else if ( element_mi.selectedIndex == -1 ) { element_mi.focus(); } else { element_am.focus(); } return false; } } return true; } ///////////////////End of object inputTime/////////////////// /************************************************************ * Object: inputSelect. Use this object to validate that the * associated select field is not empty ************************************************************/ var inputSelectCheck; function inputSelect(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.minSelected = h.minSelected; this.maxSelected = h.maxSelected; this.title = h.title; this.isMultiSelect = h.isMultiSelect; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputSelectCheck; // Add here anything you need to validate } // Do actual check here function inputSelectCheck() { var element = eval(this.element); var checked = 0; if ( typeof element != 'undefined' ) { if ( this.isMultiSelect) { if( this.minSelected ) { //check that at least minSelected number of options is selected //bsomala checked = element.options.length; if(checked < this.minSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.minItems', [this.minSelected])); element.focus(); return false; } } checked = 0; if ( this.maxSelected ) { checked = element.options.length; if(checked > this.maxSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.maxItems', [this.maxSelected])); element.focus(); return false; } } } else { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); if ( (element.selectedIndex == -1) || (element.options[element.selectedIndex].value == "") ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); element.focus(); return false; } } } return true; } ///////////////////End of object inputSelect/////////////////// /************************************************************ * Object: inputFile. Use this object to validate that the file upload is not empty. IMPORTANT: file type is READ ONLY ************************************************************/ var inputFileCheck; function inputFile(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.invalid_chars = h.invalid_chars; this.minlength = h.minlength; this.img_check = h.img_check; this.check = inputFileCheck; // Add here anything you need to validate } // Do actual check here function inputFileCheck() { var element = eval(this.element); if ( typeof element != 'undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( this.invalid_chars ) { var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); shiftFocus( element, false); return false; } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } return false; } if ( this.img_check ) { return image_check(element); } } return true; } ///////////////////End of object inputFile/////////////////// /************************************************************ * Object: Check_EventTime. Use this object to make sure * that the end time is not before the start time, confirm pastdue time, * check duration of the event. *************************************************************/ var Check_EventTime_check; function Check_EventTime(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check; } function Check_EventTime_check() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( (document.forms[0].restrict_start && document.forms[0].restrict_end)|| (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end) ) { if ( (document.forms[0].restrict_start && document.forms[0].restrict_end && document.forms[0].restrict_start.checked && document.forms[0].restrict_end.checked) || (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end && document.forms[1].restrict_start.checked && document.forms[1].restrict_end.checked) ) { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } } else { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end && end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /* * SCR 17696 * This validation check should be used in the date widgets instead of the earlier one * as that has the chackboxes names hardcoded in them. The existing date wodgets * use it, but going ahead this should be the used. It helps specially when there are * multiple date widgets on the same page. */ var Check_EventTime_check_multiple; function Check_EventTime_multiple(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check_multiple; } function Check_EventTime_check_multiple() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( restr && cmp_restr ) { //This block has been aded due to SCR 17696. //Reason : if this method is directly called from a JSP page which is not a part of // the existing date widgets, and the parameters of stsrt date, end date, start checkbox and // end checkbox are passed, and additionally the page has another if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /*We always need time in our favorite format */ function sql_datetime(dat) { var year = dat.getFullYear(); var mon = dat.getMonth(); mon++; mon = (mon<10)?'0'+mon:mon; var day = dat.getDate(); day = (day<10)?'0'+day:day; var hh = dat.getHours(); hh = (hh<10)?'0'+hh:hh; var mi = dat.getMinutes(); mi = (mi<10)?'0'+mi:mi; var ss = dat.getSeconds(); ss = (ss<10)?'0'+ss:ss; return year+'-'+mon+'-'+day+' '+hh+':'+mi+':'+ss; } ///////////////////End of object Check_EventTime///////////// /******************************************************************************** * Object DoubleSubmit(): * Use this object to prevent multiple times form submission * Second argument is wait image source; first argument is image name (string) or * instance of ImageSwapper object created for submit button (if it has rollovers) *********************************************************************************/ var checkDoubleSubmit; // Prevent multiple form submission function DoubleSubmit() { this.submitted = 0; this.check = checkDoubleSubmit; } function checkDoubleSubmit() { if ( this.submitted > 0 ) { alert (JS_RESOURCES.getString('notification.submit')); return false; } else { this.submitted++; } return true; } ///////////////////End of Object DoubleSubmit()////////////////// /******************************************************************************** * Object RadioCheckBox(): * Use this object to make sure that at least one item is selected from the group of * radio/checkbox groups. Just attach this code to checkbox/radio group (refered below as 'element'): * formCheckList.addElement(new RadioCheckBox({name:'element or subgroup name',group:'group name',ref_label:"group label in alerts"})); *********************************************************************************/ var groupAddElement, checkGroupChecked, groupIsChecked; // Constructor function function RadioCheckBox(h) { return h; } function CheckGroup(h) { this.name = h.group; this.ref_label = h.ref_label; this.elements = []; this.addElement = groupAddElement; this.check = checkGroupChecked; } function groupAddElement(h) { this.elements[this.elements.length] = h.name; } function checkGroupChecked() { var list = this.elements; var chk = false; for ( var i = 0; i < list.length; i++ ) { if ( groupIsChecked(list[i]) ) { return true; } } var msg = null; var group = bbDomUtil.getInputElementByName(list[0]); group = (typeof group[0] != 'undefined') ? group[0]:group; if ( group.type == "radio" ) { msg = JS_RESOURCES.getFormattedString('validation.radio.required', [this.ref_label]); } else { msg = JS_RESOURCES.getFormattedString('validation.option.required', [this.ref_label]); } alert(msg); group.focus(); return false; } function groupIsChecked(groupName) { var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var checked = false; if ( typeof group != 'undefined' ) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( group[i].checked ) { checked = true; return checked; } } } else { if ( group.checked ) { checked = true; return checked; } } } return checked; } ///////////////////End of Object CheckGroup()//////////////////// /******************************************************************************** * Object selector(): * Use this object to make sure that at least one item is available in the Selector element (see PickerElement.java) * For use when Selector is marked Required: * formCheckList.addElement(new CheckSelector({name:'element or subgroup name',ref_label:"group label in alerts"})); *********************************************************************************/ var selectorCheck, selectorElementAvailable; // Constructor function function selector(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.required = h.required; this.check = selectorCheck; // Add here anything you need to validate } // Do actual check here function selectorCheck() { if(this.required) { var isAvailable = selectorElementAvailable(this.fieldName); this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element.name]); if ( !isAvailable ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } } return true; } function selectorElementAvailable(groupName) { // we need at least one "Remove" checkbox to be present and unchecked (one element is added but not removed) var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var available = false; if ( typeof group != 'undefined' && group !== null) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( !group[i].checked ) { available = true; return available; } } } else { if ( !group.checked ) { available = true; return available; } } } return available; } ///////////////////End of Object CheckSelector()//////////////////// //////////////// Start some useful generic functions //////////// /* Function ltrim(): Remove leading spaces in strings: Usage:trimmedString = originalString.ltrim(); */ function ltrim() { return this.replace( /^\s+/g,''); } String.prototype.ltrim = ltrim; /* Function rtrim(): Remove trailing spaces in strings: Usage:trimmedString = originalString.rtrim(); */ function rtrim() { return this.replace( /\s+$/g,''); } String.prototype.rtrim = rtrim; /* Function trim(): Remove leading and trailing spaces in strings: Usage:trimmedString = originalString.trim(); */ function trim() { return this.rtrim().ltrim(); } String.prototype.trim = trim; /* Function invalidChars(): Returns an array of illegal chars Usage: var listOfChars = myStringToSearch.invalidChars(regularExpression); regularExpression = /[illegal chars]/g; Sample re = /[! &^$#]/g */ function invalidChars (re) { var chrs = this.match(re); if ( chrs ) { for ( var j=0;j<chrs.length;j++ ) { if ( chrs[j]===' ' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.space'); } else if ( chrs[j]==',' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.comma'); } else if ( chrs[j]=='\\' ) { chrs[j]='\\\\'; } } } return chrs; } String.prototype.invalidChars = invalidChars; /** Function getRadioValue(): Returns selected value for group of radio buttons * Usage: var selectedValue = getRadioValue(radio); radio - reference to radio group */ function getRadioValue(radio) { for ( var i=0;i< radio.length;i++ ) { if ( radio[i].checked ) { return radio[i].value; } } } /** Function isEmptyWysiwyg(): Checks WYSIWYG control for value */ function isEmptyWysiwyg(field) { // first remove any HTML tags from the value, then check if it's empty (all spaces or &nbsp;s) // explicitly adding the unicode non-breaking space and line feed/break since IE and safari // don't seem to include them in \s var EMPTY_REGEXP = /^(\s|\u00A0|\u2028|\u2029|&nbsp;)*$/i; // Input is not empty if it contains one of the following tags: img/object/embed var SPECIALTAGS = /(<\s*(img)|(object)|(embed)|(hr)|(input)|(applet))/i; if ( field && typeof(field.value) == 'string' && field.value ) { var notags = field.value.replace(/<.*?>/g,''); var result = EMPTY_REGEXP.test(notags); return ( result && !SPECIALTAGS.test(field.value) ); } return true; } /** Function isValidUrl(): Checks if given string is in the general URL format */ var VALID_URL_REGEXP = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; function isValidUrl(string) { return( VALID_URL_REGEXP.test(string) ); } /** Numeric */ var EFLOAT_REGEXP = LOCALE_SETTINGS.getString('efloat.format'); var THOUSANDS_SEP = LOCALE_SETTINGS.getString('thousand.sep.format'); /*rejectThousandSep: if true then the presence of the thousands-separator is an error (non-numeric) * e.g. we don't accept it for point, since point/score is rarely in thousands range. */ function isNumeric(string, rejectThousandSep ) { string = string.trim(); if ( rejectThousandSep !== null && rejectThousandSep ) { var hasThousands = ( string.search( new RegExp( THOUSANDS_SEP ) ) !== -1 ) ; if (hasThousands) { return false; } } string = string.replace(new RegExp(THOUSANDS_SEP, 'g'), ''); if ( string.search( new RegExp(EFLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return !isNaN(floatValue); } return false; } /** Float between 0 and 100 */ var FLOAT_REGEXP = LOCALE_SETTINGS.getString('float.format'); function isPercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= 0 && floatValue <= 100 ); } return false; } /** Float between -100 and 100 */ var FLOAT_ALLOW_NEGATIVE_REGEXP = LOCALE_SETTINGS.getString('float.allow.negative.format'); function isValidNegativePercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_ALLOW_NEGATIVE_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= -100 && floatValue <= 100 ); } return false; } /*Function submitForm() Call this function to validate and submit form @param form the name of the form or the DOM object representing the form. If null or undefined, submits first form on page. */ function submitForm(form) { if ( validateForm() ) { if (form) { if ( typeof( form ) == "string" ) { document.forms[ form ].submit(); } else { form.submit(); } } else { document.forms[0].submit(); } } } /* Sort numerical array in ascending order */ function numericalArraySortAscending(a, b) { return (a-b); } /*Function validateForm() * Call this function onSubmit inside <form> tag */ function validateForm() { // Set textarea value to VTBE contents if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if ( skipValidation ) { return true; } /* Validate form */ var valid = formCheckList.check(); var i; /*Check for invalid answers if any present */ var invalidAnswersArray = []; var invAns = window.invalidAnswers; if ( typeof( invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } invAns = window.invalidAnswersTmp; if ( typeof(invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } var stringArg = ''; if ( invalidAnswersArray.length > 0 ) { invalidAnswersArray.sort(numericalArraySortAscending); var lastIndex = invalidAnswersArray.length - 1; for ( var x = 0; x < invalidAnswersArray.length; x++ ) { stringArg += invalidAnswersArray[x]; if ( x < lastIndex ) { if ( ( (x+1) % 10 ) === 0 ) { stringArg += ",\n"; } else { stringArg += ","; } } } } if ( stringArg !== '' && valid ) { var msgKey; if ( !assessment.backtrackProhibited ) { msgKey = 'assessment.incomplete.confirm'; } else { msgKey = 'assessment.incomplete.confirm.backtrackProhibited'; } if (assessment.isSurvey) { msgKey = msgKey + ".survey"; } if ( !confirm( JS_RESOURCES.getFormattedString( msgKey, [stringArg] ) ) ) { valid = false; // User decided not to submit } else { assessment.userReallyWantsToSubmit = true; } window.invalidAnswersTmp = []; // Clearing up } /* Go back to placeholders if validation failed (valid == false) */ if ( ismath && !valid ) { api.setMathmlBoxes(); } /* If everything is OK and ready to go,check that the form was not already submitted */ if ( valid && dblSubmit ) { valid = dblSubmit.check(); } return valid; } /*Function boxSelector() * Use this function to select, unselect or invert selection for specified checkbox groups * Call: boxSelector(['name1','name2',...,'namen'],action), here action is 'select', or 'unselect', or 'invert' */ function boxSelector(list,action) { action = (action == 'select') ? true : (action == 'unselect') ? false : action; for ( var i=0;i<list.length;i++ ) { var group = 'bbDomUtil.getInputElementByName("'+list[i]+'")'; if ( typeof (group = eval(group)) != 'undefined' ) { var j; if ( action == 'invert' ) { for ( j=0;j<group.length;j++ ) { group[j].checked = !group[j].checked; } } else { for ( j=0;j<group.length;j++ ) { group[j].checked = action; } } } } } function setHidden (from,to) { var hide = eval(to); hide.value = from.value; } ////////////////////////////////////////////////////////////////// /** * Check_Answer object was added by request specified in mscr 524 * to provide validation to student answers * Variable invalidAnswers has to be added to the page where assessment is submitted * It should contain the list of unfinished questions excluding question(s) on current page * Check_Answer object will perform final validation and display all unfinished questions in confirm box */ var invalidAnswers = []; // the java code will populate this array on final QbyQ page /** Object constructor for answers walidation * */ var Check_Answer_check; function Check_Answer (vobj) { if ( typeof(window.invalidAnswersTmp)=='undefined' ) { window.invalidAnswersTmp=[]; } this.form = 'document.forms[0]'; this.element = 'bbDomUtil.getInputElementByName("'+vobj.name+'")'; this.name = vobj.name; this.answerChk = true; //Check_Answer is special check, it makes a list of unfinished questions and always return true this.ref_label = vobj.ref_label; this.check = Check_Answer_check; } //Test if at least one member of radio or checkbox group is selected function isChecked(grp) { if (typeof(grp.length) != 'undefined') { for ( var i=0;i< grp.length;i++ ) { if ( grp[i].checked ) { return true; } } return false; } else { return grp.checked; } } function Check_Answer_check() { //create form element object var el = eval(this.element); //Extract question type information from element name var qtype = /^(\w+)-/.exec(this.name); if ( !qtype ) { qtype = /^([^_]+)_/.exec(this.name); } qtype = qtype[1]; if ( qtype == 'ma' ) { qtype = /-\d+$/.test(this.name) ? 'mat' : 'ma'; } // Perform actual check-up if ( qtype == 'tf' || qtype == 'mc' || qtype == 'ma' || qtype == 'eo' ) { if ( !isChecked(el) ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]=this.ref_label; } } else if ( qtype == 'ord' || qtype == 'mat' ) { if ( el.selectedIndex === 0 && this.ref_label != window.invalidAnswersTmp[window.invalidAnswersTmp.length-1] ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'fitb' || qtype == 'essay' || qtype == 'num' || qtype == 'calc' || qtype == 'hs' || qtype == 'jumbled_sentence' || qtype == 'fib_plus' || qtype == 'quiz_bowl' ) { //remove isEmptyWysiwyg for these question types, since they should allow some chars as < > var val = el.value; if ( isAnEmptyVtbe(val) ) { val=''; } if ( val.trim().length < 1 ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'file' ) { var haveFile = false; var hiddenField = eval(this.form + '.elements["' + this.name + '-override"]'); if ( hiddenField && hiddenField.value == "true" ) { haveFile = true; } el = eval(this.form + '.elements["' + this.name + '_attachmentType"]'); if ( !haveFile && el && el.value !== "" ) { haveFile = true; } if ( !haveFile ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } // eliminate duplicates // TODO: think of a better way to do this if ( window.invalidAnswersTmp.length > 0 ) { var tmpArray = []; var tmpObject = {}; for ( var i = 0; i < window.invalidAnswersTmp.length; ++i ) { if ( !tmpObject[window.invalidAnswersTmp[i]] ) { tmpObject[window.invalidAnswersTmp[i]] = true; tmpArray[tmpArray.length] = window.invalidAnswersTmp[i]; } } window.invalidAnswersTmp = tmpArray; } return true; //Always true, we can make decision later through confirm } // wrapper function for focus() calls function shiftFocus(el, isVTBE) { if ( el ) { if ( isVTBE && editors && editors[el.name] && typeof(editors[el.name].focusEditor) == 'function' ) { editors[el.name].focusEditor(); } else if ( !el.disabled && !el.readOnly && el.type != "hidden" ) { safeFocus( el ); } } return; } function safeFocus( e ) { try { if ( e && e.focus ) { e.focus(); } } catch (er) { //Ignore, element is hidden in IE and can't be focused. } } /** * A validator that checks to see that a certain radio button in a group is * selected. This is intended to be used for conditional validation -- * validators that only apply when a certain radio button selection is made. * Note that if there are no selected values, this validator will return false * when checked. * - name - radio button group to check * - value - the radio button value to check for selection */ var RadioButtonValueValidator_check; function RadioButtonValueValidator( name, value ) { this.element = bbDomUtil.getInputElementByName(name); this.value = value; this.check = RadioButtonValueValidator_check; } function RadioButtonValueValidator_check() { for ( var i = 0; i < this.element.length; i++ ) { if ( this.element[i].value == this.value ) { return this.element[i].checked; } } return false; } /** * A validator that performs a logical, short-circuit OR on its two arguments. */ var OrValidator_check; function OrValidator( first, second ) { this.first = first; this.second = second; this.check = OrValidator_check; } function OrValidator_check() { return this.first.check() || this.second.check(); } /* This is a sample code that has to be added to every corresponding form element in take assessment page, where you perform question validation for completness; ref_lablel value is used to refer to element, name is field full name: <script type="text/javascript"> formCheckList.addElement(new Check_Answer({ref_label:"Question 3",name:"tf-ans-_190_1"})); </script> */ var nonceUtil = {}; /** * Finds the form element holding the nonceId * @param formId is the id of the form the nonce element exists within */ nonceUtil.getNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce') }; nonceUtil.getAjaxNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce.ajax') }; nonceUtil.getNonceIdEx = function(formId, elName) { var nonceId = null; if(formId && $s(formId) ) { nonceId= $s(formId).elements[elName]; } if( !nonceId ) { // take a cheap shot at retreiving the first nonceId on the page nonceId = document.getElementsByName( elName )[0]; // Note : nonceId can be null if the form does not have a nonce element declared. This should be a sign of a xsrf loophole } return nonceId; }; /** * Finds the form element holding the nonceId * @param formElementId is the id of a form element on the page. It is expected that the nonceId corresponds * to the same form. */ nonceUtil.getNonceIdByFormElementId = function(formElementId) { var nonceId = null; if( formElementId && $s(formElementId) ) { var elementFormId = bbDomUtil.getEnclosingForm(formElementId); nonceId = $s(elementFormId).elements['blackboard.platform.security.NonceUtil.nonce']; } return nonceId; }; nonceUtil.getNonceIdValue = function(formId) { var nonceId = nonceUtil.getNonceId(formId); return nonceId ? nonceId.value : ""; }; /** * Copies the nonceid from one form on the page to another form. Useful when using flyout forms. */ nonceUtil.copyNonceId = function( sourceFormId, targetFormId ) { var nonceId = nonceUtil.getNonceIdValue( sourceFormId ); var targetElem = new Element( 'input', { type: 'hidden', name: 'blackboard.platform.security.NonceUtil.nonce', value: nonceId } ); $( targetFormId ).appendChild( targetElem ); }; /** * Updates the form's nonceId based on the JSON response from an AjaxSecureForm */ nonceUtil.updateFromAjaxRequest = function( headerJSON ) { if ( headerJSON ) { var nonceId = nonceUtil.getNonceId(); if( nonceId ) { nonceId.value = headerJSON.nonceId; } } }; var NumberLocalizer = Class.create(); NumberLocalizer.prototype = { initialize : function() { var thousandsSeparator = LOCALE_SETTINGS[ 'number_format.thousands_sep' ]; var decimalSeparator = LOCALE_SETTINGS[ 'number_format.decimal_point' ]; this.thousandsSeparator = ( thousandsSeparator === null ) ? ',' : thousandsSeparator; this.needToConvertThousands = ( this.thousandsSeparator !== ',' ) ? true : false; this.decimalSeparator = ( decimalSeparator === null ) ? '.' : decimalSeparator; this.needToConvertDecimal = ( this.decimalSeparator !== '.' ) ? true : false; }, // Takes a number that is unlocalized and converts it to // the current locale format. formatNumber : function( f ) { var result; result = f.toString(); // Replace and thousands delimiter with a token so we can // replace it with the final symbol after we replace the decimal symbol. if ( this.needToConvertThousands ) { result = result.replace( ',', '[comma]' ); } if ( this.needToConvertDecimal ) { result = result.replace( '.', this.decimalSeparator ); } if ( this.needToConvertThousands ) { result = result.replace( '[comma]', this.thousandsSeparator ); } return result; }, // Takes a number that is in the current locale format and // converts it back to an unlocalized number. parseNumber : function( num ) { var result; result = num.toString(); // Parsing string to return as a float, so we don't need the thousands // separator anymore. result = result.replace( this.thousandsSeparator, '' ); if ( this.needToConvertDecimal ) { result = result.replace( this.decimalSeparator, '.' ); } return parseFloat( result ); } };var AccessibleSelect = {}; /** * Wire up the accessible event listeners to any <select>s on the page that have an onchange listener already */ AccessibleSelect.initializePage = function() { var selects = document.getElementsByTagName("select"); for ( var i = 0; i < selects.length; i++ ) { var currentSelect = selects[i]; if ( currentSelect.onchange ) { currentSelect.changed = false; currentSelect.onfocus = AccessibleSelect.onfocus; currentSelect.onkeydown = AccessibleSelect.onkeydown; currentSelect.onclick = AccessibleSelect.onclick; currentSelect.onchange = AccessibleSelect.createOnchange( currentSelect.onchange ); } } }; /** * Functor that creates an onchange function which if the <select> has actually been changed, will call the * specified callback (i.e. the original onchange function ) */ AccessibleSelect.createOnchange = function( callback ) { return function( theElement ) { var theSelect; if ( theElement && theElement.value ) { theSelect = theElement; } else { theSelect = this; } if (theSelect.changed) { // bind "theSelect" as the "this" for the callback. callback.apply(theSelect); return true; } else { return false; } }; }; /** * Event listener called when the <select> is clicked */ AccessibleSelect.onclick = function() { this.changed = true; // If the select size is greater than 0, then the onchange event occurs before the onclick event // and the "changed" attribute is false when the onchange event listener method runs and the select // element's onchange method does not get called. Therefore, we are going to call it here. if( this.size > 0 ) { this.onchange(this); } }; /** * Event listener called when the <select> gains focus */ AccessibleSelect.onfocus = function() { this.initValue = this.value; return true; }; /** * Event listener called when a key is pressed in the <select>. */ AccessibleSelect.onkeydown = function(e) { var theEvent; var keyCodeTab = "9"; var keyCodeEnter = "13"; var keyCodeEsc = "27"; if (e) { theEvent = e; } else { theEvent = event; } var largeSize = (this.size > 0); if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && ( largeSize || this.value != this.initValue) ) { this.initValue = this.value; this.changed = true; this.onchange(this); // returning true logically denotes that the change has been made, but more importantly it will make sure the default // behavior (what would have happened without the onkeydown event) is honored. For example, user pressing 'tab' key will // move the focus to the next element on the page return true; } else if (theEvent.keyCode == keyCodeEsc) { this.value = this.initValue; return false; } else { this.changed = false; } return true; }; // This script does not work for Safari. See AS-110404, AS-110426 if (!/webkit|khtml/i.test(navigator.userAgent)) { //When the page is loaded, initialize the select boxes if ( window.addEventListener) { window.addEventListener('load', AccessibleSelect.initializePage, false); } else if ( window.attachEvent ) { window.attachEvent('onload', AccessibleSelect.initializePage); } }var popup = { /** * Launches a new popup window. This method is used for an random popup that * might be necessary (preview window for example). If you are launching a * "picker" window you should use launchPicker() instead. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). This is required. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param resizable whether the new window should be resizable. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @param showStatus whether the new window should be show the status bar. If * not provided a default value will be used. Do not provide unless * your specific requirements dictate it. * @param scrolling whether the new window should allow scrolling. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @return a reference to the popup window generated */ launch: function( url, name, width, height, resizable, showStatus, scrolling ) { if ( typeof( width ) == 'undefined' ) { // for RTL, the width needs to be wider, to prevent vertical line overlapping in the popup if ( page.util.isRTL() ) { width = 890; } else { width = 825; // wide enough to prevent a horizontal scrollbar in most cases } } if ( typeof( height ) == 'undefined' ) { height = 500; } if ( typeof( resizable ) == 'undefined' ) { resizable = 'yes'; } if ( typeof( showStatus ) == 'undefined' ) { showStatus = 'yes'; } if ( typeof( scrolling ) == 'undefined' ) { scrolling = 'yes'; } // figure out placement of the new window we will open. If the desired size // of the new window is bigger than the screen size then make the window // smaller and put it far left. Otherwise, center the window on screen. var screenX = 0; if ( screen.width <= width ) { width = screen.width; // new window should not be wider than the screen } else { screenX = ( screen.width - width ) / 2; // center on the screen } var popup = window.open( url, name, 'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrolling + ',status=' + showStatus + ',top=20' + ',screenY=20' + ',screenX=' + screenX + ',left=' + screenX ); if ( popup ) { popup.focus(); if ( !popup.opener ) { popup.opener = self; } window.top.name = 'bbWin'; } return popup; }, /** * Launches a new "picker" window. * <p> * At the moment the only difference between this method and launch (besides * the inability to specify some advanced and rarely used options) is that * this method will default the {@code name} value if not provided. However, * you should still use this method if you are launching a "picker" type * window as additional differences may be introduced in the future. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). If not provided a default value will be used. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @return a reference to the picker window generated */ launchPicker: function( url, name, width, height ) { if ( typeof( name ) == 'undefined' ) { name = 'picker'; } return popup.launch( url, name, width, height ); }, /** * Launches a new Content System folder "picker" window. * * @param element a reference to the form element into which the value chosen * in the picker should be set. If not provided, the value will not be * set. * @return a reference to the picker window generated */ launchCsDirectoryPicker: function( element ) { var picker = popup.launchPicker( "/webapps/cmsmain/folderpicker" ); if ( picker !== null ) { if ( ( typeof( element ) != 'undefined' ) && ( element !== null ) ) { picker.opener.inputEntryURLToSet = document.getElementById( element ); } picker.opener.returnFullURL = false; } return picker; } }; var BrowserSpecific = { registerListeners: function() { if( Prototype.Browser.IE ) { var inputs = $A(document.getElementsByTagName('input')); //Enter key submit handling added only for IE browser. if( inputs ) { inputs.each( function( input ) { if(input.type === 'text' && !page.util.hasClassName(input,'noFormSubmitIE')) { Event.observe( input, "keypress", this.checkEnterKeyToSubmit.bindAsEventListener( this, input ) ); } }.bind( this ) ); } } }, checkEnterKeyToSubmit: function(event, input) { //if generated character code is equal to ascii 13 (if enter key) if(event.keyCode == 13 && input.form) { var submitButtons = $(input.form).getInputs('submit'); if(submitButtons && submitButtons.size() > 0) { submitButtons.first().click(); } Event.stop(event); } else { return true; } }, // Fix FireFox bug which converts absolute links pasted into a VTBE into relative ones which // start with a variable number of "../". // https://bugzilla.mozilla.org/show_bug.cgi?id=613517 handleFirefoxPastedLinksBug: function( baseUrl, vtbeText ) { if ( !baseUrl || !vtbeText ) { return vtbeText; } if ( Prototype.Browser.Gecko ) { if( !$( baseUrl.empty() ) && !$( vtbeText.empty() ) ) { //e.g. extract out "http://localhost:80" from "http://localhost:80/webapps/Bb-wiki-BBLEARN/" // port is optional var absoluteUrlPrefix = baseUrl.match(/https?:[\d]*\/\/[^\/]+/); // e.g."../../../bbcswebdav/xid-2202_1" into "http://localhost:80/bbcswebdav/xid-2202_1" vtbeText = vtbeText.replace(/(\.\.\/)+(sessions|bbcswebdav|courses|@@)/g, absoluteUrlPrefix + "/" + "$2"); } } return vtbeText; }, disableEnterKeyInTextBoxes: function (document) { var inputs = $A(document.getElementsByTagName('input')); if( inputs ) { inputs.each ( function( input ) { //must add special className for IE textboxes if( Prototype.Browser.IE ) { input.addClassName( 'noFormSubmitIE' ); } Event.observe( input, 'keypress', this.disableEnterKey ); }.bind( this ) ); } }, disableEnterKey: function( event ) { if( event.keyCode != Event.KEY_RETURN ) { return; } Event.stop( event ); return; } };

/** * Inserts the given HTML content into the extra content cell of the standard * title bar. * * @param content The HTML content to place */ function insertTitlebarContent(content) { var contentCell = document.getElementById("_titlebarExtraContent"); contentCell.innerHTML = content; }

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Declare an object to which we can add real functions. */ if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; /** * Set an alternative error handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setErrorHandler = function(handler) { dwr.engine._errorHandler = handler; }; /** * Set an alternative warning handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setWarningHandler = function(handler) { dwr.engine._warningHandler = handler; }; /** * Setter for the text/html handler - what happens if a DWR request gets an HTML * reply rather than the expected Javascript. Often due to login timeout */ dwr.engine.setTextHtmlHandler = function(handler) { dwr.engine._textHtmlHandler = handler; }; /** * Set a default timeout value for all calls. 0 (the default) turns timeouts off. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setTimeout = function(timeout) { dwr.engine._timeout = timeout; }; /** * The Pre-Hook is called before any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPreHook = function(handler) { dwr.engine._preHook = handler; }; /** * The Post-Hook is called after any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPostHook = function(handler) { dwr.engine._postHook = handler; }; /** * Custom headers for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setHeaders = function(headers) { dwr.engine._headers = headers; }; /** * Custom parameters for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setParameters = function(parameters) { dwr.engine._parameters = parameters; }; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.XMLHttpRequest = 1; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.IFrame = 2; /** XHR remoting type constant. See dwr.engine.setRpcType() */ dwr.engine.ScriptTag = 3; /** * Set the preferred remoting type. * @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setRpcType = function(newType) { if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) { dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" }); return; } dwr.engine._rpcType = newType; }; /** * Which HTTP method do we use to send results? Must be one of "GET" or "POST". * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setHttpMethod = function(httpMethod) { if (httpMethod != "GET" && httpMethod != "POST") { dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" }); return; } dwr.engine._httpMethod = httpMethod; }; /** * Ensure that remote calls happen in the order in which they were sent? (Default: false) * @see getahead.org/dwr/browser/engine/ordering */ dwr.engine.setOrdered = function(ordered) { dwr.engine._ordered = ordered; }; /** * Do we ask the XHR object to be asynchronous? (Default: true) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setAsync = function(async) { dwr.engine._async = async; }; /** * Does DWR poll the server for updates? (Default: false) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setActiveReverseAjax = function(activeReverseAjax) { if (activeReverseAjax) { // Bail if we are already started if (dwr.engine._activeReverseAjax) return; dwr.engine._activeReverseAjax = true; dwr.engine._poll(); } else { // Can we cancel an existing request? if (dwr.engine._activeReverseAjax && dwr.engine._pollReq) dwr.engine._pollReq.abort(); dwr.engine._activeReverseAjax = false; } // TODO: in iframe mode, if we start, stop, start then the second start may // well kick off a second iframe while the first is still about to return // we should cope with this but we don't }; /** * The default message handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultErrorHandler = function(message, ex) { dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true); if (message == null || message == "") alert("A server error has occured."); // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message); else alert(message); }; /** * The default warning handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultWarningHandler = function(message, ex) { dwr.engine._debug(message); }; /** * For reduced latency you can group several remote calls together using a batch. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.beginBatch = function() { if (dwr.engine._batch) { dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" }); return; } dwr.engine._batch = dwr.engine._createBatch(); }; /** * Finished grouping a set of remote calls together. Go and execute them all. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.endBatch = function(options) { var batch = dwr.engine._batch; if (batch == null) { dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" }); return; } dwr.engine._batch = null; if (batch.map.callCount == 0) return; // The hooks need to be merged carefully to preserve ordering if (options) dwr.engine._mergeBatch(batch, options); // In ordered mode, we don't send unless the list of sent items is empty if (dwr.engine._ordered && dwr.engine._batchesLength != 0) { dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch; } else { dwr.engine._sendData(batch); } }; /** @deprecated */ dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); }; dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); }; dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); }; dwr.engine.setPollType = function() { dwr.engine._debug("Manually setting the Poll Type is not supported"); }; //============================================================================== // Only private stuff below here //============================================================================== /** The original page id sent from the server */ dwr.engine._origScriptSessionId = "0DEC664EE083328259795ED589FEE364"; /** The session cookie name */ dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID /** Is GET enabled for the benefit of Safari? */ dwr.engine._allowGetForSafariButMakeForgeryEasier = "false"; /** The script prefix to strip in the case of scriptTagProtection. */ dwr.engine._scriptTagProtection = "throw 'allowScriptTagRemoting is false.';"; /** The default path to the DWR servlet */ dwr.engine._defaultPath = "/webapps/assessment/dwr_open"; /** Do we use XHR for reverse ajax because we are not streaming? */ dwr.engine._pollWithXhr = "false"; /** The read page id that we calculate */ dwr.engine._scriptSessionId = null; /** The function that we use to fetch/calculate a session id */ dwr.engine._getScriptSessionId = function() { if (dwr.engine._scriptSessionId == null) { dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000); } return dwr.engine._scriptSessionId; }; /** A function to call if something fails. */ dwr.engine._errorHandler = dwr.engine.defaultErrorHandler; /** For debugging when something unexplained happens. */ dwr.engine._warningHandler = dwr.engine.defaultWarningHandler; /** A function to be called before requests are marshalled. Can be null. */ dwr.engine._preHook = null; /** A function to be called after replies are received. Can be null. */ dwr.engine._postHook = null; /** An map of the batches that we have sent and are awaiting a reply on. */ dwr.engine._batches = {}; /** A count of the number of outstanding batches. Should be == to _batches.length unless prototype has messed things up */ dwr.engine._batchesLength = 0; /** In ordered mode, the array of batches waiting to be sent */ dwr.engine._batchQueue = []; /** What is the default rpc type */ dwr.engine._rpcType = dwr.engine.XMLHttpRequest; /** What is the default remoting method (ie GET or POST) */ dwr.engine._httpMethod = "POST"; /** Do we attempt to ensure that calls happen in the order in which they were sent? */ dwr.engine._ordered = false; /** Do we make the calls async? */ dwr.engine._async = true; /** The current batch (if we are in batch mode) */ dwr.engine._batch = null; /** The global timeout */ dwr.engine._timeout = 0; /** ActiveX objects to use when we want to convert an xml string into a DOM object. */ dwr.engine._DOMDocument = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; /** The ActiveX objects to use when we want to do an XMLHttpRequest call. */ dwr.engine._XMLHTTP = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; /** Are we doing comet or polling? */ dwr.engine._activeReverseAjax = false; /** The iframe that we are using to poll */ dwr.engine._outstandingIFrames = []; /** The xhr object that we are using to poll */ dwr.engine._pollReq = null; /** How many milliseconds between internal comet polls */ dwr.engine._pollCometInterval = 200; /** How many times have we re-tried to poll? */ dwr.engine._pollRetries = 0; dwr.engine._maxPollRetries = 0; /** Do we do a document.reload if we get a text/html reply? */ dwr.engine._textHtmlHandler = null; /** If you wish to send custom headers with every request */ dwr.engine._headers = null; /** If you wish to send extra custom request parameters with each request */ dwr.engine._parameters = null; /** Undocumented interceptors - do not use */ dwr.engine._postSeperator = "\n"; dwr.engine._defaultInterceptor = function(data) { return data; }; dwr.engine._urlRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._contentRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._replyRewriteHandler = dwr.engine._defaultInterceptor; /** Batch ids allow us to know which batch the server is answering */ dwr.engine._nextBatchId = 0; /** A list of the properties that need merging from calls to a batch */ dwr.engine._propnames = [ "rpcType", "httpMethod", "async", "timeout", "errorHandler", "warningHandler", "textHtmlHandler" ]; /** Do we stream, or can be hacked to do so? */ dwr.engine._partialResponseNo = 0; dwr.engine._partialResponseYes = 1; dwr.engine._partialResponseFlush = 2; /** Is this page in the process of unloading? */ dwr.engine._unloading = false; /** * @private Send a request. Called by the Javascript interface stub * @param path part of URL after the host and before the exec bit without leading or trailing /s * @param scriptName The class to execute * @param methodName The method on said class to execute * @param func The callback function to which any returned data should be passed * if this is null, any returned data will be ignored * @param vararg_params The parameters to pass to the above class */ dwr.engine._execute = function(path, scriptName, methodName, vararg_params) { var singleShot = false; if (dwr.engine._batch == null) { dwr.engine.beginBatch(); singleShot = true; } var batch = dwr.engine._batch; // To make them easy to manipulate we copy the arguments into an args array var args = []; for (var i = 0; i < arguments.length - 3; i++) { args[i] = arguments[i + 3]; } // All the paths MUST be to the same servlet if (batch.path == null) { batch.path = path; } else { if (batch.path != path) { dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." }); return; } } // From the other params, work out which is the function (or object with // call meta-data) and which is the call parameters var callData; var lastArg = args[args.length - 1]; if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() }; else callData = args.pop(); // Merge from the callData into the batch dwr.engine._mergeBatch(batch, callData); batch.handlers[batch.map.callCount] = { exceptionHandler:callData.exceptionHandler, callback:callData.callback }; // Copy to the map the things that need serializing var prefix = "c" + batch.map.callCount + "-"; batch.map[prefix + "scriptName"] = scriptName; batch.map[prefix + "methodName"] = methodName; batch.map[prefix + "id"] = batch.map.callCount; for (i = 0; i < args.length; i++) { dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i); } // Now we have finished remembering the call, we incr the call count batch.map.callCount++; if (singleShot) dwr.engine.endBatch(); }; /** @private Poll the server to see if there is any data waiting */ dwr.engine._poll = function() { if (!dwr.engine._activeReverseAjax) return; var batch = dwr.engine._createBatch(); batch.map.id = 0; // TODO: Do we need this?? batch.map.callCount = 1; batch.isPoll = true; if (dwr.engine._pollWithXhr == "true") { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } else { if (navigator.userAgent.indexOf("Gecko/") != -1) { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseYes; } else { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } } batch.httpMethod = "POST"; batch.async = true; batch.timeout = 0; batch.path = dwr.engine._defaultPath; batch.preHooks = []; batch.postHooks = []; batch.errorHandler = dwr.engine._pollErrorHandler; batch.warningHandler = dwr.engine._pollErrorHandler; batch.handlers[0] = { callback:function(pause) { dwr.engine._pollRetries = 0; setTimeout(dwr.engine._poll, pause); } }; // Send the data dwr.engine._sendData(batch); if (batch.rpcType == dwr.engine.XMLHttpRequest && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._checkCometPoll(); } }; /** Try to recover from polling errors */ dwr.engine._pollErrorHandler = function(msg, ex) { // if anything goes wrong then just silently try again (up to 3x) after 10s dwr.engine._pollRetries++; dwr.engine._debug("Reverse Ajax poll failed (pollRetries=" + dwr.engine._pollRetries + "): " + ex.name + " : " + ex.message); if (dwr.engine._pollRetries < dwr.engine._maxPollRetries) { setTimeout(dwr.engine._poll, 10000); } else { dwr.engine._activeReverseAjax = false; dwr.engine._debug("Giving up."); } }; /** @private Generate a new standard batch */ dwr.engine._createBatch = function() { var batch = { map:{ callCount:0, page:window.location.pathname + window.location.search, httpSessionId:dwr.engine._getJSessionId(), scriptSessionId:dwr.engine._getScriptSessionId() }, charsProcessed:0, paramCount:0, parameters:{}, headers:{}, isPoll:false, handlers:{}, preHooks:[], postHooks:[], rpcType:dwr.engine._rpcType, httpMethod:dwr.engine._httpMethod, async:dwr.engine._async, timeout:dwr.engine._timeout, errorHandler:dwr.engine._errorHandler, warningHandler:dwr.engine._warningHandler, textHtmlHandler:dwr.engine._textHtmlHandler }; if (dwr.engine._preHook) batch.preHooks.push(dwr.engine._preHook); if (dwr.engine._postHook) batch.postHooks.push(dwr.engine._postHook); var propname, data; if (dwr.engine._headers) { for (propname in dwr.engine._headers) { data = dwr.engine._headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (dwr.engine._parameters) { for (propname in dwr.engine._parameters) { data = dwr.engine._parameters[propname]; if (typeof data != "function") batch.parameters[propname] = data; } } return batch; }; /** @private Take further options and merge them into */ dwr.engine._mergeBatch = function(batch, overrides) { var propname, data; for (var i = 0; i < dwr.engine._propnames.length; i++) { propname = dwr.engine._propnames[i]; if (overrides[propname] != null) batch[propname] = overrides[propname]; } if (overrides.preHook != null) batch.preHooks.unshift(overrides.preHook); if (overrides.postHook != null) batch.postHooks.push(overrides.postHook); if (overrides.headers) { for (propname in overrides.headers) { data = overrides.headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (overrides.parameters) { for (propname in overrides.parameters) { data = overrides.parameters[propname]; if (typeof data != "function") batch.map["p-" + propname] = "" + data; } } }; /** @private What is our session id? */ dwr.engine._getJSessionId = function() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length); if (cookie.indexOf(dwr.engine._sessionCookieName + "=") == 0) { return cookie.substring(dwr.engine._sessionCookieName.length + 1, cookie.length); } } return ""; }; /** @private Check for reverse Ajax activity */ dwr.engine._checkCometPoll = function() { for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { var text = ""; var iframe = dwr.engine._outstandingIFrames[i]; try { text = dwr.engine._getTextFromCometIFrame(iframe); } catch (ex) { dwr.engine._handleWarning(iframe.batch, ex); } if (text != "") dwr.engine._processCometResponse(text, iframe.batch); } if (dwr.engine._pollReq) { var req = dwr.engine._pollReq; var text = req.responseText; if (text != null) dwr.engine._processCometResponse(text, req.batch); } // If the poll resources are still there, come back again if (dwr.engine._outstandingIFrames.length > 0 || dwr.engine._pollReq) { setTimeout(dwr.engine._checkCometPoll, dwr.engine._pollCometInterval); } }; /** @private Extract the whole (executed an all) text from the current iframe */ dwr.engine._getTextFromCometIFrame = function(frameEle) { var body = frameEle.contentWindow.document.body; if (body == null) return ""; var text = body.innerHTML; // We need to prevent IE from stripping line feeds if (text.indexOf("<PRE>") == 0 || text.indexOf("<pre>") == 0) { text = text.substring(5, text.length - 7); } return text; }; /** @private Some more text might have come in, test and execute the new stuff */ dwr.engine._processCometResponse = function(response, batch) { if (batch.charsProcessed == response.length) return; if (response.length == 0) { batch.charsProcessed = 0; return; } var firstStartTag = response.indexOf("//#DWR-START#", batch.charsProcessed); if (firstStartTag == -1) { // dwr.engine._debug("No start tag (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed) + "'"); batch.charsProcessed = response.length; return; } // if (firstStartTag > 0) { // dwr.engine._debug("Start tag not at start (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed, firstStartTag) + "'"); // } var lastEndTag = response.lastIndexOf("//#DWR-END#"); if (lastEndTag == -1) { // dwr.engine._debug("No end tag. unchanged charsProcessed=" + batch.charsProcessed); return; } // Skip the end tag too for next time, remembering CR and LF if (response.charCodeAt(lastEndTag + 11) == 13 && response.charCodeAt(lastEndTag + 12) == 10) { batch.charsProcessed = lastEndTag + 13; } else { batch.charsProcessed = lastEndTag + 11; } var exec = response.substring(firstStartTag + 13, lastEndTag); dwr.engine._receivedBatch = batch; dwr.engine._eval(exec); dwr.engine._receivedBatch = null; }; /** @private Actually send the block of data in the batch object. */ dwr.engine._sendData = function(batch) { batch.map.batchId = dwr.engine._nextBatchId; dwr.engine._nextBatchId++; dwr.engine._batches[batch.map.batchId] = batch; dwr.engine._batchesLength++; batch.completed = false; for (var i = 0; i < batch.preHooks.length; i++) { batch.preHooks[i](); } batch.preHooks = null; // Set a timeout if (batch.timeout && batch.timeout != 0) { batch.timeoutId = setTimeout(function() { dwr.engine._abortRequest(batch); }, batch.timeout); } // Get setup for XMLHttpRequest if possible if (batch.rpcType == dwr.engine.XMLHttpRequest) { if (window.XMLHttpRequest) { batch.req = new XMLHttpRequest(); } // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) { batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP); } } var prop, request; if (batch.req) { // Proceed using XMLHttpRequest if (batch.async) { batch.req.onreadystatechange = function() { if (typeof dwr != 'undefined') dwr.engine._stateChange(batch); }; } // If we're polling, record this for monitoring if (batch.isPoll) { dwr.engine._pollReq = batch.req; // In IE XHR is an ActiveX control so you can't augment it like this if (!(document.all && !window.opera)) batch.req.batch = batch; } // Workaround for Safari 1.x POST bug var indexSafari = navigator.userAgent.indexOf("Safari/"); if (indexSafari >= 0) { var version = navigator.userAgent.substring(indexSafari + 7); if (parseInt(version, 10) < 400) { if (dwr.engine._allowGetForSafariButMakeForgeryEasier == "true") batch.httpMethod = "GET"; else dwr.engine._handleWarning(batch, { name:"dwr.engine.oldSafari", message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier." }); } } batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); try { batch.req.open(batch.httpMethod, request.url, batch.async); try { for (prop in batch.headers) { var value = batch.headers[prop]; if (typeof value == "string") batch.req.setRequestHeader(prop, value); } if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain"); } catch (ex) { dwr.engine._handleWarning(batch, ex); } batch.req.send(request.body); if (!batch.async) dwr.engine._stateChange(batch); } catch (ex) { dwr.engine._handleError(batch, ex); } } else if (batch.rpcType != dwr.engine.ScriptTag) { var idname = batch.isPoll ? "dwr-if-poll-" + batch.map.batchId : "dwr-if-" + batch.map.batchId; // Removed htmlfile implementation. Don't expect it to return before v3 batch.div = document.createElement("div"); // Add the div to the document first, otherwise IE 6 will ignore onload handler. document.body.appendChild(batch.div); batch.div.innerHTML = "<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='" + idname + "' name='" + idname + "' onload='dwr.engine._iframeLoadingComplete (" + batch.map.batchId + ");'></iframe>"; batch.document = document; batch.iframe = batch.document.getElementById(idname); batch.iframe.batch = batch; batch.mode = batch.isPoll ? dwr.engine._ModeHtmlPoll : dwr.engine._ModeHtmlCall; if (batch.isPoll) dwr.engine._outstandingIFrames.push(batch.iframe); request = dwr.engine._constructRequest(batch); if (batch.httpMethod == "GET") { batch.iframe.setAttribute("src", request.url); } else { batch.form = batch.document.createElement("form"); batch.form.setAttribute("id", "dwr-form"); batch.form.setAttribute("action", request.url); batch.form.setAttribute("style", "display:none;"); batch.form.setAttribute("target", idname); batch.form.target = idname; batch.form.setAttribute("method", batch.httpMethod); for (prop in batch.map) { var value = batch.map[prop]; if (typeof value != "function") { var formInput = batch.document.createElement("input"); formInput.setAttribute("type", "hidden"); formInput.setAttribute("name", prop); formInput.setAttribute("value", value); batch.form.appendChild(formInput); } } batch.document.body.appendChild(batch.form); batch.form.submit(); } } else { batch.httpMethod = "GET"; // There's no such thing as ScriptTag using POST batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); batch.script = document.createElement("script"); batch.script.id = "dwr-st-" + batch.map["c0-id"]; batch.script.src = request.url; document.body.appendChild(batch.script); } }; dwr.engine._ModePlainCall = "/call/plaincall/"; dwr.engine._ModeHtmlCall = "/call/htmlcall/"; dwr.engine._ModePlainPoll = "/call/plainpoll/"; dwr.engine._ModeHtmlPoll = "/call/htmlpoll/"; /** @private Work out what the URL should look like */ dwr.engine._constructRequest = function(batch) { // A quick string to help people that use web log analysers var request = { url:batch.path + batch.mode, body:null }; if (batch.isPoll == true) { request.url += "ReverseAjax.dwr"; } else if (batch.map.callCount == 1) { request.url += batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr"; } else { request.url += "Multiple." + batch.map.callCount + ".dwr"; } // Play nice with url re-writing var sessionMatch = location.href.match(/jsessionid=([^?]+)/); if (sessionMatch != null) { request.url += ";jsessionid=" + sessionMatch[1]; } var prop; if (batch.httpMethod == "GET") { // Some browsers (Opera/Safari2) seem to fail to convert the callCount value // to a string in the loop below so we do it manually here. batch.map.callCount = "" + batch.map.callCount; request.url += "?"; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.url += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&"; } } request.url = request.url.substring(0, request.url.length - 1); } else { // PERFORMANCE: for iframe mode this is thrown away. request.body = ""; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = []; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { buf.push(prop + "=" + batch.map[prop] + dwr.engine._postSeperator); } } request.body = buf.join(""); } else { // Use string concat on other browsers (fastest) for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.body += prop + "=" + batch.map[prop] + dwr.engine._postSeperator; } } } request.body = dwr.engine._contentRewriteHandler(request.body); } request.url = dwr.engine._urlRewriteHandler(request.url); return request; }; /** @private Called by XMLHttpRequest to indicate that something has happened */ dwr.engine._stateChange = function(batch) { var toEval; if (batch.completed) { dwr.engine._debug("Error: _stateChange() with batch.completed"); return; } var req = batch.req; try { if (req.readyState != 4) return; } catch (ex) { dwr.engine._handleWarning(batch, ex); // It's broken - clear up and forget this call dwr.engine._clearUp(batch); return; } if (dwr.engine._unloading) { dwr.engine._debug("Ignoring reply from server as page is unloading."); return; } try { var reply = req.responseText; reply = dwr.engine._replyRewriteHandler(reply); var status = req.status; // causes Mozilla to except on page moves if (reply == null || reply == "") { dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data received from server" }); } else if (status != 200) { dwr.engine._handleError(batch, { name:"dwr.engine.http." + status, message:req.statusText }); } else { var contentType = req.getResponseHeader("Content-Type"); if (!contentType.match(/^text\/plain/) && !contentType.match(/^text\/javascript/)) { if (contentType.match(/^text\/html/) && typeof batch.textHtmlHandler == "function") { batch.textHtmlHandler({ status:status, responseText:reply, contentType:contentType }); } else { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidMimeType", message:"Invalid content type: '" + contentType + "'" }); } } else { // Comet replies might have already partially executed if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._processCometResponse(reply, batch); } else { if (reply.search("//#DWR") == -1) { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" }); } else { toEval = reply; } } } } } catch (ex) { dwr.engine._handleWarning(batch, ex); } dwr.engine._callPostHooks(batch); // Outside of the try/catch so errors propogate normally: dwr.engine._receivedBatch = batch; if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, ""); dwr.engine._eval(toEval); dwr.engine._receivedBatch = null; dwr.engine._validateBatch(batch); if (!batch.completed) dwr.engine._clearUp(batch); }; /** * @private This function is invoked when a batch reply is received. * It checks that there is a response for every call in the batch. Otherwise, * an error will be signaled (a call without a response indicates that the * server failed to send complete batch response). */ dwr.engine._validateBatch = function(batch) { // If some call left unreplied, report an error. if (!batch.completed) { for (var i = 0; i < batch.map.callCount; i++) { if (batch.handlers[i] != null) { dwr.engine._handleWarning(batch, { name:"dwr.engine.incompleteReply", message:"Incomplete reply from server" }); break; } } } } /** @private Called from iframe onload, check batch using batch-id */ dwr.engine._iframeLoadingComplete = function(batchId) { // dwr.engine._checkCometPoll(); var batch = dwr.engine._batches[batchId]; if (batch) dwr.engine._validateBatch(batch); } /** @private Called by the server: Execute a callback */ dwr.engine._remoteHandleCallback = function(batchId, callId, reply) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true); return; } // Error handlers inside here indicate an error that is nothing to do // with DWR so we handle them differently. try { var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (!handlers) { dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true); } else if (typeof handlers.callback == "function") handlers.callback(reply); } catch (ex) { dwr.engine._handleError(batch, ex); } }; /** @private Called by the server: Handle an exception for a call */ dwr.engine._remoteHandleException = function(batchId, callId, ex) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; } var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; } if (ex.message == undefined) ex.message = ""; if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex); else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); }; /** @private Called by the server: The whole batch is broken */ dwr.engine._remoteHandleBatchException = function(ex, batchId) { var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: Reverse ajax should not be used */ dwr.engine._remotePollCometDisabled = function(ex, batchId) { dwr.engine.setActiveReverseAjax(false); var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: An IFrame reply is about to start */ dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) { if (iframe != null) dwr.engine._receivedBatch = iframe.batch; dwr.engine._callPostHooks(dwr.engine._receivedBatch); }; /** @private Called by the server: An IFrame reply is just completing */ dwr.engine._remoteEndIFrameResponse = function(batchId) { dwr.engine._clearUp(dwr.engine._receivedBatch); dwr.engine._receivedBatch = null; }; /** @private This is a hack to make the context be this window */ dwr.engine._eval = function(script) { if (script == null) return null; if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; } // dwr.engine._debug("Exec: [" + script + "]", true); return eval(script); }; /** @private Called as a result of a request timeout */ dwr.engine._abortRequest = function(batch) { if (batch && !batch.completed) { dwr.engine._clearUp(batch); if (batch.req) batch.req.abort(); dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" }); } }; /** @private call all the post hooks for a batch */ dwr.engine._callPostHooks = function(batch) { if (batch.postHooks) { for (var i = 0; i < batch.postHooks.length; i++) { batch.postHooks[i](); } batch.postHooks = null; } }; /** @private A call has finished by whatever means and we need to shut it all down. */ dwr.engine._clearUp = function(batch) { if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; } if (batch.completed) { dwr.engine._debug("Warning: Double complete", true); return; } // IFrame tidyup if (batch.div) batch.div.parentNode.removeChild(batch.div); if (batch.iframe) { // If this is a poll frame then stop comet polling for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { if (dwr.engine._outstandingIFrames[i] == batch.iframe) { dwr.engine._outstandingIFrames.splice(i, 1); } } batch.iframe.parentNode.removeChild(batch.iframe); } if (batch.form) batch.form.parentNode.removeChild(batch.form); // XHR tidyup: avoid IE handles increase if (batch.req) { // If this is a poll frame then stop comet polling if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null; delete batch.req; } // Timeout tidyup if (batch.timeoutId) { clearTimeout(batch.timeoutId); delete batch.timeoutId; } if (batch.map && (batch.map.batchId || batch.map.batchId == 0)) { delete dwr.engine._batches[batch.map.batchId]; dwr.engine._batchesLength--; } batch.completed = true; // If there is anything on the queue waiting to go out, then send it. // We don't need to check for ordered mode, here because when ordered mode // gets turned off, we still process *waiting* batches in an ordered way. if (dwr.engine._batchQueue.length != 0) { var sendbatch = dwr.engine._batchQueue.shift(); dwr.engine._sendData(sendbatch); } }; /** @private Abort any XHRs in progress at page unload (solves zombie socket problems in IE). */ dwr.engine._unloader = function() { dwr.engine._unloading = true; // Empty queue of waiting ordered requests dwr.engine._batchQueue.length = 0; // Abort any ongoing XHRs and clear their batches for (var batchId in dwr.engine._batches) { var batch = dwr.engine._batches[batchId]; // Only process objects that look like batches (avoid prototype additions!) if (batch && batch.map) { if (batch.req) { batch.req.abort(); } dwr.engine._clearUp(batch); } } }; // Now register the unload handler if (window.addEventListener) window.addEventListener('unload', dwr.engine._unloader, false); else if (window.attachEvent) window.attachEvent('onunload', dwr.engine._unloader); /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleError = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleWarning = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex); else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** * @private Marshall a data item * @param batch A map of variables to how they have been marshalled * @param referto An array of already marshalled variables to prevent recurrsion * @param data The data to be marshalled * @param name The name of the data being marshalled */ dwr.engine._serializeAll = function(batch, referto, data, name) { if (data == null) { batch.map[name] = "null:null"; return; } switch (typeof data) { case "boolean": batch.map[name] = "boolean:" + data; break; case "number": batch.map[name] = "number:" + data; break; case "string": batch.map[name] = "string:" + encodeURIComponent(data); break; case "object": if (data instanceof String) batch.map[name] = "String:" + encodeURIComponent(data); else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data; else if (data instanceof Number) batch.map[name] = "Number:" + data; else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime(); else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name); else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name); break; case "function": // We just ignore functions. break; default: dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." }); batch.map[name] = "default:" + data; break; } }; /** @private Have we already converted this object? */ dwr.engine._lookup = function(referto, data, name) { var lookup; // Can't use a map: getahead.org/ajax/javascript-gotchas for (var i = 0; i < referto.length; i++) { if (referto[i].data == data) { lookup = referto[i]; break; } } if (lookup) return "reference:" + lookup.name; referto.push({ data:data, name:name }); return null; }; /** @private Marshall an object */ dwr.engine._serializeObject = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; // This check for an HTML is not complete, but is there a better way? // Maybe we should add: data.hasChildNodes typeof "function" == true if (data.nodeName && data.nodeType) { return dwr.engine._serializeXml(batch, referto, data, name); } // treat objects as an associative arrays var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{"; var element; for (element in data) { if (typeof data[element] != "function") { batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[element], childName); reply += encodeURIComponent(element) + ":reference:" + childName + ", "; } } if (reply.substring(reply.length - 2) == ", ") { reply = reply.substring(0, reply.length - 2); } reply += "}"; return reply; }; /** @private Returns the classname of supplied argument obj */ dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError }; dwr.engine._getObjectClassName = function(obj) { // Try to find the classname by stringifying the object's constructor // and extract <class> from "function <class>". if (obj && obj.constructor && obj.constructor.toString) { var str = obj.constructor.toString(); var regexpmatch = str.match(/function\s+(\w+)/); if (regexpmatch && regexpmatch.length == 2) { return regexpmatch[1]; } } // Now manually test against the core Error classes, as these in some // browsers successfully match to the wrong class in the // Object.toString() test we will do later if (obj && obj.constructor) { for (var errorname in dwr.engine._errorClasses) { if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname; } } // Try to find the classname by calling Object.toString() on the object // and extracting <class> from "[object <class>]" if (obj) { var str = Object.prototype.toString.call(obj); var regexpmatch = str.match(/\[object\s+(\w+)/); if (regexpmatch && regexpmatch.length==2) { return regexpmatch[1]; } } // Supplied argument was probably not an object, but what is better? return "Object"; }; /** @private Marshall an object */ dwr.engine._serializeXml = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; var output; if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data); else if (data.toXml) output = data.toXml; else output = data.innerHTML; return "XML:" + encodeURIComponent(output); }; /** @private Marshall an array */ dwr.engine._serializeArray = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = ["Array:["]; for (var i = 0; i < data.length; i++) { if (i != 0) buf.push(","); batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); buf.push("reference:"); buf.push(childName); } buf.push("]"); reply = buf.join(""); } else { // Use string concat on other browsers (fastest) var reply = "Array:["; for (var i = 0; i < data.length; i++) { if (i != 0) reply += ","; batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); reply += "reference:"; reply += childName; } reply += "]"; } return reply; }; /** @private Convert an XML string into a DOM object. */ dwr.engine._unserializeDocument = function(xml) { var dom; if (window.DOMParser) { var parser = new DOMParser(); dom = parser.parseFromString(xml, "text/xml"); if (!dom.documentElement || dom.documentElement.tagName == "parsererror") { var message = dom.documentElement.firstChild.data; message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data; throw message; } return dom; } else if (window.ActiveXObject) { dom = dwr.engine._newActiveXObject(dwr.engine._DOMDocument); dom.loadXML(xml); // What happens on parse fail with IE? return dom; } else { var div = document.createElement("div"); div.innerHTML = xml; return div; } }; /** @param axarray An array of strings to attempt to create ActiveX objects from */ dwr.engine._newActiveXObject = function(axarray) { var returnValue; for (var i = 0; i < axarray.length; i++) { try { returnValue = new ActiveXObject(axarray[i]); break; } catch (ex) { /* ignore */ } } return returnValue; }; /** @private Used internally when some message needs to get to the programmer */ dwr.engine._debug = function(message, stacktrace) { var written = false; try { if (window.console) { if (stacktrace && window.console.trace) window.console.trace(); window.console.log(message); written = true; } else if (window.opera && window.opera.postError) { window.opera.postError(message); written = true; } } catch (ex) { /* ignore */ } if (!written) { var debug = document.getElementById("dwr-debug"); if (debug) { var contents = message + "<br/>" + debug.innerHTML; if (contents.length > 2048) contents = contents.substring(0, 2048); debug.innerHTML = contents; } } };

// Provide a default path to dwr.engine if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; if (UserDataDWRFacade == null) var UserDataDWRFacade = {}; UserDataDWRFacade._path = '/webapps/assessment/dwr_open'; UserDataDWRFacade.getStringTempScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringTempScope', p0, callback); } UserDataDWRFacade.setStringTempScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringTempScope', p0, p1, callback); } UserDataDWRFacade.getStringPermScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringPermScope', p0, callback); } UserDataDWRFacade.setStringPermScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringPermScope', p0, p1, callback); }

var assessment = {}; assessment.submitDrawerUrl=""; assessment.questionVisibility = true; assessment.blockToLeaveVisible = 'null'; assessment.savingRightNow = false; // aka - might rename to (if not remove eventually): assessment.nonceHasBeenUsed assessment.submittingRightNow = false; // set to true when we're submitting the assessment as a whole - used to block other submits assessment.gotNewNonceIdFlag = false; assessment.userReallyWantsToSubmit = false; assessment.isInUse = false; assessment.safetyNetDelay = 60; // Number of seconds to wait before telling the user that it is taking too long. assessment.alreadySavedSafetyNetId = null; assessment.saveSequence = 0; // TODO: Set from the server based on time when page is loaded assessment.isOneByOne = false; /************************** methods related to pool and test canvas per question add/edit/ copy/ remove********************/ function findAssessmentForm() { var assessmentForm = null; var documentForms = document.getElementsByTagName('form'); assessmentForm = $A( documentForms ).find( function( documentForm ) { var theAction = $( documentForm ).readAttribute( "action" ); return theAction.indexOf( "webapps/assessment/" ) != -1; }); return assessmentForm; } function submit(method, theForm) { if (!validateForm()) { return false; } if ( !theForm ) { // no form specified so try to find it theForm = findAssessmentForm(); } if(method == "createNew") { theForm.elements.assessmentId.value = null; } theForm.elements.method.value = method; theForm.submit(); return false; } function getFormByInputElement( elementName ) { var element = document.getElementsByName( elementName )[0]; return element.form; } // TODO: Rewrite this file to put all these methods into a namespace like assessment.XXX function modifyAssessment() { submit('modifyAssessment'); } function setQuestionId(questionId) { getFormByInputElement("questionId").questionId.value = questionId; } function modifyContentSettings( val ) { // properties|feedback|presentation|metadata submit( val ); } function addQuestionBefore(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated var theForm = getFormByInputElement("relativeId"); assessment.checkTheCheckBox (qId); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionBefore', theForm); } function addQuestionAfter(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (qId); var theForm = getFormByInputElement("relativeId"); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionAfter', theForm); } function addNGQuestion(sectionId, qtype, position) { var theForm = getFormByInputElement("questionType"); theForm.questionType.value = qtype; theForm.sectionId.value = sectionId; theForm.position.value = position; submit('addQuestion', theForm); } function modifyAssessmentInfo() { submit('modifyAssessmentInfo'); } function modifyHelper(questionId, method) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); setQuestionId(questionId); submit(method, theForm); } function modifyQuestion(questionId) { modifyHelper(questionId, 'modifyQuestion'); } function modifyRandomBlock(questionId) { modifyHelper(questionId, 'modifyRandomBlock'); } function modifyLinkQuestion(questionId) { getFormByInputElement("isLinkedQuestion").isLinkedQuestion.value = 'true'; modifyQuestion(questionId); } function copyQuestion(sectionId, questionId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("sectionId"); theForm.sectionId.value = sectionId; setQuestionId(questionId); submit('copyQuestion', theForm); } function copyLinkQuestion(sectionId, questionId, qbId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); theForm.sectionId.value = sectionId; theForm.questionBlockId.value = qbId; setQuestionId(questionId); submit('copyLinkQuestion', theForm); } function remove(id, type ) { if ( assessment.isInUse ) { var suffix = ( assessment.type == 'Survey'?'.survey':''); if ( !type ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_question.regrade" + suffix ) ); } else if ( type == 'question_link' ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.remove_question_link.regrade" + suffix ) ); } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_item.regrade" + suffix ) ); } } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString("confirm.delete_item")); } } assessment.removeEntity= function(id, message) { if (window.confirm(message)) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (id); var theForm = getFormByInputElement("questionId"); setQuestionId(id); submit('remove', theForm); } }; function reposition(id, position) { setQuestionId(id); var theForm = getFormByInputElement("questionId"); theForm.position.value = position; submit('reposition', theForm); } assessment.submitModifyQuestion = function() { submit('modifyQuestion'); }; assessment.cancelWarning = function() { var theForm = getFormByInputElement("methodEx"); theForm.elements.methodEx.value = 'modifyAssessment'; theForm.submit(); return false; }; function isCheckbox(element) { return (element && element.type && element.type == "checkbox"); } /******************* methods related to bulk update logic on the test/pool canvas*********************/ assessment.removeAll= function(container,showCount) { var count = 0; var inputs = list.checkboxes.get(container); for(var i=0; i<inputs.length; i++){ if(isCheckbox(inputs[i]) && inputs[i].checked ) { count ++; } } if (showCount?window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count",[count])):window.confirm(ASSESSMENT_RESOURCES.getString("confirm.delete_items")) ) { submit('removeBulk'); } }; assessment.removeAllPublished= function(message) { if (window.confirm(message)) { submit('removeBulk'); } }; assessment.updatePointsForAll = function(){ var element = document.getElementsByName("points_bulk"); if ( assessment.validatePoints(element) && ( !assessment.isInUse || confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) ) { submit('updatePointsBulk'); } return false; }; assessment.updatePointsInput = function(event) { var elements = document.getElementsByName("points_bulk"); var element = Event.findElement(event); var pointsValue = element.value; if (pointsValue ) { if (elements) { elements[0].value = pointsValue; elements[1].value = pointsValue; } } }; /*************************** common js methods for assessments**********************************************/ /** validate Input Field value **/ assessment.validateMiniFlyoutInputValue = function(element){ var value = null; if($(element) ) { value = $(element).value; } if ( !value ) { return ASSESSMENT_RESOURCES.getString("update.input.value"); } if ( !isNumeric( value, true ) ) { return ASSESSMENT_RESOURCES.getString("update.input.valid.value"); } return ""; }; assessment.validatePoints = function(element){ if (element) { var pointsTextBox = element[0] || element[1]; var pointsValue = pointsTextBox.value; return assessment.validateNumericInput(pointsTextBox, pointsValue, ASSESSMENT_RESOURCES.getString("update.points.value"), ASSESSMENT_RESOURCES.getString("update.points.valid.value"),true); } return true; }; assessment.validateCount = function(element) { if (element) { var countValue = element.value; return assessment.validateNumericInput(element, countValue, ASSESSMENT_RESOURCES.getString("update.count.value"), ASSESSMENT_RESOURCES.getString("update.count.valid.value")); } return true; }; assessment.validateNumericInput = function(textBox, value, blankMsg, badMsg,isFloat) { var checkForFloats = false; var numFormat = LOCALE_SETTINGS.getString('float.format'); var isValidNum = false; var re, trimmedVal; trimmedVal = value.trim(); if(isFloat != 'null') { checkForFloats = true; } if ( !value ) { alert(blankMsg); textBox.focus(); return false; } var numVal = null; if (!checkForFloats) { numVal = parseInt( value, 10); isValidNum = (!isNaN(numVal) && numVal >= 0); } else if ( typeof ( numFormat ) != 'undefined' ) { // hand parse for l10n re = new RegExp( numFormat ); isValidNum = ( trimmedVal.search( re ) === 0 ); } else { // try to use platform native (non-localized) numVal = parseFloat( trimmedVal ); isValidNum = !isNaN( numVal ); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test( trimmedVal.substring( numVal.toString().length ) ); } } if (!isValidNum) { alert(badMsg); textBox.value=""; textBox.focus(); return false; } return true; }; function back() { submit('back'); } function persistDisplayPreference(element, value){ UserDataDWRFacade.setStringTempScope( element, value ); } assessment.refreshParent = function( url ) { if ( window.opener ) { window.opener.location.href = url; if ( window.opener.progressWindow ) { window.opener.progressWindow.close(); } window.close(); } else { // We expected to be in a new window, but aren't. Perhaps this was a link from an announcement? window.location = url; } }; assessment.checkTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = true; } }; assessment.unCheckTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = false; } }; var startX; //set x offset of bar in pixels var startY; var padding = 53; var verticalpos="fromtop"; //enter "fromtop" or "frombottom" function setPadding(pad) { padding = pad; } function iecompattest(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body; } function resetInstructionHeight() { startY = document.getElementById("instructionBlock").offsetTop +document.getElementById("instructionBlock").clientHeight + padding; startX = document.getElementById("instructionBlock").offsetLeft; document.getElementById("dataCollectionContainer").style.position = "relative"; var tbh = document.getElementById("topbar").clientHeight; document.getElementById("containerdiv").style.paddingBottom = (32 + tbh) + "px"; if (document.getElementById("topbar").offsetTop !== 0) { document.getElementById("dataCollectionContainer").style.top=tbh+"px"; } } function staticbar(){ var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera; var d = document; function ml(id){ var el=d.getElementById(id); el.style.visibility="visible"; if(d.layers) { el.style=el; } el.sP=function(x,y,r) { this.style.left=x+"px"; this.style.top=y+6+"px"; if(r>-1) {this.style.right=r+"px";}; }; el.x = startX; el.y = startY; return el; } window.stayTopLeft = function() { var right = -1; var pY = ns ? window.pageYOffset : iecompattest().scrollTop; if (pY < startY) { window.ftlObj.y = startY - pY; document.getElementById("dataCollectionContainer").style.top=document.getElementById("topbar").clientHeight+4+"px"; } else { window.ftlObj.y = 0; } window.ftlObj.x = document.getElementById("instructionBlock").offsetLeft; if(page.util.isRTL()) { right = document.documentElement.clientWidth - (ftlObj.x + document.getElementById("instructionBlock").offsetWidth); } window.ftlObj.sP( window.ftlObj.x, window.ftlObj.y, right); setTimeout("stayTopLeft()", 20); }; resetInstructionHeight(); window.ftlObj = ml("topbar"); window.stayTopLeft(); } var AIM = { frame : function(c) { var n = 'f' + Math.floor(Math.random() * 99999); var d = document.createElement('DIV'); d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>'; document.body.appendChild(d); var i = document.getElementById(n); if (c && typeof(c.onComplete) == 'function') { i.onComplete = c.onComplete; } return n; }, form : function(f, name) { f.setAttribute('target', name); }, submit : function(f, c) { AIM.form(f, AIM.frame(c)); if (c && typeof(c.onStart) == 'function') { return c.onStart(); } else { return true; } }, loaded : function(id) { var i = document.getElementById(id); var d; if (i.contentDocument) { d = i.contentDocument; } else if (i.contentWindow) { d = i.contentWindow.document; } else { d = window.frames[id].document; } if (d.location.href == "about:blank") { return; } if (typeof(i.onComplete) == 'function') { i.onComplete(d.body.innerHTML); } } }; function resetContaindivHeight() { // adjust containdiv height // TODO: I don't see a reason for any of this code anymore... //if (document.getElementById('statusBlock').style.display=="" || document.getElementById('statusBlock').style.display=="inline") { // var statusHeight = document.getElementById('topbar').offsetHeight-22; // 22 is padding - be better to dynamically determine this value. //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight+statusHeight; //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} } function hideElement(element) { var msgspan=element; var msgimg=element+"img"; // TODO: I don't see a reason for any of this code anymore... //if (msgspan=="statusBlock") { // var statusHeight = document.getElementById('topbar').offsetHeight; //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight-statusHeight-22; // 22 is padding - be better to dynamically determine this value. //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} document.getElementById(msgspan).style.display="none"; document.images[msgimg].src="/images/ci/ng/more_options_dark.gif"; var alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; } function showElement(element) { var msgspan=element; var msgimg=element+"img"; document.getElementById(msgspan).style.display="inline"; document.images[msgimg].src="/images/ci/ng/less_options.gif"; var alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; if (msgspan=="statusBlock") { resetContaindivHeight(); } } function toggleElement(element){ var curStyle = document.getElementById(element).style.display; if(curStyle=="" || curStyle=="inline") { hideElement(element); persistDisplayPreference(element,'none'); } else { showElement(element); persistDisplayPreference(element,'inline'); } resetInstructionHeight(); } /********************************************* methods related to lightbox preview in pool/test canvas********************/ assessment.previewLightbox = null; assessment.copyLinkLightbox = null; assessment.showLightBox = function (event,baseContainer,numparents,previewUrl) { var e = event || window.event; // IE does not capture the event if( e && e.type == 'click') { Event.stop(e); } if ( !assessment.previewLightbox ) { assessment.previewLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 500 ,h : 375}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 125, horizontalBorder: 125 }); } assessment.previewLightbox.cfg.ajax={url:previewUrl, loadExternalScripts:true}; assessment.previewLightbox.cfg.content=null; assessment.previewLightbox.open(); }; assessment.showCopyLinkLightBox = function ( url) { var params = url.toQueryParams(); if ( !assessment.copyLinkLightbox ) { assessment.copyLinkLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 150 ,h : 200}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 50, horizontalBorder: 50 }); } assessment.copyLinkLightbox.cfg.ajax={url:'/webapps/assessment/do/authoring/questionSearch?method=copyLink&discoverUrl=' + encodeURIComponent(url) + '&course_id=' + params.course_id }; assessment.copyLinkLightbox.cfg.content=null; assessment.copyLinkLightbox.cfg.closeOnBodyClick=false; assessment.copyLinkLightbox.open(); }; assessment.showDiscover = function(url,title,width,height) { assessment.submitDrawerUrl = url; var screenX=Math.floor((screen.width)/2)-Math.floor(width/2); var screenY=Math.floor((screen.height)/2)-Math.floor(height/2)-20; var top=screenY; var left=screenX; var features="'"+'toolbar=no,scrollbars=yes,status=yes,resizable=yes,top='+ top+',left='+ left+',screenX='+ screenX+',screenY='+ screenY+',width='+ width+',height='+ height+"'"; var discover = window.open(url,title,features); if (window.focus) { if (discover) { discover.focus(); } else { alert(ASSESSMENT_RESOURCES.getString("pop.up.blocker.enabled")); } } }; assessment.discoverOptions = function(url,title,width,height,hideCopyLink){ if(!hideCopyLink) { //check if the UserPreference is set in session UserDataDWRFacade.getStringPermScope( "AssessmentUtils.DISCOVER_MODE_IS_LINKING", function( copyLinkSet ) { if (copyLinkSet == '') { assessment.showCopyLinkLightBox(url); } else{ assessment.showDiscover(url,title,width,height); } }); } else{ assessment.showDiscover(url,title,width,height); } }; assessment.onCloseCopyLinkLightbox = function ( url ) { var copyLinkId = $('copylink_link'); var copyCopyId = $('copylink_copy'); var copyLinkValueSet = false; if(copyLinkId && copyCopyId ) { copyLinkValueSet = copyLinkId.checked || copyCopyId.checked; } if ( !copyLinkValueSet ) { if (window.confirm(ASSESSMENT_RESOURCES.getString("confirm.set_copy_link"))) { assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } } else{ assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } }; /**************************** methods related to question block on the test canvas*************************************/ assessment.createQuestionBlock = function() { }; function addQuestionToBlock(questionId, assessmentType, assessmentId, courseId ) { var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=addQuestionsToQuestionBlock" + "&questionId=" +questionId + "&assessmentType=" +assessmentType + "&assessmentId=" +assessmentId + "&course_id=" +courseId; assessment.discoverOptions(url,'discover','900','675',true); } /********************** methods related to inline pool points flyout***************************/ assessment.poolFlyout = null; assessment.initPoolFlyout = function(title) { if ( !assessment.poolFlyout ) { assessment.poolFlyout = new miniFlyout.MiniFlyout({ title: title, miniFlyoutTemplate: "<label class='hideoff' for='#{inputFieldName}_id'>#{title}</label> <input id='#{inputFieldName}_id'type='text' style='width: 2em;' size='3' value='0' name='#{inputFieldName}'/> <a href='#' title='#{closeButtonName}' bb_flyout_title='Cancel' class='genericButtonImg button-3-img'><img alt='#{closeButtonName}' src='/images/ci/ng/remove_li.png'/></a> <a href='#' title='#{submitButtonName}' bb_flyout_title='Submit' class='genericButtonImg button-3-img'><img alt='#{submitButtonName}' src='/images/ci/ng/checkmark_li.png'/></a>", inputFieldName: "inline_points", errorMessage: page.bundle.getString("points.failure"), miniFlyoutDivClass: "liveArea liveArea-slim", onSubmitValidate : "return assessment.validateMiniFlyoutInputValue('inline_points_id')" }); } miniFlyout.closeCurrentMiniFlyout(); }; assessment.showPoolFlyout = function (event,title,assessmentId,id, courseId) { var e = event || window.event; // IE does not capture the event var aLink = Event.element(e); if( e && e.type == 'click') { Event.stop(e); } assessment.initPoolFlyout(title); assessment.poolFlyout.cfg.openLink = aLink ; assessment.poolFlyout.cfg.containerId = aLink.parentNode.parentNode; assessment.poolFlyout.cfg.inputFieldDefaultSource = "ipoints_" + id; assessment.poolFlyout.cfg.inputFieldName= "inline_points"; assessment.poolFlyout.cfg.onSubmit = "return assessment.saveQuestionPoints('" + assessmentId + "','" + id + "','" + courseId + "',false, false, assessment.poolFlyout.cfg.containerId);"; assessment.poolFlyout.open(); }; /*************************************************** methods related to test canvas selection by type*******************/ assessment.selectByType = function(container) { var selected = document.getElementsByName('selectbyQuestionType')[0];// either use 0 or 1, since both are updated to the same var checkboxes = list.checkboxes.get(container); for ( var i=0; i < checkboxes.length; ++i ) { checkboxes[ i ].checked = false; } var className = selected.options[selected.selectedIndex].value; checkboxes.each( function(e){ if(e.className.trim() ==className.trim()) { e.checked=true; } } ); $('selectbyQuestionType_idTop').options[selected.selectedIndex].selected=true; $('selectbyQuestionType_idBot').options[selected.selectedIndex].selected=true; }; assessment.toggleQuestionBlockDiv = function(rawId){ var ul = $('questionBlockDiv'+rawId); var a = $('questionBlockDivLink'+rawId).getElementsByTagName('a')[0]; Effect.toggle(ul, 'blind', { duration: 0.3 }); if(ul.style.display=="none"){ a.className="itemHead itemHeadOpen"; } else if(ul.style.display=="block" || ul.style.display==""){ a.className="itemHead"; } return false; }; /************************** methods related to discover drawer functionality********************************************/ assessment.inBasicDiscoverMode = function () { if (document.copyQuestionsForm.method.value == 'save') { return true; } return false; }; assessment.cancelDrawer = function() { var myDrawer = drawer.model.getCurrentInstance(); myDrawer.discard(); document.copyQuestionsForm.elements.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener ) { //close question discovery popup window.close(); } return false; }; assessment.cancelRandomBlock = function () { document.copyQuestionsForm.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener !== null) { //close question discovery popup window.close(); } return false; }; function findAndDisableInputElements(el) { if (el === null) { return; } var elems = el.getElementsByTagName('input'); for ( var i = 0; i < elems.length; i++ ) { el.addClassName('disabled'); el.disabled = true; } } /****************** Ajax method related to Test/pool canvas***************************************************/ function postAndUpdateCanvas(form) { var method = form.method.value; var assessmentId = form.assessmentId.value; var courseId = form.course_id.value; var nonceId = nonceUtil.getNonceId('bb-question-discover'); var questionId = ""; if (form.questionId ) { questionId = form.questionId.value; } var url = "/webapps/assessment/do/authoring/copyQuestions?method=" +method + "&assessmentId="+assessmentId + "&course_id=" + courseId + "&sectionId=" + form.sectionId.value + "&assessmentType=" +form.assessmentType.value + "&itemIds=" +form.itemIds.value + "&overridePoints=" +form.overridePoints.value + "&questionId=" +questionId + "&ajaxMode=true" + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (form.searchCriterion !== null) { url = url + "&searchCriterion=" + encodeURIComponent(form.searchCriterion.value); } findAndDisableInputElements( $('cartSubmit') ); var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { window.opener.location="/webapps/assessment/do/authoring/modifyAssessment?method=modifyAssessment&assessmentId="+assessmentId+"&course_id="+courseId; if (json !== null) { // capture any error message and display if (json.errorMessage ) { // exception message looks ugly for the end-user, hence use a more user-friendly message to indicate the ajax refresh failed new page.InlineConfirmation("error", json.errorMessage, false ); } else if (json.successMessage ) { // WIP // var startingEl = window.parent.document.getElementById('blockstart_' + questionId); // new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false ); } } setTimeout('window.close()', 1500); }, onFailure: function(transport, json) { new page.InlineConfirmation("error", "Failure post discover pop-up", false ); } }); } assessment.submitRandomBlock = function () { if ($('listContainer_datatable')) { var searchCriterion = activeFilter.getSearchCriteriaInstance(false).getSearchCriteriaAsXml(); document.copyQuestionsForm.searchCriterion.value = searchCriterion; if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } } else { alert(ASSESSMENT_RESOURCES.getString("cannot.submit.with.no.matching.questions")); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.submitDrawer = function () { var myDrawer = drawer.model.getCurrentInstance(); var selectedItems = myDrawer.getItems(true); var i; var allIds = ""; for (i=0;i<selectedItems.length;i++) { var qId = selectedItems[i].itemId; var mode = selectedItems[i].mode; allIds += qId + ":" + mode + ","; } document.copyQuestionsForm.itemIds.value = allIds; myDrawer.discard(); if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.OnCompleteUpdateCanvas = function(questionId, req, showNestedReceipt) { var json = req.responseText.evalJSON( true ); var pointsEl = $s('ipoints_' + questionId); var totalQuestionsCountEl = $s('totalNoQuestions' + questionId); var currentQuestionCountEl = $s('questionCount' + questionId); var totalBlockPointsEl = $s('totalPoints_' + questionId); var totalTestPointsEl =$s('totalTestPoints'); var totalQuestionsEl = $s('totalQuestions'); var startingEl = $s('blockstart_' + questionId); if( !json.errorMessage && pointsEl && json.points ) { // update per question points pointsEl.childNodes[0].nodeValue = json.points; } if( !json.errorMessage && totalQuestionsCountEl && json.totalQuestionsCount ) { // update per question points totalQuestionsCountEl.childNodes[0].nodeValue = json.totalQuestionsCount; } if( !json.errorMessage && currentQuestionCountEl && json.currentQuestionsCount ) { // update per question points currentQuestionCountEl.childNodes[0].nodeValue = json.currentQuestionsCount; } if( !json.errorMessage && totalBlockPointsEl && json.totalBlockPoints ) { // update the total points totalBlockPointsEl.childNodes[0].nodeValue = json.totalBlockPoints; } if( !json.errorMessage && totalQuestionsEl && json.totalQuestions ) { // update the total questions totalQuestionsEl.innerHTML = json.totalQuestions; } if( !json.errorMessage && totalTestPointsEl && json.totalTestPoints ) { // update total Test points, not for survey or pool totalTestPointsEl.innerHTML = json.totalTestPoints; } if (showNestedReceipt) { if (json.securityErrorMsg ) { new page.NestedInlineConfirmation("error", json.securityErrorMsg, true, startingEl, true); } else if (json.successMessage ) { if (json.successMessage.indexOf('regrading_queued_status')> 0) { // If we are displaying a confirmation including regrading status then DO NOT fade it away - let it stay and get updated. new page.NestedInlineConfirmation("success", json.successMessage, false, startingEl, true); } else { new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false); } } } assessment.result = json.errorMessage; assessment.setQuestionNumbers(); }; assessment.removeQuestionsFromBlock= function(listId, questionBlockId, courseId,assessmentId) { var allcheckBoxes = list.checkboxes.get(listId); var checkedCount = 0; var ids = ""; for (var i = 0; i < allcheckBoxes.length; i++) { var separator = (i == (allcheckBoxes.length - 1)) ? " " : ','; if (allcheckBoxes[i].checked ) { checkedCount ++; ids = ids + allcheckBoxes[i].value + separator; } } if (window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count", [checkedCount]))) { // ajax request var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + questionBlockId); var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=removeQuestionsFromQuestionBlock" + "&block_id=" + questionBlockId + "&course_id=" + courseId + "&assessment_id=" + assessmentId + "&questionIds=" + ids + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; nonceId.value = json.nonceId; inventoryList.ajaxPostOnClick(null, listId); if(json.errorMessage ) { new page.NestedInlineConfirmation("error", json.errorMessage, false, startingEl, false); } }, onSuccess: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); }, onFailure: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); } }); } }; assessment.result = ""; assessment.saveQuestionCount = function(assessmentId, blockId, courseId, forRandomBlock ) { var countEl = document.getElementsByName('question_count')[0]; var originalCountEl = document.getElementById('questionCount' + blockId); var originalCount = originalCountEl.childNodes[0].nodeValue; var newCount = countEl.value; if (newCount == originalCount) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + blockId); var url = "/webapps/assessment/do/authoring/modify"+(forRandomBlock?"Random":"Question")+"Block?method=saveQuestionCount" + "&block_id="+blockId + "&course_id=" + courseId + "&new_count=" + newCount + "&assessment_id=" + assessmentId + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(req) { var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); }, onFailure: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); } }); return assessment.result; }; assessment.updateExtraCredit = function (newExtraCreditValue, questionId) { var extraCreditDiv = $('extra_credit_' + questionId); if (extraCreditDiv) { if (newExtraCreditValue) { extraCreditDiv.removeClassName('hidden'); extraCreditDiv.addClassName('extraCredit'); } else { extraCreditDiv.addClassName('hidden'); extraCreditDiv.removeClassName('extraCredit'); } } }; assessment.updateFullCredit = function (newFullCredit, questionId) { document.getElementById('original_fullCredit_value_' + questionId).value = newFullCredit.toString(); if (newFullCredit) { document.getElementById('full_credit_' + questionId).show(); } else { document.getElementById('full_credit_' + questionId).hide(); } }; // copied or linked question assessment.saveQuestionPoints = function(assessmentId, questionId, courseId, isBlock, isInUse, containerId ) { var pointsToSave = document.getElementsByName('inline_points'); var extraCredit =$s('inline_points_extra_credit_id'); var newExtraCreditValue = false; if(extraCredit) { newExtraCreditValue = extraCredit.checked; } var newPoints = pointsToSave[0].value; var originalPointsEl = document.getElementById('ipoints_' + questionId); var originalExtraCreditValue = false; var originalExtraCreditEl = $('extra_credit_' + questionId); if(originalExtraCreditEl) { originalExtraCreditValue = !originalExtraCreditEl.hasClassName('hidden'); } var originalPoints; if( originalPointsEl.childNodes ) { originalPoints = originalPointsEl.childNodes[0].nodeValue; } var originalFullCredit; var newFullCredit; var fullCreditCheckbox = document.getElementById('inline_points_full_credit_' + questionId); if (fullCreditCheckbox !== null) { newFullCredit = fullCreditCheckbox.checked; originalFullCredit = document.getElementById('original_fullCredit_value_' + questionId).value; } if ( (newPoints == originalPoints ) && ( originalExtraCreditValue == newExtraCreditValue ) && (!fullCreditCheckbox || (originalFullCredit == newFullCredit.toString())) ) { return ""; } if ( isInUse && !confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); if( !extraCredit ) { newExtraCreditValue = ""; } if( !isBlock) { isBlock = false; } else { isBlock = true; } var url = "/webapps/assessment/do/authoring/modifyAssessment?method=updateQuestionPoints" + "&question_id=" + questionId + "&course_id=" + courseId + "&points_value=" + newPoints + "&extra_credit=" + newExtraCreditValue + "&assessment_id=" + assessmentId + "&is_Block=" + isBlock + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (fullCreditCheckbox) { url = url + "&full_credit=" + newFullCredit; } new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req){ var json = req.responseText.evalJSON( true ); var showNestedReceipt = false; if( !containerId ) { showNestedReceipt = true; } assessment.OnCompleteUpdateCanvas(questionId,req,showNestedReceipt); if(extraCredit) { assessment.updateExtraCredit(newExtraCreditValue,questionId); } if (fullCreditCheckbox) { assessment.updateFullCredit(newFullCredit,questionId); } if (!showNestedReceipt) { // show receipt in pool , table cell var status_msg = null; if (json.successMessage != "") { status_msg = $('status_msg_succ'); } var link = containerId.down(1); link.hide(); containerId.appendChild(status_msg); (status_msg).show(); setTimeout( function(){ (status_msg).fade({ duration: 0.5 }); },500); setTimeout( function(){ link.appear({duration:0.5}); },1000); link.focus(); } }, onFailure: function(req){ new page.InlineConfirmation("error", page.bundle.getString("updatePointsFailed"), false); } }); return assessment.result; }; assessment.setDefaultLinkingMode = function(isLinkingMode, courseIdStr) { var courseId = courseIdStr || document.copyQuestionsForm.course_id.value; var url = "/webapps/assessment/do/authoring/questionSearch?method=saveLinkingMode" + "&linkingMode="+isLinkingMode+ "&course_id=" +courseId ; new Ajax.Request(url, { method: 'post', onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { document.body.style.cursor = 'default'; }, onSuccess: function(transport, json) { }, onFailure: function(transport, json) { } }); }; assessment.setDisplayFullText = function(displayFull, listId) { var extras = []; // Note - Constants.DISPLAY_FULL_TEXT = "displayFullText" extras.displayFullText=displayFull; inventoryList.ajaxPostOnClick(null, listId, extras, true); }; assessment.rewriteSectionForScreenReader = function(elementName) { var element = document.getElementById(elementName); element.setAttribute("aria-live", "assertive"); element.setAttribute("aria-relevant", "all"); element.setAttribute("aria-atomic", "true"); element.setAttribute("aria-busy", "true"); var myContents = element.innerHTML; element.innerHTML = myContents; element.setAttribute("aria-busy", "false"); return false; }; assessment.clearQuestionModifiedStatuses = function() { // Called on page load to make sure we don't have any stranded questions-to-monitor kicking around. assessment.questions_to_monitor = []; assessment.questions_to_monitor_index = 0; }; assessment.QMonitor = Class.create(); assessment.QMonitor.prototype = { initialize: function( entity, index) { this.index = index; Event.observe(entity, 'change', this.onChange.bindAsEventListener(this)); }, onChange: function( event) { assessment.questions_to_monitor[this.index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[this.index].qnum); } }; assessment.getSaveButton = function(questionNum) { var myButton = document.getElementById("saveButton_" + questionNum); if (!myButton) { if (assessment.isOneByOne) { if (questionNum == document.forms.saveAttemptForm.current_question.value) { myButton = document.getElementById("saveAnswerSubmitId"); // for one-at-a-time tests } } } return myButton; }; assessment.setModifiedIcon = function(questionNum) { var saveAnswerLabel = page.bundle.getString('takeSaveAnswer'); var myButton = assessment.getSaveButton(questionNum); if (myButton) { myButton.value = saveAnswerLabel; Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); } // TODO - Either rip this out or put in appropriate image, style, and text // NOTE - can't actually enable this until on-the-fly onchange support in the VTBE is done // (as opposed to the current on-unload check for change) // Also - would need to deal with leaving this image on-page in this scenario: // Save Q1 // Modify Q1 // Save Q2 // -- at this point, we update the status icons and lose the modified icon for Q1 /* var mySpan =document.getElementById("span_"+questionNum); var myImg = document.getElementById("img_"+questionNum); mySpan.className = "qIncomplete"; myImg.src = "/images/ci/icons/needs_grading.gif"; // better icon myImg.alt = "TODO: Incomplete"; myImg.height= "10"; myImg.width= "10"; */ }; assessment.addQuestionToMonitor = function(qid,qnum, isFileUploadQuestion) { var questionBlock = $(qid); assessment.questions_to_monitor[assessment.questions_to_monitor_index] = {}; // TODO - is there a more efficient way to do this? $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, assessment.questions_to_monitor_index); }); assessment.questions_to_monitor[assessment.questions_to_monitor_index].qid = qid; assessment.questions_to_monitor[assessment.questions_to_monitor_index].qnum = qnum; // Status: 0 == not changed, 1 = changed, 2 = attempted to be auto-saved since last change assessment.questions_to_monitor[assessment.questions_to_monitor_index].status = 0; assessment.questions_to_monitor[assessment.questions_to_monitor_index].isFileUploadQuestion = isFileUploadQuestion; assessment.questions_to_monitor_index++; }; assessment.remonitorFileUpload = function(qid, qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { if (assessment.questions_to_monitor[i].isFileUploadQuestion) { var questionBlock = $(qid); $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, i); }); } else { return; } } } } }; assessment.questionBeingSaved = -1; assessment.markQuestionAsSaved = function (qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { assessment.questions_to_monitor[i].status = 0; } } } }; assessment.hasUnsavedAnswers = function() { if (assessment.questions_to_monitor_index > 0) { var i = 0; if (typeof(finalizeEditorsAnyChange) == "function") { finalizeEditorsAnyChange(assessment.vtbeChanged); } for(i=0;i<assessment.questions_to_monitor_index;i++) { //alert("Question " + assessment.questions_to_monitor[i].qid + " number " + assessment.questions_to_monitor[i].qnum + " status " + assessment.questions_to_monitor[i].status); if (assessment.questions_to_monitor[i].status >= 1) { return true; } else if (assessment.questions_to_monitor[i].isFileUploadQuestion) { // In IE, the assessment.QMonitor onchange handle disappears after the first file selection and I can't seem to add it back. // This at least gets the saving to work so it doesn't appear totally broken. The button doesn't change to 'save answer' immediately // after you attach a file a second time though, but we have to live with that for now. var actionDivName = 'file_upload_ans_' + assessment.questions_to_monitor[i].qid + '_selectedFileActions'; var actionDiv = $(actionDivName); if (actionDiv && actionDiv.visible()) { assessment.questions_to_monitor[i].status = 1; return true; } } } } return false; }; assessment.registerVTBEChange = function() { if (typeof(registerOnChangeCallback) == "function") { registerOnChangeCallback(assessment.vtbeChangedCallback, assessment.getVtbeQuestionIndex); } }; assessment.autoSaveExecutor = ''; assessment.autoSaveInterval = 10; // seconds assessment.startAutoSave = function(interval) { assessment.autoSaveInterval = interval; assessment.autoSaveExecutor = new PeriodicalExecuter(assessment.doAutoSave, assessment.autoSaveInterval); }; assessment.stopAutoSave = function() { if (assessment.autoSaveExecutor != '') { assessment.autoSaveExecutor.stop(); } }; assessment.toggleAutoSave = function(interval) { assessment.stopAutoSave(); if ($s('autoSaveCheckbox').checked) { assessment.startAutoSave(interval); } }; assessment.doAutoSave = function(pe) { if (assessment.submittingRightNow) { // Ignore if submitting right now return; } if (assessment.savingRightNow) { // If we are already saving, do nothing right now. return; } var doneOne = false; if (assessment.hasUnsavedAnswers()) { for(var i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].status == 1) // explicitly only check for status 1, skipping status==2 { if (doneOne) { // We can only submit one question per pass because otherwise the nonce fails. Switch // to a higher frequency to save all the outstanding questions faster. pe.stop(); pe.frequency = 1; pe.registerCallback(); return; } assessment.questions_to_monitor[i].status = 2; // flag to indicate we've already tied to auto-save this // Will be reset to 0 after a successful save or 1 if the user modifies their answer again. saveOneItem( assessment.questions_to_monitor[i].qid, assessment.questions_to_monitor[i].qnum, true, false ); doneOne = true; } } } if (!doneOne) { if (pe.frequency != assessment.autoSaveInterval) { pe.stop(); pe.frequency = assessment.autoSaveInterval; pe.registerCallback(); } } }; assessment.vtbeChanged = function(ifr) { var index = assessment.getVtbeQuestionIndex( ifr ); assessment.vtbeChangedCallback(ifr,index); }; assessment.vtbeChangedCallback = function(ifr,index) { if (index != -1) { assessment.questions_to_monitor[index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[index].qnum); } }; assessment.getVtbeQuestionIndex = function(ifr) { var parents = ifr.ancestors(); var num = parents.length; for ( var i = 0; i < num; i++ ) { var parent = parents[i]; if ( page.util.hasClassName(parent, 'takeQuestionDiv') ) { var divid = parent.id; for ( var j = 0; j < assessment.questions_to_monitor_index; j++ ) { if ( assessment.questions_to_monitor[j].qid == divid ) { return j; } } return -1; } } return -1; }; assessment.warnBeforeLeavingIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var prefix = "test"; if (isSurvey) { prefix = "survey"; } var timermsg = ''; if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } if (isForced) { return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.forced.beforeunload.warning"); } return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.beforeunload.warning") + timermsg; }; assessment.queueUpWarning = function(msg, oneByOneAndForceUnload) { var url = assessment.getNextActionUrl() + '&method=queueUpWarning'; var params = Object.extend({ 'msg' : msg, 'oneByOneAndForceUnload' : oneByOneAndForceUnload, 'course_assessment_id' : document.forms.saveAttemptForm.course_assessment_id.value } ); var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, asynchronous: false }); }; assessment.warnOnLeaveIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var timermsg = ''; var prefix = "test"; if (isSurvey) { prefix = "survey"; } if (assessment.hasUnsavedAnswers()) { // Since we are always auto-saving anyways, we might as well just always save unsaved answers here. saveAllQuestions(false); } if (isForced) { assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.forced.warning", assessment.currentTestName), true ); } else { if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.warning", assessment.currentTestName )+timermsg, false); } }; assessment.setDefaultQuestionDisplay = function(blockToLeaveVisible) { assessment.blockToLeaveVisible = blockToLeaveVisible; UserDataDWRFacade.getStringPermScope( "assessment.questionsExpanded", function( questionsExpanded ) { if (questionsExpanded == 'false') { assessment.toggleQuestionDisplay(); } assessment.blockToLeaveVisible = 'null'; }); }; assessment.toggleQuestionDisplay = function() { var newVis = !assessment.questionVisibility; if (newVis) { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", true ); } else { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", false ); } // Note -most of the time this will be "contentListItem:null" - that's OK var idToIgnore = "contentListItem:" + assessment.blockToLeaveVisible; $A(document.getElementsByTagName('li'))._each(function(entity) { // hide|show the given entity if it is one we care about var id = entity.id; if (id.startsWith("contentListItem:") && id != idToIgnore) { $A(entity.getElementsByTagName('div'))._each(function(adiv) { if (page.util.hasClassName(adiv,'details')) { if (newVis) { $(adiv).show(); } else { $(adiv).hide(); } } }); if (newVis) { entity.removeClassName('hideQuestionDetails'); } else { entity.addClassName('hideQuestionDetails'); } } }); var buttonText = page.bundle.getString( newVis ? "hide.question.details" : "show.question.details" ); $('content_listContainer_hideshowQuestions_top').down('a').update( buttonText ); $('content_listContainer_hideshowQuestions_bottom').down('a').update( buttonText ); assessment.questionVisibility = newVis; }; assessment.setDisableFlag = function(questionId, flag) { modifyHelper(questionId, 'setDisableFlag' + flag); }; assessment.questionLabelMap = {}; assessment.dndHooksAdded = false; assessment.setQuestionNumbers = function() { var index = 1; // loop through line items in list of questions var questions = $('content_listContainer'); if (questions) { $A(questions.childElements()).each( function( li ) { var h3 = li.down('h3'); var span = h3.down('span.questionNumber'); if ( !span ) // create & add span for questionNumber if none exists { span = new Element('span',{'class':'questionNumber autoQuestionNumber'}); h3.insert({top:span}); } var id = h3.up('div').id; var qSetSize = $('questionCount'+id); var qNumStr = ''+index; if ( qSetSize ) // show number range for question sets { var s = parseInt(qSetSize.innerHTML, 10); index += s - 1; if ( s > 1 ) { qNumStr += ' - '+index; } else if ( s === 0 ) { qNumStr = ''; } } qNumStr = qNumStr + '.'; index++; span.update(qNumStr); assessment.questionLabelMap[id] = h3.innerHTML.stripTags(); // save numbered label in map for loading accessible reorder select }); } if ( !assessment.dndHooksAdded ) { var dndCtrl = dragdrop.getControllerObjById( 'pageListReorderControls' ); if (dndCtrl) { // Set question numbers in the accessible reorder select before opening it's popup. // Setting the question numbers needs to be defered until the popup is added to the DOM, which // happens just before the popup is opened dndCtrl.extPreOpenCallback = assessment.setAccessibleReorderQuestionNumbers; // call this function to set question numbers after a dnd or accessible reorder happens dndCtrl.extPostOrderCallback = assessment.setQuestionNumbers; assessment.dndHooksAdded = true; } } }; assessment.setAccessibleReorderQuestionNumbers = function() { $A($('pageListReorderControlSelect').options).each( function( option ) { option.text = assessment.questionLabelMap[option.value]; }); }; assessment.viewReferencingCanvases = function(courseId, assessmentId) { var url = "/webapps/assessment/do/authoring/modifyAssessment?course_id=" + courseId + "&method=getReferringCanvases&assessmentId=" + assessmentId; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ document.body.style.cursor = 'default'; }, onSuccess: function(req){ $('referencingCanvasesPlaceholder').update(req.responseText); }, onFailure: function(req){ $('referencingCanvasesPlaceholder').update(ASSESSMENT_RESOURCES.getString("error.loading.referrers")); } }); }; assessment.normalizedWidth = 0; assessment.setNormalizedButtonWidth = function(myButton) { if (assessment.normalizedWidth === 0) { myButton.value = page.bundle.getString('takeSaveAnswer'); Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); assessment.normalizedWidth = myButton.clientWidth; myButton.value = page.bundle.getString('takeSaveAnswerAgain'); Element.addClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } myButton.value = page.bundle.getString('savingAnswer'); Element.addClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } } //myButton.style.width = assessment.normalizedWidth + 'px'; return; }; assessment.resetFields = function() { window.document.assessmentSubmitted = false; window.document.assessmentActuallySubmitted = true; }; assessment.getNextActionUrl = function() { var url = document.forms.saveAttemptForm.action; url = url + '?saveSequence=' + (assessment.saveSequence++); return url; }; assessment.submitAttemptForm = function() { var myForm = document.forms.saveAttemptForm; var origUrl = myForm.action; myForm.action = assessment.getNextActionUrl(); try { myForm.submit(); } catch (err) { // Make sure we get to the next line and reset the url just in case. } myForm.action = origUrl; }; // This is the final save-and-submit request for the test/survey assessment.doConfirmSubmit = function(msg) { document.forms.saveAttemptForm.save_and_submit.value='true'; try { if (confirmSubmit(msg)) { assessment.resetFields(); assessment.submitAttemptForm(); } } catch (err) { // If we had an error, continue to clear the saveandsubmit value } document.forms.saveAttemptForm.save_and_submit.value=''; return false; }; assessment.alertSaveStatus = function (status) { if (status == 'COMPLETED' ) { alert(page.bundle.getString("confirm_saveall_success")); } else if (status == 'PARTIAL' ) { alert(page.bundle.getString("confirm_save_partial")); } else if (status == 'UNANSWERED' ) { alert(page.bundle.getString("confirm_save_empty")); } else { alert(page.bundle.getString("confirm_save_error")); } }; assessment.removeFileUploadAnswer = function (fieldName, divName, questionId, questionNumber, remAnsSuffix, takeDupeSaveMsg) { document.getElementById(divName).style.display = "none"; document.forms.saveAttemptForm.elements.method.value = "fileremove"; document.forms.saveAttemptForm.elements[fieldName + '-override'].value = "false"; document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = "true"; try { if (checkAlreadySaved(takeDupeSaveMsg)) { saveOneItem( questionId, questionNumber, true, false); } } catch (err) { // Ignore - just want to make sure we do the next statement } document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = ""; return false; }; assessment.updateQuestionStatusResponse = function(originalRequest ) { var qnums = originalRequest.responseText; var lines = qnums.split("\n"); var qnum=lines[0].split(","); for (var i=0; i<qnum.length; i++) { var num = qnum[i]; if (num > 0) { setSavedIcon(num); } else { setNotSavedIcon(-num); } } for (var j=1;j<lines.length;j++) { var fileUpload = lines[j].split(":"); if (fileUpload.length == 2) { var divName = "file_upload_div_" + fileUpload[0]; var divElement = document.getElementById(divName); if (fileUpload[1] == "HIDE") { if(divElement !== null) { divElement.style.display = "none"; } } else { var spanName = "file_upload_span_" + fileUpload[0]; var cancelFileButton = "file_upload_ans_" + fileUpload[0] + "_cancelFileButton"; var cancelElement = document.getElementById(cancelFileButton); var overrideName = "file_upload_ans_" + fileUpload[0] + "-override"; var overrideElement = document.forms.saveAttemptForm.elements[overrideName]; var spanElement = document.getElementById(spanName); if(divElement !== null) //we must check if item exists for one question at a time format { divElement.style.display = "block"; } if(spanElement !== null) { spanElement.innerHTML = fileUpload[1]; } if(cancelElement !== null) { cancelElement.click(); } if (typeof overrideElement !== 'undefined' && overrideElement !== null) { overrideElement.value = "true"; } } } } }; assessment.prepareForSubmit = function(doValidation) { // MUST VALIDATE FORM TO PERSIST WYSIWYG // Set textarea value to VTBE contents: if (typeof(finalizeEditors) == "function") { finalizeEditors(); } /* Transform equations place holders into html before validation*/ var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if (doValidation) { /* Validate form TODO: Why not call validateForm()*/ var valid = formCheckList.check(); return valid; } return true; };

var widget = {}; widget.colorPickers = {}; widget.ColorPicker = Class.create(); widget.ColorPicker.prototype = { /** * Constructor * * @param name - id of the color picker * @param initialColor - initial color hex string ("#000000") * @param alertMsg - localized error msg string ("Error: A valid color value must be specified") * @param previewIdStr - optional id string of the color preview DIV container user can specify * @param allowTransparent - optional boolean whether to render an option to select transparent. Default is false. */ initialize : function( name, initialColor, alertMsg, previewIdStr, previewBackgroundIdStr, allowTransparent ) { this.theColorPickerName = name; this.allowTransparent = ( !allowTransparent ) ? false : true; this.theMenu = $( name ); this.alertMsg = alertMsg; this.userPreviewContainer = $( previewIdStr ); // may be undefined this.userPreviewBackgroundContainer = $( previewBackgroundIdStr ); // may be undefined if ( typeof this.userPreviewContainer == "undefined" ) { this.userPreviewContainer = null; } if ( typeof this.userPreviewBackgroundContainer == "undefined" ) { this.userPreviewBackgroundContainer = null; } this.colorListParent = $( name + '_colorlist_parent' ); widget.ColorPicker.registerColorPicker( this ); this.ie = document.all && navigator.userAgent.indexOf( "Opera" ) == -1; this.color_hidden_input = $( name + "_title_color_input" ); this.color_hidden_input.value = initialColor; this.color_hidden_input._defaultValue = initialColor; this.anch_link = $( name + "_link" ); this.color_link = $( name + "_img" ); this.color_name_label = $( name + "_color_name_label" ); this.title_color_input = $( name + "_title_color" ); this.setDisplay( initialColor, this.getDisplayColorInfo( initialColor, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( initialColor, true ); var backgroundStyle = initialColor; if( initialColor === "transparent" ) { backgroundStyle = 'url(/images/swatches/transparent.gif)'; } this.color_link.setStyle( { background : backgroundStyle } ); this.updateUserPreviewContainerColor( initialColor ); if ( this.anch_link ) { Event.observe( this.anch_link, "click", this.onOpen.bindAsEventListener( this ) ); } Event.observe( document.body, "click", this.closeColorPickers.bindAsEventListener( this ) ); Event.observe( this.theMenu, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_previewColorLink', 'click', this.previewListener .bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_cancelButton', 'click', this.onClose.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_submitButton', 'click', this.onApply.bindAsEventListener( this ) ); this.skip_link = $( name + "_skip_link" ); if ( this.skip_link ) { Event.observe( this.skip_link, "click", this.onSkipLinkClick.bindAsEventListener( this ) ); } // relocate color picker popup div to the bottom of the doc b/c of css display issues Element.remove( this.theMenu ); document.body.appendChild( this.theMenu ); widget.colorPickers[ this.theColorPickerName ] = this; }, onSkipLinkClick : function( event ) { $( this.theColorPickerName + '_submitButton' ).focus(); }, onKeyPress : function( event ) { var key = event.keyCode || event.which; if ( key == Event.KEY_ESC ) { this.onClose( event ); } }, closeColorPickers : function( event ) { var element = Event.element( event ); widget.ColorPicker.colorPickers.each( function( cp ) { if ( cp != this && !element.descendantOf( cp.theMenu ) ) { cp.close(); } }.bind( this ) ); }, setOnChangeHandler : function( handler ) { this.onChangeHandler = handler; }, setDefaultColor : function( colorValue ) { this.color_hidden_input.value = colorValue; this.color_hidden_input._defaultValue = colorValue; if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); }, setColor : function( colorValue ) { widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, colorValue ); if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); this.updateUserPreviewContainerColor( colorValue ); if ( this.onChangeHandler ) { this.onChangeHandler(); } }, getPaletteInstance : function() { if ( !this.paletteInstance ) { this.paletteInstance = Element.clone( widget.ColorPicker.colorPalette, true ); } return this.paletteInstance; }, deletePaletteInstance : function() { if ( this.paletteInstance ) { Event.stopObserving( this.paletteInstance, 'click' ); this.paletteInstance.remove(); delete this.paletteInstance; } }, onOpen : function( event ) { this.closeColorPickers( event ); this.colorListParent.appendChild( this.getPaletteInstance() ); this.initializeTransparent(); Event.observe( this.getPaletteInstance(), 'click', this.setColorFromSwatch.bindAsEventListener( this ) ); var offset = Position.cumulativeOffset( this.anch_link ); this.theMenu.setStyle( { display : "block", position : "absolute" } ); var width = this.theMenu.getWidth(); var bodyWidth = $( document.body ).getWidth(); var menuDims = this.theMenu.getDimensionsEx(); var anchorDims = this.anch_link.getDimensionsEx(); var menuHeight = menuDims.height; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); // Use viewport relative offsets to figure out placement within the view var offsetTop = offset[ 1 ] - scrollOffsets.top; var offsetLeft = offset[ 0 ] - scrollOffsets.left; var xpos = offsetLeft; if ( page.util.isRTL() ) { xpos = xpos + this.anch_link.getWidth() - width; } if ( xpos + width > viewportDimensions.width ) { // First try to position it on the left of the link instead of the right xpos = offsetLeft - width + anchorDims.width; if ( xpos < 0 ) { // If we go off the page though, just try our best xpos = viewportDimensions.width - width; } } if ( xpos < 0 ) { xpos = 0; } var ypos = offsetTop + anchorDims.height; if ( ( ypos + menuHeight ) > viewportDimensions.height ) { // Try to position above the color picker first ypos = offsetTop - menuHeight; if ( ypos < 0 ) { // but if it goes off the top of the page just do a best-effort. ypos = ypos - ( ypos + menuHeight - viewportDimensions.height ); if ( ypos < 0 ) { ypos = 0; } } } // The color swatch is positioned absolutely, so adjust offsets to include the scrollofset ypos = ypos + scrollOffsets.top; xpos = xpos + scrollOffsets.left; this.theMenu.setStyle( { left : xpos + "px", top : ypos + "px" } ); this.title_color_input.focus(); ( function() { if ( !this.shim ) { this.shim = new page.popupShim( this.theMenu ); } this.shim.open(); }.bind( this ).defer() ); Event.stop( event ); }, /** * Removes the transparent choice from the palette if the picker is not supposed to support transparency. */ initializeTransparent : function() { if ( !this.allowTransparent ) { var transparentLi = this.colorListParent.down( 'li#colorlist_transparent' ); if ( transparentLi ) { Element.remove( transparentLi ); } } }, /** * Hides the color picker. */ onClose : function() { this.close(); this.anch_link.focus(); }, close : function() { this.deletePaletteInstance(); this.theMenu.setStyle( { display : "none" } ); if ( this.shim ) { this.shim.close(); } }, /** * Sets the preview color and text to the color selected by the user in the palette */ setColorFromSwatch : function( event ) { var element = Event.element( event ); if ( element.hasClassName( 'transparent' ) ) { this.setDisplay( "transparent", page.bundle.getString( "colorpicker.color.transparent" ) ); } else { var text = element.childNodes[ 0 ].nodeValue; if ( text ) { this.setDisplay( text.substring( 0, 7 ), this.getDisplayColorInfo( text.substring( 0, 7 ), false ) ); } } Event.stop( event ); }, getDisplayColorInfo : function( hexValue, onlyColorName ) { var transparent = false; var localizedName; var safeColorCode; if ( hexValue === "transparent" ) { transparent = true; localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ hexValue ]; } else { safeColorCode = this.getSafeColorCode( hexValue ).toUpperCase(); //The keys in ColorPickerMap are all 6 digit safe color codes, that's we need to make sure that we're using the correct key to lookup the color. localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ safeColorCode ]; } if ( !localizedName ) { localizedName = ''; } var colorName; colorName = localizedName + ' (' + hexValue + ')'; if ( onlyColorName || transparent ) { colorName = localizedName; } return colorName; }, /** * Returns a Six digit Hexadecimal Color Code. */ getSafeColorCode : function( hexValue ) { return hexValue.replace( /#([\d0-9A-Fa-f])([\d0-9A-Fa-f])([\d0-9A-Fa-f])$/,'#$1$1$2$2$3$3'); }, /** * Handles the Preview functionality on the swatch. If an inappropriate color is choosen, a msg is displayed to the * user. Else updates the color preview with the manually entered color. */ previewListener : function( event ) { if ( !this.isValidColor( this.title_color_input.value ) ) { alert( this.alertMsg ); return; } if ( this.title_color_input.value.length != 6 ) { return; } var prevCol; if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { prevCol = "transparent"; this.setDisplay( prevCol, page.bundle.getString( 'colorpicker.color.transparent' ) ); } else { prevCol = '#' + this.title_color_input.value; this.setDisplay( prevCol, this.getDisplayColorInfo( prevCol, false ) ); } Event.stop( event ); }, /** * Updates the color preview panel in the picker pop up */ setDisplay : function( col, text ) { if ( col === "transparent" ) { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : 'url(/images/swatches/transparent_lrg.gif)' } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : '#ffffff' } ); this.title_color_input.value = 'XXXXXX'; } else { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : col } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : col } ); this.title_color_input.value = ( col.startsWith( '#' ) ) ? col.substr( 1 ) : col; } $( this.theColorPickerName + '_title_color_name' ).innerHTML = text; }, /** * Checks for a valid color value. */ isValidColor : function( color_value ) { var isValid = false; isValid = ( /^[0-9A-Fa-f]{6}/ ).test( color_value ); if ( !isValid && this.allowTransparent ) { isValid = color_value.toLowerCase() === "xxxxxx"; } return isValid; }, /** * Manages the functionality for the Apply button the swatch. */ onApply : function( event ) { var color = this.title_color_input.value; if ( !this.isValidColor( color ) ) { return; } if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); color = "transparent"; this.color_name_label.innerHTML = page.bundle.getString( "colorpicker.color.transparent" ); } else { color = '#' + color; this.color_link.setStyle( { background : color } ); this.color_name_label.innerHTML = this.getDisplayColorInfo( color, true ); } widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, color ); this.updateUserPreviewContainerColor( color ); this.onClose(); if ( this.onChangeHandler ) { this.onChangeHandler(); } Event.stop( event ); }, /** * If the user specified preview container element exists, update its color style to the color given. * * @param color - color hex string */ updateUserPreviewContainerColor : function( color ) { if ( this.userPreviewContainer ) { this.userPreviewContainer.style.color = color; } else if ( this.userPreviewBackgroundContainer ) { this.userPreviewBackgroundContainer.style.background = color; } } }; // end widget.ColorPicker.prototype widget.ColorPicker.colorPickers = []; widget.ColorPicker.colorPickerMap = {}; widget.ColorPicker.colorPickerPaletteMap = {}; widget.ColorPicker.registerColorPicker = function( cp ) { widget.ColorPicker.colorPickers.push( cp ); widget.ColorPicker.colorPickerMap[ cp.theColorPickerName ] = cp; // grab the color definition and remove it from the DOM for the time being if ( !widget.ColorPicker.colorPalette ) { var colorPalette = $( 'picker_colorlist' ); // Store the colors and their localized names so we can look them up later. widget.ColorPicker.colorPickerPaletteMap[ "default" ] = {}; var arrColors = Element.getElementsBySelector( colorPalette, "a" ); for ( var i = 0; i < arrColors.length; i++ ) { if ( !arrColors[ i ].hasClassName( "transparent" ) ) { widget.ColorPicker.colorPickerPaletteMap[ "default" ][ arrColors[ i ].innerHTML.substring( 0, 7 ).toUpperCase() ] = arrColors[ i ].innerHTML .substring( 8 ); } } widget.ColorPicker.colorPickerPaletteMap[ "default" ].transparent = page.bundle .getString( "colorpicker.color.transparent" ); widget.ColorPicker.colorPalette = colorPalette; // deferring so that the name lookup for colors can succeed during init ( function() { Element.remove( colorPalette ); }.defer() ); } }; widget.ColorPicker.closeAllColorPickers = function() { widget.ColorPicker.colorPickers.each( function( cp ) { cp.close(); } ); }; widget.MultiSelect = Class.create(); widget.MultiSelect.multiselectBoxes = []; // ---------------- "static" methods widget.MultiSelect.registerMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.push( ms ); }; widget.MultiSelect.unRegisterMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.remove( ms ); }; widget.MultiSelect.prototype = { initialize : function( multiSelectDiv, formName ) { this.multiSelectDiv = $( multiSelectDiv ); this.formName = formName; if ( this.multiSelectDiv ) { this.leftClickListeners = []; this.rightClickListeners = []; var divs = this.multiSelectDiv.getElementsByTagName( 'div' ); var leftDiv = $( divs[ 0 ] ); var buttonDiv = $( divs[ 1 ] ); var rightDiv = $( divs[ 2 ] ); var inputs = this.multiSelectDiv.getElementsByTagName( 'input' ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); var leftSelects = leftDiv.getElementsByTagName( 'select' ); var rightSelects = rightDiv.getElementsByTagName( 'select' ); this.leftSelectBox = $( leftSelects[ 0 ] ); this.rightSelectBox = $( rightSelects[ 0 ] ); var buttons = buttonDiv.getElementsByTagName( 'button' ); var moveRightButton = $( buttons[ 0 ] ); var moveLeftButton = $( buttons[ 1 ] ); var leftInputs = leftDiv.getElementsByTagName( 'input' ); var leftInvertSelectionButton = $( leftInputs[ 0 ] ); var leftSelectAllButton = $( leftInputs[ 1 ] ); var rightInputs = rightDiv.getElementsByTagName( 'input' ); var rightInvertSelectionButton = $( rightInputs[ 0 ] ); var rightSelectAllButton = $( rightInputs[ 1 ] ); widget.MultiSelect.registerMultiSelect( this ); Event.observe( moveLeftButton, "click", this.onMoveLeftClick.bindAsEventListener( this ) ); Event.observe( moveRightButton, "click", this.onMoveRightClick.bindAsEventListener( this ) ); Event.observe( leftInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, true ) ); Event.observe( rightInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, false ) ); Event.observe( leftSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, true ) ); Event.observe( rightSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, false ) ); // This for the MultiSelectAction Bean. // If actionBean list is less than 1, button is displayed and not the dropdown if ( leftSelects.length > 1 ) { this.actionBeanLeftSelect = $( leftSelects[ 1 ] ); this.actionBeanRightSelect = $( rightSelects[ 1 ] ); var actionBeanLeftGoBox = $( leftInputs[ 2 ] ); var actionBeanRightGoBox = $( leftInputs[ 2 ] ); Event.observe( actionBeanLeftGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, true ) ); Event.observe( actionBeanRightGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, false ) ); } } }, actionBeanFunc : function( event, leftSelect ) { var destination = this.actionBeanLeftSelect; var selectedBox = this.leftSelectBox; if ( !leftSelect ) { destination = this.actionBeanRightSelect; selectedBox = this.rightSelectBox; } var myindex = destination.selectedIndex; if ( myindex == -1 || myindex > destination.length - 1 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return false; } var sFunctionName = destination.options[ myindex ].value; var oFunc = window[ sFunctionName ]; oFunc( selectedBox.name, this.formName ); this.setHiddenValues(); }, /* * listener registration for leftmove and rightmove clicks */ addToLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.push( listenerFunc ); } }, addToRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.push( listenerFunc ); } }, removeFromLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.remove( listenerFunc ); } }, removeFromRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.remove( listenerFunc ); } }, removeAllLeftClickListeners : function() { this.leftClickListeners = []; }, removeAllRightClickListeners : function() { this.rightClickListeners = []; }, removeFromLeft : function( id ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var toRemoveElement = leftItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToLeft : function( id, value, sortString ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var returnItem = leftItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { this.rawAddToLeft( id, value, sortString ); this.setHiddenValues(); } } }, rawAddToLeft : function( id, value, sortString ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.leftSelectBox.appendChild( item ); }, removeFromRight : function( id ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var toRemoveElement = rightItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToRight : function( id, value, sortString ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var returnItem = rightItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.rightSelectBox.appendChild( item ); this.setHiddenValues(); } } }, resetRightBox : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); rightItems.invoke( "remove" ); this.setHiddenValues(); } }, resetLeftBox : function() { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); leftItems.invoke( "remove" ); this.setHiddenValues(); } }, getAllLeftAvailableElements : function() { if ( this.leftSelectBox ) { return this.leftSelectBox.immediateDescendants(); } else { return []; } }, getAllRightElements : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); return rightItems; } else { return []; } }, onMoveLeftClick : function( event ) { var rightItems = this.rightSelectBox.immediateDescendants(); var selectedItems = rightItems.findAll( function( item ) { return item.selected; } ); var leftItems = this.leftSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { leftItems.push( item ); } ); leftItems = leftItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); leftItems.each( function( item ) { this.leftSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.leftClickListeners ) { this.leftClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, onMoveRightClick : function( event ) { var leftItems = this.leftSelectBox.immediateDescendants(); var selectedItems = leftItems.findAll( function( item ) { return item.selected; } ); var rightItems = this.rightSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { rightItems.push( item ); } ); rightItems = rightItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); rightItems.each( function( item ) { this.rightSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.rightClickListeners ) { this.rightClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, setHiddenValues : function() { var leftString; var rightString; var temp = ""; // Populate select box values comma separated into leftString,rightString. if ( this.leftSelectBox ) { this.leftSelectBox.immediateDescendants().each( function( option ) { leftString = option.value; temp += leftString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.leftValues.value = temp; temp = ""; } if ( this.rightSelectBox ) { this.rightSelectBox.immediateDescendants().each( function( option ) { rightString = option.value; temp += rightString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.rightValues.value = temp; temp = ""; } }, onSelectAllClick : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } Event.stop( event ); }, onInvertSelection : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } } }; /** * A dynamic picker list */ widget.PickerList = Class.create(); widget.PickerList.prototype = { /** * Creates a new picker list * * @param id id of the picker list table * @param cellGenerators an array of functions to be called to generate the HTML for the cells for a new row in the * table. * @param columnAlignments an array of the alignments of the columns * @param columnStyles optional styles to applied to columns * @param reorderable whether the table is to be reorderable * @param reorderingUrl url that reordering changes will be persisted to (can be null) * @param contextParameters parameters that are passed along with the reordering action. */ initialize : function( id, cellGenerators, columnAlignments, columnStyles, reorderable, reorderingUrl, contextParameters ) { this.table = $( id ); this.reorderable = reorderable; if ( this.table ) { this.tableBody = $( this.table.getElementsByTagName( 'tbody' )[ 0 ] ); if ( reorderable ) { this.dragDrop = new dragdrop.ListReordering( this.tableBody, this.table.id + '_reorderControls', false, 'tr', 'dndHandle', 'span', reorderingUrl, contextParameters, new Date().getTime(), null ); } } this.cellGenerators = cellGenerators; this.columnAlignments = columnAlignments; this.columnStyles = columnStyles; }, /** * This function takes any number of arguments. They will be passed directly to the generator functions. If this * list is reorderable, the first two arguments must be: - id of the item added. - name of the item added. */ addRow : function() { var generatorArgs = arguments; var row = $( document.createElement( "tr" ) ); if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var id = arguments[ 0 ]; var name = arguments[ 1 ]; // Set the row id so that the drag and drop code can identify the row row.id = this.table.id + '_row:' + id; // Add the reordering handle. var cell = document.createElement( "td" ); cell.className = 'smallCell dndHandle'; cell.valign = 'top'; cell.innerHTML = '<span class="reorder"><span><img src="/images/ci/icons/generic_updown.gif" alt="" /></span></span>'; row.appendChild( cell ); // Add the item to the accessible controls. var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); accessibleSelect.options[ accessibleSelect.length ] = new Option( name, id ); dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } this.cellGenerators.each( function( generator, index ) { var alignment = this.columnAlignments[ index ]; var cell = $( document.createElement( "td" ) ); cell.setAttribute( "align", alignment ); var columnStyle = this.columnStyles[ index ]; if ( '' != columnStyle ) { cell.addClassName( columnStyle ); } cell.innerHTML = generator.apply( window, generatorArgs ); row.appendChild( cell ); }.bind( this ) ); if ( generatorArgs[ 0 ] && generatorArgs[ 0 ].incompatibleFile ) { return; } else { this.tableBody.appendChild( row ); } if ( this.reorderable ) { // Toggle drag and drop so that it picks up the new item. this.dragDrop.disableDragAndDrop(); this.dragDrop.enableDragAndDrop(); this.dragDrop.calculateItemOrder(); } return row; }, /** * Removes the row with the specified id or index * * @param idOrIndex - if the argument is a string - it is taken as the id of one of the rows in the table - if the * argument is a number - the row at the specified index will be removed. */ removeRow : function( idOrIndex ) { var rowToRemove = null; if ( Object.isString( idOrIndex ) ) { rowToRemove = $( this.table.id + "_row:" + idOrIndex ); } else { rowToRemove = this.tableBody.childElements()[ idOrIndex ]; } if ( rowToRemove ) { // Remove the row from the accessible repositioning controls if applicable if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var idToCheck = rowToRemove.id.split( ':' )[ 1 ]; var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); var options = accessibleSelect.childElements(); for ( var i = 0; i < options.length; i++ ) { if ( options[ i ].value == idToCheck ) { Element.remove( options[ i ] ); break; } } dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } Element.remove( rowToRemove ); if ( this.reorderable ) { this.dragDrop.calculateItemOrder(); } } } }; widget.PickerList.noopGenerator = function() { return '&nbsp;'; }; /** * File picker */ widget.FilePicker = Class.create(); widget.FilePicker.prototype = { /** * Creates a new file picker * * @param pickerList the javascript object representing the picker list (of currently attached files) * @param baseElementName the base name for the file picker elements * @param required whether a file is required to be chosen * @param overrideLocalBehavior whether the CS options to override local behavior should be shown * @param csPickerUrl url to the CS file picker * @param showAddMetadata whether the "submit and add metadata" content system functionality should be enabled. * @param onAttachFile Optional callback function triggered when a new file is attached */ initialize : function( pickerList, baseElementName, required, overrideLocalBehavior, csPickerUrl, showAddMetadata, showSpecialAction, allowMultipleFiles, onAttachFile ) { this.pickerList = pickerList; this.baseElementName = baseElementName; this.required = required; this.overrideLocalBehavior = overrideLocalBehavior; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.allowMultipleFiles = allowMultipleFiles; this.onAttachFile = onAttachFile; this.pickCSButton = $( this.baseElementName + '_csBrowse' ); this.pickLocalButton = $( this.baseElementName + '_localBrowse' ); this.localFilePicker = $( this.baseElementName + '_chooseLocalFile' ); this.pickURLButton = $( this.baseElementName + '_urlBrowse' ); this.selectedCSFile = $( this.baseElementName + '_selectedCSFile' ); this.selectedCSFileName = $( this.baseElementName + '_selectedCSFileName' ); this.selectedCSFilePath = $( this.baseElementName + '_selectedCSFilePath' ); this.selectedCSFileSize = $( this.baseElementName + '_selectedCSFileSize' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_selectedCSFileMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_selectedCSFileMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_selectedCSFileMetadataFormat' ); } // single file selected area this.selectedFileActionsArea = $( this.baseElementName + '_selectedFileActions' ); this.selectedFileName = $( this.baseElementName + '_selectedFileName' ); this.selectedFileSource = $( this.baseElementName + '_selectedFileSource' ); this.selectedFileLinkTitle = $( this.baseElementName + '_selectedFileLinkTitle' ); this.selectedFileSpecialAction = $( this.baseElementName + '_selectedFileSpecialAction' ); this.attachFileButton = $( this.baseElementName + '_attachFileButton' ); this.cancelFileButton = $( this.baseElementName + '_cancelFileButton' ); this.allowCS = this.pickCSButton ? true : false; this.allowLocal = this.pickLocalButton ? true : false; this.allowURL = this.pickURLButton ? true : false; // Wire up events if ( this.overrideLocalBehavior ) { this.pickTargetButton = $( this.baseElementName + '_CSTargetButton' ); this.targetCSLocation = $( this.baseElementName + '_CSTarget' ); Event.observe( this.pickTargetButton, "click", this.onPickTargetClick.bindAsEventListener( this ) ); } this.pickMDButton = $( this.baseElementName + '_CSTargetMetaButton' ); if ( this.pickMDButton ) { window.CSMetadataPickerCallBack = this.afterPickMD.bind( this ); Event.observe( this.pickMDButton, "click", this.onPickMDClick.bindAsEventListener( this ) ); } if ( $( this.baseElementName + '_permissionPickerButton0' ) ) { Event.observe( $( this.baseElementName + '_permissionPickerButton0' ), "click", widget.FilePicker.openPermPicker .bindAsEventListener( this, this.csPickerUrl, this.baseElementName + "_permissions0_manual", "", this.selectedCSFilePath, widget.FilePicker.permPickerCallback .curry( this.baseElementName, this.baseElementName + '_csPermFileList0', 0 ) ) ); } if ( this.allowCS ) { Event.observe( this.pickCSButton, "click", this.onCSBrowse.bindAsEventListener( this ) ); Event.observe( this.selectedCSFile, "change", this.onCSPick.bindAsEventListener( this ) ); } if ( this.allowLocal ) { this.localFileContainer = this.localFilePicker.up(); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } if ( this.allowURL ) { this.linkId = $( this.baseElementName + "_urlBrowse" ); this.formDivId = $( this.baseElementName + "_addUrlForm" ); this.formContainerId = $( this.baseElementName + "_urlContainerDiv" ); var flyout = new flyoutform.FlyoutForm( { linkId : this.linkId, formDivId : this.formDivId, inlineFormContainerId : this.formContainerId, customCallbackObject : this, customOnSubmitHandler : this.onURLPick } ); this.flyout = flyout; } if ( this.cancelFileButton ) { Event.observe( this.cancelFileButton, "click", this.onCancelClick.bindAsEventListener( this ) ); } Event.observe( this.allowLocal ? this.pickLocalButton.form : this.pickCSButton.form, "submit", this.onSubmit .bindAsEventListener( this ) ); this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv && this.pickerList && this.pickerList.tableBody && ( this.pickerList.tableBody .getElementsBySelector( 'input[type="hidden"]' ).length > 0 || this.pickerList.tableBody .getElementsBySelector( 'input[type="file"]' ).length > 0 ) ) { this.listHtmlDiv.show(); } if ( !this.allowMultipleFiles && this.selectedFileSource.value != '' ) { // A file is already attached, so show the selected files area and // turn off the file choosing button (and metadata button if any). this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } } widget.FilePicker.registerFilePicker( this ); }, /** * For the override local behavior: show the picker to pick the location */ onPickTargetClick : function( event ) { var remote = popop.launchPicker( '/webapps/cmsmain/folderpicker/', 'picker_browse' ); if ( remote ) { remote.opener.inputEntryURLToSet = this.targetCSLocation; remote.opener.returnFullURL = false; remote.methodCall = this.onPickMDClick.bind( this ); } }, /** * For the override local behavior: show the picker to pick the metadata */ onPickMDClick : function( event ) { var location = this.targetCSLocation; var file = this.localFilePicker; if ( file.value == '' ) { return; } var url = '/webapps/cmsmain/execute/metadatapicker/manage?action=pick&file=' + file.value; if ( location && location.value != '' ) { url += 'location=' + location.value; } popup.launchPicker( url, 'picker_browse' ); }, /** * For the override local behavior: callback from the metadata picker */ afterPickMD : function( metadata, selection, synchronised, format ) { $( this.baseElementName + '_CSTargetmetadata' ).value = metadata; $( this.baseElementName + '_CSTargetselection' ).value = selection; $( this.baseElementName + '_CSTargetSynchronised' ).value = synchronised; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = format; }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.inputEntryURLToSet = this.selectedCSFile; this.csBrowseWindow.opener.inputFileSizeToSet = this.selectedCSFileSize; this.csBrowseWindow.opener.linkName = this.selectedCSFileName; if ( this.selectedCSFilePath ) { this.csBrowseWindow.opener.filePath = this.selectedCSFilePath; } this.csBrowseWindow.opener.customHandler = this.onCSPick.bind( this ); if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, /** * Called after file has been chosen from CS file picker with metadata added. */ afterMD : function( metadata, synced, format, fileId ) { var metadataString = metadata.join( "#" ); if ( fileId ) { if ( $( this.baseElementName + '_CSMetadata_' + fileId ) ) { $( this.baseElementName + '_CSMetadata_' + fileId ).value = metadataString; } if ( $( this.baseElementName + '_CSMetadataSync_' + fileId ) ) { $( this.baseElementName + '_CSMetadataSync_' + fileId ).value = synced; } if ( $( this.baseElementName + '_CSMetadataFormat_' + fileId ) ) { $( this.baseElementName + '_CSMetadataFormat_' + fileId ).value = format; } } else { if ( this.selectedCSFileMetadata ) { this.selectedCSFileMetadata.value = metadataString; } if ( this.selectedCSFileMetadataSync ) { this.selectedCSFileMetadataSync.value = synced; } if ( this.selectedCSFileMetadataFormat ) { this.selectedCSFileMetadataFormat.value = format; } } }, /** * Callback called after a file has been chosen from the CS file picker in single file mode - updating selected * files section */ onCSPick : function( fileList ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { // picker was opened in multiple mode but one of the legacy page was hit // see how legacy pages with radio buttons submit its selection - pickmultiple.jspf // create object cell generator is expecting using hidden input if ( typeof ( fileList ) == 'string' ) { var filePath = this.selectedCSFilePath ? this.selectedCSFilePath.value : ""; var csFile = { fileName : this.selectedCSFile.value, fullUrlToFile : this.selectedCSFile.value, linkTitle : this.selectedCSFileName.value, filePath : filePath, size : this.selectedCSFileSize.value }; this.onCSPickAllowMultiple( [ csFile ] ); } else { this.onCSPickAllowMultiple( fileList ); } } else { this.csBrowseWindow = null; this.selectedFileSource.value = 'C'; this.selectedFileName.innerHTML = this.selectedCSFileName.value; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = this.selectedCSFileName.value; } this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } if ( $( this.baseElementName + '_csPermissionsLi' ) ) { var fileName = this.selectedCSFileName.value; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. if ( ( /html|htm/i ).test( ext ) ) { $( this.baseElementName + "_permissionOptionsIndex" ).value = 0; $( this.baseElementName + '_csPermissionsLi' ).show(); } } if ( this.onAttachFile ) { this.onAttachFile( this, false ); } } }, /** * Called after a file is chosen from the local file picker in single file mode - updating selected files section */ onLocalPick : function( event ) { if ( this.localFilePicker.value != '' ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { this.onLocalPickAllowMultiple( event ); } else { var localFileName = this.getFileName( this.localFilePicker.value ); this.selectedFileName.innerHTML = localFileName; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = localFileName; } this.selectedFileSource.value = 'L'; this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.show(); } if ( this.onAttachFile ) { this.onAttachFile( this, true ); } } } }, /** * Callback called after files have been chosen from the CS file picker in multiple files mode - updating table */ onCSPickAllowMultiple : function( fileList ) { this.csBrowseWindow = null; fileList.each( function( selectedFile ) { selectedFile.baseElementName = this.baseElementName; selectedFile.showAddMetadata = this.showAddMetadata; selectedFile.csPickerUrl = this.csPickerUrl; this.pickerList.addRow( selectedFile, false ); // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); if ( this.onAttachFile ) { this.onAttachFile( this, false ); } }.bind( this ) ); }, /** * Called after a file is chosen from the local file picker in multiple files mode - updating table */ onLocalPickAllowMultiple : function( event ) { var row = this.pickerList.addRow( this, true ); if ( row === null ) { return; } // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); var cell = $( row.getElementsByTagName( 'td' )[ 0 ] ); var title = this.localFilePicker.title; Element.remove( this.localFilePicker ); this.localFilePicker.removeClassName( "hiddenInput" ); this.localFilePicker.setStyle( { position : "absolute", top : '-10000px' } ); this.localFilePicker.disabled = false; cell.appendChild( this.localFilePicker ); // Set up the names of the local file fields this.pickerList.tableBody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = this.baseElementName + '_LocalFile' + index; }.bind( this ) ); // Create and insert a new local file picker for more local file attaching this.localFilePicker = new Element( 'input', { title : title, type : 'file' } ); this.localFilePicker.addClassName( 'hiddenInput' ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); if ( this.onAttachFile ) { this.onAttachFile( this, true ); } }, /** * If a) Special Actions are enabled, and b) the embed options are configure to show up: - Wires up an on change * even on the special action select box that shows the embed options when the embed action is chosen. */ registerEmbedOptionsListener : function( index ) { if ( this.showSpecialAction ) { var specialAction = $( this.baseElementName + '_specialAction' + index ); var embedOptions = $( this.baseElementName + '_embedOptions' + index ); if ( embedOptions ) { specialAction.observe( 'change', function( event ) { if ( "EMBED" == specialAction.options[ specialAction.selectedIndex ].value ) { embedOptions.show(); } else { embedOptions.hide(); } } ); } } }, /** * Called after a url is chosen from the local file picker in multiple files mode - updating table */ onURLPick : function( widget ) { var selectedURL = document.getElementById( widget.baseElementName + '_newUrlName' ); if (selectedURL.value.blank()) // TODO: More exhaustive URL validation? { alert(page.bundle.getString('filePicker.validate.invalid.url')); return false; } if ( widget.listHtmlDiv ) { widget.listHtmlDiv.show(); } if ( widget.allowMultipleFiles ) { var urlFile = { fileName : selectedURL.value, fullUrlToFile : selectedURL.value, linkTitle : selectedURL.value }; widget.onCSPickAllowMultiple( [ urlFile ] ); } else { widget.selectedFileSource.value = 'C'; widget.selectedFileName.innerHTML = selectedURL.value; if ( widget.selectedFileLinkTitle ) { widget.selectedFileLinkTitle.value = selectedURL.value; } widget.selectedFileActionsArea.show(); widget.togglePickerButtons( false ); if ( widget.pickMDButton ) { widget.pickMDButton.hide(); } if ( widget.onAttachFile ) { widget.onAttachFile( widget, false ); } } // Purge entry widget.flyout.close(); selectedURL.value = ''; return true; }, /** * Called when the "Do not attach file" button is clicked */ onCancelClick : function( event ) { this.selectedFileActionsArea.hide(); this.clearSelectedFileInfo(); this.togglePickerButtons( true ); if ( event ) { Event.stop( event ); } }, /** * Toggles the enabled state of the Local/CS picker buttons to the specified state */ togglePickerButtons : function( enabled ) { if ( this.allowLocal ) { this.pickLocalButton.disabled = !enabled; if ( enabled ) { this.pickLocalButton.className = 'browse visibleInput'; this.localFilePicker.position = 'relative'; this.localFilePicker.style.top = ''; } else { this.pickLocalButton.className = 'disabled'; this.localFilePicker.position = 'absolute'; this.localFilePicker.style.top = '-10000px'; } if ( this.allowMultiple ) { this.localFilePicker.disabled = !enabled; } } if ( this.allowCS ) { this.pickCSButton.disabled = !enabled; if ( enabled ) { this.pickCSButton.className = 'browse visibleInput'; } else { this.pickCSButton.className = 'disabled'; } } if ( this.allowURL ) { this.pickURLButton.disabled = !enabled; if ( enabled ) { this.pickURLButton.className = 'browse visibleInput'; } else { this.pickURLButton.className = 'disabled'; } } }, /** * Clears the info associated to the current attached file (if the user cancelled, or chose to attach another file ) */ clearSelectedFileInfo : function() { var isLocal = this.selectedFileSource.value == 'L'; this.selectedFileName.innerHTML = ""; this.selectedFileSource.value = ""; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = ""; } if ( this.pickMDButton ) { $( this.baseElementName + '_CSTargetmetadata' ).value = ""; $( this.baseElementName + '_CSTargetselection' ).value = ""; $( this.baseElementName + '_CSTargetSynchronised' ).value = ""; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = ""; } if ( $( this.baseElementName + "_permissionOptionsIndex" ) ) { $( this.baseElementName + '_permissionOptionsIndex' ).value = -1; $( this.baseElementName + '_permissions0_all' ).checked = true; } if ( this.selectedFileSpecialAction ) { this.selectedFileSpecialAction.selectedIndex = 0; } if ( isLocal ) { var title = ""; if ( !this.allowMultipleFiles ) { title = this.localFilePicker.title; Element.remove( this.localFilePicker ); } this.localFilePicker = $( document.createElement( "input" ) ); if ( !this.allowMultipleFiles ) { this.localFilePicker.name = this.baseElementName + '_LocalFile0'; } this.localFilePicker.title = title; this.localFilePicker.type = "file"; this.localFilePicker.addClassName( "hiddenInput" ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } else { this.selectedCSFile.value = ""; this.selectedCSFileName.value = ""; if ( this.selectedFilePath ) { this.selectedFilePath = ""; } this.selectedCSFileSize.value = ""; if ( this.showAddMetadata ) { this.selectedCSFileMetadata.value = ""; this.selectedCSFileMetadataSync.value = ""; this.selectedCSFileMetadataFormat.value = ""; } } }, /** * Gets the file name based on the full file path. */ getFileName : function( fullPath ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return result; }, setRequired : function( required ) { this.required = required; }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.allowMultipleFiles ) { if ( this.pickerList.tableBody.immediateDescendants().length === 0 ) { alert( page.bundle.getString( "filePicker.validate.atLeastOne" ) ); if ( event ) { Event.stop( event ); } return false; } } else { if ( ( this.selectedCSFile && this.selectedCSFile.value == '' ) && ( this.localFilePicker && this.localFilePicker.value == '' ) ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); if ( event ) { Event.stop( event ); } return false; } } } return true; } }; // Creates hidden input items for selected files/folders if giving access to additional files/folder // when attaching an HTML file widget.FilePicker.permPickerCallback = function( baseElementName, permFileList, index, itemList ) { if ( itemList && itemList.length > 0 ) { var i; var permFileListElem = $( permFileList ); var hiddenInputs = ""; if ( !permFileListElem ) { return; } hiddenInputs += '<input type="hidden" name="' + baseElementName + '_permittedFiles' + index + '" value="' + itemList[ 0 ].fileName; for ( i = 1; i < itemList.length; i++ ) { hiddenInputs += ':' + itemList[ i ].fileName; } hiddenInputs += '">'; permFileListElem.innerHTML = hiddenInputs; } }; /** * Toggles the "mark for removal" status of an item in the currently attached files table. Should be called from an * onclick attribute on the toggle link in the table. */ widget.FilePicker.toggleForRemove = function( event, removeLink ) { var e = event || window.event; removeLink = $( removeLink ); var tableRow = removeLink.up( "tr" ); var hiddenField = removeLink.up( "td" ).down( 'input[type="hidden"]' ); tableRow.toggleClassName( "removeCell" ); if ( hiddenField.disabled ) { hiddenField.disabled = false; removeLink.innerHTML = page.bundle.getString( "filePicker.unmarkForRemove" ); } else { hiddenField.disabled = true; removeLink.innerHTML = page.bundle.getString( "filePicker.markForRemove" ); } Event.stop( e ); }; widget.FilePicker.togglePickerButton = function( pickerButton, enabled ) { if ( enabled ) { $( pickerButton ).setAttribute( "href", "#" ); $( pickerButton ).removeClassName( "disabled" ); } else { $( pickerButton ).removeAttribute( "href" ); $( pickerButton ).addClassName( "disabled" ); } }; /** * Removes the specified pending attachment. Should be called from an onclick handler on a link in the currently * attached files table */ widget.FilePicker.removePendingAttachment = function( event, removeLink, baseElementName ) { var e = event || window.event; if ( confirm( page.bundle.getString( "filePicker.doNotAttach.confirm" ) ) ) { removeLink = $( removeLink ); var row = removeLink.up( "tr" ); var tbody = row.up( "tbody" ); // Remove the pending row Element.remove( row ); // Re-index the local file inputs. tbody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = baseElementName + '_LocalFile' + index; } ); // Hide the whole attached files table if there are no more attached files. var rowTotal = tbody.getElementsByTagName( 'tr' ).length; if ( rowTotal === 0 ) { var listHtmlDiv = $( baseElementName + "_listHtmlDiv" ); if ( listHtmlDiv ) { listHtmlDiv.hide(); } } } Event.stop( e ); }; widget.FilePicker.getPermPickerUrl = function( csPickerUrl, path, pathElement ) { // reuse current file picker's url as fall back plan var baseUrl = csPickerUrl.split( "?" )[ 0 ]; var queryParams = csPickerUrl.toQueryParams(); if ( !queryParams.multipicker ) { queryParams.multipicker = 'true'; } if ( !path && pathElement ) { path = pathElement.value; } // if we have path, construct proper full url from scratch using the provided path & extracted principalId if ( path ) { var principalId = baseUrl.match( /\/webapps\/cmsmain\/.*picker\/([^\/]*)\/?/ ); baseUrl = "/webapps/cmsmain/picker"; if ( principalId ) { baseUrl += "/" + principalId[ 1 ]; } if ( baseUrl.charAt( baseUrl.length - 1 ) === '/' ) { baseUrl = baseUrl.slice( 0, baseUrl.length - 1 ); } baseUrl += path; } return baseUrl + "?" + $H( queryParams ).toQueryString(); }; widget.FilePicker.openPermPicker = function( event, csPickerUrl, pid, path, pathElement, callback ) { if ( !( pid && $( pid ) && $( pid ).type == 'radio' && $( pid ).checked ) ) { return false; } var permPickerUrl = widget.FilePicker.getPermPickerUrl( csPickerUrl, path, pathElement ); var remote = popup.launchPicker( permPickerUrl ); if ( remote ) { if ( callback ) { remote.opener.customHandler = callback; } else { remote.opener.customHandler = null; } } var e = event || window.event; if ( e ) { var eventElement = Event.element( e ); Event.stop( e ); } return false; }; /** * A registry of defined file pickers and methods to access this registry */ widget.FilePicker.filePickers = {}; widget.FilePicker.registerFilePicker = function( filePicker ) { widget.FilePicker.filePickers[ filePicker.baseElementName ] = filePicker; }; widget.FilePicker.unRegisterFilePicker = function( filePicker ) { delete widget.FilePicker.filePickers[ filePicker.baseElementName ]; }; widget.FilePicker.getFilePicker = function( baseElementName ) { return widget.FilePicker.filePickers[ baseElementName ]; }; /** * Cell generators for the current attached files table */ widget.FilePicker.cellGenerators = { fileName : function( filePicker, isLocal ) { var result = '<input type="hidden" name="' + filePicker.baseElementName + '_attachmentType" value="' + ( isLocal ? 'L' : 'C' ) + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_fileId" value="new">'; if ( isLocal ) { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.getFileName( filePicker.localFilePicker.value ) + '</span>'; } else { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.linkTitle + '</span>'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFile" value="' + filePicker.fileName + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFileUrl" value="' + filePicker.fullUrlToFile + '">'; if ( filePicker.showAddMetadata ) { result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadata" id="' + filePicker.baseElementName + '_CSMetadata_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataSync" id="' + filePicker.baseElementName + '_CSMetadataSync_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataFormat" id="' + filePicker.baseElementName + '_CSMetadataFormat_' + filePicker.xythosId + '" value="">'; } } return result; }, fileType : function( filePicker, isLocal ) { var result = null; if ( isLocal ) { result = page.bundle.getString( "filePicker.fileType.attachment" ); } else { result = page.bundle.getString( "filePicker.fileType.content" ); } return result; }, linkTitle : function( filePicker, isLocal ) { var linkTitle = ""; if ( isLocal ) { linkTitle = filePicker.getFileName( filePicker.localFilePicker.value ); } else { if ( filePicker.linkTitle ) { linkTitle = filePicker.linkTitle; } } return '<input type="text" name="' + filePicker.baseElementName + '_linkTitle" value="' + linkTitle + '" title="' + page.bundle .getString( "filePicker.nameOfLink" ) + " " + linkTitle + '">'; }, size : function( filePicker, isLocal ) { if ( !isLocal && filePicker.size ) { return '<input type="hidden" name="' + filePicker.baseElementName + '_size" value="' + filePicker.size + '"> ' + filePicker.size; } else { return ""; } }, fileAction : function( filePicker, isLocal ) { return widget.FilePicker.cellGenerators.fileActionEmbedOptions( filePicker, isLocal, true ); }, fileActionEmbedOptions_index : 0, // used to uniquely identify embed options form elements on the page. fileActionEmbedOptions : function( filePicker, isLocal, suppressOptions ) { var index = widget.FilePicker.cellGenerators.fileActionEmbedOptions_index++; var baseName = filePicker.baseElementName; var fileName = isLocal ? filePicker.getFileName( filePicker.localFilePicker.value ) : filePicker.linkTitle; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. var isType = { image : ( /gif|jpeg|png|tif|bmp|jpg/i ).test( ext ), videoQt : ( /qt|mov|moov|movie/i ).test( ext ), videoOther : ( /avi|mpg|mpeg|wmv|asf|wma|mpe/i ).test( ext ), real : ( /ra|ram|rm/i ).test( ext ), flash : ( /swa|swf/i ).test( ext ), audio : ( /aif|aiff|au|mp3|wav/i ).test( ext ), html : ( /html|htm/i ).test( ext ) }; var isMedia = isType.image || isType.videoQt || isType.videoOther || isType.flash || isType.audio; var result = ''; if ( isMedia ) { result += '<select id="' + baseName + '_specialAction' + index + '" name="' + baseName + '_specialAction"'; result += ' title="' + page.bundle.getString( "filePicker.specialAction.for" ) + " " + fileName + '">'; result += '<option value="LINK">' + page.bundle.getString( "filePicker.specialAction.link" ) + '</option>'; result += '<option value="EMBED">' + page.bundle.getString( "filePicker.specialAction.embed" ) + '</option>'; result += '</select>'; // Render the embed options (if not suppressed) if ( !suppressOptions ) { result += '<ul style="display: none;" class="nestedList smallControls liveArea liveArea-slim" id="' + baseName + '_embedOptions' + index + '">'; // Alignment var fid = baseName + 'align' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.alignment' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_l" name="' + fid + '" value="Left" checked> <label for="' + fid + '_l">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.left' ) + '</label>' + '<input type="radio" id="' + fid + '_c" name="' + fid + '" value="Center"> <label for="' + fid + '_c">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.center' ) + '</label>' + '<input type="radio" id="' + fid + '_r" name="' + fid + '" value="Right"> <label for="' + fid + '_r">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.right' ) + '</label></fieldset></div></li>'; // Placement fid = baseName + 'placement' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.placement' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.placement' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_a" name="' + fid + '" value="Above"> <label for="' + fid + '_a">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.above' ) + '</label>' + '<input type="radio" id="' + fid + '_b" name="' + fid + '" value="Below" checked> <label for="' + fid + '_b">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.below' ) + '</label></fieldset></div></li>'; // Dimensions if ( !isType.audio ) { fid = baseName + 'width' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.width' ) + '</label></div><div class="field"><input class="width" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; fid = baseName + 'height' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.height' ) + '</label></div><div class="field"><input class="height" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; } // Autoplay if ( !isType.image ) { fid = baseName + 'autostart' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.autostart' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.autostart' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Loop if ( !isType.image && !isType.real ) { fid = baseName + 'loop' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.loop' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.loop' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + baseName + 'loop' + index + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Control (radio) if ( isType.videoQt || isType.real ) { fid = baseName + 'controls' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.controls' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="Full" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="None"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Controls (drop down) if ( isType.videoOther || isType.audio ) { fid = baseName + 'controls' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="controls">' + '<option value="None">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_none' ) + '</option>' + '<option value="Mini">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_mini' ) + '</option>' + '<option value="Full" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.controls_full' ) + '</option>' + '</select></div></li>'; } // Quality if ( isType.flash ) { fid = baseName + 'quality' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.set_quality' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="quality">' + '<option value="Low">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_low' ) + '</option>' + '<option value="Medium">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_med' ) + '</option>' + '<option value="High">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_high' ) + '</option>' + '<option value="Best" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.quality_best' ) + '</option>' + '</select></div></li>'; } if ( isType.image ) { // URL fid = baseName + 'url' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.url' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25">' + '</div></li>'; // New Window fid = baseName + 'newwin' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.new_window' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.new_window' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label>' + '</fieldset></div></li>'; // Border fid = baseName + 'border' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.border' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="border">' + '<option value="0" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.none' ) + '</option>' + '<option value="1>1</option><option value="2">2</option><option value="3">3</option>' + '<option value="4">4</option></select></div></li>'; } // Alt text fid = baseName + 'alttext' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25" value=""></div><span class="fieldHelp clearfloats">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text.instructions' ) + '</span></li>'; result += '</ul>'; } } else { result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialAction" value="LINK">'; result += page.bundle.getString( "filePicker.specialAction.link" ); } // The index is used to find the correct request parameters on the backend. result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialActionIndex" value="' + ( isMedia && !suppressOptions ? index : -1 ) + '">'; if ( filePicker.shouldManagePermission && !isLocal ) { // permission management options var permissionCsPickerUrl = filePicker.csPickerUrl; if ( permissionCsPickerUrl.indexOf( 'multipicker=true' ) != -1 ) { var xythosId = filePicker.fileName.sub( '/xid-', '' ).strip(); if ( xythosId ) { permissionCsPickerUrl = permissionCsPickerUrl + '&preselectedItemId=' + xythosId; } } result += '<ul id="' + filePicker.baseElementName + '_imgSpecOptions" class="nestedList smallControls liveArea liveArea-slim">'; result += '<li>'; var pid = baseName + "_permissions" + index; var pickerButtonId = baseName + "_permissionPickerButton" + index; var permFileListName = baseName + '_csPermFileList' + index; result += '<input type="radio" name="' + pid + '" value="A" id="' + pid + '_all" checked="checked" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.all" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="O" id="' + pid + '_this" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.this" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="S" id="' + pid + '_manual" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', true)" />' + page.bundle .getString( "fm.permission.grant.manual" ); result += '<a id="' + pickerButtonId + '" class="button-4 disabled" style="margin:0 3px" onclick="widget.FilePicker.openPermPicker( event, \'' + permissionCsPickerUrl + '\', \'' + pid + '_manual\',\'' + filePicker.filePath + '\', null, widget.FilePicker.permPickerCallback.curry( \'' + baseName + '\', \'' + permFileListName + '\', ' + index + ' ) );">' + page.bundle .getString( "filePicker.browse" ) + '</a>'; result += '</li>'; result += '</ul>'; result += '<div id="' + permFileListName + '" style="display: none;"></div>'; } result += '<input type="hidden" name="' + baseName + '_permissionOptionsIndex" value="' + ( isType.html && !isLocal ? index : -1 ) + '">'; return result; }, remove : function( filePicker, isLocal ) { var result = '<a href="#" onclick="widget.FilePicker.removePendingAttachment(event, this, '; result += "'" + filePicker.baseElementName + "'"; result += ');">' + page.bundle.getString( "filePicker.doNotAttach" ) + '</a>'; return result; }, // attach CS file alignment to course item align : function(filePicker, isLocal) { var alignOptionsName = "csAlignedResources"; var html = '<label for="csAlignedResources" style="white-space:nowrap">' + '<input type="checkbox" id="' + alignOptionsName + '"' + ' name="' + alignOptionsName + '"' + ' value="' + filePicker.filePath + '"' + '/>' + ' ' + page.bundle.getString('wysiwyg.insert_picture.csalign') + '</label>'; return html; } }; widget.InlineSingleCSFilePicker = Class.create(); widget.InlineSingleCSFilePicker.prototype = { initialize : function( baseElementName, csPickerUrl, showAddMetadata, showSpecialAction ) { this.baseElementName = baseElementName; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.browseButton = $( baseElementName + '_csBrowse' ); this.fileEntry = $( baseElementName + '_CSFile' ); this.fileId = $( baseElementName + '_fileId' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_CSMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_CSMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_CSFileMetadataFormat' ); } Event.observe( this.browseButton, 'click', this.onCSBrowse.bindAsEventListener( this ) ); }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = "picker" + new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.inputEntryURLToSet = this.fileEntry; this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.linkName = this.fileId; if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, afterMD : function( metadata, synced, format ) { var metadataString = metadata.join( "#" ); this.selectedCSFileMetadata.value = metadataString; this.selectedCSFileMetadataSync.value = synced; this.selectedCSFileMetadataFormat.value = format; } }; /** * Inline single local file picker - $baseElementName_attachmentType - 'AL' or 'L' or '' - $baseElementName_localBrowse - * $baseElementName_fileId */ widget.InlineSingleLocalFilePicker = Class.create(); widget.InlineSingleLocalFilePicker.prototype = { initialize : function( baseElementName, currentAttachedFile, required, showSpecialAction ) { this.baseElementName = baseElementName; this.fileInput = $( baseElementName + '_chooseLocalFile' ); this.fileInputWrapper = $( this.fileInput.parentNode ); this.attachmentType = $( baseElementName + '_attachmentType' ); this.fullFileName = $( baseElementName + '_fileId' ); this.attachmentNameSpan = $( baseElementName + '_attachmentName' ); this.removeLink = $( baseElementName + '_removeLink' ); this.inputArea = $( baseElementName + '_inputArea' ); this.attachedFileArea = $( baseElementName + '_attachedFileArea' ); this.required = required; this.showSpecialAction = showSpecialAction; // Wire up events Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); Event.observe( this.removeLink, "click", this.onRemoveClick.bindAsEventListener( this ) ); Event.observe( this.fileInput.form, "submit", this.onSubmit.bindAsEventListener( this ) ); // Set up initial values if ( currentAttachedFile ) { this.setDefaultCurrentAttachedFile( currentAttachedFile ); } widget.InlineSingleLocalFilePicker.pickerMap[ baseElementName ] = this; }, setCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, file ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, setDefaultCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentType._defaultValue = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } this.fullFileName.value = file; this.fullFileName._defaultValue = file; this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; this.fullFileName.value = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, onAfterChooseFile : function( event ) { this.attachmentNameSpan.innerHTML = this.getFileName( this.fileInput.value, true ); this.attachmentType.value = 'L'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fileInput.value ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); Event.stop( event ); }, onRemoveClick : function( event ) { this.clearFileInput(); if ( this.attachmentType.value == 'AL' ) { this.removeHiddenField = document.createElement( 'input' ); this.removeHiddenField.type = 'hidden'; this.removeHiddenField.name = this.baseElementName + '_remove'; this.removeHiddenField.id = this.baseElementName + '_remove'; this.removeHiddenField.value = this.fullFileName.value; this.attachedFileArea.insertBefore( this.removeHiddenField, this.attachedFileArea.firstChild ); widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fullFileName.value ); } else { this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); } this.attachmentNameSpan.innerHTML = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); Event.stop( event ); }, clearFileInput : function() { var title = this.fileInput.title; Element.remove( this.fileInput ); this.fileInput = $( document.createElement( "input" ) ); this.fileInput.title = title; this.fileInput.type = "file"; this.fileInput.addClassName( "hiddenInput" ); this.fileInput.name = this.baseElementName + '_LocalFile0'; this.fileInput._defaultValue = ''; this.fileInputWrapper.insertBefore( this.fileInput, this.fileInputWrapper.firstChild ); Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); }, /** * Gets the file name based on the full file path. * * @param fullPath Fully-qualified path of file * @param isDecodedName (optional) Indicates that the filename has already been URL decoded */ getFileName : function( fullPath, isDecodedName ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return isDecodedName ? result : decodeURI( result ); }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.fullFileName.value == '' ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); Event.stop( event ); return; } } } }; widget.InlineSingleLocalFilePicker.pickerMap = {}; /** * Read Only File picker */ widget.ReadOnlyFilePicker = Class.create(); widget.ReadOnlyFilePicker.prototype = { /** * Creates a new file picker * * @param baseElementName the base name for the file picker elements */ initialize : function( baseElementName ) { this.baseElementName = baseElementName; this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } widget.ReadOnlyFilePicker.pickerMap[ baseElementName ] = this; } }; widget.ReadOnlyFilePicker.pickerMap = {}; widget.UserRoleSelect = Class.create(); widget.UserRoleSelect.prototype = { initialize : function( userSelectRoleDivStr, moveMsgJS, noRoleMsgJs ) { this.sourceValueName = "_left_values"; this.secondaryValueName = "_right_values"; this.primaryValueName = "_primary_value"; this.userSelectRoleDiv = $( userSelectRoleDivStr ); if ( this.userSelectRoleDiv ) { var selects = this.userSelectRoleDiv.getElementsByTagName( 'select' ); var inputs = this.userSelectRoleDiv.getElementsByTagName( 'input' ); var links = this.userSelectRoleDiv.getElementsByTagName( 'a' ); this.source = $( selects[ 0 ] ); this.primary = $( inputs[ 3 ] ); this.secondary = $( selects[ 1 ] ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); this.primaryValue = $( inputs[ 2 ] ); this.toPrimaryMove = $( links[ 0 ] ); this.toSecondaryMove = $( links[ 1 ] ); this.toSourceMove = $( links[ 2 ] ); Event.observe( this.toSourceMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, false, moveMsgJS, noRoleMsgJs ) ); Event.observe( this.toPrimaryMove, "click", this.switchPrimary.bindAsEventListener( this, moveMsgJS ) ); Event.observe( this.toSecondaryMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, true, moveMsgJS, noRoleMsgJs ) ); } }, switchPrimary : function( event, msg ) { var indx; indx = 0; var sourceArray = this.source; if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } if ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.getFromPrimary(); this.primaryValue.value = sourceArray.options[ indx ].value; this.primary.value = sourceArray.options[ indx ].text; sourceArray.options[ indx ].selected = false; sourceArray.options[ indx ] = null; sourceArray.options[ sourceArray.length ] = tmpOpt; } this.writeToSelectBoxValues( this.source, this.leftValues ); return false; }, getFromPrimary : function() { var primaryRoleField = this.primaryValue; var primaryField = this.primary; return new Option( primaryField.value, primaryRoleField.value ); }, writeToSelectBoxValues : function( selectBox, hiddenName ) { var i = 0; var values = ""; while ( i < selectBox.length ) { if ( i > 0 ) { values += ","; } values += selectBox.options[ i ].value; i++; } hiddenName.value = values; return true; }, switchUserRoleColumns : function( event, isSourceDest, msg, noRoleMsg ) { var indx; indx = 0; var sourceArray = this.source; var targetArray = this.secondary; if ( !isSourceDest ) // If we are moving from Dest to Source { var temp = sourceArray; sourceArray = targetArray; targetArray = temp; } if ( sourceArray.length <= 0 ) { alert( noRoleMsg ); return false; } if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } var rightIndex = 0; var targetLength = targetArray.length; while ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.cloneMultipleRows( sourceArray.options[ indx ] ); if ( targetLength > 0 ) { var i = targetLength; while ( i > 0 ) { var tmpOpt1 = this.cloneMultipleRows( targetArray.options[ i + rightIndex - 1 ] ); targetArray.options[ i + rightIndex ] = tmpOpt1; i--; } } sourceArray.options[ indx ].selected = false; targetArray.options[ rightIndex ] = tmpOpt; // targetArray.options[rigthIndex].selected=true; rightIndex = rightIndex + 1; sourceArray.options[ indx ] = null; } // end of while this.writeToSelectBoxValues( this.source, this.leftValues ); this.writeToSelectBoxValues( this.secondary, this.rightValues ); return false; }, cloneMultipleRows : function( opt ) { return new Option( opt.text, opt.value, opt.defaultSelected, opt.selected ); } }; widget.StepGroup = {}; widget.StepGroup.toggleStepGroup = function( e, activeTabStr ) { var event = e || window.event; var target = Event.findElement( event, 'li' ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); $( 'activeTabSpanId_' + tab.id ).innerHTML = activeTabStr; } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); $( 'activeTabSpanId_' + tab.id ).innerHTML = ""; } } ); Event.stop( event ); }; /** * Show a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.showStepGroup = function( number ) { var target = $( 'stepGroupTab_' + number ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; /** * Get the content block element to a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.getStepGroupContentBlock = function( number ) { var targetTab = $( 'stepGroupTab_' + number ); return $( targetTab.getAttribute( "bb:groupId" ) ); }; widget.StepGroup.showAllStepGroupsForSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } ); }; widget.StepGroup.revertAllStepGroupsAfterSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { if ( page.util.hasClassName( tab, 'active' ) ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } else { $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; widget.ShowUnsavedChanges = Class.create(); widget.ShowUnsavedChanges.prototype = { initialize : function( dataCollectionContainer, skipTextArea ) { widget.ShowUnsavedChanges.enabled = true; widget.ShowUnsavedChanges.registerOnValueChangeCallback( widget.ShowUnsavedChanges.showIconsForUnsavedChanges ); var container = $( dataCollectionContainer ); var inputs = $A( container.getElementsByTagName( 'input' ) ); var selects = $A( container.getElementsByTagName( 'select' ) ); var textareas = $A( container.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { input = $( input ); var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { input._defaultValue = input.checked; } else if ( type == 'hidden' || type == 'text' ) { input._defaultValue = input.value; } else { input._defaultValue = ''; } if ( type != 'hidden' && type != 'button' && type != 'submit' ) { input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); } }.bind( this ) ); selects.each( function( input ) // TODO: multiselect? { input = $( input ); input._defaultValue = input.selectedIndex; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); if ( !skipTextArea || !skipTextArea ) { textareas.each( function( input ) { input = $( input ); input._defaultValue = input.value; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); } } }; widget.ShowUnsavedChanges.onValueChangeCallback = function() { }; // do nothing widget.ShowUnsavedChanges.registerOnValueChangeCallback = function( callbackFunction ) { widget.ShowUnsavedChanges.onValueChangeCallback = callbackFunction; }; widget.ShowUnsavedChanges.dataElementsByStepGroup = {}; widget.ShowUnsavedChanges.onValueChange = function( event, elem ) { if ( widget.ShowUnsavedChanges.enabled ) { var dataElement = null; if ( event ) { dataElement = Event.findElement( event, 'li' ); } else { dataElement = elem.parentNode; while ( dataElement && dataElement.tagName.toLowerCase() != 'li' ) { dataElement = dataElement.parentNode; if ( dataElement.tagName.toLowerCase() == 'body' ) { dataElement = null; } } if ( dataElement ) { dataElement = $( dataElement ); } } if ( !dataElement ) { return; } var isDefault = true; var inputs = $A( dataElement.getElementsByTagName( 'input' ) ); var selects = $A( dataElement.getElementsByTagName( 'select' ) ); var textareas = $A( dataElement.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { isDefault &= ( input.checked == input._defaultValue ); } else if ( type == 'hidden' || type == 'text' ) { isDefault &= ( input.value == input._defaultValue ); } } ); selects.each( function( input ) // TODO: multiselect? { isDefault &= ( input.selectedIndex == input._defaultValue ); } ); textareas.each( function( input ) { isDefault &= ( input.value == input._defaultValue ); } ); // trigger call back function widget.ShowUnsavedChanges.onValueChangeCallback( isDefault, dataElement ); } }; widget.ShowUnsavedChanges.showIconsForUnsavedChanges = function( isDefault, dataElement ) { var imgs = dataElement.getElementsByTagName( 'img' ); var unsavedImg = null; for ( var i = 0; i < imgs.length; i++ ) { if ( imgs[ i ].className.indexOf( 'unsavedChangeImg' ) >= 0 ) { unsavedImg = $( imgs[ i ] ); break; } } if ( unsavedImg ) { if ( isDefault ) { dataElement.removeClassName( 'dirty' ); unsavedImg.hide(); } else { dataElement.addClassName( 'dirty' ); unsavedImg.show(); } widget.ShowUnsavedChanges.updateStepGroupIndicator(); } }; widget.ShowUnsavedChanges.updateStepGroupIndicator = function() { if ( widget.ShowUnsavedChanges.enabled ) { // Loop through each step group tab, and determine if an icon that indicates // unsaved changes should be displayed in the tab itself $$( '#dataCollectionContainer ul li.stepGroupTab' ).each( function( tab ) { var stepGroup = $( tab.getAttribute( "bb:groupId" ) ); var img = $( tab.getElementsByTagName( 'img' )[ 0 ] ); var link = $( tab.getElementsByTagName( 'a' )[ 0 ] ); var dataElements = widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ]; if ( !dataElements ) { dataElements = stepGroup.getElementsByTagName( 'li' ); widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ] = dataElements; } var dirtyCount = 0; for ( var i = 0; i < dataElements.length; i++ ) { //If the data element is hidden, we do not want to include it in the count of dirty //data elements. Doing so could result in the dirty image on the step group displaying //with no child data elements that display as dirty. if ( dataElements[ i ].hasClassName( "dirty" ) && dataElements[ i ].getStyle( "display" ) !== "none" ) { dirtyCount++; } } if ( dirtyCount > 0 && !tab.isDirty ) { img.show(); link.setStyle( { 'paddingLeft' : '20px' } ); tab.isDirty = true; } else if ( dirtyCount === 0 && tab.isDirty ) { img.hide(); link.setStyle( { 'paddingLeft' : '' } ); tab.isDirty = false; } } ); } }; // Call this when the value of a hidden data element changes that you want to // show an indicator for. Otherwise changing the value of the hidden element directly will // not cause an indicator to show. widget.ShowUnsavedChanges.changeHiddenValue = function( hiddenElem, value ) { hiddenElem.value = value; if ( widget.ShowUnsavedChanges.enabled ) { widget.ShowUnsavedChanges.onValueChange( null, hiddenElem ); } }; widget.ShowUnsavedChanges.enabled = false; /** * Supports a counter widget attached to a textbox -- it keeps track of the number of characters in the text box, and * updates a counter whenever that number changes. The counter turns red, and begins counting backwards, when the max * number of charters is exceeded. */ widget.TextBoxCounter = Class.create(); widget.TextBoxCounter.prototype = { /** * Contructor * * @param textBoxId The id of the textbox we're counting from * @param counterId The id of the element that countains the count * @param maxCharCount The max number of characters supported by this textbox * @param charactersRemainingLabel The label for the character count element * @param charactersOverLimitLabel The alternate label for the character element, for when the max # of characters * has been exceeded. */ initialize : function( textBoxId, counterId, maxCharCount, charactersRemainingLabel, charactersOverLimitLabel ) { this.textBoxElement = $( textBoxId ); this.counterElement = $( counterId ); this.maxCharCount = maxCharCount; this.countLabelElement = this.counterElement.up().childNodes[ 0 ]; this.charactersRemainingLabel = charactersRemainingLabel; this.charactersOverLimitLabel = charactersOverLimitLabel; // watch all keystrokes in the text area, and update the counter accordingly this.textBoxElement.observe( 'keyup', this.updateCount.bindAsEventListener( this ) ); // update the initial count this.updateCount(); this.registerCounter( textBoxId ); }, /** * Registers the current counter with the document, so that it can be accessed from anywhere on the page. * * @param id The id with which this counter can be accessed */ registerCounter : function( id ) { if ( !widget.TextBoxCounter.counters ) { widget.TextBoxCounter.counters = []; } widget.TextBoxCounter.counters[ id ] = this; }, /** * Update the counter. * * @param event The event that prompted this update, if any. */ updateCount : function( event ) { var chars = this.textBoxElement.value.length; // max character count exceeded if ( chars > this.maxCharCount ) { this.counterElement.update( chars - this.maxCharCount ).addClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersOverLimitLabel; } // max character count not exceeded else if ( chars <= this.maxCharCount ) { this.counterElement.update( this.maxCharCount - chars ).removeClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersRemainingLabel; } } }; widget.ColorPalettePicker = Class.create(); widget.ColorPalettePicker.prototype = { initialize : function( onChange, themeChangeElementId ) { widget.ColorPalettePicker.picker = this; this.onChange = onChange; var palettes = []; $A( $( 'paletteLibraryPanel' ).getElementsByTagName( 'li' ) ).each( function( li ) { if ( page.util.hasClassName( li, 'palette' ) ) { palettes.push( $( li ) ); } } ); this.palettes = palettes; this.libraryOpen = false; this.paletteLibraryPanel = $( 'paletteLibraryPanel' ); this.paletteLibraryButton = $( 'paletteLibraryButton' ); var updateHandler = this.updateCurrentSelection.bindAsEventListener( this ); // this.paletteLibraryPanel.toggleLibrary(); if ( this.palettes ) { this.palettes.each( function( palette ) { Event.observe( palette, "click", updateHandler ); } ); } if ( this.paletteLibraryButton ) { Event.observe( 'paletteLibraryButtonLink', "click", this.toggleLibrary.bindAsEventListener( this ) ); } if ( themeChangeElementId !== "" ) { Event.observe( themeChangeElementId, "change", this.changePaletteThemeTypeStyles.bindAsEventListener( this ) ); } }, changePaletteThemeTypeStyles : function( event ) { var dropdown = event.currentTarget; var themeExtRef = $F( dropdown ); var extRefToThemeTypeJson = $F( "themeExtRefToThemeTypeJson" ); var extRefToThemeTypeMap = this.convertJsonToObject( decodeURIComponent( extRefToThemeTypeJson ) ); var themeType = extRefToThemeTypeMap[themeExtRef]; var mapKey = null; this.palettes.each( function( palette ) { if( palette.id === "currentsystemthemecolorpalette" ) { mapKey = "theme_type_" + themeExtRef; } else { if( themeType !== null ) { mapKey = "theme_type_" + themeType; } else { mapKey = "theme_type_"; } } var styleJson = $F( palette.down('input[type=hidden]') ); var styleMap = this.convertJsonToObject( decodeURIComponent( styleJson ) ); var schemePreviewStyle = styleMap[mapKey]['schemePreview']; var schemePreviewHeadStyle = styleMap[mapKey]['schemePreviewHead']; var schemePreviewBodyStyle = styleMap[mapKey]['schemePreviewBody']; var modulePreviewStyle = styleMap[mapKey]['moduleBorder']; var modulePreviewHeadStyle = styleMap[mapKey]['moduleTitle']; var modulePreviewBodyStyle = styleMap[mapKey]['moduleBody']; palette.down('.schemePreview').writeAttribute("style", schemePreviewStyle); palette.down('.schemePreviewHead').writeAttribute("style", schemePreviewHeadStyle); palette.down('.schemePreviewBody').writeAttribute("style", schemePreviewBodyStyle); palette.down('.modulePreview').writeAttribute("style", modulePreviewStyle); palette.down('.modulePreviewHead').writeAttribute("style", modulePreviewHeadStyle); palette.down('.modulePreviewBody').writeAttribute("style", modulePreviewBodyStyle); }, this ); }, convertJsonToObject : function( json ) { if ( typeof ( JSON ) === 'object' && typeof ( JSON.parse ) === 'function' ) { return JSON.parse( json ); } else { return eval( '(' + json + ')' ); } }, toggleLibrary : function( event ) { var img = this.paletteLibraryButton.getElementsByTagName( 'img' )[ 0 ]; if ( this.libraryOpen ) { // Collapse the library. img.src = "/images/db/p.gif"; img.alt = page.bundle.getString( "dynamictree.expand" ); this.paletteLibraryPanel.hide(); this.libraryOpen = false; } else { // Expand the library. img.src = "/images/db/m.gif"; img.alt = page.bundle.getString( "dynamictree.collapse" ); this.paletteLibraryPanel.show(); this.libraryOpen = true; } // stop the event if exists; there will not be an event if called on page onLoad if ( event ) { Event.stop( event ); } }, selectColorPaletteByExtRef : function( extRef ) { var eventElement = $( extRef ); this.selectColorPaletteByElement( eventElement ); }, selectColorPaletteByElement : function( eventElement ) { this.palettes.each( function( p ) { if ( p.hasClassName( "selected" ) ) { p.removeClassName( 'selected' ); } } ); var selPal = eventElement; while ( selPal && selPal.tagName != 'LI' ) { selPal = selPal.parentNode; if ( selPal.tagName == 'BODY' ) { selPal = null; } } selPal.addClassName( 'selected' ); widget.ShowUnsavedChanges.changeHiddenValue( $( 'currentPaletteExtRef' ), selPal.id == 'currentsystemthemecolorpalette' ? '' : selPal.id ); eval( this.onChange ); $( 'currentPaletteLabel' ).update( $( selPal.id + '_label' ).innerHTML ); this.copyStyles( selPal.down( '.schemePreview' ), $( 'currentPalettePreview' ) ); this.copyStyles( selPal.down( '.schemePreviewHead' ), $( 'currentPalettePreviewHead' ) ); this.copyStyles( selPal.down( '.schemePreviewBody' ), $( 'currentPalettePreviewBody' ) ); this.copyStyles( selPal.down( '.modulePreview' ), $( 'currentModulePalettePreview' ) ); this.copyStyles( selPal.down( '.modulePreviewHead' ), $( 'currentModulePalettePreviewHead' ) ); this.copyStyles( selPal.down( '.modulePreviewBody' ), $( 'currentModulePalettePreviewBody' ) ); $( 'selectedPalette' ).show(); }, updateCurrentSelection : function( event ) { var eventElement = Event.element( event ); this.selectColorPaletteByElement( eventElement ); Event.stop( event ); }, copyStyles : function( s, d ) { d.style.cssText = s.style.cssText; } }; widget.ColorPalettePicker.picker = null; /** * node picker */ widget.MINodePicker = Class.create(); /** Constants used for the picker */ widget.MINodePicker.Constants = { EXISTING_NODE_SUFFIX : "", EXISTING_NODE_DELETE_SUFFIX : "", NEW_NODE_SUFFIX : "" }; widget.MINodePicker.prototype = { initConstants : function() { widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeSuffix" ); widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeDeleteSuffix" ); widget.MINodePicker.Constants.NEW_NODE_SUFFIX = page.bundle.getString( "nodePicker.const.newNodeSuffix" ); }, /** * Creates a new node picker * * @param baseElementName the base name for the node picker elements * @param pickerList the javascript object representing the picker list (of currently attached files) * @param allowMultipleSelect boolean indicating whether the picker should allow single or multiple select * @param entitlements comma delimited list of entitlement UIDs in which to check on node search * @param popupInstructions key value pair of bundle name and bundle key for instructions to be displayed in the pop * up * @param addPrimaryEntitlement Entitlement required to display primary radio button. * @param removeNodeEntitlement Entitlement required to display remove node link. */ initialize : function( baseElementName, pickerList, allowMultipleSelect, entitlements, popupInstructions, addPrimaryEntitlement, removeNodeEntitlement ) { this.initConstants(); this.baseElementName = baseElementName; this.allowMultipleSelect = allowMultipleSelect; this.entitlements = entitlements; this.nodePickerPopupButton = $( this.baseElementName + '_nodeBrowseButton' ); this.nodePickerUrl = "/webapps/blackboard/execute/institutionalHierarchy/nodePicker?cmd=openPicker&allowMultipleSelect=" + this.allowMultipleSelect + "&instructionKey=" + popupInstructions + "&entitlements=" + this.entitlements + "&addPrimaryEntitlement=" + addPrimaryEntitlement + "&removeNodeEntitlement=" + removeNodeEntitlement; Event.observe( this.nodePickerPopupButton, "click", this.onNodeBrowse.bindAsEventListener( this ) ); this.pickerList = pickerList; this.selectedNodesListContainer = $( this.baseElementName + '_listHtml' ); // make sure that all removedNodes are hidden var removedNodes = this.selectedNodesListContainer .getElementsBySelector( 'input[name=' + this.baseElementName + widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX + ']' ); removedNodes.each( function( node ) { node.up( 'tr' ).hide(); } ); var showList; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { showList = this.selectedNodesListContainer && this.pickerList && this.pickerList.tableBody && !this.pickerList.tableBody .empty(); } // For single node picker, the attached node is contained within a span element else { showList = this.selectedNodesListContainer && this.selectedNodesListContainer.select( "input.selectedNodeData" ) && this.pickerList; } if ( this.pickerList && this.pickerList.tableBody ) { // If no visible row then hide the table label and headers. if ( !this.pickerList.tableBody.select( "tr" ).any( function( row ) { return row.visible(); } ) ) { showList = false; } } this.showHideSelectedNodesList( showList ); widget.MINodePicker.registerNodePicker( this ); }, /** * Pop up the node search window from which to pick nodes */ onNodeBrowse : function( event ) { this.nodePickerWindow = null; var windowId = new Date().getTime(); if ( $( 'primaryNodeIdStr' ) ) { this.nodePickerUrl += '&primaryNodeIdStr=' + $F( 'primaryNodeIdStr' ); } if ( $( 'objectType' ) ) { this.nodePickerUrl += '&objectType=' + $F( 'objectType' ); } this.nodePickerWindow = popup.launchPicker( this.nodePickerUrl, windowId ); if ( this.nodePickerWindow ) { this.nodePickerWindow.opener.customHandler = this.onNodePick.bind( this ); } Event.stop( event ); }, /** * Callback called after node(s) have been selected from the node picker pop up. This method updates the UI list of * currently select nodes. * * @param selectedNodesObjArr The array of currently selected nodes from the picker */ onNodePick : function( selectedNodesObjArr ) { this.showHideSelectedNodesList( true ); var existingNodes; if ( this.allowMultipleSelect ) { // Array of existing selected nodes in the node picker list existingNodes = this.selectedNodesListContainer.down( "tbody" ).select( "input.selectedNodeData" ); } else { // Existing selected node in the node picker list for single node picker existingNodes = this.selectedNodesListContainer.select( "input.selectedNodeData" ); } // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. if ( selectedNodesObjArr && selectedNodesObjArr.length !== 0 ) { // Switch the radio button selection to Create hierarchy under the specified entity (for single node pickers) if ( $( "selectedRoot" ) ) { $( "selectedRoot" ).checked = true; } } /* * For each selected node, add the node to the list if it is a newly selected node, otherwise unhide the node if * it is an existing selection that has been marked for delete. Specifically: - If node is an existing selected * node and marked for delete and hidden, then unmark and show - If node is an existing selected node and not * marked for delete and showing, then do nothing - If node is a newly selected node and is not already there, add * the row - If node is a newly selected node and is already there, then do nothing */ selectedNodesObjArr.each( function( node ) { // See if the picked node is already in the list of nodes var existingNode; existingNodes.each( function( inputEle ) { if ( node.nodeIdStr === inputEle.value ) { existingNode = inputEle; if ( existingNode.disabled && existingNode.checked ) { // If its a disabled primary node then restore the value of it in hidden param. $( this.baseElementName + '_disabledPrimaryNode' ).value = node.nodeIdStr; } throw $break; } } ); // If not, then add this newly picked node to list if ( !existingNode ) { var primaryRadioChecked; var existingPrimaryNodeRadios = this.selectedNodesListContainer .select( 'input[name=' + this.baseElementName + '_PrimaryNode]' ); if ( existingPrimaryNodeRadios.all( function( radio ) { return !radio.checked; } ) ) { primaryRadioChecked = true; } // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { // This calls the cell generator methods for each column in the "currently selected nodes" list this.pickerList.addRow( this.baseElementName, node, this.nodePickerWindow, primaryRadioChecked ); } // For single node picker, the attached node is contained within a span element else { this.selectedNodesListContainer.innerHTML = ""; this.pickerList.cellGenerators.each( function( generator, index ) { var args = []; args.push( this.baseElementName, node, this.nodePickerWindow ); this.selectedNodesListContainer.innerHTML += generator.apply( window, args ); }.bind( this ) ); } } else { /* * If picked node is already in the list AND is an existing selected node that is marked for delete and * hidden, then unmark node and show in list. */ if ( existingNode.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ) ) { existingNode.name = existingNode.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ); if ( this.allowMultipleSelect ) { existingNode.up( "tr" ).show(); } } } }.bind( this ) ); }, /** * Shows or hides the selected nodes list * * @param show boolean to indicate show or hide */ showHideSelectedNodesList : function( show ) { if ( this.selectedNodesListContainer ) { return show ? this.selectedNodesListContainer.show() : this.selectedNodesListContainer.hide(); } } }; /** * Removes the specified node selection from the list. Should be called from an onclick handler on a link in the * currently selected nodes table. */ widget.MINodePicker.removeSelectedNode = function( event, removeLink, baseElementName ) { var e = event || window.event; // Have user confirm removal of selected node if ( confirm( page.bundle.getString( "nodePicker.nodeRemoveConfirmMsg" ) ) ) { var visibleRows = []; var picker = widget.MINodePicker.getNodePicker( baseElementName ); var hiddenNodeDataEle; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( picker.allowMultipleSelect ) { // Get references to DOM elements in the list removeLink = $( removeLink ); var rowToHideRemove = removeLink.up( "tr" ); var tbodyEle = rowToHideRemove.up( "tbody" ); hiddenNodeDataEle = rowToHideRemove.down( "input.selectedNodeData" ); var primaryNodeRadioSelector = 'input[name=' + baseElementName + '_PrimaryNode]'; var primaryNodeRadioInCurrentRow = rowToHideRemove.down( primaryNodeRadioSelector ); if ( primaryNodeRadioInCurrentRow ) { // Check if removed node is selected as a primary node if ( primaryNodeRadioInCurrentRow.checked ) { if ( primaryNodeRadioInCurrentRow.disabled ) { // A disabled primary node is removed from UI then nullify the value of hidden param storing its value. $( baseElementName + '_disabledPrimaryNode' ).value = ''; } else { // Get the next node which is not checked as primary and is enabled. var nextNode = picker.selectedNodesListContainer.select( primaryNodeRadioSelector ).find( function( radio ) { return ( !radio.checked && !radio.disabled && radio.up( 'tr' ).visible() ); } ); if ( nextNode ) { nextNode.checked = true; } else { // In case there's no next node with primary node radio button, then uncheck current primary manually primaryNodeRadioInCurrentRow.checked = false; } } } } // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); // hide rowToHideRemove.hide(); } // If is a newly selected node else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { // remove the row from the DOM Element.remove( rowToHideRemove ); } tbodyEle.select( "tr" ).each( function( row ) { if ( row.visible() ) { visibleRows.push( row ); } } ); } // For single node picker, the attached node is contained within a span element else { hiddenNodeDataEle = picker.selectedNodesListContainer.down( "input.selectedNodeData" ); // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); } // If is a newly selected node, clear the span content else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { picker.selectedNodesListContainer.innerHTML = ""; } } // If there are no more selected nodes, hide some UI elements if ( visibleRows.length === 0 ) { // Hide the whole selected nodes table picker.showHideSelectedNodesList( false ); // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. // Switch the radio button selection to Create hierarchy under the top level (for single node pickers) if ( $( "topLevelRoot" ) ) { $( "topLevelRoot" ).checked = true; } } } Event.stop( e ); }; /** * A registry of defined node pickers and methods to access this registry */ widget.MINodePicker.nodePickers = {}; widget.MINodePicker.registerNodePicker = function( nodePicker ) { widget.MINodePicker.nodePickers[ nodePicker.baseElementName ] = nodePicker; }; widget.MINodePicker.unRegisterNodePicker = function( nodePicker ) { delete widget.MINodePicker.nodePickers[ nodePicker.baseElementName ]; }; widget.MINodePicker.getNodePicker = function( baseElementName ) { return widget.MINodePicker.nodePickers[ baseElementName ]; }; /** * Cell generators for the currently selected nodes table. Mostly copies what is in multiInstNodePickerListElement.vm. */ widget.MINodePicker.cellGenerators = { /** * Dynamic rendering of a cell in the node "Name" column */ nodeName : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { var result = '<input type="hidden" name="' + pickerNameStr + widget.MINodePicker.Constants.NEW_NODE_SUFFIX + '" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData">'; result += '<img src="/images/ci/ng/entity_small.png" alt="">'; result += selectedNodeObj.nodeName; return result; }, /** * Dynamic rendering of a cell in the node "Primary Node" column */ nodePrimary : function( pickerNameStr, selectedNodeObj, nodePickerWindow, primaryRadioChecked ) { var result = '<input type="radio" id="' + selectedNodeObj.nodeIdStr + '_Primary' + '" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData"'; if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' ) { result += ' disabled'; } if ( primaryRadioChecked ) { result += ' checked'; } result += ' >'; // Since values of disabled radio element doesn't go through the request, adding hidden param here to store its // value. if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' && primaryRadioChecked ) { result += '<input type="hidden" id="' + pickerNameStr + '_disabledPrimaryNode" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" />'; } return result; }, /** * Dynamic rendering of a cell in the remove node column */ nodeRemove : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_canRemoveObject' ).value == 'true' ) { var result = '<img src="/images/ci/icons/x_ia.gif" alt="">'; result += '<a href="#" onclick="widget.MINodePicker.removeSelectedNode(event, this, '; result += "'" + pickerNameStr + "');"; result += '">' + page.bundle.getString( "nodePicker.nodeRemoveLabel" ); result += '</a>'; return result; } else { return ''; } } };

Take Test MC Exercises Words Modifier Placement.mht

Current Location

Take Test: MC Exercises: Words: Modifier Placement

Content

Assistive Technology Tips [opens in new window]

Instructions

Description
Instructions

Read the following instructions carefully!

The following sentences contain a misplaced or dangling modifier. Select the version of the sentence that has been correctly revised. If the original sentence is correct, select c. No change.

Multiple Attempts This Test allows multiple attempts.
Force Completion This Test can be saved and resumed later.

Collapse Question Completion Status:

1Question Incomplete 2Question Incomplete 3Question Incomplete 4Question Incomplete 5Question Incomplete 6Question Incomplete 7Question Incomplete 8Question Incomplete 9Question Incomplete 10Question Incomplete

Question 1

  1.   Due in February, the couple has started childbirth classes to get ready for the baby. Answer
    The couple, due in February, has started childbirth classes to get ready for the baby.
    The couple has started childbirth classes to get ready for the baby, who is due in February.
    No change

10 points  

Question 2

  1.   Pointing out the wonders of the universe, the audience was enthralled by the astronomer’s presentation. Answer
    Pointing out the wonders of the universe, the astronomer enthralled the audience.
    Pointing out the wonders of the universe during his presentation, the audience was enthralled by the astronomer.
    No change

10 points  

Question 3

  1.   While playing tennis with Eva, Sean’s left knee was bruised and the strings on his racket broke. Answer
    While playing tennis with Eva, the strings on Sean’s racket broke and he bruised his left knee.
    While Sean was playing tennis with Eva, he bruised his left knee and broke the strings on his racket.
    No change

10 points  

Question 4

  1.   The governor promised to cut $700 million from the state budget by reducing wasteful spending during his campaign. Answer
    By reducing wasteful spending, the governor promised to cut $700 from the state budget during his campaign.
    During his campaign, the governor promised to cut $700 million from the state budget by reducing wasteful spending.
    No change

10 points  

Question 5

  1.   As a youngster, the most enjoyable stories were the folktales my grandparents told. Answer
    As a youngster, I preferred the folktales my grandparents told to any other stories.
    As a youngster, my favorite stories were the folktales my grandparents told.
    No change

10 points  

Question 6

  1.   Because of the recession, my uncle lost almost all of his money and has little left for retirement. Answer
    Because of the recession, my uncle almost lost all of his money and has little left for retirement.
    My uncle lost all of his money almost because of the recession and has little left for his retirement.
    No change

10 points  

Question 7

  1.   When the bell rang, Carla just was a few minutes away from finishing the last essay question. Answer
    When the bell rang, Carla was just a few minutes away from finishing the last essay question.
    When the bell rang, Carla was a few minutes away from just finishing the last essay question.
    No change

10 points  

Question 8

  1.   You may stand in line for your flu shot only if you have already paid for it. Answer
    You may stand in line only for your flu shot if you have already paid for it.
    You may only stand in line for your flu shot if you have already paid for it.
    No change

10 points  

Question 9

  1.   By absorbing perspiration better than synthetic materials, wool helps you stay dry. Answer
    Absorbing perspiration better, synthetic materials do not keep you as dry as wool does.
    Helping you stay dry, synthetic materials do not absorb perspiration as well as wool.
    No change

10 points  

Question 10

  1.   Selling at less than $3 a jar, the grocer praised Classico as an alternative to more expensive pasta sauces. Answer
    The grocer praised Classico as an alternative to more expensive pasta sauces, selling at less than $3 a jar.
    The grocer praised Classico, selling at less than $3 a jar, as an alternative to more expensive pasta sauces.
    No change

10 points  

 Save and Submit

Click Save and Submit to save and submit. Click Save All Answers to save all answers. Click Close Window to close window.

Links to Test Questions and Answers
Read question 1 Read answers for question 1 Read question 2 Read answers for question 2 Read question 3 Read answers for question 3 Read question 4 Read answers for question 4 Read question 5 Read answers for question 5 Read question 6 Read answers for question 6 Read question 7 Read answers for question 7 Read question 8 Read answers for question 8 Read question 9 Read answers for question 9 Read question 10 Read answers for question 10

@font-face { font-family: Utilicons; src:url(fonts/utilicons/utilicons-web-webfont.eot); } HTML { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } APPLET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OBJECT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IFRAME { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H1 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H2 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H5 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } H6 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } P { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BLOCKQUOTE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } PRE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ABBR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ACRONYM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } ADDRESS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BIG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CITE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CODE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DFN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } EM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } INS { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } KBD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } Q { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } S { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SAMP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SMALL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRIKE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } STRONG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUB { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } SUP { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } VAR { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FIELDSET { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } FORM { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LABEL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } LEGEND { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } CAPTION { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TBODY { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TFOOT { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } THEAD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TR { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TH { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } TD { FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; OUTLINE-WIDTH: 0px; FONT-FAMILY: inherit; FONT-SIZE: 100%; FONT-WEIGHT: inherit } FONT { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; FONT-STYLE: inherit; MARGIN: 0px; OUTLINE-STYLE: none; OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; BORDER-TOP: 0px; FONT-WEIGHT: inherit; BORDER-RIGHT: 0px; PADDING-TOP: 0px } BODY { BACKGROUND: #fff } OL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } UL { LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none } TABLE { BORDER-COLLAPSE: collapse } TH { FONT-WEIGHT: normal } CAPTION { TEXT-ALIGN: left } TH { TEXT-ALIGN: left } TD { TEXT-ALIGN: left } BLOCKQUOTE:before { CONTENT: "" } BLOCKQUOTE:after { CONTENT: "" } Q:before { CONTENT: "" } Q:after { CONTENT: "" } BLOCKQUOTE { QUOTES: "" "" } Q { QUOTES: "" "" } INPUT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } BUTTON { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } SELECT { FONT-STYLE: inherit; FONT-FAMILY: inherit; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; FONT-WEIGHT: inherit } .field SELECT { MAX-WIDTH: 100% } .noLabelField SELECT { MAX-WIDTH: 100% } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px !important } .vtbegenerated IMG { FILTER: alpha(opacity=auto) !important; opacity: auto } .vtbegenerated UL { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { LIST-STYLE-TYPE: disc; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated OL { LIST-STYLE-TYPE: decimal; MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { LIST-STYLE-TYPE: inherit } .vtbegenerated LI { LIST-STYLE-POSITION: outside; DISPLAY: list-item } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL[type=circle] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type=disc] LI { LIST-STYLE-TYPE: disc } .vtbegenerated UL[type=square] LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 24px } .inlineVtbegenerated { DISPLAY: inline } .hideme { DISPLAY: none !important } .hidden { DISPLAY: none } .clearfloats { CLEAR: both } .hideoff { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; TOP: -1000px; LEFT: -10000px } .altHideoff1 { POSITION: absolute; WIDTH: 1px; HEIGHT: 1px; OVERFLOW: hidden; LEFT: -10000px } .boldme { FONT-WEIGHT: bold } .u_inlineStack { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > LI { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStackWrapper > DIV { ZOOM: 1; DISPLAY: inline-block; VERTICAL-ALIGN: top } .u_inlineStack SELECT { MAX-WIDTH: 300px } .u_resetFont { FONT-SIZE: 100% } .u_reverseAlign { TEXT-ALIGN: right } .u_centerAlign { TEXT-ALIGN: center } .u_normalAlign { TEXT-ALIGN: left } .u_floatThis-right { FLOAT: right } .u_floatThis-left { FLOAT: left } .u_floatWrapper-right > DIV { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-right > LI { FLOAT: right; MARGIN-LEFT: 5px } .u_floatWrapper-left > DIV { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LI { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left > LABEL { FLOAT: left; MARGIN-RIGHT: 5px } .u_floatWrapper-left:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_floatWrapper-right:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_controlsWrapper:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .u_clearFloatsWrapper > DIV { FLOAT: none !important } .u_clearFloatsWrapper > LI { FLOAT: none !important } .u_controlsWrapper { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .u_indent { MARGIN-LEFT: 24px !important } .u_scrollPanel-vertical { OVERFLOW-Y: auto } .u_panel-short { HEIGHT: 70px; MAX-HEIGHT: 100px } .u_panel-medium { HEIGHT: 70px; MAX-HEIGHT: 150px } .u_panel-long { HEIGHT: 70px; MAX-HEIGHT: 200px } HTML { HEIGHT: 100% } BODY { MIN-WIDTH: 1000px; HEIGHT: 100% } BODY.topFrame { OVERFLOW-Y: hidden; HEIGHT: 89px } BODY.filePicker { MIN-WIDTH: 400px } BODY.popup { MIN-WIDTH: 100% } .content-system-page { MIN-WIDTH: 780px } BODY.popup DIV.locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.csMenuFrame { MIN-WIDTH: 210px; WIDTH: 100% } BODY.popupMenu { MIN-WIDTH: 210px; WIDTH: 100% } IMG { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } H1 { FONT-WEIGHT: bold } H2 { FONT-WEIGHT: bold } H3 { FONT-WEIGHT: bold } H4 { FONT-WEIGHT: bold } H5 { FONT-WEIGHT: bold } H6 { FONT-WEIGHT: bold } STRONG { FONT-WEIGHT: bold } B { FONT-WEIGHT: bold } EM { FONT-STYLE: italic } TABLE.bouncer { WIDTH: 100% } TABLE.bouncer TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .brandingImgWrap { OVERFLOW: hidden } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { POSITION: relative; OVERFLOW-Y: hidden } .topTabs-compact { POSITION: relative } .topTabs .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs-compact .tabWrapper-center .appTabs { MARGIN: 0px auto } .topTabs .tabWrapper-right .appTabs { FLOAT: right } .topTabs-compact .tabWrapper-right .appTabs { FLOAT: right } .breadcrumbs { POSITION: relative } .locationPane { POSITION: relative; MIN-WIDTH: 100%; ZOOM: 1; DISPLAY: inline-block; OVERFLOW: visible } .navigationPane { POSITION: absolute; WIDTH: 200px; ZOOM: 1; CLEAR: both; OVERFLOW: visible; TOP: 0px; LEFT: 0px } .menuWrap { POSITION: relative; ZOOM: 1 } .contentPane { MIN-WIDTH: auto; MARGIN: 0px 14px 0px 212px; ZOOM: 1; DISPLAY: block; OVERFLOW: visible } #puller { Z-INDEX: 3; POSITION: absolute } #puller A { WIDTH: 15px; DISPLAY: block; BACKGROUND: #ccc; HEIGHT: 30px } .contcollapsed { MARGIN-LEFT: 15px } .content { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .container { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .containerPortal { MIN-WIDTH: auto; MIN-HEIGHT: 400px; ZOOM: 1; DISPLAY: block } .popup .container { MIN-HEIGHT: 400px } .container { OVERFLOW: visible } .containerOptions { OVERFLOW: visible } .column-1 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-2 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-3 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-4 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } column-5 { MARGIN: 6px 0px 0px; MIN-HEIGHT: 400px; FLOAT: left; HEIGHT: auto } .column-1 { WIDTH: 100% } .column-2 { WIDTH: 50% } .column-3 { WIDTH: 33.3% } .column-4 { WIDTH: 25% } .column-5 { WIDTH: 20% } #lightbox .column-3 { MARGIN: 0px; MIN-HEIGHT: 200px !important } #lightbox .column-2 { MARGIN: 0px; MIN-HEIGHT: 200px !important } INPUT[type='submit'].submit { FONT-WEIGHT: bold } .mainButton A { FONT-WEIGHT: bold } .actionBarMicro .mainButton A { FONT-WEIGHT: bold } .rumble .mainButton > A { FONT-WEIGHT: bold } .rumble_top .mainButton > A { FONT-WEIGHT: bold } .button-1 { FONT-WEIGHT: bold } .button-1-img { FONT-WEIGHT: bold } .modeSwitchWrap { TOP: 6px; RIGHT: 0px; LEFT: auto } .modeSwitchWrap DIV { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .modeSwitch { POSITION: relative; DISPLAY: block; OVERFLOW: hidden } .read-on { MARGIN-RIGHT: 0px } A.read-off IMG { POSITION: absolute; BOTTOM: 0px; LEFT: 0px } A.read-on IMG { POSITION: absolute; BOTTOM: 0px; RIGHT: 0px } .switcherLabel { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .helpLink { POSITION: relative; TOP: 1px } .helpLink A.browseIcon { DISPLAY: inline-block } .vtbeSwitch { POSITION: relative; FLOAT: right } .vtbeSwitch SPAN { DISPLAY: inline-block } .fileInputWrapper { POSITION: relative; FLOAT: left; OVERFLOW: hidden } .fileInputWrapper INPUT.hiddenInput { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: right; FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 210%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px; opacity: 0 } .fileInputWrapper INPUT[type='file'] { FILTER: alpha(opacity=0) !important } .fileInputWrapper INPUT.visibleInput { Z-INDEX: 1; POSITION: relative; TOP: 0px; RIGHT: 0px } .frameResizeToggle { POSITION: absolute; BOTTOM: 0px; DISPLAY: block; OVERFLOW: hidden; LEFT: 0px; _top: 68px } A.colorChip { DISPLAY: inline-block } A.colorChip SPAN { DISPLAY: inline-block } .clearfix:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfixParent > *:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .clearfix { DISPLAY: block } .clearfixParent > * { DISPLAY: block } INPUT[type='button'] { } INPUT[type='submit'] { } BUTTON { } FORM#content { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } .reorder { POSITION: absolute; CURSOR: move } .contextMenuContainer { ZOOM: 1 } .gbtable .contextMenuContainer { DISPLAY: inline } .gbtable_header .contextMenuContainer { DISPLAY: inline } .gbtable_header TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } .gbtable THEAD TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px !important; PADDING-LEFT: 2px !important; PADDING-RIGHT: 1px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px !important } A.cmimg { ZOOM: 1 } HTML { FONT: 300 0.78em "Lucida Grande", Arial, sans-serif } H1 { FONT-SIZE: 148% } H2 { FONT-SIZE: 123.1% } H3 { FONT-SIZE: 110% } H1 { MARGIN: 1em 0px } H2 { MARGIN: 1em 0px } H3 { MARGIN: 1em 0px } A { COLOR: #128fa8; TEXT-DECORATION: none } A:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } TABLE { FONT-SIZE: 100% } THEAD TH { FONT-WEIGHT: bold } #contentFrame { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } #schemePreview { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY { BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px } BODY.topFrame { BACKGROUND: #f7f7f7 } BODY.login-page { POSITION: relative; MIN-HEIGHT: 800px } BODY.popup { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } BODY.csMenuFrame { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } BODY.popupMenu { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -1px 0 1px #F9F9F9 inset; -webkit-box-shadow: -1px 0 1px #F9F9F9 inset; -moz-border-radius: 0; -webkit-border-radius: 0 } .csMenuFrame { FONT-SIZE: 95% } BODY.my-places-popup { MIN-WIDTH: 300px; WIDTH: auto; BACKGROUND: #fff } BODY.external-breadcrumbs { BACKGROUND-IMAGE: none } BODY.picker { MIN-WIDTH: 400px; BACKGROUND: #fff } .breadcrumbs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 9px; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .locationPane { MARGIN-TOP: 12px } BODY.picker .locationPane { MARGIN: 0px; DISPLAY: block } .csPicker .locationPane { DISPLAY: block } .navigationPane { MARGIN: 0px; WIDTH: 210px; TOP: 0px; LEFT: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .menuWrap { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .contentPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px 0px 222px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portalPane { PADDING-BOTTOM: 0px; MARGIN: 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .popup .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .picker .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .course-tools-page #listContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 0px } .picker .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } .popup .container { PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 12px } #puller { Z-INDEX: 3; POSITION: absolute; BOTTOM: 1px; TOP: -1px; RIGHT: -8px; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A { BORDER-BOTTOM: #777 1px solid; POSITION: relative; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 8px; BACKGROUND: url(images/reorder_bg.png) #bbb repeat-y; HEIGHT: 100%; OVERFLOW: visible; BORDER-TOP: #777 1px solid; BORDER-RIGHT: #777 1px solid; opacity: 0; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0; box-shadow: 1px 0 3px rgba(0, 0, 0, 0.4) inset } .menuWrap:hover #puller A { FILTER: alpha(opacity=100); opacity: 1; -webkit-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #puller A:after { BORDER-BOTTOM: #666 1px solid; POSITION: absolute; FILTER: alpha(opacity=0) !important; BORDER-LEFT: #666 0px solid; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1; BACKGROUND-COLOR: #777; PADDING-LEFT: 1px; PADDING-RIGHT: 6px; DISPLAY: none !important; COLOR: #fff; FONT-SIZE: 180%; BORDER-TOP: #666 1px solid; CONTENT: "\2190"; TOP: 200px; RIGHT: -30px; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 3px; opacity: 0; -webkit-transition: opacity .5s ease-in-out; -moz-transition: opacity .5s ease-in-out; border-radius: 0 12px 12px 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, .5); transition: opacity .5s ease-in-out } .pullcollapsed#puller A { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #00add0; opacity: 1 } #puller A:hover { BACKGROUND-COLOR: #777 } #puller A IMG { POSITION: relative; FILTER: alpha(opacity=0)\9; PADDING-BOTTOM: 3px; PADDING-LEFT: 1px; WIDTH: 12px; PADDING-RIGHT: 6px; BACKGROUND: url(images/menu_expand_rtl.gif) no-repeat 0px 0px; HEIGHT: 24px; TOP: 200px; RIGHT: -9px; PADDING-TOP: 3px } .pullcollapsed#puller A:hover { BACKGROUND-COLOR: #777; -webkit-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: background-color 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller A:after { CONTENT: "\2192"; opacity: 0 } .pullcollapsed#puller A:hover:after { opacity: 1 } #puller A:hover:after { opacity: 1 } .pullcollapsed#puller A:hover IMG { FILTER: alpha(opacity=100) } #puller A:hover IMG { FILTER: alpha(opacity=100) } .pullcollapsed#puller A:hover IMG { BACKGROUND: url(images/menu_collapse_rtl.gif) no-repeat 0px 0px } .navcollapsed { MARGIN-LEFT: -210px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .pullcollapsed#puller { RIGHT: -10px; opacity: 1; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navcollapsed .menuWrap { DISPLAY: block !important } .contcollapsed { MARGIN-LEFT: 12px; -webkit-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: margin-left 300ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #topFrame { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .bgBanner { BACKGROUND-COLOR: #555; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 0px; COLOR: #ccc } .brandingImgWrap { HEIGHT: 46px } .brandingImgWrap A { MARGIN: 8px 12px 0px; DISPLAY: inline-block } .bannerImage { MAX-HEIGHT: 35px } .topTabs-compact .bannerImage { DISPLAY: none } .topTabs-compact .brandingImgWrap { DISPLAY: none } .topTabs { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #555; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 89px; PADDING-TOP: 0px; -moz-box-shadow: 0 -6px 17px #333 inset; -webkit-box-shadow: 0 -6px 17px #333 inset } .topTabs-compact { HEIGHT: 47px } .tabWrapper-left { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-center { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .tabWrapper-right { PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: auto; PADDING-RIGHT: 28px; PADDING-TOP: 0px } .appTabs { POSITION: relative; WIDTH: auto } .topTabs-compact .tabWrapper-left { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-center { PADDING-TOP: 20px } .topTabs-compact .tabWrapper-right { PADDING-TOP: 20px } #topTab { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A { Z-INDEX: 100; BORDER-BOTTOM: transparent 0px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 19px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; DISPLAY: block; WHITE-SPACE: nowrap; COLOR: #efefef; FONT-SIZE: 110%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; TEXT-DECORATION: none; PADDING-TOP: 10px; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .appTabs A SPAN { BORDER-BOTTOM: transparent 1px dotted; PADDING-BOTTOM: 1px } .topTabs-compact .appTabs A SPAN { PADDING-BOTTOM: 0px } .appTabs A:hover { COLOR: #fff } .appTabs A:focus { COLOR: #fff } .appTabs A:hover SPAN { BORDER-BOTTOM: #fff 1px double } .appTabs A:focus SPAN { BORDER-BOTTOM: #fff 1px double } #topTabActive { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:hover { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A:focus { Z-INDEX: 1000; COLOR: #fff4bf; FONT-WEIGHT: bold; text-shadow: 0 0 6px #000 } .appTabs .active A SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:hover SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active A:focus SPAN { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .toppTabs-compact .appTabs .active A:hover .hideoff { Z-INDEX: 100; BORDER-BOTTOM: #efede3 14px solid; BORDER-LEFT: transparent 14px solid; LINE-HEIGHT: 0; BOTTOM: 0px; COLOR: transparent; MARGIN-LEFT: -14px; FONT-SIZE: 0px; BORDER-TOP: 0px; TOP: auto; BORDER-RIGHT: transparent 14px solid; LEFT: 50% } .topTabs-compact .appTabs .active .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs .active A:hover .hideoff { BORDER-RIGHT-WIDTH: 8px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 8px; MARGIN-LEFT: -8px; BORDER-LEFT-WIDTH: 8px } .topTabs-compact .appTabs A { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:hover { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .topTabs-compact .appTabs .active A:focus { PADDING-BOTTOM: 0.7em; PADDING-LEFT: 1em; PADDING-RIGHT: 1em; FONT-SIZE: 95%; PADDING-TOP: 0.4em } .round1 A { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .round2 A { -moz-border-radius: 12px 12px 0 0; -webkit-border-radius: 12px 12px 0 0; border-radius: 12px 12px 0 0 } .topGlobalLinks { TEXT-ALIGN: right; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); FLOAT: right; FONT-SIZE: 90%; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .topGlobalLinks UL { Z-INDEX: 1001 } .topGlobalLinks UL LI { MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; COLOR: #ccc } .loggedInAs { POSITION: relative; FONT: italic 100% Georgia; COLOR: #999; BORDER-TOP: 0px } .loggedInAs IMG { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; WIDTH: 18px !important; PADDING-RIGHT: 1px; DISPLAY: inline-block; HEIGHT: 18px !important; TOP: -2px; RIGHT: -9px; PADDING-TOP: 1px; LEFT: auto } .loggedInAs SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: inline-block; PADDING-TOP: 6px } .topGlobalLinks A { BACKGROUND-IMAGE: none !important; MIN-WIDTH: 18px; TEXT-ALIGN: left; PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline-block; COLOR: #ccc; PADDING-TOP: 6px } .topGlobalLinks UL LI:first-child A { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks UL LI:first-child { -moz-border-radius: 0 0 0 3px; -webkit-border-radius: 0 0 0 3px } .topGlobalLinks A .link-icon { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); WIDTH: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; FLOAT: right; HEIGHT: 16px; OVERFLOW: hidden } .topGlobalLinks .myPlaces .link-icon { BACKGROUND-POSITION: -113px 0px } .topGlobalLinks .myPlaces:hover .link-icon { BACKGROUND-POSITION: -113px -16px } .topGlobalLinks .home .link-icon { BACKGROUND-POSITION: -129px 0px } .topGlobalLinks .home:hover .link-icon { BACKGROUND-POSITION: -129px -16px } .topGlobalLinks .logout .link-icon { DISPLAY: none } .topGlobalLinks .logout { PADDING-BOTTOM: 6px; TEXT-INDENT: 0px; PADDING-LEFT: 9px; WIDTH: auto !important; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .topGlobalLinks .help .link-icon { BACKGROUND-POSITION: -145px 0px } .topGlobalLinks .help:hover .link-icon { BACKGROUND-POSITION: -145px -16px } .topGlobalLinks A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topGlobalLinks A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#44000000,endColorstr=#44000000); COLOR: #eee } .topTabs-compact .loggedInAs SPAN { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks A { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .topGlobalLinks .logout { PADDING-BOTTOM: 0px; PADDING-TOP: 0px } UL.nav LI.sub UL.narrow LI A { TEXT-INDENT: -5px; FONT-SIZE: 90% } .hotItems { Z-INDEX: 10000; POSITION: relative; WIDTH: 240px; FLOAT: right; HEIGHT: 28px; COLOR: #666; MARGIN-LEFT: 6px; FONT-SIZE: 90% } .topTabs-compact .hotItems { DISPLAY: none } .hotItems .hotLinks { POSITION: absolute; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#33000000,endColorstr=#33000000); PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; MAX-HEIGHT: 46px; OVERFLOW: auto; RIGHT: 0px; PADDING-TOP: 4px; LEFT: 0px; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; border-radius: 0 0 0 4px } .hotItems .hotLinks LI { DISPLAY: inline } .hotItems .hotLinks A { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT: italic 100% Georgia; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; TEXT-DECORATION: none; PADDING-TOP: 3px } .hotItems .hotLinks LI:after { POSITION: relative; COLOR: #999; CONTENT: "\2022"; RIGHT: 1px } .hotItems .hotLinks LI A:hover { COLOR: #eee; TEXT-DECORATION: underline } .path { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 4px } .breadcrumbs .noToggle { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .simplePath LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BACKGROUND: url(images/indicators.png) no-repeat 100% 50%; COLOR: #333; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .path .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .simplePath .placeholder { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .path .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .simplePath .label { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #444; FONT-WEIGHT: normal; PADDING-TOP: 0px } .path A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .simplePath A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 0px } .path A:hover { COLOR: #333; TEXT-DECORATION: underline } .simplePath A:hover { COLOR: #333; TEXT-DECORATION: underline } .path .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .simplePath .root { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 13px; MARGIN: -12px 6px -13px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 13px } .path .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .simplePath .root A { VERTICAL-ALIGN: baseline; FONT-WEIGHT: bold; TEXT-DECORATION: none } .path .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='course_id'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='admin'] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .simplePath .root A[href*='tabId='] { WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: transparent; VERTICAL-ALIGN: middle; OVERFLOW: hidden } .path .root A[href*='course_id']:before { CONTENT: "H" } .simplePath .root A[href*='course_id']:before { CONTENT: "H" } .path .root A[href*='admin']:before { CONTENT: "S" } .simplePath .root A[href*='admin']:before { CONTENT: "S" } .path .root A[href*='tabId=']:before { CONTENT: "m" } .simplePath .root A[href*='tabId=']:before { CONTENT: "m" } .path .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .simplePath .button { PADDING-BOTTOM: 0px; MARGIN: 0px 8px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .path .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .simplePath .root A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #aaa; FONT-SIZE: 20px; TOP: -2px; FONT-WEIGHT: normal } .path .root A:hover:before { COLOR: #888 } .simplePath .root A:hover:before { COLOR: #888 } .path .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .simplePath .button A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .path LI.contextPath { PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contextPath > DIV { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath > DIV:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px; opacity: .6 } .contextPath:hover > DIV { opacity: 1 } .contextPath:hover > DIV:hover { opacity: 1 } .contextPath A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .courseArrow A.cmimg { DISPLAY: inline-block; BACKGROUND-POSITION: -28px -124px; HEIGHT: 16px; VERTICAL-ALIGN: middle } .contextPath A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .contextPath A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:hover { BACKGROUND-POSITION: -28px -142px } .courseArrow A.cmimg:focus { BACKGROUND-POSITION: -28px -142px } .courseArrow { DISPLAY: inline-block } .courseArrow A { DISPLAY: inline-block } .coursePath:hover .courseArrow { opacity: 1 } .banner + .breadcrumbs { BACKGROUND-COLOR: inherit; MARGIN: 0px } .breadcrumb-controls { FLOAT: right } .content { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #contentArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } #schemePreviewBody { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .contentBox { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px } .popup .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .picker .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: none; border-radius: 0 } .portal .contentBox { -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15) } #contentArea { MARGIN: 0px; COLOR: #444 } .container { MARGIN: 0px; COLOR: #444 } .containerOptions { MARGIN: 0px; COLOR: #444 } .containerPortal { MARGIN: 0px; COLOR: #444 } .containerPortal { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .portal .container { MIN-WIDTH: 600px; PADDING-BOTTOM: 18px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .containerOptions .searchbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } .containerOptions .liveArea { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } #addFolderForm { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 21px; PADDING-RIGHT: 21px; BACKGROUND: #dfdfdf; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #FFF inset; -webkit-box-shadow: 1px 0 0 #FFF inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #FFF inset; border-radius: 0 } DIV.okContainer { POSITION: relative; PADDING-BOTTOM: 60px } DIV.ok DIV.container { POSITION: relative; PADDING-BOTTOM: 60px } .collabContainer { POSITION: relative; PADDING-BOTTOM: 60px } .column-1 { MARGIN: 6px 0px 0px } .column-2 { MARGIN: 6px 0px 0px } .column-3 { MARGIN: 6px 0px 0px } .column-4 { MARGIN: 6px 0px 0px } .column-5 { MARGIN: 6px 0px 0px } .leftColumn-narrow { MARGIN: -20px 0px 0px -30px; WIDTH: 22%; FLOAT: left; OVERFLOW: auto; BORDER-RIGHT: #ccc 3px double } .picker .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .picker #bb-question-discover .leftColumn-narrow { MARGIN: -12px 0px 0px -20px; WIDTH: 25% } .rightColumn-narrow { WIDTH: 22%; FLOAT: right; MARGIN-LEFT: 1% } .rightColumn-wide { WIDTH: 74%; FLOAT: right } .leftColumn-wide { BORDER-LEFT: #ccc 3px double; WIDTH: 76%; FLOAT: left; MARGIN-LEFT: -3px } .picker .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker #bb-question-discover .leftColumn-wide { MARGIN-TOP: -12px; MIN-HEIGHT: 430px; WIDTH: 76% } .picker .leftColumn-wide H1 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #bb-question-discover .leftColumn-wide { BORDER-LEFT: #ccc 3px double; MARGIN: -20px -20px 0px -3px; WIDTH: 80% } #bb-question-discover .leftColumn-wide + .leftColumn-wide { BORDER-LEFT: medium none; MARGIN: 0px; WIDTH: auto } #bb-question-discover .leftColumn-narrow { WIDTH: 24% } .leftColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .rightColumn-narrow H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .leftColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .rightColumn-narrow H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .columnPalette H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 0px } .leftColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .rightColumn-narrow A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } A.itemHead { PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; TEXT-DECORATION: none; PADDING-TOP: 6px; text-shadow: 0 1px 0 #F9F9F9 } .leftColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } .rightColumn-narrow A.itemHead:hover { TEXT-DECORATION: underline } A.itemHead:hover { TEXT-DECORATION: underline } .leftColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .rightColumn-narrow A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } A.itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px } .leftColumn-narrow H3.hideoff { MARGIN: 0px } .leftColumn-narrow .columnPalette:first-child { BORDER-TOP: 0px } .paletteGroup { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .columnPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .paletteGroup DIV.columnPalette { BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .paletteItems { MARGIN: 0px 0px 4px; FONT-SIZE: 95% } .paletteItems LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 16px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } .paletteItems DIV { MARGIN: 0px 0px 0px 16px } #searchForm .paletteItems LI { MARGIN: 0px 0px 0px 24px } .paletteItems LI A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 110%; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .paletteItems LI LABEL { PADDING-LEFT: 21px; DISPLAY: inline-block } .picker .paletteItems LI LABEL { FONT-SIZE: 94% } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } UL.paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI:hover { BACKGROUND: #fff } .paletteItems LI A:hover { TEXT-DECORATION: underline } .paletteItems LI.selectedItem { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.selectedItem:hover { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active { BACKGROUND: #fff4bf; COLOR: #000 } .paletteItems LI.active:hover { BACKGROUND: #fff4bf; COLOR: #000 } .columnActions UL LI A { DISPLAY: block } #copyright { POSITION: relative; MARGIN: 16px 0px 0px 9px; DISPLAY: inline-block; FONT-SIZE: 82% } .newCopyright { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 12px; PADDING-TOP: 20px } .logo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .legal { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .additionalInfo { PADDING-BOTTOM: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .productTitle { PADDING-BOTTOM: 0px; MIN-HEIGHT: auto; PADDING-LEFT: 9px; PADDING-RIGHT: 12px; PADDING-TOP: 9px } .logo { POSITION: absolute; MARGIN-TOP: -20px; LEFT: 0px } .logo IMG { WIDTH: 45px } .additionalInfo { FLOAT: none } .legal P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P { MARGIN: 0px; DISPLAY: inline-block } .additionalInfo P:first-child { PADDING-BOTTOM: 0px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } .additionalInfo P:first-child:after { POSITION: relative; COLOR: #ccc; CONTENT: "\2022"; RIGHT: -1px } .additionalInfo P:first-child A { PADDING-RIGHT: 12px } .additionalInfo P:first-child A:hover { BACKGROUND: url(images/micro_popup.png) no-repeat right 2px } .productTitle A { TEXT-ALIGN: right; LINE-HEIGHT: 1.1em; DISPLAY: block; COLOR: #333; FONT-SIZE: 125%; FONT-WEIGHT: bold; TEXT-DECORATION: none } .productTitle A:hover { TEXT-DECORATION: underline } .additionalInfo A:hover { TEXT-DECORATION: underline } .copyrightDetailContents { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #777; MARGIN: 0px; MIN-HEIGHT: 5em; PADDING-LEFT: 24px; WIDTH: 740px; PADDING-RIGHT: 24px; DISPLAY: none; COLOR: #fff; CLEAR: left; BORDER-TOP: #555 1px solid; TOP: 0px; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 12px; LEFT: 0px; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 2px 2px 12px rgba(0, 0, 0, 0.4) inset, 2px 2px rgba(255, 255, 255, 0.6); border-radius: 3px } .productImg { MARGIN-TOP: 5px; FLOAT: left } .copyrightDetailContents UL { TEXT-ALIGN: left; MARGIN: 4px 0px 0px 24px; FLOAT: left } .copyrightDetailContents UL LI SPAN { FONT-WEIGHT: bold } A.closeCopyright { POSITION: relative; FLOAT: right; TOP: -5px; RIGHT: -16px } .contentBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 1em; MARGIN: 0px 1em 0.6em; PADDING-LEFT: 1.4em; PADDING-RIGHT: 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0.6em } .contentBlock H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; MARGIN: 0px 0px 1em; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .contentBlock UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentBlock UL.threeCol { WIDTH: 30%; FLOAT: left } .contentBlock UL.threeCol LI { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px 3px; FLOAT: none; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .contentBlock UL.threeCol LI A { BACKGROUND-IMAGE: none } .contentBlock UL.threeCol LI A:hover { TEXT-DECORATION: underline } .contentBlock UL.threeCol LI A:focus { TEXT-DECORATION: underline } .contentBlock H3 INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock H3 SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock INPUT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock SELECT { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; MARGIN-LEFT: 6px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 1px } .contentBlock OL LI INPUT[type='checkbox'] { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .contentBlock H3 A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock A.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } .contentBlock INPUT.browse { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #aaa 1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px } DIV.landingListWrapper { TEXT-ALIGN: center; MARGIN: 1.6em 0px 0px } DIV.landingListWrapper UL.landingList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 90%; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI { TEXT-ALIGN: left; MARGIN: 0px 0px 1.6em; WIDTH: 50% } DIV.landingListWrapper UL.landingList-2cols LI { TEXT-ALIGN: left; MARGIN: 0px 3em 1.6em 0px; WIDTH: 45%; FLOAT: left } DIV.landingListWrapper UL.landingList LI.restart { MARGIN-TOP: -13.6em } DIV.landingListWrapper UL.landingList LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList-2cols LI A { TEXT-DECORATION: none } DIV.landingListWrapper UL.landingList LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:hover { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList-2cols LI A:focus { TEXT-DECORATION: underline } DIV.landingListWrapper UL.landingList LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 1.4em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList LI UL { LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em } DIV.landingListWrapper UL.landingList LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; CLEAR: left; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList-2cols LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #000; PADDING-TOP: 0px } DIV.landingListWrapper UL.landingList LI H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } DIV.landingListWrapper UL.landingList-2cols H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 1.2em; PADDING-RIGHT: 1.2em; BACKGROUND: url(images/indicators.png) no-repeat 0px 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .containerLanding { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } DIV.landing DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } BODY.landingBody DIV.container { PADDING-BOTTOM: 12px; MARGIN: 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 10px } .inst-email DIV.landing DIV.container { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } DIV.landingPageColumn { PADDING-BOTTOM: 0px; MARGIN: 1.2em 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .twoCol { MARGIN: 1.2em 0px; WIDTH: 49% } .threeCol { MARGIN: 1.2em 0px; WIDTH: 32.5% } .landingPageColumn UL { MARGIN: 0px 0px 0px 30px } .landingPageColumn .outcomesLanding { PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI { TEXT-ALIGN: left; MARGIN: 0px 0px 2.2em } .inst-email .landingPageColumn UL LI { MARGIN: 0px } .landingPageColumn .outcomesLanding LI { MARGIN: 0px 0px 1.2em } .landingPageColumn UL LI A { TEXT-DECORATION: none } .landingPageColumn UL LI A:hover { TEXT-DECORATION: underline } .landingPageColumn H3 { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI H3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 115%; PADDING-TOP: 0.4em } .landingPageColumn .outcomesLanding LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } .landingPageColumn .outcomesLanding LI P { BORDER-TOP: 0px } .landingPageColumn H3 IMG { MARGIN: 0px 0px 0px -12px } .landingPageColumn H3.hiddenlink IMG { POSITION: absolute; FILTER: alpha(opacity=40); TOP: 0px; LEFT: 1.1em; opacity: .4 } .landingPageColumn UL LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: square; MARGIN: 0px 0.4em 0.4em 0.8em; PADDING-LEFT: 1.6em; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn UL LI UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; COLOR: #555; PADDING-TOP: 1px } .landingPageColumn UL LI UL LI.more { PADDING-TOP: 3px } .landingPageColumn UL LI UL LI.more A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; COLOR: #555; PADDING-TOP: 0px } .landingPageColumn UL LI P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .landingPageColumn H3.hiddenlink { POSITION: relative; PADDING-BOTTOM: 0.6em; PADDING-LEFT: 4.2em; PADDING-RIGHT: 1.2em; PADDING-TOP: 1em } .landingPageColumn H3.hiddenlink A { COLOR: #777; TEXT-DECORATION: none } .landingPageColumn H3.hiddenlink A:hover { COLOR: #777; TEXT-DECORATION: none } .subhead_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #333; FONT-SIZE: 90%; PADDING-TOP: 0px } .list_text { PADDING-BOTTOM: 2px; PADDING-LEFT: 1.3em; PADDING-RIGHT: 2px; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .landingPageColumn .outcomesLanding .list_text A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 3px; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; HEIGHT: 360px; OVERFLOW: auto; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.datalist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BACKGROUND-COLOR: white; MARGIN: 0.4em 0px 0.4em 1.4em; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } DIV.landingPageColumn UL LI UL.datalistScroll { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 250px; OVERFLOW: auto; BORDER-TOP: medium none; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.datalistScroll LI { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: white; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.datalistScroll LI:hover { BACKGROUND-COLOR: #ffc } DIV.landingPageColumn UL LI UL.datalistScroll LI:focus { BACKGROUND-COLOR: #ffc } DIV.datalist TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } DIV.datalistScroll TABLE THEAD TR TH { BACKGROUND-COLOR: #aaa; COLOR: #fff } .emptylist { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 12px; BACKGROUND-COLOR: white; MARGIN: 6px 0px 0px 1.4em; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 12px } DIV.landingPageColumn UL LI UL.subcaret { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.4em 0px 0.4em 1.4em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px } DIV.landingPageColumn UL LI UL.subcaret LI { PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.complete { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_complete_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } DIV.landingPageColumn UL LI UL.subcaret LI.inprogress { PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 1px; BACKGROUND: url(/images/ci/icons/workflow_detail_active_ti.gif) white no-repeat 2px 2px; PADDING-TOP: 2px } .iconLegendLabel { MARGIN: 1px 0px 1px 1.6em; FONT-SIZE: 95% } DIV.landingPageColumn UL LI UL.subcaret LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI UL.datalist LI A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI DIV A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI TABLE A { TEXT-DECORATION: underline } DIV.landingPageColumn UL LI P A { TEXT-DECORATION: underline } .genericButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .genericButtonImg { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browse { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .browseIcon { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } INPUT[type='submit'].submit { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .rumble_top A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paging A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .itemHeaderControl A { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .actionMenuButton { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-1-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-2-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-3-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .paletteSearch .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } H3#cs_search + UL DIV.none:first-child .button-4 { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; VERTICAL-ALIGN: middle; TEXT-DECORATION: none; PADDING-TOP: 6px } .mainButton H2 { MARGIN: 0px; FONT-SIZE: 100% } .secondaryButton H2 { MARGIN: 0px; FONT-SIZE: 100% } #primaryButton { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .rumble_top .mainButton > A { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1 { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } .button-1-img { BORDER-BOTTOM: #057c93 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00add0,endColorstr=#0188A3); BORDER-LEFT: #057c93 1px solid; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 105%; BORDER-TOP: #057c93 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #057c93 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.8) } INPUT[type='submit'].submit:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .rumble_top .mainButton > A:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } .button-1-img:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#0188A3,endColorstr=#0188A3); BACKGROUND: #0188a3; -moz-box-shadow: none; -webkit-box-shadow: none } #secondaryButton { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2 { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .button-2-img { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } #secondaryButton { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .button-2-img:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .sub A IMG { MARGIN: -2px -4px 0px 0px } .sub .button-1 IMG { MARGIN: -2px -4px 0px 0px } .sub .button-2 IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton A IMG { MARGIN: -2px -4px 0px 0px } .secondaryButton .button-2 IMG { MARGIN: -2px -4px 0px 0px } .mainButton A { DISPLAY: block } .secondaryButton A { DISPLAY: block } .actionBar .button-1 { DISPLAY: block } .actionBar .button-2 { DISPLAY: block } .mainButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#555555); PADDING-BOTTOM: 13px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #e9e9e9; FONT-SIZE: 105%; TEXT-DECORATION: none; PADDING-TOP: 12px; text-shadow: 0 -1px 0 #000 } .mainButton > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .mainButton H2 > A { BORDER-LEFT: transparent 1px solid; BORDER-RIGHT: #595959 1px solid } .secondaryButton > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .secondaryButton H2 > A { BORDER-LEFT: #595959 1px solid; MARGIN: 0px; BORDER-RIGHT: transparent 1px solid } .sub.mainButton A { PADDING-RIGHT: 12px } .sub.secondaryButton A { PADDING-RIGHT: 12px } .mainButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:hover { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:hover H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton H2 > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .secondaryButton > A:focus { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } LI.mainButton:focus H2 > A { BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 !important; BACKGROUND: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #333 !important; BORDER-LEFT-COLOR: #333 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; text-shadow: 0 -1px 0 #000 } .mainButton > A { FONT-WEIGHT: 600 } .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 30px } .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 30px } .popup .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .popup .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child H2 > A { PADDING-LEFT: 18px } .picker .actionBar LI.mainButton:first-child > A { PADDING-LEFT: 18px } .genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .genericButtonImg { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } INPUT[type='submit'].genericButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browse { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .browseIcon { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top H3 + UL > LI > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .paging A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .itemHeaderControl > A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .actionMenuButton { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-3-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } #toolsSearchBox + .button-4 { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .treeContainer .tree LI A.button-4-img { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .threadButtons .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .dbThreadInfo .reply { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .rumble_top A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f9f9f9,endColorstr=#dedede); BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: inline-block; BACKGROUND-POSITION: -10px -10px; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px; -webkit-border-radius: 2px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3) inset; text-shadow: 0 1px 0 #eee } .containerOptions INPUT.genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-2 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-3 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT.button-4 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .containerOptions INPUT[type='submit'].button-1 { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'] { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='text'] + INPUT[type='submit'].submit { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } INPUT[type='button'].genericButton { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 3px } .genericButtonImg { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-3-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .itemHeaderControl A { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .browseIcon { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .treeContainer .tree LI A.button-4-img { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .genericButtonImg { DISPLAY: inline-block !important } INPUT[type='submit'].genericButton { FONT-WEIGHT: bold } .button-3 { FONT-WEIGHT: bold } .searchbar INPUT[type='submit'].genericButton { FONT-WEIGHT: normal } .u_reverseAlign#editGradeActionList A.genericButton { DISPLAY: inline-block; MARGIN-BOTTOM: 5px } .genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .genericButtonImg:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browse:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .browseIcon:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } INPUT[type='submit'].genericButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top H3 + UL > LI > A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .paging A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .itemHeaderControl A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .actionMenuButton:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-3-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .navPaletteContent UL LI:first-child .paletteSearch .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } H3#cs_search + UL DIV.none:first-child .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } #toolsSearchBox + .button-4:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .treeContainer .tree LI A.button-4-img:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .threadButtons .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .dbThreadInfo .reply:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:hover { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .rumble_top A:focus { BORDER-BOTTOM-COLOR: #888; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f0f0f0,endColorstr=#f0f0f0); BORDER-TOP-COLOR: #888; COLOR: #000; BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; TEXT-DECORATION: none !important; box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.15) } .button-4-img.contextArrow:hover { box-shadow: none } .button-4-img.contextArrow:focus { box-shadow: none } .paletteSearch .button-4:hover { BACKGROUND-IMAGE: none !important } .paletteSearch .button-4:focus { BACKGROUND-IMAGE: none !important } .button-5 { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5-img { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; DISPLAY: inline-block; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .button-5:hover { BACKGROUND: #ededed; COLOR: black } .button-5-img:hover { BACKGROUND: #ededed; COLOR: black } .button-6 { TEXT-DECORATION: none } .mainButton A.disabled { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .mainButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .secondaryButton A.disabled:focus { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #ccc; CURSOR: not-allowed } .rumble A { DISPLAY: block } .rumble_top A { DISPLAY: block } .rumble .sub A IMG { MARGIN: -2px -1px 0px 3px } .rumble_top .sub A IMG { MARGIN: -2px -1px 0px 3px } .paging A { DISPLAY: inline-block } .rumble_top .inventory_paging .gotolink { DISPLAY: inline-block } .rumble .inventory_paging .gotolink { DISPLAY: inline-block } .listItemSelect { MARGIN: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #555 } #threadArea .listItemSelect { MARGIN: 0px } .rumble_top .listItemSelect { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 4px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .listItemSelect { PADDING-BOTTOM: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 32px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .rumble .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble_top .listItemSelect A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: underline; PADDING-TOP: 0px } .rumble .listItemSelect A:hover { TEXT-DECORATION: none } .rumble_top .listItemSelect A:hover { TEXT-DECORATION: none } .listItemSelect LABEL { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline; PADDING-TOP: 0px } .listItemSelect SELECT { FONT-SIZE: 95% } INPUT.calcButton { MARGIN: 2px 0px; WIDTH: 2em; DISPLAY: inline-block } INPUT#width { WIDTH: 5em } INPUT#height { WIDTH: 5em } SELECT#border { WIDTH: 5em } SELECT#controls { WIDTH: 5em } .smallControls INPUT[type='text'].width { WIDTH: 5em } .smallControls INPUT[type='text'].height { WIDTH: 5em } .smallControls SELECT.quality { WIDTH: auto } .smallControls SELECT.controls { WIDTH: auto } .smallControls SELECT.border { WIDTH: auto } .actionBarMicro .mainButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .secondaryButton > A { PADDING-BOTTOM: 6px; LINE-HEIGHT: 1; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .actionBarMicro .mainButton A IMG { MARGIN: 0px } .actionBarMicro .secondaryButton A IMG { MARGIN: 0px } .actionBarMicro A SPAN IMG { VISIBILITY: hidden } .actionBar A SPAN IMG { VISIBILITY: hidden } .actionBarMicro .access-reorder { -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .actionBarMicro A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBar A SPAN { BACKGROUND-IMAGE: url(images/utilicons_sprite_rev.png); LINE-HEIGHT: 0; WIDTH: 16px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; HEIGHT: 16px; VERTICAL-ALIGN: bottom; OVERFLOW: hidden } .actionBarMicro #quickViewLink A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #shortcutView A SPAN { BACKGROUND-POSITION: 0px 0px } .actionBarMicro #quickViewLink A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#quickViewLink A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #shortcutView A:hover SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro .active#shortcutView A SPAN { BACKGROUND-POSITION: 0px -16px } .actionBarMicro #addCmItem > A SPAN { BACKGROUND-POSITION: -16px 0px } .actionBarMicro #detailViewLink2 UL LI A { WIDTH: 90px } .actionBarMicro #addCmItem:hover > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro .active#addCmItem > A SPAN { BACKGROUND-POSITION: -16px -16px } .actionBarMicro #detailViewLink A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #folderView A SPAN { BACKGROUND-POSITION: -32px 0px } .actionBarMicro #detailViewLink A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #detailViewLink2 A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#detailViewLink2 A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #folderView A:hover SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro .active#folderView A SPAN { BACKGROUND-POSITION: -32px -16px } .actionBarMicro #courseMapButton A SPAN { BACKGROUND-POSITION: -48px 0px } .actionBarMicro #courseMapButton A:hover SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro .active#courseMapButton A SPAN { BACKGROUND-POSITION: -48px -16px } .actionBarMicro #refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshView A SPAN { BACKGROUND-POSITION: -64px 0px } .actionBarMicro #refreshMenuLink A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshMenuLink A SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro #refreshView A:hover SPAN { BACKGROUND-POSITION: -64px -16px } .actionBarMicro .active#refreshView A SPAN { BACKGROUND-POSITION: -64px -16px } A.access-reorder SPAN { BACKGROUND-POSITION: -80px 0px } A.access-reorder:hover SPAN { BACKGROUND-POSITION: -80px -16px } A.active.access-reorder SPAN { BACKGROUND-POSITION: -80px -16px } .actionBar .sub A .chevron { BACKGROUND-POSITION: -95px 0px } .actionBar .sub:hover A .chevron { BACKGROUND-POSITION: -95px -16px } .actionBar .sub A:focus .chevron { BACKGROUND-POSITION: -95px -16px } .actionBarMicro .active > A { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:hover { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:focus { POSITION: relative; BORDER-BOTTOM-COLOR: #444 !important; BORDER-TOP-COLOR: #444 !important; BORDER-RIGHT-COLOR: #444 !important; BORDER-LEFT-COLOR: #444 !important; -moz-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset; box-shadow: 0 0 12px rgba(0, 0, 0, .5) inset } .actionBarMicro .active > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } A.liveAreaTab:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub H2 > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .mainButton.sub:hover H2 > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang H2:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } #loginLang:hover H2:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub > A:hover:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .nav .sub:hover > A:after { Z-INDEX: 1100000; BORDER-BOTTOM: #fff 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .actionBarMicro UL:hover + UL .active A:after { DISPLAY: none } A.liveAreaTab:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .mainButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub H2 > A:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .secondaryButton.sub:hover > H2 A:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang H2:hover:after { BORDER-BOTTOM-COLOR: #d1eaef } #loginLang:hover H2:after { BORDER-BOTTOM-COLOR: #d1eaef } .nav .sub:hover > A:after { BORDER-BOTTOM-COLOR: #d1eaef } .columnActions.actionBarMicro { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 3px } .alignPanel LI.sub { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .alignPanel LI.sub A.button-4:after { CONTENT: none } .columnActions UL { MARGIN: 0px 0px 2px } .columnActions .mainButton A { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .columnActions .mainButton A:hover { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TEXT-DECORATION: none; PADDING-TOP: 1px } .modeSwitchWrap { DISPLAY: inline-block; FONT-SIZE: 90%; VERTICAL-ALIGN: middle; FONT-WEIGHT: bold; BORDER-RIGHT: transparent 1px dotted } .modeSwitch { PADDING-BOTTOM: 0px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: #ccc; TEXT-DECORATION: none; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); -moz-border-radius: 16px; -webkit-border-radius: 16px; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.3); border-radius: 16px } .modeSwitch:before { POSITION: relative; LINE-HEIGHT: 0.9; COLOR: #bbb; FONT-SIZE: 22px; VERTICAL-ALIGN: middle; CONTENT: "\2022"; TOP: -1px; FONT-WEIGHT: normal; MARGIN-RIGHT: 2px; LEFT: 0px; font-effect: outline } .read-on { BACKGROUND-COLOR: #777; MARGIN-RIGHT: 0px } .read-on:hover { BACKGROUND: #555 } .read-on { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .read-on:before { COLOR: lime; text-shadow: 0 0 4px lime } .disabled.read-on:before { COLOR: #999 } .disabled.read-on { COLOR: #999 } .read-off:before { COLOR: #999 } .read-off { COLOR: #999 } .read-off.modeSwitch { TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } A.read-off IMG { DISPLAY: none } A.read-on IMG { DISPLAY: none } A.read-on .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } A.read-off .hideoff { POSITION: relative; WIDTH: 0px; HEIGHT: 0px } .modeSwitch SPAN { DISPLAY: inline-block; VERTICAL-ALIGN: middle } .switcherLabel { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 4px !important; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 2px !important } .vtbeSwitch { TOP: 2px } .vtbeSwitch SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .legacy .vtbeSwitch { HEIGHT: 2.2em } .vtbeSwitch DIV.modeSwitchWrap { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ccc 1px solid; TOP: 2px; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .vtbeSwitch DIV.modeSwitchWrap A SPAN#statusText { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 0px !important } .vtbeSwitch DIV.modeSwitchWrap A.read-off { BACKGROUND-COLOR: #ddd } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover { BACKGROUND-COLOR: #fff } .vtbeSwitch DIV.modeSwitchWrap A.read-off:hover SPAN#statusText { COLOR: #000 } TABLE.vtbeTable-legacy { WIDTH: 100% } .vtbeTable-legacy TEXTAREA { WIDTH: 100% } .helpLink { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .helpLink A.browseIcon { BORDER-BOTTOM: 0px; POSITION: relative; TEXT-ALIGN: center; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#777777); BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; DISPLAY: inline-block; BACKGROUND: #777; FONT-SIZE: 115%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; box-shadow: none; border-radius: 12px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .helpLink A.browseIcon IMG { DISPLAY: none } .helpLink A.browseIcon:before { Z-INDEX: 1; POSITION: relative; WIDTH: 18px; DISPLAY: inline-block; HEIGHT: 18px; COLOR: #fff; CONTENT: "?"; RIGHT: -4px; FONT-WEIGHT: bold } .helpLink A.browseIcon:hover { box-shadow: none } .helpLink A.browseIcon:focus { box-shadow: none } .helpLink A[title*='Off'].browseIcon:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#bbbbbb,endColorstr=#bbbbbb); BACKGROUND: #bbb } .helpLink A[title*='Off'] { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#cccccc,endColorstr=#cccccc); BACKGROUND: #ccc 0px 0px; COLOR: #999; TEXT-DECORATION: line-through !important; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:hover:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .helpLink A[title*='Off']:focus:before { COLOR: #999; TEXT-DECORATION: line-through; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } TABLE.reorder { opacity: 1 } .reorder SPAN { DISPLAY: inline-block; HEIGHT: 20px } TABLE.reorder SPAN { HEIGHT: auto } .item .reorder { Z-INDEX: 2; BORDER-BOTTOM: 0px; FILTER: alpha(opacity=0); BORDER-LEFT: 0px; WIDTH: 18px; BOTTOM: 0px; BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px; HEIGHT: auto; BORDER-TOP: 0px; TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px; opacity: 0 } .item .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .liItem .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .subList-reorder .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .buttonCm .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .dndHandle .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .portlet .reorder SPAN { BACKGROUND: url(images/controls.png) no-repeat -174px -118px } .listCm .reorder { WIDTH: 16px } .subList-reorder .reorder { WIDTH: 16px } .buttonCm .reorder { WIDTH: 16px } .portlet .reorder SPAN { DISPLAY: block; BACKGROUND-POSITION: -237px -116px; HEIGHT: 24px } .portlet .reorder { BORDER-BOTTOM: #555 1px solid; POSITION: absolute; BORDER-LEFT: #555 1px solid; BOTTOM: -1px; BORDER-TOP: #555 1px solid; TOP: -1px; BORDER-RIGHT: #555 0px solid; LEFT: -19px; opacity: 0; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px; border-radius: 3px 0 0 3px } .module-dragstate.portlet .reorder { BORDER-RIGHT-WIDTH: 0px; BOTTOM: -2px; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-LEFT-WIDTH: 2px; TOP: -2px; LEFT: -20px } .reorder IMG { FILTER: alpha(opacity=0); opacity: 0 } .item .reorder IMG { MARGIN: 6px 3px } .portlet .reorder IMG { WIDTH: 18px; HEIGHT: 20px } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .liItem:focus .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .listCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .buttonCm LI:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .portlet H2:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentListPlain LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .buildList LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } .liItem:hover .reorder { FILTER: alpha(opacity=100); opacity: 1 } .contentList > LI:hover .contextMenuContainer A { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg { MARGIN: 0px; WIDTH: 16px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -125px; HEIGHT: 16px } TABLE.inventory A.cmimg { FILTER: alpha(opacity=0); opacity: 0 } TABLE.inventory TR:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } A.cmimg:hover { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg:focus { FILTER: alpha(opacity=100); BACKGROUND-POSITION: -320px -143px; opacity: 1 } A.cmimg IMG { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 15px; PADDING-RIGHT: 0px; HEIGHT: 15px; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .buttonCm .courseMenu A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .portlet A.cmimg { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } A.cmimg-small { BACKGROUND-IMAGE: url(images/controls.png); POSITION: absolute; FILTER: alpha(opacity=70); PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: -28px -124px; HEIGHT: 15px; OVERFLOW: hidden; TOP: 7px; RIGHT: 6px; PADDING-TOP: 0px; opacity: .7; _right: 0 } .listCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .listCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .portlet A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .buttonCm .courseMenu A.cmimg:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:focus { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .cmimg-small:hover { FILTER: alpha(opacity=100); ZOOM: 1; BACKGROUND: url(images/controls.png) no-repeat -28px -142px; opacity: 1 } .courseMenu .subhead A.cmimg { TOP: 9px } .buttonCm .courseMenu .subhead .cmimg { TOP: 2px } .portlet A.cmimg { POSITION: relative; TOP: 2px; RIGHT: 0px } .listCm .courseMenu A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .portlet A.cmimg IMG { FILTER: alpha(opacity=0); WIDTH: 15px; HEIGHT: 15px; opacity: 0 } .buildList LI .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .item .contextMenuContainer A { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .listCm .courseMenu A.cmimg { FILTER: alpha(opacity=0); PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: 0px; opacity: 0 } .buildList LI .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .item .contextMenuContainer A:focus { FILTER: alpha(opacity=100); opacity: 1 } .listCm .courseMenu LI:hover A.cmimg { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 3px; BOTTOM: 0px; PADDING-RIGHT: 4px; PADDING-TOP: 4px; -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) inset, 0 -2px 4px rgba(0, 0, 0, 0.1) inset, 0 -1px 0 rgba(255, 255, 255, 0.02), 1px 0 0 rgba(255, 255, 255, 0.05); border-radius: 0 3px 0 0 } .frameResizeToggle A { WIDTH: 16px; DISPLAY: block; BACKGROUND: url(images/utilicons_sprite_rev.png) no-repeat -158px 0px; HEIGHT: 16px; OVERFLOW: hidden } .frameResizeToggle:hover { FILTER: alpha(opacity=100); opacity: 1 } .frameResizeToggle A.resize-on { BACKGROUND-POSITION: -175px 0px; opacity: .5 } .frameResizeToggle A.resize-off { BACKGROUND-POSITION: -159px 0px; opacity: .8 } .frameResizeToggle A.resize-on:hover { BACKGROUND-POSITION: -159px -16px; opacity: 1 } .frameResizeToggle A.resize-off:hover { BACKGROUND-POSITION: -175px -16px; opacity: 1 } .frameResizeToggle A IMG { WIDTH: 18px; HEIGHT: 18px } A.close { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close-menu { Z-INDEX: 100; POSITION: absolute; FILTER: alpha(opacity=70); TOP: 11px; RIGHT: 10px; opacity: .7 } A.close { TOP: 0px; RIGHT: 20px } A.close IMG { DISPLAY: none } A.close-menu IMG { DISPLAY: none } .lbAction IMG { DISPLAY: none } A.close:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } .lbAction:before { FONT: 18px/1 "Utilicons"; COLOR: #aaa; CONTENT: "X" } A.close-menu:before { FONT-SIZE: 14px } A.close:hover:before { COLOR: #888 } A.close-menu:hover:before { COLOR: #888 } .lbAction:hover:before { COLOR: #888 } .builderItem A.close { FILTER: alpha(opacity:0); opacity: 0 } .builderItem:hover A.close { FILTER: alpha(opacity:100); opacity: 1 } .liveArea A.close { TOP: 6px; RIGHT: 6px } .cmdiv A.close-menu { Z-INDEX: 100; POSITION: relative; FILTER: alpha(opacity=100); TOP: 0px; RIGHT: 0px; opacity: 1 } #bb-assessment-canvas [id*='receipt_nested'].receipt A.close { TOP: 6px; RIGHT: 6px } A.colorChip { PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 1px } .pageTitle A.colorChip { PADDING-BOTTOM: 4px; PADDING-LEFT: 7px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 4px } A.colorChip SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -320px -123px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } A.colorChip:hover SPAN { BACKGROUND-POSITION: -320px -141px } A.colorChip SPAN IMG { FILTER: alpha(opacity=0); WIDTH: 16px; HEIGHT: 16px; opacity: 0 } A.colorChip IMG.chipSwatch { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 16px; HEIGHT: 16px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #aaa 1px solid } SPAN.colorChipName { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: inline-block !important; VERTICAL-ALIGN: middle; PADDING-TOP: 0px !important } INPUT[type='text'] { FONT-SIZE: 90% } INPUT[type='password'] { FONT-SIZE: 90% } SELECT { FONT-SIZE: 90% } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .courseMenu INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .courseMenu INPUT[type='text'] { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { WIDTH: 120px; MARGIN-LEFT: 18px } .renameCourseToc INPUT { MARGIN-LEFT: 0px } #calculatorValue { MARGIN: 3px 0px; WIDTH: 10em } A.microControl { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } A.microControl IMG { WIDTH: 12px; HEIGHT: 12px } A.save { BACKGROUND: url(images/controls.png) no-repeat -50px -123px } A.cancel { BACKGROUND: url(images/controls.png) no-repeat -70px -123px } .fileInputWrapper { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; MARGIN-RIGHT: 9px; PADDING-TOP: 0px } .fileInputWrapper INPUT.hiddenInput { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .backLink { POSITION: absolute; MARGIN: 0px; BOTTOM: 0px; RIGHT: 0px } .tocBottom_min .backLink { BOTTOM: 48px } .tocBottom_max .backLink { BOTTOM: 348px } .tocBottom_open .backLink { BOTTOM: 178px } .shortDoc .backLink { POSITION: relative; TEXT-ALIGN: left; MARGIN-TOP: 15px; BOTTOM: 0px; RIGHT: 0px } .backLink A { BORDER-BOTTOM: #cdcdcd 0px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 18px; DISPLAY: inline-block; BACKGROUND: #eee; COLOR: #888; BORDER-TOP: #cdcdcd 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #cdcdcd 0px solid; TEXT-DECORATION: none; PADDING-TOP: 8px; -moz-box-shadow: 1px 1px 4px #DDD inset; -webkit-box-shadow: 1px 1px 4px #ddd inset; -moz-border-radius: 4px 0 4px 0; -webkit-border-radius: 4px 0 4px 0; text-shadow: 0 1px 0 #fff } .shortDoc .backLink A { BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px } .backLink A:before { LINE-HEIGHT: 1.2; COLOR: #999; FONT-SIZE: 120%; CONTENT: "\2190" } .backLink A:hover { BACKGROUND: #ddd; COLOR: #777 } .backLink A:hover:before { COLOR: #00add0 } .sliderWrapper { BORDER-BOTTOM: #ddd 1px solid; POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 0px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 13px; BACKGROUND: #fff; FLOAT: left; FONT-SIZE: 85%; PADDING-TOP: 14px; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0 } #sliderHandle { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: -2px 0px 0px; WIDTH: 4px; DISPLAY: block; BACKGROUND: #999; HEIGHT: 4px; BORDER-TOP: #555 1px solid; CURSOR: ew-resize; BORDER-RIGHT: #555 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } #sliderTrack { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 6px; WIDTH: 60px; DISPLAY: inline-block; BACKGROUND: #ededed; HEIGHT: 2px; BORDER-TOP: #ccc 1px solid; TOP: -2px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .itemCounter { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #cdcdcd; FONT-SIZE: 115%; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #pageHeader { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } .pageTitleSmall { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 20px; PADDING-TOP: 4px } #pageHeader { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #schemePreviewHead { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitle H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } .pageTitleError H1 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 0px; text-shadow: 0 1px 0 rgba(255, 255, 255, .7) } #pageHeader { FONT-SIZE: 185% } .pageTitle H1 { FONT-SIZE: 185% } .pageTitleError H1 { FONT-SIZE: 185% } .picker .pageTitle H1 { FONT-SIZE: 160% } .popup .pageTitle H1 { FONT-SIZE: 160% } .pageTitle #titleicon { DISPLAY: inline-block } .pageTitle H1 { DISPLAY: inline-block } .pageTitle A.cmimg { DISPLAY: inline-block } .pageTitle H1 + .contextMenuContainer { POSITION: relative; MARGIN-LEFT: 2px; VERTICAL-ALIGN: top; TOP: 4px } .pageTitle A.cmimg { MARGIN: 0px } .pageTitle #titleicon { MARGIN: 0px 6px 0px 0px; DISPLAY: none } .pageTitle [src*='slideshare']#titleicon { BORDER-BOTTOM: #dedede 1px solid; POSITION: absolute; BORDER-LEFT: #dedede 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; WIDTH: auto; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #fff; HEIGHT: 39px; BORDER-TOP: #dedede 0px solid; TOP: 1px; RIGHT: 7px; BORDER-RIGHT: #dedede 0px solid; PADDING-TOP: 4px; border-radius: 0 4px 0 4px } .pageTitle [src*='youtube']#titleicon { POSITION: absolute; WIDTH: auto; DISPLAY: block; HEIGHT: 44px; TOP: 8px; RIGHT: 14px } .pageTitleSmall H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #fff; FONT-SIZE: 135%; PADDING-TOP: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.9) } #pageHeader { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } #schemePreviewHead { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#eeeeee,endColorstr=#dedede); PADDING-BOTTOM: 20px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px; -moz-box-shadow: 1px 1px 0 #fafafa inset; -webkit-box-shadow: 1px 1px 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 4px 4px 0 0 } .hierarchy-page .pageTitle + .container { MARGIN-TOP: -20px; BACKGROUND: #fff } .picker .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popup .pageTitle { PADDING-BOTTOM: 16px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 18px; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } #pageHeader { BACKGROUND-COLOR: #dedede } #schemePreviewHead { BACKGROUND-COLOR: #dedede } .pageTitleIcon { DISPLAY: table-row } .pageTitle .details { DISPLAY: none } .pageTitle .contextMenuContainer { DISPLAY: inline-block !important } .pageTitle .titleButtons { DISPLAY: inline-block !important } .pageTitleEdit { DISPLAY: inline-block !important } #pageTitleBar { DISPLAY: inline-block; MARGIN-RIGHT: 6px } .pageTitle H2 { MARGIN: 0px; COLOR: #333; CLEAR: both; FONT-SIZE: 100% } .pageTitle H2 SPAN { FONT-WEIGHT: normal } .contextString { COLOR: #777; FONT-WEIGHT: normal } .pageTitle .label { COLOR: #777; FONT-WEIGHT: normal } .error .pageTitle { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#DB0F0F,endColorstr=#FC0202); box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.6) inset } .error .pageTitle H1 { COLOR: #fff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2) } .customBanner { TEXT-ALIGN: center; BACKGROUND-COLOR: transparent; MARGIN: 0px; OVERFLOW: hidden } DIV.localViewToggle + DIV.pageTitle { PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 1px 0 0 #fafafa inset; border-radius: 0 } DIV#lightboxContent H2 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; FONT-SIZE: 130%; PADDING-TOP: 18px } .helphelp { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .pageTitle P { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .label.details { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #666; CLEAR: both; PADDING-TOP: 0px } .mapTabs + .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .mapTabs ~ .helphelp { PADDING-BOTTOM: 16px; MARGIN: 0px -30px -20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #eaeaea; BORDER-TOP: #bbb 1px solid; PADDING-TOP: 12px; -moz-box-shadow: 1px 0 0 #eee inset; -webkit-box-shadow: 1px 0 0 #eee inset; box-shadow: 1px 0 0 #eee inset } .helphelp A { BORDER-BOTTOM: #666 1px dotted; COLOR: #666; TEXT-DECORATION: none } .helphelp A:hover { BORDER-BOTTOM-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-TOP-STYLE: solid; BORDER-LEFT-STYLE: solid } DIV.helphelp UL { MARGIN: 6px 0px } .version { MARGIN-TOP: 6px; DISPLAY: inline-block; COLOR: #666; FONT-SIZE: 60%; FONT-WEIGHT: normal } .version I { FONT-STYLE: normal; FONT-WEIGHT: bold } .version SPAN { POSITION: relative; WIDTH: 13px; DISPLAY: inline-block; OVERFLOW: hidden; TOP: -2px; LEFT: -5px } .version SPAN:before { POSITION: relative; COLOR: #00add0; FONT-SIZE: 105%; CONTENT: "+"; TOP: 0px; FONT-WEIGHT: bold; LEFT: 0px } .colophon { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px 14px; PADDING-LEFT: 55px; WIDTH: 30em; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: right; FONT-SIZE: 85%; OVERFLOW: visible; RIGHT: 0px; PADDING-TOP: 0px } .colophon IMG { POSITION: absolute; LEFT: 0px } .installation { LINE-HEIGHT: 1.3em; COLOR: #666 !important } .installation SPAN { FONT-WEIGHT: bold } .actionBar { Z-INDEX: 110; BORDER-TOP: #444 1px solid; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .hierarchy-page .actionBar { MARGIN-TOP: -21px } .hierarchy-page #toolsTabForm .actionBar { MARGIN: -21px -30px 0px } .actionBar UL LI { POSITION: relative } .actionBar UL LI.mainButton { Z-INDEX: 210 } .actionBar UL LI.secondaryButton { Z-INDEX: 209 } .actionBar UL LI.mainButton:hover { Z-INDEX: 112 } .pageTitle + .actionBar { -moz-border-radius: 0; border-radius: 0 } .actionBar .mainButton { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBar .secondaryButton { MARGIN: 0px; FLOAT: right } .actionMenu { Z-INDEX: 111; POSITION: relative } .actionMenuItem { Z-INDEX: 123; POSITION: relative } .actionBarMicro { -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset, 0 1px 0 #F9F9F9; -moz-border-radius: 0 3px 0 0; -webkit-border-radius: 0 3px 0 0; border-radius: 0 3px 0 0 } .csMenuFrame .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .popupMenu .actionBarMicro { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0 } .portlet .actionBarMicro { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .portlet .actionBarMicro UL { MARGIN: 2px } .actionBarMicro UL LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .actionBarMicro .mainButton { Z-INDEX: 1000 } .actionBarMicro .secondaryButton { Z-INDEX: 10; FLOAT: right } .actionBar { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .actionBarMicro { BACKGROUND-IMAGE: url(images/reorder_bg.png); BACKGROUND-COLOR: #666 } .searchbar { POSITION: relative } .searchbarPicker { POSITION: relative } .subActionBar { POSITION: relative } .searchbarCanvas.searchbar { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN: -24px -30px 20px; PADDING-LEFT: 20px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dfdfdf 0px 0px; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #F0F0F0 inset; -webkit-box-shadow: 1px 0 0 #F0F0F0 inset } .picker .searchbarCanvas.searchbar { MARGIN: -24px -20px 20px } .picker .leftColumn-narrow H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } .picker .leftColumn-wide H2 { MARGIN: 1em 0px 9px; FONT-SIZE: 110% } #bb-question-discover .searchbarCanvas.searchbar FIELDSET H2 { DISPLAY: inline-block; FONT-SIZE: 100%; FONT-WEIGHT: normal } .subActionBar { FONT-SIZE: 95% } .searchbar TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE TD TABLE TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } .searchbar TABLE FIELDSET { PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 3px } .searchbar TABLE DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .searchbar FORM { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .searchbarPicker { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .searchbar:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .searchbarPicker:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .receipt A.close { FILTER: alpha(opacity=70); TOP: 1px; RIGHT: 4px; opacity: .7 } .slideshowControls { TEXT-ALIGN: center; MARGIN: 8px auto 12px; FONT-SIZE: 100% } .searchbar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbarPicker FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .subActionBar FIELDSET { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .searchbar H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .searchbarPicker H2 { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 1px } .picker .searchbar H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbarPicker H2 { DISPLAY: inline; FONT-SIZE: 100%; FONT-WEIGHT: normal } .searchbar .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbarPicker .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .liveArea FIELDSET .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 2px } .searchbar OL LI { MARGIN: 5px; FLOAT: left } .searchbarPicker OL LI { MARGIN: 5px; FLOAT: left } .liveArea FIELDSET OL LI { MARGIN: 5px; FLOAT: left } .searchbar OL LI > DIV { MARGIN: 0px 4px 4px 0px; DISPLAY: inline-block } .searchbar OL LI.options { FLOAT: right } .searchbarPicker OL LI.options { FLOAT: right } .liveArea FIELDSET OL LI.options { FLOAT: right } .searchbarPicker SPAN { DISPLAY: inline } .searchbar SPAN.spacer { MARGIN: 0px 4px } .cmImg { TEXT-ALIGN: center; MARGIN: 0px 0px 6px 12px; WIDTH: 180px; OVERFLOW: hidden } .cmImg IMG { WIDTH: 180px } .navDivider { PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; MARGIN: 0px 0px 4px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; LETTER-SPACING: 2px; COLOR: #999; FONT-SIZE: 80%; FONT-WEIGHT: bold; PADDING-TOP: 18px; text-shadow: 0 1px 0 #f9f9f9 } .cmPreviewWrapper { WIDTH: 212px } .navPalette { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .csMenuFrame .navPalette { MARGIN: 0px 0px 18px } .navPalette H3 { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 105%; PADDING-TOP: 0px } .navPaletteTitle { POSITION: relative } .navPaletteTitle H3 + H3 { POSITION: absolute; TOP: 0px; RIGHT: 0px } .navPaletteCol H3 { BORDER-BOTTOM: 0px } .navPalette H4 { MARGIN: 0px; FONT-SIZE: 100% } .navPaletteContent UL LI { POSITION: relative; ZOOM: 1 } .navPaletteContent { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .listCm .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .singleControl .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } .tools .navPaletteContent { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 9px; PADDING-TOP: 6px } #courseMenuPalette DIV.navPaletteContent { PADDING-BOTTOM: 14px; PADDING-TOP: 14px; -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2) inset } #courseMenuPalette { MARGIN-BOTTOM: 0px } .singleControl .navPaletteContent { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .singleControl { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPalette .discover { Z-INDEX: 110; PADDING-BOTTOM: 0px; MARGIN: 24px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; BACKGROUND: #777; PADDING-TOP: 0px; -moz-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -webkit-box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) inset; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navPaletteContent A { PADDING-BOTTOM: 3px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; WORD-BREAK: normal; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 3px } .navPaletteContent A:hover { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A:focus { CURSOR: pointer; TEXT-DECORATION: underline } .navPaletteContent A.comboLink { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; PADDING-TOP: 6px } .navPaletteContent A.comboLink_active { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.open { BORDER-BOTTOM: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333 } .navPaletteContent A.submenuLink { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink_active { Z-INDEX: 2; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent A.submenuLink:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:hover { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink_active:focus { BACKGROUND-POSITION: center 7px } .navPaletteContent A.submenuLink IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent A.submenuLink_active IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .navPaletteContent UL LI:first-child H4 A { BORDER-TOP: medium none } .navPaletteContent UL LI:first-child A { BORDER-TOP: medium none } .navPaletteContent UL LI H4 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPaletteContent H3 A { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px; text-shadow: 0 1px 0 #f9f9f9 } .navPaletteContent H3 A:hover { TEXT-DECORATION: none } .navPaletteContent H3 A:focus { TEXT-DECORATION: none } #courseMenu { BACKGROUND-COLOR: #0078cb; COLOR: #fff } .controlpanel UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .controlpanel A { BORDER-TOP: #ccc 1px dotted } .controlpanel A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .controlpanel A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .tools A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink_active { BACKGROUND-IMAGE: none; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; LINE-HEIGHT: 1.4; OVERFLOW: hidden; BORDER-TOP: medium none; BORDER-RIGHT: medium none; TEXT-DECORATION: none } .navPaletteContent H3 A.submenuLink { DISPLAY: inline-block } .navPaletteContent H3 A.submenuLink_active { DISPLAY: inline-block } .controlpanel A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .controlpanel A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .tools A.submenuLink_active:after { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink_active:before { POSITION: relative; COLOR: #ccc; FONT-SIZE: 16px; CONTENT: "\2192"; TOP: 3px; RIGHT: 4px; FONT-WEIGHT: bold; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4) } .navPaletteContent H3 A.submenuLink:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .navPaletteContent H3 A.submenuLink_active:before { MARGIN: 3px 0px 0px 6px; DISPLAY: block; FONT: 18px/1 "Utilicons"; CONTENT: "H" } .controlpanel A.submenuLink:hover:after { COLOR: #aaa } .controlpanel A.submenuLink_active:hover:after { COLOR: #aaa } .tools A.submenuLink:hover:after { COLOR: #aaa } .tools A.submenuLink_active:hover:after { COLOR: #aaa } .navPaletteContent H3 A.submenuLink:hover:before { COLOR: #aaa } .navPaletteContent H3 A.submenuLink_active:hover:before { COLOR: #aaa } .controlpanel A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .tools A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel H4 A.open { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .navPaletteContent UL LI:first-child H4 A.comboLink_active { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore H4 { BACKGROUND-COLOR: #fff; MARGIN-TOP: -1px; BORDER-TOP: #bbb 1px solid; FONT-WEIGHT: bold; -webkit-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 100ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel A.comboLink_active { Z-INDEX: 1; POSITION: relative } .tools A.comboLink_active { Z-INDEX: 1; POSITION: relative } .controlpanel H4 A.open { Z-INDEX: 1; POSITION: relative } .treeViewCs .navPaletteContent { } .treeViewCs .bottomRound B { } .courseFilesPalette { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .paletteSearch { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 6px } .classFiles H4#cs_search + UL LI:first-child { BORDER-BOTTOM: #aaa 1px dotted; PADDING-BOTTOM: 6px; MARGIN: 2px 9px 2px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 95%; PADDING-TOP: 0px } .classFiles H4#cs_search + UL LI { BACKGROUND-IMAGE: none } .classFiles A#filesPaletteContentCollectionLink { BACKGROUND-IMAGE: url(images/indicators.png); PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 98% -143px; COLOR: #aaa; PADDING-TOP: 3px } .navPaletteContent .submenu .paletteSearchElement { PADDING-BOTTOM: 9px; MARGIN: 6px 0px 0px -16px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BORDER-TOP: #bbb 1px dotted; PADDING-TOP: 10px } .paletteSearchElement INPUT { WIDTH: 99px } .classFiles UL.tree > LI { BACKGROUND-IMAGE: none !important } .listCm .courseMenu { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .ineditmode DIV.listCm UL.courseMenu { MARGIN: 0px } .ineditmode DIV.listCm UL.courseMenu LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px -1px 0px 0px; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid } .ineditmode DIV.listCm UL.courseMenu LI:hover { BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff !important; -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -moz-transition: border, margin, background, -moz-box-shadow 500ms cubic-bezier(0.420, 0.000, 1.000, 1.000); box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15); -webkit-transition-property: background, border, -webkit-box-shadow; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000); background-clip: padding-box } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder { -webkit-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: opacity 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .ineditmode DIV.listCm UL.courseMenu LI:hover .reorder:before { -webkit-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: visibility 350ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .listCm .courseMenu LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .buttonCm LI { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .buttonCm .courseMenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; WORD-BREAK: normal; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .listCm .courseMenu A:hover { TEXT-DECORATION: underline } .listCm .courseMenu A:focus { TEXT-DECORATION: underline } .buttonCm LI A:hover { TEXT-DECORATION: underline } .buttonCm LI:focus { TEXT-DECORATION: underline } .listCm .courseMenu > LI:hover A SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:hover { COLOR: #128fa8 !important } .listCm .courseMenu A:focus { COLOR: #128fa8 !important } .listCm .courseMenu A:hover SPAN { COLOR: #128fa8 !important } .listCm .courseMenu A:focus SPAN { COLOR: #128fa8 !important } .listCm .courseMenu .here A { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:hover { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A:focus { PADDING-BOTTOM: 6px; MARGIN: 0px 18px 0px 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; BACKGROUND: url(images/list_bullet_single_white.gif) #999 no-repeat 98% center; COLOR: #fff; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .listCm .courseMenu .here A.cmimg { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm .courseMenu .here A.cmimg:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .listCm H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .listCm .subhead H3 { PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #courseMenu_folderView H4 A { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } #courseMenu_folderView .subhead { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .navPaletteContent .subhead H3 A { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .navPaletteContent .subhead H3 A:hover { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 0px } .listCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 12px } .buttonCm .courseMenu .divider { BACKGROUND-IMAGE: none !important } .noteditmode .listCm .courseMenu .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .noteditmode .listCm .buttonCm .divider { PADDING-BOTTOM: 8px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 8px } .listCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .buttonCm .courseMenu .divider HR { POSITION: relative; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #ccc; MARGIN: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 0px; VERTICAL-ALIGN: middle; BORDER-TOP: #999 1px solid; BORDER-LEFT-WIDTH: 0px } .listCm .courseMenu .collapsed { PADDING-BOTTOM: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; HEIGHT: 2px; PADDING-TOP: 0px } .buttonCm .navPaletteContent { BACKGROUND: none transparent scroll repeat 0% 0% } .buttonCm LI { BACKGROUND-COLOR: transparent; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 12px 0px } .buttonCm .courseMenu .here A { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .buttonCm .courseMenu .here A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .cmLink-hidden { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-empty { MARGIN: -2px 0px 0px 3px; VERTICAL-ALIGN: middle } .cmLink-hidden IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty IMG { FILTER: alpha(opacity=0); WIDTH: 14px; HEIGHT: 14px; opacity: 0 } .cmLink-empty { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -123px } .cmLink-hidden { DISPLAY: inline-block; BACKGROUND: url(images/controls.png) no-repeat -389px -138px } .buttonCm .invisible .cmLink-hidden { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { POSITION: absolute; TOP: 5px; RIGHT: 26px } .buttonCm .invisible .cmLink-empty { RIGHT: 32px } .buttonCm .bottomRound { DISPLAY: none } .pickerMenu { POSITION: absolute; MARGIN: 0px; WIDTH: 150px; TOP: 0px; LEFT: 14px } .pickerMenu UL LI A { BACKGROUND-IMAGE: none } DIV.pickerMenu A.simpleLink { BACKGROUND-IMAGE: none } .pickerMenu A.open { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:hover { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .pickerMenu A:focus { BACKGROUND: url(images/indicators.png) #fff no-repeat 100% center } .discover .topRound B { } .discover .bottomRound B { } .discover .navPaletteContent { } .singleControl .topRound B { } .singleControl .bottomRound B { } .singleControl .navPaletteContent { } .discover A IMG { DISPLAY: none } .discover.navPalette { MARGIN-BOTTOM: 0px } .singleControl A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .navPalette .discover A { BACKGROUND-IMAGE: none; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; COLOR: #f0f0f0; FONT-SIZE: 105%; FONT-WEIGHT: 600; TEXT-DECORATION: none; PADDING-TOP: 14px; text-shadow: 0 -1px 0 #000 } .singleControl A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:hover { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .discover A:focus { BACKGROUND: #555; COLOR: #fff; TEXT-DECORATION: none } .singleControl A.enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .discover A:before { POSITION: relative; FONT-FAMILY: "Utilicons"; COLOR: #ef3b3b; FONT-SIZE: 19px; CONTENT: "x"; TOP: 1px; FONT-WEIGHT: normal; LEFT: -4px } .singleControl A.not-enrolled:before { COLOR: #3c0; CONTENT: "+" } .discover A:before { COLOR: #eee; CONTENT: "F" } .navPaletteContent .submenu { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 6px; FONT-SIZE: 90%; PADDING-TOP: 0px; -moz-box-shadow: 0 1px 4px #ccc; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .explore .submenu { BACKGROUND: #fff; FONT-SIZE: 90% } .navPaletteContent .submenu LI { BACKGROUND-IMAGE: none; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .navPaletteContent .submenu LI UL LI { PADDING-LEFT: 12px } .navPaletteContent .submenu LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } H4#cs_search + UL DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } H4#cs_search + UL DIV A { DISPLAY: block; FONT-SIZE: 90% } .controlpanel .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .explore .submenu .emptyMsg { COLOR: #777 } .controlpanel .submenu A:hover { TEXT-DECORATION: underline } .controlpanel .submenu A.here { TEXT-DECORATION: underline } .controlpanel .submenu A:focus { TEXT-DECORATION: underline } .explore .submenu A:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .explore .submenu A:focus { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .tools .submenu { BACKGROUND: #fff } .controlpanel .submenu { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } .controlpanel .submenu LI UL { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND: #fff; -webkit-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000); -moz-transition: all 150ms cubic-bezier(0.420, 0.000, 1.000, 1.000) } #explore_contents { BACKGROUND-COLOR: transparent } .navPalette A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .controlpanel A.simpleLink { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 9px; PADDING-TOP: 6px } .navPalette A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPalette A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:hover { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .controlpanel A.simpleLink:focus { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 97% center } .navPaletteCol H3 A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol H3 A.comboLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .navPaletteCol .navPaletteContent H3 { BACKGROUND-IMAGE: none } .navPaletteCol .actionBarMicro { DISPLAY: none } .shortcutViewCs UL LI A { TEXT-ALIGN: center; BORDER-TOP: #ededed 1px dotted } .shortcuts LI A { BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted } .shortcuts LI A:hover { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .shortcuts LI A:focus { BACKGROUND: url(images/indicators.png) no-repeat 100% center; TEXT-DECORATION: none } .treeContainer#courseMenu_folderView { OVERFLOW-X: auto } DIV.expTreeContainer { BACKGROUND: #eee } DIV.treeContainer UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.treeContainer > UL.tree { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree > UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.tree UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.listCm DIV.treeContainer UL.tree { OVERFLOW-X: auto; ZOOM: 1 } DIV.treeContainer UL.tree LI H4 + UL { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; ZOOM: 1; FONT-SIZE: 90%; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.tree LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: url(/images/ci/icons/nlstree/line.gif) repeat-y 0px 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .sideTOC UL.tree > LI { OVERFLOW-X: visible } DIV.treeContainer UL.tree LI.last { BACKGROUND-IMAGE: none } UL.tree LI.last { BACKGROUND-IMAGE: none } DIV.treeContainer UL.tree LI.here A { BACKGROUND-COLOR: #ededed } UL.tree LI.here A { BACKGROUND-COLOR: #ededed } DIV.treeContainer UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } UL.tree LI A { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 1px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.open_folder { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; DISPLAY: inline; BACKGROUND: #ebeffa; FONT-SIZE: 95%; BORDER-TOP: medium none; PADDING-TOP: 2px } DIV.treeContainer UL.tree LI A.exp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folder.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI A.collapse { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 21px; BACKGROUND: url(/images/ci/icons/nlsTree/folderopen.gif) no-repeat 18px 0px; PADDING-TOP: 0px } DIV.treeContainer H4.treehead { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 2px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.treeContainer H4.first { MARGIN: 0px 0px 2px } DIV#userTreeDiv { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead { BACKGROUND-IMAGE: none; MARGIN: 0px; BORDER-TOP: #ccc 1px dotted } DIV.treeContainer UL.tree LI.subhead H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.first A { BORDER-TOP: medium none } DIV.treeContainer UL.tree LI.subhead H4 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 6px } UL.tree LI.subhead:first-child { MARGIN-TOP: 0px } UL.tree LI.subhead:first-child > A { BORDER-TOP: 0px } DIV.treeContainer UL.tree LI.subhead H4.treeSubhead-collapsed A { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px; FONT-WEIGHT: normal } .tableOverflowControl { OVERFLOW-X: auto } .inventory { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 0px; BORDER-SPACING: 0; WIDTH: 100%; PADDING-RIGHT: 0px; BORDER-COLLAPSE: separate; BACKGROUND: #fff; COLOR: #000; CLEAR: both; PADDING-TOP: 0px } .inventory CAPTION { TEXT-ALIGN: left; COLOR: #999; FONT-SIZE: 85% } .inventory > THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .splashTable THEAD TR TH { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; BACKGROUND: #ededed; COLOR: #999; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 12px; text-shadow: 0 1px 0 #FFF } .inventory > THEAD TR TH:first-child { BORDER-LEFT: medium none; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .inventory > TBODY { BORDER-BOTTOM: #ccc 2px solid } .inventory > TBODY TR { BORDER-BOTTOM: #ccc 1px solid } .inventory > TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory > TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; WHITE-SPACE: normal; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 9px } .inventory#drawerItems TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory#drawerItems TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } #bb-question-discover .inventory TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .inventory > TBODY TR TH { TEXT-ALIGN: left; FONT-WEIGHT: normal } .inventory > TBODY TR TD:first-child { BORDER-LEFT: medium none } .inventory > TBODY .gray TD { BACKGROUND: #fff4bf } .inventory > TBODY .gray TH { BACKGROUND: #fff4bf } .inventory > THEAD TR TH.sorted { BACKGROUND: #ccc } TH.sorted { BACKGROUND: #ccc } .splashTable THEAD TR TH.sorted { BACKGROUND: #ccc } .inventory > TBODY TR TD.sorted { BACKGROUND: #eee } .inventory > THEAD TR TH.sorted A { COLOR: #000 !important; FONT-WEIGHT: bold } .sortable > THEAD TH A { COLOR: #666; MARGIN-RIGHT: 9px } .sortable > THEAD TH A:hover { COLOR: #333; TEXT-DECORATION: underline } .sortable A.sortheader { POSITION: relative; PADDING-RIGHT: 17px; DISPLAY: block; MARGIN-RIGHT: 0px; text-shadow: 0 1px 0 #fff } .sortable .sortarrow { COLOR: #ff0; TOP: 0px; RIGHT: 0px; TEXT-DECORATION: none; LEFT: auto } TR.high { BACKGROUND: #fff4bf } .high { BACKGROUND: #fff4bf } .disabledCell { BACKGROUND-COLOR: #f0f0f0 } .inventory .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .inventory > TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments .smallCell .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments TBODY .reorder { Z-INDEX: 2; POSITION: static; FILTER: alpha(opacity=0); MIN-HEIGHT: 30px; WIDTH: 18px; DISPLAY: inline-block; BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: move; opacity: 0 } .attachments { WIDTH: 100% } .inventory .dndHandle { POSITION: static; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 5px } .inventory .dndHandle .reorder IMG { HEIGHT: 20px } .inventory .dndHandle .reorder:hover IMG { HEIGHT: 20px } .inventory .dndHandle .reorder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory .dndHandle .reorder:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND-POSITION: -172px -125px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .inventory TR:hover .dndHandle { BACKGROUND: url(images/reorder_bg.png) #fff4bf 0px 0px } .reorderable > TBODY TR:hover { -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset } .reorderable > TBODY TR:hover TD { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable > TBODY TR:hover TH { BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #aaa 1px solid; -moz-transition: border, margin, background 250ms ease-in; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .reorderable TBODY TR TD:first-child { BORDER-LEFT: transparent 1px solid } .inventory TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .inventory > TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments TR:hover .smallCell .reorder { FILTER: alpha(opacity=100); opacity: 1 } .attachments TBODY TR:hover .smallCell .reorder:hover { FILTER: alpha(opacity=100); opacity: 1 } .attachments THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } .attachments TBODY TR { BORDER-TOP: #eee 1px solid } .inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } .attachments TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .attachments TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } .inventory-simple TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory > TBODY UL.subtabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } TABLE.inventory > TBODY UL.subtabs LI { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 20px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.status { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; BACKGROUND: #f9f9f9; COLOR: #000; FONT-SIZE: 90%; PADDING-TOP: 1px } DIV.status A IMG { VERTICAL-ALIGN: middle } DIV.status P { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left !important; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; LINE-HEIGHT: 10%; MARGIN: 2px auto 4px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } DIV.status P IMG { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #8dafaf; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 8px; PADDING-TOP: 0px } DIV.stopped P IMG { BACKGROUND: url(images/controls.png) #fff no-repeat -20px -180px } DIV.status A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.status DIV { POSITION: relative; TEXT-ALIGN: center } DIV.status A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } TABLE.inventory-simple { MARGIN: 0px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.inventory-simple THEAD TR { BORDER-BOTTOM: #ccc 2px solid; COLOR: #999 } TABLE.attachments THEAD TR.warningRow { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TABLE.inventory-simple THEAD TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR { BORDER-TOP: #eee 1px solid } TABLE.inventory-simple TBODY TR TH { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TD { PADDING-BOTTOM: 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 4px } TABLE.inventory-simple TBODY TR TH { COLOR: #000 } TABLE.inventory-simple .removeCell { BACKGROUND: #ededed; COLOR: #777 } TABLE.inventory-simple .removeCell TD { COLOR: #999 } TABLE.inventory-simple .removeCell TH { COLOR: #999 } TABLE.inventory-simple .removeCell TD A IMG { FILTER: alpha(opacity=40); opacity: .4 } TABLE.inventory-simple .smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.inventory-simple TBODY TR.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TD { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.inventory-simple TBODY TR.inEditMode TH { BORDER-TOP: #444 2px solid; -moz-border-radius: 0 } TABLE.stepItems-reorder { BORDER-SPACING: 0; MARGIN-BOTTOM: 12px; FONT-SIZE: 85% } TABLE.gbColumns { ZOOM: 1; FONT-SIZE: 90% } TABLE.stepItems-reorder TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } TABLE.stepItems-reorder THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BACKGROUND: #fff; COLOR: #999 } TABLE.gbColumns THEAD TR TH { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TD { BORDER-BOTTOM: #999 2px solid; BACKGROUND: #bbb; COLOR: #fff } TABLE.gbColumns THEAD TR TH.sorted { BORDER-LEFT: #777 1px solid; BACKGROUND: #999; BORDER-RIGHT: #777 1px solid } TABLE.gbColumns THEAD TR TH A { COLOR: #fff } TABLE.gbColumns THEAD TR TD A { COLOR: #fff } TABLE.stepItems-reorder THEAD TR.lowerHeader TH { BORDER-BOTTOM: #ccc 2px solid; COLOR: #333 } TABLE.stepItems-reorder TBODY TR TD.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder THEAD TR TH.shaded { BACKGROUND: url(images/readback.png) #f6f6f6 } TABLE.stepItems-reorder TR TH.clearCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TD { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR:first-child TH { BORDER-TOP: 0px } TABLE.stepItems-reorder THEAD TR:first-child { BORDER-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; TEXT-ALIGN: right; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.stepItems-reorder TBODY TR TD SPAN.reorder { POSITION: relative; FILTER: alpha(opacity=100); WIDTH: 18px !important; DISPLAY: block; BACKGROUND: url(images/controls.png) #ededed no-repeat -177px -122px; HEIGHT: 20px; TOP: 2px; CURSOR: move; RIGHT: 0px; BORDER-RIGHT: #ccc 1px solid; LEFT: auto; opacity: 1; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } TABLE.gbColumns TBODY TR TD SPAN.reorder { BACKGROUND: url(images/controls.png) #ededed no-repeat -237px -122px } TABLE.stepItems-reorder TBODY TR.frozenbar TD SPAN.reorder { TOP: 1px } TABLE.stepItems-reorder TBODY TR TD INPUT { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; WIDTH: 95%; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } TABLE.stepItems-reorder TBODY TR TD.points INPUT { WIDTH: 3em } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=text] { WIDTH: 90% } TABLE.stepItems-reorder TBODY TR TD.entry INPUT[type=checkbox] { WIDTH: auto } TABLE.stepItems-reorder TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px 4px 0px 0px } TABLE.gbColumns TBODY TR TD INPUT[type=checkbox] { MARGIN: 0px; WIDTH: auto } TABLE.gbColumns TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; PADDING-TOP: 6px } TABLE.gbColumns TBODY TR.frozenbar TD { BACKGROUND: #ccc; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: 0px } TABLE.gbColumns TFOOT TR.lastRow TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #999; HEIGHT: 2px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.frozen TD { BACKGROUND: #ededed } TABLE.gbColumns THEAD TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } TABLE.gbColumns TBODY TR TD.checkBox { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } DIV.areaHighlight TABLE.gbColumns THEAD TR TD.clear { BACKGROUND: inherit } TD.clear { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TBODY TR.frozen TD.dragCell { BACKGROUND: inherit } DIV.areaHighlight TABLE.gbColumns TFOOT TR.lastRow TD.clear { BACKGROUND: inherit } TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.gbColumns TBODY TR.placeholder TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns TBODY TR.placeholder TD.clear { BACKGROUND: inherit } UL.dragableHighlight LI TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozenbar TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TBODY TR.frozen TD.dragCell { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.dragableHighlight LI TABLE.gbColumns TFOOT TR.lastRow TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TABLE.gbColumns THEAD TR TD.clear { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } TR.rowdrag { Z-INDEX: 1; BACKGROUND: #ccc } .insertImg { Z-INDEX: 20; POSITION: relative; TOP: 12px } .insertImgUp { Z-INDEX: 20; POSITION: absolute; RIGHT: -10px } TABLE.inventory > TBODY TR TD.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > THEAD TR TH.smallCell { PADDING-BOTTOM: 9px; PADDING-LEFT: 3px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 9px } TABLE.inventory > TBODY TR TD.hideCell { DISPLAY: none } TABLE.inventory > THEAD TR TH.hideCell { DISPLAY: none } .clickOrder { DISPLAY: none } TABLE.inventory > TBODY TR TD.clickOrder { BORDER-LEFT: medium none; BACKGROUND-COLOR: #ddd } TABLE.inventory TR TD.endCell { PADDING-BOTTOM: 0px !important; BACKGROUND-COLOR: #ddd !important; PADDING-LEFT: 0px !important; WIDTH: 1px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } TABLE.inventory TR.orderRow TD.clickOrder { TEXT-ALIGN: center; BACKGROUND-COLOR: #ddd } TABLE.inventory TR.orderRow TD.clickOrder DIV { POSITION: relative } .sortedplus { BACKGROUND-IMAGE: url(images/controls.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 48% -995px } .dragCol { BACKGROUND-COLOR: #999 } TABLE.splashTable { BORDER-BOTTOM: #ccc 2px solid; MARGIN: 3px 0px 12px; WIDTH: 100%; BORDER-COLLAPSE: collapse } TABLE.splashTable THEAD TR { COLOR: #999 } TABLE.splashTable THEAD TR TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } TABLE.splashTable THEAD TR TH A { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #666; TEXT-DECORATION: none } TABLE.splashTable THEAD TR TH A:hover { BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; TEXT-DECORATION: underline } TABLE.splashTable TBODY TR { BORDER-TOP: #ddd 1px solid } TABLE.splashTable TBODY TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TD { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; COLOR: #777; FONT-SIZE: 90%; PADDING-TOP: 6px } TABLE.splashTable TBODY TR TH { TEXT-ALIGN: left; COLOR: #000 } TABLE.splashTable TH.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } TABLE.splashTable TD.smallCell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 0px } .contentBlock A { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -450px; TEXT-DECORATION: none } .contentBlock A.collapse { DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -1045px; TEXT-DECORATION: none } .contentBlock A.collapse:hover { TEXT-DECORATION: underline } .contentBlock A.hover { TEXT-DECORATION: underline } TABLE.reorderCols { MARGIN: 18px 0px 9px; WIDTH: 100%; BORDER-COLLAPSE: collapse; CLEAR: both; FONT-SIZE: 95% } TABLE.reorderCols THEAD TR TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #ededed; BORDER-TOP: #ccc 1px solid; CURSOR: move; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } TABLE.reorderCols THEAD TR TH.noReorderCol { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; CURSOR: default; BORDER-RIGHT: medium none } TABLE.reorderCols TBODY TR TD { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #eee 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 2px } TABLE.reorderCols TBODY TR TH { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed; COLOR: #555 } TABLE.reorderCols THEAD TH SPAN.reorderToolTip { BACKGROUND: url(images/controls.png) #ddd no-repeat -347px -122px } TABLE.reorderCols THEAD TR TH.axis { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND: #ededed 0px 50%; COLOR: #555 } .ghostTd { BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; FONT: 10px arial; BACKGROUND: #eee; HEIGHT: auto; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 2px } TABLE.reorderCols THEAD TH.dragging { BACKGROUND: #ccc } TABLE.reorderCols THEAD TH.hovering { BACKGROUND: #666 } TABLE.reorderCols THEAD TH.hovering IMG { DISPLAY: none } .rumble { MARGIN: 0px 0px 9px; BACKGROUND: url(images/selected_items.png) no-repeat -1974px center } .rumble_top { MARGIN: 12px 0px 0px; BACKGROUND: url(images/selected_items.png) no-repeat 12px center } #mapCanvasForm .rumble_top { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble { MARGIN-LEFT: 30px; MARGIN-RIGHT: 30px } #mapCanvasForm .rumble_top { BORDER-BOTTOM: #eee 2px solid } .noBatchActions { BACKGROUND-IMAGE: none !important; PADDING-BOTTOM: 5px !important; PADDING-LEFT: 5px !important; PADDING-RIGHT: 5px !important; PADDING-TOP: 5px !important } .rumbleBuildList { MARGIN: 0px 0px 0px 18px; BORDER-TOP: #eee 2px solid } .rumbleBuildList UL LI { Z-INDEX: 1000 } .rumbleBuildListTop UL LI { Z-INDEX: 1000 } .rumble_top UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble UL { PADDING-BOTTOM: 4px; PADDING-LEFT: 34px; PADDING-RIGHT: 2px; PADDING-TOP: 4px } .rumble_top UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble UL LI.primary { MARGIN: 0px 3px 0px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: top } .rumble_top UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .rumble UL LI.secondary { POSITION: relative; MARGIN: 0px 0px 0px 3px; FLOAT: right } .contentListPlain .rumble LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .contentListPlain .rumble_top LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble_top LI.listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .selectList .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .listActionDivider { PADDING-RIGHT: 9px; MARGIN-RIGHT: 9px; BORDER-RIGHT: #999 1px dotted } .rumble LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble_top LI.listActionGroup INPUT { FONT-SIZE: 95% } .rumble LI.listActionGroup A { DISPLAY: inline } .rumble_top LI.listActionGroup A { DISPLAY: inline } .paging { TEXT-ALIGN: right; FLOAT: right; CLEAR: left } .pagingprefs { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; MARGIN-TOP: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 3px } .paging SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BORDER-RIGHT: #ccc 1px dotted; PADDING-TOP: 1px } .rumble_top .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .rumble .inventory_paging { PADDING-LEFT: 9px; FLOAT: right; MARGIN-LEFT: 9px } .jumptopage INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; _display: inline-block } .inventory_paging INPUT { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } .jumptopage INPUT { WIDTH: 2em; FONT-WEIGHT: normal; -moz-border-radius: 0; -webkit-border-radius: 0 } .rumble_top .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rumble .inventory_paging A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .inventory_paging A { DISPLAY: inline-block } .inventory_paging IMG { DISPLAY: inline-block } .inventory_paging SPAN { DISPLAY: inline-block } .inventory_paging DIV { DISPLAY: inline-block } .jumptopage DIV { DISPLAY: inline-block } .inventory_paging A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px } .inventory_paging IMG { MARGIN: 2px 2px 3px } .inventory_paging A.inactive { FILTER: alpha(opacity=40); opacity: .4 } A.jumpToPageOpen { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } A.jumpToPageOpen:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } DIV.jumptopage INPUT#currentpage_bot { WIDTH: auto } DIV.jumptopage INPUT#currentpage_top { WIDTH: auto } INPUT#currentpage_bot { WIDTH: auto } INPUT#currentpage_top { WIDTH: auto } .jumptopage { FLOAT: right } .jumptopage DIV { MARGIN: 0px 0px 0px 3px } .jumptopage BUTTON { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; TOP: -2px; RIGHT: 0px; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .jumptopage BUTTON IMG { MARGIN: 0px } .rumble_top .secondaryControl { FLOAT: right } .rumble .secondaryControl { FLOAT: right } .key-valueTable TR { BORDER-BOTTOM: medium none } .key-valueTable TH { BORDER-BOTTOM: medium none } .key-valueTable TD { BORDER-BOTTOM: medium none } .key-valueTable TBODY { BORDER-BOTTOM: medium none } .key-valueTable TBODY TD { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TH { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: inherit !important; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 2px } .key-valueTable TBODY TR:first-child TH { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TR:first-child TD { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .key-valueTable TBODY TH { COLOR: #555 } .infoListWrapper .key-valueTable { MARGIN: 3px 9px 6px } TD.removeCell { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A { COLOR: #999; TEXT-DECORATION: line-through } TD.removeCell SPAN A IMG { FILTER: alpha(opacity=30); opacity: .3 } .contentList { MARGIN: -20px -30px } .buildList { MARGIN: -20px -30px } .contentListPlain { MARGIN: -20px -30px } .announcementList { MARGIN: -20px -30px } #bb-assessment-canvas .contentListPlain { MARGIN: 0px -30px } .gradingList { MARGIN: 0px -30px } .buildList#survey { MARGIN: 0px -30px } #manageFormCanvasForm .buildList { MARGIN: 0px -30px } #mapCanvasForm .buildList { MARGIN: 0px 30px } .hierarchy-page #toolSettingsForm #dataCollectionContainer { MARGIN: -10px -30px } .leftColumn-wide .contentListPlain { MARGIN: 0px } .contentList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .buildList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentListPlain > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .announcementList > LI { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentPageItem { BORDER-BOTTOM: transparent 1px solid; POSITION: relative; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 20px; MARGIN: 0px -1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 20px; -moz-transition: border, margin, background 250ms ease-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 1.000, 1.000) } .contentList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentList > LI.read:first-child:hover { BORDER-TOP: transparent 1px solid } .buildList > LI:first-child { BORDER-TOP: transparent 1px solid } .contentListPlain > LI:first-child { BORDER-TOP: transparent 1px solid } .announcementList > LI:first-child { BORDER-TOP: transparent 1px solid } #bb-assessment-canvas .contentListPlain > LI:first-child { BORDER-TOP-COLOR: #ccc } #bb-assessment-canvas .contentListPlain > LI { MIN-HEIGHT: 16px; PADDING-LEFT: 42px } #bb-assessment-canvas .contentListPlain > LI .item { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-assessment-canvas .contentListPlain > LI .details { PADDING-BOTTOM: 5px; PADDING-TOP: 12px } .takeQuestionDiv { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='_'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer > DIV[id*='step'] { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } #assessmentGradeForm #dataCollectionContainer H3.submittitle.steptitle { PADDING-BOTTOM: 20px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 20px } .takeQuestionDiv H3 { MARGIN: 0px } .takeQuestionDiv + H3 { PADDING-LEFT: 28px } #assessmentGradeForm #dataCollectionContainer { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .contentList > LI { MIN-HEIGHT: 50px } .buildList > LI { MIN-HEIGHT: 50px } .contentListPlain > LI { MIN-HEIGHT: 50px } .announcementList > LI { MIN-HEIGHT: 50px } .contentPageItem { MIN-HEIGHT: 50px } .liItem:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList > LI:hover { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; BACKGROUND-COLOR: #f4f4f4; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.25), 1px 1px 0 #fff inset; -moz-transition: border, margin, -moz-box-shadow, background 100ms ease-in-out; -webkit-transition-property: -webkit-box-shadow, border, background; -webkit-transition-duration: 100ms; -webkit-transition-timing-function: ease-in-out } .buildList LI:first-child:hover { BORDER-TOP-COLOR: #666 } .contentList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .gradingList > LI:first-child:hover { BORDER-TOP-COLOR: #666 } .liItem A[onclick*='toggleDetails'] { POSITION: relative; VISIBILITY: hidden; TOP: -6px; RIGHT: -19px } .liItem:hover A[onclick*='toggleDetails'] { VISIBILITY: visible } .liItem A[onclick*='toggleDetails'] IMG { VISIBILITY: hidden } .liItem A[title*='Hide'] { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 0px 0px } .liItem A[title*='Show'] { BACKGROUND: url(images/portlet_expand_alt_rev.png) no-repeat 0px 0px } .contentListPlain .item_icon { DISPLAY: none } .item { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 110%; CURSOR: move; PADDING-TOP: 0px } .contentList .item { PADDING-BOTTOM: 12px; PADDING-LEFT: 60px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .gradingList .item { PADDING-RIGHT: 120px } .announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .announcementList-read .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } #announcementList .item { PADDING-RIGHT: 13em; WORD-WRAP: break-word; WORD-BREAK: normal } .item:hover { CURSOR: move } .item:focus { CURSOR: move } .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .announcementList-read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .contentList-slim .read .item { PADDING-LEFT: 48px } .read .item:hover { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .read .item:focus { BACKGROUND: none transparent scroll repeat 0% 0%; CURSOR: default } .tab-groups H3.item { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 8px; MARGIN: 0px 11em 8px -12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tab-groups H3.item .reorder + SPAN { FONT-STYLE: italic; MARGIN: 0px 4px 0px 0px; FONT-FAMILY: Georgia; COLOR: #999; FONT-SIZE: 90%; FONT-WEIGHT: normal } .item_icon { POSITION: absolute; MARGIN: 0px; TOP: 12px; LEFT: 24px } .read .item_icon { MARGIN: 0px; LEFT: 18px } .item H3 { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item .contextMenuContainer { MARGIN: 0px 3px 0px 0px; WORD-WRAP: break-word; FLOAT: left } .item H3 + .contextMenuContainer { POSITION: relative; TOP: 2px } .tab-groups .item .contextMenuContainer { FLOAT: none } .item INPUT[type=checkbox] { MARGIN: 2px 6px 0px -6px; FLOAT: left } .iconsOnly { BORDER-BOTTOM: #ccc 1px solid; MARGIN: 24px auto; WIDTH: 80% } .iconsOnly LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 0px; FLOAT: left !important; PADDING-TOP: 0px } .iconsOnly > LI:first-child { BORDER-TOP-COLOR: #ccc } .iconsOnly .read { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconsOnly .item_icon { PADDING-BOTTOM: 0px; MIN-HEIGHT: 50px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 0px; PADDING-TOP: 12px; LEFT: auto } .iconsOnly .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MIN-HEIGHT: 3em; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .iconsOnly .read .item { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .iconsOnly .item H3 { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly .item .contextMenuContainer { DISPLAY: inline-block; FLOAT: none; TOP: 0px } .iconsOnly LI:hover .item_icon { BACKGROUND: #ededed } .iconsOnly LI:hover .item { BACKGROUND: #ededed } .iconsOnly LI:focus .item_icon { BACKGROUND: #ededed } .iconsOnly LI:focus .item { BACKGROUND: #ededed } .iconsOnly .read .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .item_icon { POSITION: relative !important; TEXT-ALIGN: center !important; DISPLAY: block !important } .iconsOnly .read .item_icon { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read .item { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; LEFT: 0px } .iconsOnly .read:hover .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:hover .item { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item_icon { BACKGROUND: none transparent scroll repeat 0% 0% } .iconsOnly .read:focus .item { BACKGROUND: none transparent scroll repeat 0% 0% } .buildList LI INPUT { MARGIN: 2px 8px; FLOAT: left } .buildList INPUT.browse { MARGIN: 0px 0px 6px } .buildList INPUT.genericButton { MARGIN: 0px 0px 6px } .buildList INPUT[type=button] { MARGIN: 0px 0px 6px } .contentListRight { POSITION: absolute; RIGHT: 6px; FONT-WEIGHT: normal; LEFT: auto } .pagedContentListRight { TOP: 4px } .contentListRightOffset { MARGIN-RIGHT: 12em } .contentList .details { PADDING-LEFT: 60px } .contentListPlain .contentListRight + .details { PADDING-BOTTOM: 1px; OVERFLOW-X: auto; PADDING-LEFT: 28px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } .announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } #announcementList .details { OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN-RIGHT: 12.8em } .contentList-slim .read .details { MARGIN-LEFT: 48px } .staffInfoList .details { MARGIN-RIGHT: 160px } .staffInfoList .hasPhoto .details { MIN-HEIGHT: 135px } .details > P { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .details .note { FONT-WEIGHT: bold } .details > P.important { PADDING-BOTTOM: 0px; MARGIN: 3px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .details > P.important SPAN { COLOR: #888; FONT-WEIGHT: normal } .itemDetails { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo { POSITION: absolute; BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 14px; WIDTH: 14em; BOTTOM: 8px; PADDING-RIGHT: 9px; WORD-WRAP: break-word; FONT-SIZE: 85%; TOP: 2px; RIGHT: 0px; PADDING-TOP: 9px } .announcementInfo P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .itemDetails P { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .announcementInfo P SPAN { COLOR: #999 } .announcementInfo SPAN { COLOR: #999 } .itemDetails SPAN { COLOR: #999 } .announcementInfo P SPAN SPAN { FONT-SIZE: 95% !important } .noItems { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } .additional + P .warnFont { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia; COLOR: #777; FONT-WEIGHT: normal; PADDING-TOP: 6px } #listContainer .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .additional + P .warnFont { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { TEXT-ALIGN: center; PADDING-TOP: 100px } .hierarchy-page .noItems { TEXT-ALIGN: center; PADDING-TOP: 100px } .table-scroll-wrapper .helphelp { MARGIN: 0px auto; DISPLAY: block } .additional + P .warnFont { DISPLAY: block; PADDING-TOP: 100px } .details .attachments { WORD-WRAP: break-word; MARGIN-BOTTOM: 9px; WORD-BREAK: normal } .buildList > LI.separator { Z-INDEX: 0; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; MIN-HEIGHT: 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #ededed; TOP: 0px; PADDING-TOP: 14px; LEFT: 0px } .separator H3.item { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .external-breadcrumbs .receipt { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 108% Georgia, serif normal; PADDING-TOP: 0px } .separator .line { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: absolute; BORDER-TOP: #777 1px dashed; TOP: 50%; RIGHT: 0px; LEFT: 30px } .external-breadcrumbs .contentPaneWide { POSITION: relative; MARGIN: 0px 24px 0px 30px; TOP: 6px; LEFT: 0px } .separator .text { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .external-breadcrumbs .receipt { Z-INDEX: 2; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #ededed; COLOR: #444; PADDING-TOP: 0px } .buildList .detailList .hidden { DISPLAY: none } .buildList .detailList .tagContainer { POSITION: relative } .buildList .detailList .tagContainer .hidden { DISPLAY: none } .buildList .detailList .tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-WEIGHT: normal; PADDING-TOP: 2px } .buildList .detailList .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer INPUT { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; MARGIN: 0px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .tagContainer .newTagForm { BORDER-LEFT: #999 1px dotted; MARGIN-LEFT: 6px } .tagContainer .newTagForm LABEL { PADDING-LEFT: 6px } .currentTags { Z-INDEX: 100; POSITION: absolute; LINE-HEIGHT: 1.8; WIDTH: 16em; ZOOM: 1; DISPLAY: none; OVERFLOW: hidden; TOP: 1.2em; RIGHT: 0px } .currentTags SPAN { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 18px } .currentTags A { FONT-WEIGHT: bold } .currentTags A.closeCloud { POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 1px; LINE-HEIGHT: 1; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; TOP: 0px; PADDING-TOP: 0px; LEFT: 0px } .auto_complete { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; WIDTH: 12em; BACKGROUND: #e2eefe; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid } .auto_complete UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .auto_complete UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 3%; WIDTH: 96%; PADDING-RIGHT: 1%; OVERFLOW: hidden; CURSOR: pointer; PADDING-TOP: 2px } .auto_complete UL LI.selected { BACKGROUND-COLOR: #fff } .auto_complete UL STRONG.highlight { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .freq1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 90%; PADDING-TOP: 0px } .freq2 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 105%; PADDING-TOP: 0px } .freq3 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 120%; PADDING-TOP: 0px } .freq4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 135%; PADDING-TOP: 0px } .freq5 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 150%; PADDING-TOP: 0px } .freq6 { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FONT-SIZE: 165%; PADDING-TOP: 0px } .freq1:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq2:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq3:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq4:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq5:hover { BACKGROUND: white; TEXT-DECORATION: none } .freq6:hover { BACKGROUND: white; TEXT-DECORATION: none } .currentTags A.tagDisabled { FILTER: alpha(opacity=70); FONT-WEIGHT: normal; TEXT-DECORATION: none; opacity: .7 } .currentTags A.tagDisabled:hover { BACKGROUND: none transparent scroll repeat 0% 0% } .tab-groups .tab-group-label { FONT: italic 102%/1.4em Georgia, sans-serif; COLOR: #999 } .subList { MARGIN: 3px 0px 6px } .subList-reorder { MARGIN: 3px 0px 6px } .subList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .buildList .detailList { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .subList-reorder LI { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; FONT-SIZE: 95%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 6px } .subList-reorder LI:hover { BORDER-BOTTOM-COLOR: #bbb !important; BORDER-TOP-COLOR: #bbb !important; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #bbb !important; BORDER-LEFT-COLOR: #bbb !important } .subList LI A IMG { VERTICAL-ALIGN: middle } .subList-reorder LI A IMG { VERTICAL-ALIGN: middle } .subList LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList-reorder LI P { PADDING-BOTTOM: 0px; MARGIN: 3px 6px 3px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; COLOR: #444; FONT-SIZE: 90%; PADDING-TOP: 0px } .subList LI P { VISIBILITY: hidden } .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .buildList .detailList LI .subList LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder LI P SPAN { DISPLAY: inline; FLOAT: none; FONT-WEIGHT: bold } .subList-reorder .itemDetails { DISPLAY: none } .subList-reorder .details { DISPLAY: none } .subList .details { DISPLAY: none } .itemDetails + .details { OVERFLOW: visible; MARGIN-RIGHT: 13em } .subList LI P SPAN { FONT-WEIGHT: bold } .subListArtifact { CLEAR: both } .detailList .subListArtifact { CLEAR: both } .subListArtifact LI { POSITION: static } .detailList .subListArtifact LI { POSITION: static } .detailList .subListArtifact { ZOOM: 1 } .detailList .subListArtifact LI { ZOOM: 1 } .detailList .subListArtifact LI A { ZOOM: 1 } .buildList .detailList { MARGIN: 0px 0px 0.6em 0.7em } .buildList .detailList .subList { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.buildList UL.detailList OL.subList { LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: decimal } UL.buildList UL.detailList LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0.2em; MARGIN: 0px 0px 0.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: table-row; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } UL.buildList UL.detailList LI SPAN { WIDTH: 135px; DISPLAY: block; FLOAT: left; FONT-WEIGHT: bold } UL.buildList UL LI > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 0.3em; WIDTH: 79%; PADDING-RIGHT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: 135px; PADDING-TOP: 0px } UL.buildList UL LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } UL.noimg LI DIV.contextMenuContainer { WIDTH: auto; DISPLAY: inline; FLOAT: none } .buildList .pageBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } .buildList .sectionBreak .item { BACKGROUND-IMAGE: url(images/readback.png); COLOR: #777; BORDER-TOP: #ccc 2px dotted } DIV.itemHeaderControl { POSITION: absolute; TOP: 9px; RIGHT: 14.5em } DIV.itemHeaderControl A IMG { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BODY.cartMode { PADDING-BOTTOM: 49px } .addedRow { COLOR: #999 } TABLE.sortable TBODY TR.addedRow TH LABEL A { COLOR: #999 } .addedRow TD A { COLOR: #999 } .addedRow { } .addedRow IMG { FILTER: alpha(opacity=50); opacity: .5 } TABLE#datatable2 TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TABLE#datatable2 THEAD TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .itemSelector { MARGIN: 0px auto; WIDTH: 20px; HEIGHT: 20px } .itemSelector INPUT { FILTER: alpha(opacity=0); opacity: 0 } .available { BACKGROUND: url(../../../images/ci/ng/available_ti.png) no-repeat 0px 0px } .inprogress { BACKGROUND: url(../../../images/ci/ng/progress.png) red no-repeat 0px 0px } .remove { BACKGROUND: url(../../../images/ci/ng/remove_ti.png) no-repeat 0px 0px } .itemTray { Z-INDEX: 10000; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 18px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .picker .itemTray { RIGHT: 12px; LEFT: 12px } DIV.itemTrayContentPane { LEFT: 200px } DIV.itemTrayContentPaneWide { LEFT: 0px } .itemTray H2 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H3 { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 110%; PADDING-TOP: 6px } .itemTray H2 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H3 SPAN.listToggle { COLOR: #eee; FONT-WEIGHT: normal } .itemTray H2 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H3 SPAN.listToggle A { BORDER-BOTTOM: #ccc 1px dotted; COLOR: #eee; TEXT-DECORATION: none } .itemTray H2 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray H3 SPAN.listToggle A:hover { BORDER-BOTTOM: #ccc 1px solid } .itemTray DIV.noItems { TEXT-ALIGN: center; COLOR: #777 } .itemTray #cartList { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .itemTray #selectedItemsWrapper { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #777; PADDING-TOP: 4px } .itemTray .cartTableWrapper { BORDER-BOTTOM: #555 1px solid; BORDER-LEFT: #555 1px solid; OVERFLOW-Y: auto; BACKGROUND: #fff; MAX-HEIGHT: 130px; BORDER-TOP: #555 1px solid; BORDER-RIGHT: #555 1px solid } .sideTOC .cartTableWrapper { OVERFLOW: auto } #count { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .itemTray #numberOfElements { TEXT-ALIGN: center; PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #444; COLOR: #fff; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #progress { Z-INDEX: 300; POSITION: absolute; MARGIN: 300px 50%; WIDTH: 100px; DISPLAY: none } #progress DIV { MARGIN-LEFT: -100% } #cartSubmit { Z-INDEX: 200 } #cartList FIELDSET { PADDING-BOTTOM: 12px; MARGIN: 0px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; COLOR: #f6f6f6; PADDING-TOP: 3px } #cartList FIELDSET UL LI INPUT[type=text] { BORDER-BOTTOM: #666 1px solid; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 2.3em; PADDING-RIGHT: 0px; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 0px } .itemGallery { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .itemGallery > LI { TEXT-ALIGN: center; MARGIN: 5px 5px 20px; WIDTH: 1.2em; ZOOM: 1; VERTICAL-ALIGN: top; PADDING-TOP: 0.06em; _height: 130px } .itemGallery .stackFix { WIDTH: 100%; HEIGHT: auto } .itemIconHolder { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px auto 0.05em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; HEIGHT: 1em; PADDING-TOP: 0px } .itemIconHolder A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; ZOOM: 1; DISPLAY: block; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .itemIconHolder A:hover { BORDER-BOTTOM-COLOR: #777; BORDER-TOP-COLOR: #777; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777 } .itemIconWrapper { BORDER-BOTTOM: #f1f1f1 0.02em solid; POSITION: absolute; BORDER-LEFT: #f1f1f1 0.02em solid; MARGIN: 0px 50%; WIDTH: auto; BOTTOM: 0px; BORDER-TOP: #f1f1f1 0.02em solid; BORDER-RIGHT: #f1f1f1 0.02em solid } .x-small LI { WIDTH: 1.8em; FONT-SIZE: 70px } .small LI { FONT-SIZE: 100px } .normal LI { FONT-SIZE: 140px } .large LI { FONT-SIZE: 180px } .x-large LI { FONT-SIZE: 220px } .u_resetFont-px { FONT-SIZE: 12px } .itemIconLink-vertical A { WIDTH: 0.78em; HEIGHT: 0.9em } .itemIconLink-square A { WIDTH: 0.78em; HEIGHT: 0.78em } .itemIconLink-horizontal A { WIDTH: 1em; HEIGHT: 0.78em } .itemIconLink-vertical IMG { WIDTH: 0.8em; HEIGHT: 0.9em; VERTICAL-ALIGN: top } .itemIconLink-square IMG { WIDTH: 0.8em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-horizontal IMG { WIDTH: 1em; HEIGHT: 0.8em; VERTICAL-ALIGN: top } .itemIconLink-vertical .itemIconWrapper { LEFT: -0.39em } .itemIconLink-square .itemIconWrapper { LEFT: -0.39em } .itemIconLink-horizontal .itemIconWrapper { LEFT: -0.5em } .itemInfo { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-SIZE: 12px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.2em } .itemInfo LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; LINE-HEIGHT: 1.25em; MARGIN: 0px; WIDTH: 100%; FONT-SIZE: 95%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .itemInfo LI SPAN { VERTICAL-ALIGN: top } .itemInfo LI .label { TEXT-ALIGN: right } .itemInfo .cmimg { WIDTH: 18px } .itemInfo .cmimg IMG { WIDTH: 18px } .itemInfo .title { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .itemInfo INPUT[type='text'] { WIDTH: 100% } .itemInfo .high { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; LINE-HEIGHT: 1.15em; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; BACKGROUND: #fff1c5; MARGIN-LEFT: 0px; FONT-SIZE: 100%; WORD-BREAK: normal; PADDING-TOP: 1px } .lb-content .itemInfo { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 3px } .lb-content .itemInfo LI { LINE-HEIGHT: 1.45em } .lb-content .itemInfo .title { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .iconGallery > LI { MARGIN: 5px 5px 12px; WIDTH: 75px } .iconGallery .itemIconHolder { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; HEIGHT: 60px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemIconHolder A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .iconGallery .itemTitle { COLOR: #666; FONT-SIZE: 85% } .iconGallery .itemIconWrapper { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; WIDTH: auto; PADDING-RIGHT: 4px; BACKGROUND: #fff; BORDER-TOP: #fff 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px; LEFT: -30px } .sideTOC_panelMin .container { POSITION: static !important } .sideTOC_panel .container { POSITION: static !important } .sideTOC_panelMax .container { POSITION: static !important } .tocWrapper { Z-INDEX: 200; BORDER-BOTTOM: 0px; POSITION: fixed; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; BOTTOM: 0px; PADDING-RIGHT: 9px; ZOOM: 1; BACKGROUND: #ddd; HEIGHT: 40px; BORDER-TOP: #aaa 1px solid; RIGHT: 18px; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; LEFT: 0px; -moz-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -webkit-box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4); -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.4) } .tocHidden { TOP: -10000px !important } .tocHead { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #333; PADDING-TOP: 10px } .tocHead H2 { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .tocActions { MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px !important } .sideTOC H2 { FLOAT: none !important; FONT-SIZE: 110%; text-shadow: 0 1px 0 #f0f0f0 } .tocActions { WHITE-SPACE: nowrap } .tocActions A { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions SPAN { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .tocActions > IMG { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { MARGIN: 0px 0px 0px -1px; DISPLAY: inline-block } .secondaryButton .tocNavLink { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .actionBar .tocNavText { PADDING-BOTTOM: 13px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; COLOR: #eee; PADDING-TOP: 13px } .actionBar .tocNavText + A { MARGIN-RIGHT: 12px } .actionBar .tocNavText + IMG { MARGIN-RIGHT: 12px } .tocActions SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .tocTreeWrapper { PADDING-BOTTOM: 0px; OVERFLOW-Y: auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .sideTOC .tocTreeWrapper { OVERFLOW: auto } UL#tocTree LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL#tocTree A.itemActive { FONT-WEIGHT: bold; TEXT-DECORATION: none } UL#tocTree SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; COLOR: #555; PADDING-TOP: 0px } .treeNodeIcon { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; PADDING-TOP: 0px } .sideTOC { BORDER-BOTTOM: #aaa 1px solid; POSITION: absolute; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 200px; BOTTOM: auto; PADDING-RIGHT: 0px; BACKGROUND: #ddd; BORDER-TOP: #aaa 1px solid; TOP: 0px; RIGHT: auto; BORDER-RIGHT: 0px; PADDING-TOP: 0px; -moz-box-shadow: -2px 0 2px rgba(0, 0, 0, .2) inset, 0px 3px 2px #ddd inset, 0px -3px 2px #ddd inset; -webkit-box-shadow: none; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: none } .sideTOCMinimize { BORDER-BOTTOM: medium none; POSITION: absolute; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 9px !important; BOTTOM: auto; PADDING-RIGHT: 0px; BORDER-TOP: medium none; TOP: 0px; RIGHT: auto; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-border-radius: 3px 0 0 3px; -webkit-border-radius: 3px 0 0 3px } .sideTOCMinimize .tocActions { POSITION: relative; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 1px; LEFT: -24px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .sideTOCMinimize .tocActions A { MARGIN: -1px 0px 0px; DISPLAY: block } .tocBottom_pullExpanded { LEFT: 228px } .tocBottom_pullCollapsed { LEFT: 18px } .tocSide_pullExpanded { TOP: 4px; LEFT: 222px } .tocSide_pullCollapsed { LEFT: 13px } .sideTOC_panel { PADDING-LEFT: 201px } .sideTOC_panelMin { PADDING-LEFT: 21px } .sideTOC_panelMax { PADDING-LEFT: 351px } .tocBottom_min { PADDING-BOTTOM: 30px } .tocBottom_max { PADDING-BOTTOM: 330px } .tocBottom_open { PADDING-BOTTOM: 160px } .tocBottom_open .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_max .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .tocBottom_min .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panel .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMax .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .sideTOC_panelMin .container { PADDING-BOTTOM: 18px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } .localViewToggle { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; ZOOM: 1; PADDING-TOP: 0px } .localViewToggle UL { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eee; PADDING-TOP: 0px; -moz-box-shadow: 1px 0 0 #fafafa inset; -webkit-box-shadow: 1px 0 0 #fafafa inset; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .localViewToggle UL LI { FLOAT: right } .localViewToggle UL LI.active { POSITION: relative } .localViewToggle A { PADDING-BOTTOM: 7px; TEXT-TRANSFORM: inherit; MARGIN: 0px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; DISPLAY: block; FONT-SIZE: 90%; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .localViewToggle A:hover { TEXT-DECORATION: underline } .localViewToggle .active A:hover { TEXT-DECORATION: none } .localViewToggle A.active { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } DIV.localViewToggle H2 { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: #ddd 1px solid } .localViewToggle A.active:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } DIV.localViewToggle H2:before { Z-INDEX: 3; BORDER-BOTTOM: #eee 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: -1px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .localViewToggle .separator { BORDER-LEFT: #d7bb66 1px dotted; PADDING-LEFT: 6px; MARGIN-LEFT: 6px } .localViewToggle A.miniComboButton { BORDER-BOTTOM: #d7bb66 1px solid; BORDER-LEFT: #d7bb66 1px solid; PADDING-RIGHT: 16px; BACKGROUND: url(images/controls.png) #f5e7bd no-repeat -1px -500px; COLOR: #444; BORDER-TOP: #d7bb66 1px solid; BORDER-RIGHT: #d7bb66 1px solid; TEXT-DECORATION: none !important } .containerTabs { MARGIN: 6px 24px 0px; FONT-SIZE: 100% } .containerTabs LI { POSITION: relative; FLOAT: left } .containerTabs LI A { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI H3 { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; DISPLAY: block; WHITE-SPACE: nowrap; FONT-SIZE: 100%; TEXT-DECORATION: none; PADDING-TOP: 9px } .containerTabs LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs LI H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .containerTabs .active A { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:hover { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:focus { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active H3 { COLOR: #000; FONT-WEIGHT: bold; TEXT-DECORATION: none } .containerTabs .active A:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:before { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active H3:after { BORDER-BOTTOM: #ccc 9px solid; POSITION: absolute; BORDER-LEFT: transparent 9px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 9px solid; LEFT: 50% } .containerTabs .active A:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .active H3:after { Z-INDEX: 2; BORDER-BOTTOM-COLOR: #fff; MARGIN-BOTTOM: -1px } .containerTabs .tabhead H3 { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 18px; COLOR: #555; PADDING-TOP: 9px } .collapseTabs .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #d1eaef } .collapseTabs .containerTabs .active A:before { CONTENT: none } .portlet .containerTabs { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 8px } .portlet .containerTabs LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .containerTabs LI A { PADDING-BOTTOM: 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; PADDING-TOP: 0px } .portlet .containerTabs .active A { MARGIN: 0px } .collapseTabs .containerTabs { MARGIN: 0px } .portlet .containerTabs .active A:before { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:after { BORDER-RIGHT-WIDTH: 7px; BORDER-BOTTOM-WIDTH: 7px; MARGIN-LEFT: -4px; BORDER-TOP: 0px; BORDER-LEFT-WIDTH: 7px; LEFT: 50% } .portlet .containerTabs .active A:before { BORDER-BOTTOM-COLOR: #ddd } .portlet .containerTabs .active A:after { BORDER-BOTTOM-COLOR: #fff4bf; BOTTOM: -1px } .mapTabs { POSITION: relative; MARGIN: 20px -30px 0px; BACKGROUND: #d1eaef; CLEAR: both; BORDER-TOP: #aaa 1px solid; -moz-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; -webkit-box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; box-shadow: 1px 1px 0 rgba(255, 255, 255, 0.8) inset; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .lesson-plan-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { MARGIN-TOP: 0px; TOP: 20px } .evidence-page .mapTabs { BORDER-BOTTOM: #bbb 1px solid } .evidence-page .mapTabs LI:before { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:after { Z-INDEX: 101; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #d1eaef 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 0px } .evidence-page .mapTabs LI:before { Z-INDEX: 100; BORDER-BOTTOM: transparent 23px solid; POSITION: absolute; BORDER-LEFT: #bbb 12px solid; DISPLAY: block; BORDER-TOP: transparent 23px solid; CONTENT: ""; TOP: 0px; BORDER-RIGHT: medium none; LEFT: 1px } .evidence-page .mapTabs LI.active + LI:after { BORDER-LEFT-COLOR: #eaeaea } .evidence-page .mapTabs LI:first-child:before { DISPLAY: none } .evidence-page .mapTabs LI:first-child:after { DISPLAY: none } .evidence-page .mapTabs LI A { PADDING-LEFT: 30px } .evidence-page .mapTabs LI.active H3 { PADDING-LEFT: 30px } .mapTabs UL { MARGIN-TOP: 0px; MARGIN-LEFT: 0px } DIV.mapTabs UL LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .mapTabs UL LI.active H3 { POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; BACKGROUND: #eaeaea; FONT-SIZE: 100%; PADDING-TOP: 14px } .mapTabs UL LI.active H3:before { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM: #aaa 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; BOTTOM: 0px; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #eaeaea; BOTTOM: -1px } .mapTabs UL LI.active:first-child H3:after { MARGIN-LEFT: 0px } .mapTabs UL LI.active:first-child H3:before { MARGIN-LEFT: 0px } .lesson-plan-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .hierarchy-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #555; BOTTOM: 0px } .lesson-plan-page .mapTabs UL LI.active H3:before { DISPLAY: none } .hierarchy-page .mapTabs UL LI.active H3:before { DISPLAY: none } .evidence-page .mapTabs UL LI.active H3:after { BORDER-BOTTOM-COLOR: #fff } .mapTabs UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; COLOR: #01869e; FONT-SIZE: 100%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .mapTabs UL LI A:hover { TEXT-DECORATION: underline } .mapTabs UL LI SPAN:hover { BORDER-BOTTOM-STYLE: solid } .mapTabs A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs LI:first-child A.inprogress { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 9px 33% } .mapTabs A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 32px; BACKGROUND: url(images/workflow_detail_complete2.gif) no-repeat 9px 50% } .mapTabs LI:first-child A.complete { PADDING-LEFT: 54px; BACKGROUND-POSITION: 30px 50% } .mapTabs UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI:first-child H3 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .mapTabs UL LI DIV { PADDING-BOTTOM: 7px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: none; PADDING-TOP: 7px } .mapTabs UL LI.saveTab A { DISPLAY: none } UL.containerTabs LI.saveTab IMG { DISPLAY: none } .mapTabs UL LI.saveFadeIn { FILTER: alpha(opacity=0); opacity: 0 } .mapTabs UL LI.saveTab DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/tab_receipt_back.gif) #44b10e repeat-x center bottom; COLOR: white; FONT-WEIGHT: bold; PADDING-TOP: 5px } DIV.mapHelp { PADDING-BOTTOM: 0px; MARGIN: -1px 0px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff1c5; PADDING-TOP: 4px } UL.setStatus { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 3px; LIST-STYLE-TYPE: none; MARGIN: 15px 0px 9px 30px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BORDER-TOP: #eee 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 3px } UL.setStatus LI { MARGIN: 0px 6px 0px 0px; FONT-SIZE: 95% } UL.setStatus LI INPUT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.setStatus LI LABEL { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_active.gif) no-repeat 1px 0px } UL.setStatus LI LABEL.complete { PADDING-LEFT: 22px; BACKGROUND: url(images/workflow_detail_complete.gif) no-repeat 1px 0px } FORM.mapCanvasForm DIV.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } FORM.mapCanvasForm H3.steptitle { MARGIN: 15px 0px 0px 18px; PADDING-LEFT: 0.8em } .mapTabs .containerTabs { BORDER-BOTTOM: 0px } #mapCanvasForm { MARGIN: 0px -30px } #mapCanvasForm #containerDiv { MARGIN: 20px 0px } .evidence-page .infoListWrapper H3 A.itemHead { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .infoListWrapper H3 A.itemHeadOpen { PADDING-BOTTOM: 3px; PADDING-LEFT: 22px; PADDING-RIGHT: 0px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 6px 6px; PADDING-TOP: 3px } .evidence-page .leftColumn-narrow { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #f9f9f9; MARGIN: 0px; PADDING-LEFT: 6px; WIDTH: 26%; PADDING-RIGHT: 6px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; border-radius: 3px 3px 3px 3px } .evidence-page .leftColumn-wide { WIDTH: 69% } .sessionBox { WIDTH: 95% } .sessionBox .key-valueTable { } .sessionBox .key-valueTable TBODY TD { PADDING-RIGHT: 40px } .sessionBox .key-valueTable TBODY TH { PADDING-RIGHT: 40px } .evidence-page .criteriaSummary { BORDER-BOTTOM: #eee 1px solid; BORDER-LEFT: #eee 1px solid; MARGIN: 0px; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 12px } .evidence-page .paletteItems LI { MARGIN-LEFT: 0px } .paneTabs { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: -12px 0px 12px; ZOOM: 1; BACKGROUND: #efede3; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .subtabs-framed .paneTabs { -moz-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -webkit-box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; -moz-border-radius: 0; -webkit-border-radius: 0; box-shadow: 0 -4px 6px rgba(0, 0, 0, .05) inset; border-radius: 0 } .paneTabs UL { CLEAR: both } .paneTabs UL LI { Z-INDEX: 200; POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs .active { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } .paneTabs A { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 12px } .paneTabs UL LI:first-child A { BORDER-LEFT: 0px } .paneTabs A:hover { TEXT-DECORATION: underline } .paneTabs .active A:hover { TEXT-DECORATION: none } .paneTabs .active A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:focus { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .activepersonal A:hover { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active H3 { POSITION: relative; COLOR: #333; FONT-WEIGHT: bold; TEXT-DECORATION: none; text-shadow: 0 1px 0 #fff } .paneTabs .active A:after { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #efede3 8px solid; POSITION: absolute; BORDER-LEFT: transparent 8px solid; DISPLAY: block; MARGIN-LEFT: -8px; BORDER-TOP: 0px; CONTENT: ""; BORDER-RIGHT: transparent 8px solid; LEFT: 50% } .paneTabs .active A:before { BORDER-BOTTOM: #ccc 8px solid; BOTTOM: 0px } .paneTabs .active A:after { BOTTOM: -1px } .paneTabs .activepersonal A { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .activepersonal A:hover { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 22px; FONT-WEIGHT: bold; PADDING-TOP: 5px } .paneTabs .personal A { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: #dedede; TEXT-DECORATION: none; PADDING-TOP: 3px } .paneTabs .external A { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #dedede no-repeat 2px center } .paneTabs .external A:hover { PADDING-LEFT: 20px; BACKGROUND: url(images/small_external_content.gif) #fff1c5 no-repeat 2px center } .paneTabs .activepersonal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs .personal A.paneTabOptions { POSITION: absolute !important; FILTER: alpha(opacity=30); PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; TOP: 4px; RIGHT: 5px; PADDING-TOP: 0px; opacity: .3 } .paneTabs A.paneTabOptions { DISPLAY: none } .paneTabs .activepersonal:hover A.paneTabOptions { FILTER: alpha(opacity=100); opacity: 1 } .paneTabs A.hiddenTabsLink { BACKGROUND-IMAGE: url(images/indicators.png); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center 6px } .paneTabs A.hiddenTabsLink IMG { FILTER: alpha(opacity=0); WIDTH: 2px; HEIGHT: 2px; opacity: 0 } .panelTabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .panelTabs LI { BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FLOAT: right; TOP: 2px !important; RIGHT: -3px; PADDING-TOP: 0px !important } .panelTabs LI.active { Z-INDEX: 2 } .panelTabs LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI.active A { PADDING-BOTTOM: 4px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: inline-block; TOP: 0px !important; TEXT-DECORATION: none; PADDING-TOP: 4px } .panelTabs LI A:hover { BACKGROUND-COLOR: #f6f6f6 } .panelTabs LI.active A { BORDER-BOTTOM: 0px; COLOR: #333; FONT-WEIGHT: bold } .panelTabs LI.active A.preview { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 2px solid; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .panelTabs LI.active A.edit { BORDER-BOTTOM: 0px; MARGIN: 0px } .collapseTabs { MARGIN-BOTTOM: 12px } .collapseTabsData { POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; BACKGROUND: #d1eaef; PADDING-TOP: 12px; -moz-border-radius: 3px } .containerTabsCollapsed { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .collapseTabs LI A { TEXT-DECORATION: underline } .collapseTabs LI.active { Z-INDEX: 1000 } .sequenceMapHead { MARGIN: 6px 0px } .sequenceMapHead H3 { MARGIN: 12px 0px 6px } .sequenceMapHead P { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 0px } DIV.sequenceMapHead DIV.actionBar { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #fff7de; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.searchResultList-sortOptions { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: right; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; MIN-HEIGHT: 20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 15px; PADDING-TOP: 10px } DIV.searchResultList-sortOptionsCount { WIDTH: auto; FLOAT: left } DIV.dropzone { BORDER-BOTTOM: #aaa 2px dashed; BORDER-LEFT: #aaa 2px dashed; BORDER-TOP: #aaa 2px dashed; BORDER-RIGHT: #aaa 2px dashed; -moz-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -webkit-box-shadow: 2px 2px 12px rgba(0, 0, 0, .2) inset, -2px -2px 12px rgba(255, 255, 255, 0.6) inset; -moz-border-radius: 3px; -webkit-border-radius: 3px } .container DIV.dropzone { TOP: 3px !important } .modalOverlay { Z-INDEX: 90; POSITION: fixed; FILTER: alpha(opacity=1); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .01 } .cmdiv { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .menumini { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.quickAddPal { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } DIV.keyboardAccess { Z-INDEX: 200; POSITION: absolute; DISPLAY: none } .nav .sub UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .gb_currView.nav .sub > UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .menumini UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .keyboardAccess { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } SPAN.currentTags { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .liveArea-slim { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .previewArea { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .jumptopage { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .panelTabs LI.active A.edit:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .bcContent .flyout { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI IMG + IMG + A:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } DIV.treeContainer UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #learningUnitToc UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A.itemActive { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } #loginLang UL { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; ZOOM: 1; BACKGROUND: #d1eaef; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 4px; -moz-box-shadow: 0 4px 9px rgba(0, 0, 0, 0.4); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 4px; -webkit-border-radius: 4px } .actionBar .mainButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .secondaryButton .flyout { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBarMicro .mainButton UL { -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .actionBar .mainButton:first-child .flyout { MARGIN: 0px 0px 0px -2px } DIV.calPicker.quickAddPal { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } UL.tree LI A + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI IMG + IMG + A:focus { -moz-box-shadow: none; -webkit-box-shadow: none } DIV.treeContainer UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } #learningUnitToc UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.tree LI A.itemActive { -moz-box-shadow: none; -webkit-box-shadow: none } UL.nestedList { -moz-box-shadow: none; -webkit-box-shadow: none } .liveArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } .previewArea { POSITION: relative; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 5px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; PADDING-TOP: 9px } #addFolderForm { MARGIN: 0px -30px } UL.tree LI A + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI IMG + IMG + A:focus { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } DIV.treeContainer UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #learningUnitToc UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } UL.tree LI A.itemActive { PADDING-BOTTOM: 1px; BORDER-RIGHT-WIDTH: 1px; MARGIN: 0px 0px 0px -2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BORDER-TOP-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .builderItem .liveArea { Z-INDEX: 100; POSITION: absolute; TOP: 12px; LEFT: 22px } .previewArea { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; MARGIN-TOP: 0px; BACKGROUND: #fff; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .jumptopage { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 8px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 8px } .jumptopage LABEL { FONT-SIZE: 90% } .liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI A.liveAreaTab:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.secondaryButton A.liveAreaTab { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:hover { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .panelTabs LI.active A.edit:focus { Z-INDEX: 2; POSITION: relative; BACKGROUND: #555; COLOR: #fff; -moz-box-shadow: none; -webkit-box-shadow: none } .actionBar UL LI.mainButton A.liveAreaTab { OVERFLOW: hidden } .actionBar UL LI.secondaryButton A.liveAreaTab { OVERFLOW: hidden } .liveArea-slim { PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; PADDING-TOP: 3px } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .smallControls INPUT[type='text'] { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls SELECT { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 0px !important; WIDTH: 100%; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .columnActions .nav .sub UL { MARGIN-TOP: 0px } .nav .sub UL { POSITION: absolute; DISPLAY: none } .nav .sub .flyout { POSITION: absolute; DISPLAY: none } .nav .sub UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .nav .sub UL UL { DISPLAY: block } .nav .sub .flyout UL { DISPLAY: block } .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .nav .sub:hover .flyout { Z-INDEX: 101; TOP: 22px; LEFT: 0px } .actionBarMicro .nav .sub:hover UL { TOP: 18px } .rumble_top .nav .sub:hover UL { TOP: 18px } .rumble .nav .sub:hover UL { TOP: 18px } .quickAddPal { WIDTH: auto } .quickAddColor { WIDTH: 311px } .quickAddColor A.genericButton { MARGIN: 2px 0px; FLOAT: left } .cmdiv { Z-INDEX: 1150 !important; BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -webkit-box-shadow: -2px -2px 9px rgba(0, 0, 0, 0.1), 3px 3px 9px rgba(0, 0, 0, 0.3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .cmdiv UL { BORDER-BOTTOM: 0px; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; WIDTH: 180px; PADDING-RIGHT: 4px; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 3px } .cmdiv UL:first-child { BORDER-TOP: medium none } .menumini UL:first-child { BORDER-TOP: medium none } .cmdiv UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .menumini UL[role='presentation']:first-child + UL { BORDER-TOP: medium none } .nav .sub UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .menumini A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } #loginLang UL LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 5px; OVERFLOW-X: hidden; OVERFLOW-Y: visible; MARGIN: 0px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 6px; ZOOM: 1; DISPLAY: block; WORD-WRAP: break-word; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #333; FONT-SIZE: 95%; WORD-BREAK: normal; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 5px; -moz-border-radius: 0; -webkit-border-radius: 0; text-shadow: none } .cmdiv A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; WIDTH: auto; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .nav .sub UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .nav LI.sub UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .cmdiv A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .menumini A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } #loginLang UL LI A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #fff; COLOR: #000; BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: none } .actionBarMicro .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:hover { BACKGROUND-IMAGE: none } .actionBarMicro .nav LI.sub UL LI A:focus { BACKGROUND-IMAGE: none } .paneTabs .nav .sub UL LI A:focus { BACKGROUND-IMAGE: none } .nav LI.sub UL LI A:focus { BACKGROUND-COLOR: #fff !important } .cmdiv A:focus { BACKGROUND-COLOR: #fff !important } .menumini A:focus { BACKGROUND-COLOR: #fff !important } .nav .sub UL LI:first-child A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .nav .sub UL LI:first-child A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .paneTabs .nav .sub UL LI A { TEXT-ALIGN: left } .timediv UL LI A:hover { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .timediv UL LI A:focus { BACKGROUND-COLOR: #369; COLOR: #444 } .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; LEFT: 0px } .topTabs-compact .topGlobalLinks .nav .sub:hover UL { Z-INDEX: 101; TOP: 0px; RIGHT: 0px; LEFT: auto } .cmdiv LI.contextmenubar_top { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .menumini LI.contextmenubar { BACKGROUND-IMAGE: none; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: block; TOP: -20px; RIGHT: -1px; PADDING-TOP: 0px; -moz-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 3px -3px 9px rgba(0, 0, 0, 0.15); -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; OVERFLOW: hidden; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } .cmdiv LI.contextmenubar_top A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .cmdiv LI.contextmenubar_top A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: #999 1px solid; BACKGROUND: #d1eaef; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0 } .currentTags A.closeCloud { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-border-radius: 0; -webkit-border-radius: 0 } .quickAddPal H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .keyboardAccess H3 { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .quickAddPalHeader { PADDING-BOTTOM: 4px; MARGIN: 0px 0px 8px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FONT-SIZE: 105%; FONT-WEIGHT: bold; PADDING-TOP: 8px } .quickAddPal .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .comText .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .e_expandArea .controls { TEXT-ALIGN: right; PADDING-BOTTOM: 4px; MARGIN: 9px -4px 2px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; CLEAR: both; PADDING-TOP: 8px } .keyboardAccess P.paletteHelp { BORDER-BOTTOM: #fc0 1px solid; BORDER-LEFT: #fc0 1px solid; PADDING-BOTTOM: 3px; MARGIN: 6px 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; WHITE-SPACE: normal; BACKGROUND: #fff1c5; FONT-SIZE: 90%; BORDER-TOP: #fc0 1px solid; BORDER-RIGHT: #fc0 1px solid; PADDING-TOP: 3px } .bcMenuDiv-1 { WIDTH: 190px } .bcMenuDiv-2 { WIDTH: 380px } .bcMenuDiv-3 { WIDTH: 570px } .bcMenuDiv-4 { WIDTH: 760px } .bcMenuDiv-5 { WIDTH: 950px } .flyout { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 12px !important; PADDING-RIGHT: 12px !important; PADDING-TOP: 9px !important } .nav .sub .flyout DIV { POSITION: static; PADDING-BOTTOM: 6px; MARGIN: 0px; MIN-HEIGHT: 1px; FLOAT: left } .flyout H3 { PADDING-BOTTOM: 0px; MARGIN: 9px 0px 0px 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: italic 95% Georgia, serif; LETTER-SPACING: 2px; PADDING-TOP: 0px } .flyout H3 .line { HEIGHT: 1px; BORDER-TOP: #ccc 1px solid } .flyout H3 .text { BACKGROUND: #d1eaef } .nav .sub .flyout UL { Z-INDEX: 1000; BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #ccc 1px dotted; BORDER-RIGHT: 0px; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .nav .sub .flyout DIV H3 + UL { BORDER-TOP: 0px } .nav .sub .flyout DIV UL:first-child { BORDER-TOP: 0px } .nav .sub .flyout A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .nav .sub .flyout A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: auto; BORDER-TOP: 0px; BORDER-RIGHT: 0px; text-shadow: none } .quickAddPal .colorlist { MARGIN: 6px 0px 9px 6px; WIDTH: 288px } .quickAddPal .stepcontent .colorlist LI { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 14px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 14px; OVERFLOW: hidden; BORDER-TOP: #333 1px solid; CURSOR: pointer; BORDER-RIGHT: #333 1px solid; PADDING-TOP: 0px } .quickAddPal .colorlist LI A { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:link { WIDTH: 14px; DISPLAY: block; HEIGHT: 14px; OVERFLOW: hidden } .quickAddPal .colorlist LI A:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; WIDTH: 12px; HEIGHT: 12px; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .quickAddPal .colorlist LI A:active { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A:focus { BORDER-BOTTOM: #fff 2px solid; BORDER-LEFT: #fff 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #fff 2px solid; BORDER-RIGHT: #fff 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:active { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorlist LI A.whiteSwatch:focus { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; WIDTH: 10px; HEIGHT: 10px; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .quickAddPal .colorPreview { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: white; PADDING-TOP: 3px } .quickAddPal .colorPreview IMG { BORDER-BOTTOM: #444 1px solid; BORDER-LEFT: #444 1px solid; MARGIN: 3px; WIDTH: 42px; DISPLAY: block; BACKGROUND: black; FLOAT: left; HEIGHT: 42px; BORDER-TOP: #444 1px solid; BORDER-RIGHT: #444 1px solid } .quickAddPal .colorPreview DIV { WIDTH: 66%; FLOAT: left; MARGIN-LEFT: 3px } .quickAddPal .colorPreview SPAN { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 0px } SPAN.title_color_name { COLOR: #666 } .receipt { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .warning { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .inlineDialog { BORDER-BOTTOM: #bbb 1px solid; POSITION: relative; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .contentPaneWide.tabbedPane .receipt { Z-INDEX: 201; BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; PADDING-BOTTOM: 12px; MARGIN: -12px 0px 10px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } .contentPane .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .contentPaneWide .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 16px; MARGIN: 0px 0px -5px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 12px; -moz-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 0 -6px 9px rgba(0, 0, 0, 0.2) inset } .container .receipt { Z-INDEX: 0; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline-block; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px; box-shadow: none } .receipt ~ #editmodeWrapper { Z-INDEX: 1; POSITION: relative } .receipt ~ .contentBox { Z-INDEX: 1; POSITION: relative } .sideTOC_panel .receipt ~ #editmodeWrapper { POSITION: static } .sideTOC_panel .receipt { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .tabbedPane .receipt A.close IMG { DISPLAY: none } .contentPane .receipt A.close IMG { DISPLAY: none } .contentPaneWide .receipt A.close IMG { DISPLAY: none } A.closeCopyright IMG { DISPLAY: none } .tabbedPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPane .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .contentPaneWide .receipt A.close { WIDTH: 16px; HEIGHT: 16px; TOP: 10px; RIGHT: 12px } .receipt A.close:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { FONT: 18px/1 "Utilicons"; CONTENT: "X" } A.closeCopyright:before { } .receipt A.close:hover:before { COLOR: #fff } A.closeCopyright:hover:before { COLOR: #fff } .inlineDialog { PADDING-BOTTOM: 1px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .inlineReceipt { POSITION: absolute; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .miniReceipt { Z-INDEX: 300; BORDER-BOTTOM: #bbb 1px solid; POSITION: absolute; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .bad { COLOR: #fff; FONT-WEIGHT: bold } .good { COLOR: #fff; FONT-WEIGHT: bold } .removing { COLOR: #fff; FONT-WEIGHT: bold } .adding { COLOR: #fff; FONT-WEIGHT: bold } .infoReceipt { COLOR: #fff; FONT-WEIGHT: bold } .brokenFileLink { COLOR: #fff; FONT-WEIGHT: bold } .portlet SPAN.warning.due { COLOR: #fff; FONT-WEIGHT: bold } .good A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad A.areceipt { COLOR: #fff; FONT-WEIGHT: bold } .bad { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .removing { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .brokenFileLink { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .portlet SPAN.warning.due { BORDER-BOTTOM-COLOR: #bf1b17; BORDER-TOP-COLOR: #bf1b17; BACKGROUND: #ef312c; BORDER-RIGHT-COLOR: #bf1b17; BORDER-LEFT-COLOR: #bf1b17 } .container .warningReceipt { PADDING-RIGHT: 24px } .warningReceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.areceipt { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BACKGROUND: #ffa500; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; FONT-WEIGHT: normal } .warningReceipt A.close:before { } .contentPane .warningReceipt A.close { TOP: 5px; RIGHT: 5px } .warningReceipt A.close:hover:before { } .good { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .adding { BORDER-BOTTOM-COLOR: #4f7f0f; BORDER-TOP-COLOR: #4f7f0f; BACKGROUND: #6b9f27; BORDER-RIGHT-COLOR: #4f7f0f; BORDER-LEFT-COLOR: #4f7f0f } .infoReceipt { BORDER-BOTTOM-COLOR: #62758f; BORDER-TOP-COLOR: #62758f; BACKGROUND: #6d8aaf; BORDER-RIGHT-COLOR: #62758f; BORDER-LEFT-COLOR: #62758f } .attention { BORDER-BOTTOM-COLOR: #fc3; PADDING-BOTTOM: 4px; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #fc3; MARGIN: 0px 0px 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff4bf; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; COLOR: #000; BORDER-RIGHT-COLOR: #fc3; BORDER-LEFT-COLOR: #fc3; BORDER-LEFT-WIDTH: 2px; FONT-WEIGHT: normal; PADDING-TOP: 4px } .removing { FONT-WEIGHT: normal } .adding { FONT-WEIGHT: normal } .brokenFileLink { FONT-WEIGHT: normal } .portlet SPAN.warning.due { FONT-WEIGHT: normal } .brokenFileLink { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet SPAN.warning.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; DISPLAY: inline-block; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px } .infoBox { BORDER-BOTTOM: #afdf61 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #afdf61 1px solid; PADDING-BOTTOM: 6px; MARGIN: 6px 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #afdf61 1px solid; BORDER-RIGHT: #afdf61 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .infoBox > .message { DISPLAY: block; MARGIN-BOTTOM: 4px } .info-ok { BORDER-BOTTOM-COLOR: #afdf61; BORDER-TOP-COLOR: #afdf61; BACKGROUND: #d9efa4; COLOR: #360; BORDER-RIGHT-COLOR: #afdf61; BORDER-LEFT-COLOR: #afdf61 } .nestedReceipt { Z-INDEX: 1001; PADDING-BOTTOM: 12px !important; MARGIN: 0px 20% 6px 0px; PADDING-LEFT: 12px !important; PADDING-RIGHT: 30px !important; PADDING-TOP: 6px !important } [id*='receipt_nested'].receipt { PADDING-RIGHT: 28px } .columnMsgWrapper { MARGIN-LEFT: 60% } .columnMsgWrapper .column-2 { MIN-HEIGHT: 1px } .smsIssue { POSITION: relative; MARGIN: 3px 3px 9px } .t2vIssue { POSITION: relative; MARGIN: 3px 3px 9px } .bubbleStem-bottom-center { BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: transparent 10px solid; WIDTH: 0px; BOTTOM: -12px; HEIGHT: 0px; MARGIN-LEFT: -8px; BORDER-TOP: #fc3 12px solid; BORDER-RIGHT: transparent 10px solid; LEFT: 50% } .nextStepsReceipt { BACKGROUND-IMAGE: url(images/reorder_bg.png); POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.4; BACKGROUND-COLOR: #eee; MARGIN: 10px -30px -20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #545454; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3); box-shadow: 1px 1px 7px rgba(0, 0, 0, .03) inset, 1px 1px 1px rgba(255, 255, 255, 0.3) } .nextStepsText { PADDING-BOTTOM: 18px; MARGIN: 0px 0px 0px 20px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fefefe; PADDING-TOP: 18px } .nextStepsText H5 { MIN-WIDTH: 6em; LINE-HEIGHT: 2em; DISPLAY: inline-block; COLOR: #545454; text-shadow: 1px 1px 1px #fff } .receiptCollapsed { POSITION: relative; FONT-SIZE: 90% } .external-breadcrumbs .receipt { BORDER-BOTTOM: 0px; POSITION: relative; BORDER-LEFT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; BORDER-TOP: 0px; TOP: -9px; BORDER-RIGHT: 0px; box-shadow: none } .stepcontent LI.fieldError { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; BACKGROUND: #fff1c5; PADDING-TOP: 2px } .stepcontent LI.fieldError .fieldErrorText { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { COLOR: red; FONT-WEIGHT: bold } SPAN.warningMsg { DISPLAY: inline; MARGIN-LEFT: 0px } .criteriaSummary { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px -28px 0px 0px; PADDING-LEFT: 12px; BACKGROUND: #f9f9f9 } #bb-question-discover H2 { FONT-SIZE: 110% } #filterContainer H2 { MARGIN-LEFT: 14px } #filterContainer .columnActions { MARGIN-LEFT: 14px } .criteriaSummary H3 { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 100%; PADDING-TOP: 0px } .criteriaSummary .hidden { DISPLAY: none; VISIBILITY: hidden } .criteriaSummary UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .criteriaSummary UL LI { PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FLOAT: left; FONT-SIZE: 90%; PADDING-TOP: 3px; border-radius: 12px } .criteriaSummary UL LI:first-child { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG { MARGIN: 0px; DISPLAY: block; FLOAT: left; COLOR: #aaa; FONT-WEIGHT: normal } .receipt-highlight { BACKGROUND: #fff4bf; box-shadow: 0 0 4px #fff } .receipt-default { BACKGROUND: none transparent scroll repeat 0% 0%; box-shadow: none } .criteriaSummary UL LI STRONG:before { POSITION: relative; LINE-HEIGHT: 1; COLOR: #aaa; FONT-SIZE: 120%; CONTENT: "+"; FONT-WEIGHT: bold; LEFT: -2px } .criteriaSummary UL LI SPAN { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI A { PADDING-BOTTOM: 1px; MARGIN: 0px 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: block; WHITE-SPACE: nowrap; BACKGROUND: #ddd; FLOAT: left; COLOR: #333; PADDING-TOP: 1px; border-radius: 12px } .criteriaSummary UL LI SPAN { MARGIN-LEFT: 0px } .criteriaSummary UL LI STRONG + SPAN { MARGIN-LEFT: 3px } .criteriaSummary UL LI A { PADDING-RIGHT: 18px; BACKGROUND: url(../../../images/ci/icons/delete_li.gif) #eee no-repeat 96% 2px; TEXT-DECORATION: none } .search-element { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 18px; PADDING-LEFT: 9px; PADDING-RIGHT: 3px; BACKGROUND: #f9f9f9; PADDING-TOP: 18px } .search-element H2 { LINE-HEIGHT: 1; MARGIN: 0px; WIDTH: 0px; DISPLAY: inline-block; HEIGHT: 22px; FONT-SIZE: 100%; VERTICAL-ALIGN: middle; OVERFLOW: hidden; FONT-WEIGHT: normal } .search-element H2:before { POSITION: relative; MARGIN: 0px 3px 6px 0px; FONT: 17px/1 "Utilicons"; COLOR: #aaa; VERTICAL-ALIGN: middle; CONTENT: "F"; TOP: 2px } .search-element INPUT[type='text'] { WIDTH: 60%; -moz-appearance: searchfield; -webkit-appearance: searchfield } .calPicker { Z-INDEX: 1500 !important } .calPicker .calHead { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .calPicker H3 { BORDER-BOTTOM: medium none; TEXT-ALIGN: center; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 40px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .calPicker .previous { POSITION: absolute; TOP: 2px; LEFT: 2px } .calPicker .next { POSITION: absolute; TOP: 2px; RIGHT: 2px } .calPicker DIV.calFoot { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; CLEAR: both; PADDING-TOP: 6px } .calPicker A.contextmenubar { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .calPicker A.contextmenubar:hover { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 0px } .timediv { PADDING-BOTTOM: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 2px } .timediv UL { WIDTH: 8em; HEIGHT: 200px; OVERFLOW: auto } .timediv UL LI.contextmenubar_top { WIDTH: 114px; TOP: -18px } .timediv UL LI A { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .csPicker { MIN-WIDTH: 300px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 12px; FONT-SIZE: 95%; PADDING-TOP: 0px } .csPicker .actionBar { FONT-SIZE: 110% } .csPicker .localViewToggle { FONT-SIZE: 110% } .csPicker .contentPaneWide { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .breadcrumbs { MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } .csPicker .itemTray { Z-INDEX: 1000 } .csPicker .itemTray .taskbuttondiv { MARGIN: 0px; FONT-SIZE: 105% } .csPicker .itemTray H3 { FONT-SIZE: 115% } .csPicker #titleicon + H1 { MARGIN-TOP: 2px } .csPicker .itemTray #numberOfElements { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.lb-overlay { Z-INDEX: 1001; POSITION: fixed; BACKGROUND-COLOR: #000; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px } DIV.lb-wrapper { Z-INDEX: 1002; POSITION: fixed; OVERFLOW: hidden } DIV.lb-wrapper DIV.lb-header { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #dedede; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } DIV.lb-wrapper DIV.lb-header H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 15px; HEIGHT: 1.23em; OVERFLOW: hidden; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-header A { POSITION: absolute; DISPLAY: block; TOP: 10px; RIGHT: 10px } DIV.lb-wrapper DIV.lb-header A IMG { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; VERTICAL-ALIGN: top; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.lb-wrapper DIV.lb-content { PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: auto; PADDING-TOP: 0px } DIV.lb-wrapper DIV.lb-content DIV.lb-loading { BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) no-repeat center center } DIV.lb-wrapper DIV.topRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #lightbox DIV.bottomRound { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } DIV.lb-wrapper DIV.topRound B { DISPLAY: block; OVERFLOW: hidden } #lightbox DIV.bottomRound B { DISPLAY: block; OVERFLOW: hidden } DIV.lb-wrapper DIV.topRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } #lightbox DIV.bottomRound B.outer { MARGIN: 0px 3px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } #lightbox DIV.bottomRound B.middle { MARGIN: 0px 2px; HEIGHT: 1px } DIV.lb-wrapper DIV.topRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightbox DIV.bottomRound B.inner { MARGIN: 0px 1px; HEIGHT: 2px } #lightboxWrapper { Z-INDEX: 1001; POSITION: absolute; TOP: 0px; RIGHT: 0px; LEFT: 0px } #lightboxWrapper-inner { Z-INDEX: 1002; POSITION: relative; TEXT-ALIGN: center; WIDTH: 100%; TOP: 0px; LEFT: 0px } #lightbox { Z-INDEX: 1003; POSITION: relative; TEXT-ALIGN: left; MARGIN: 40px 0px 0px; DISPLAY: block; TOP: auto; LEFT: auto } .my-places-popup #lightbox { MARGIN: 0px } .my-places-popup #lightboxWrapper { POSITION: relative } #lightbox #lightboxContent { BORDER-BOTTOM: #333 2px solid; POSITION: relative; BORDER-LEFT: #333 2px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff !important; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BORDER-TOP: #333 2px solid; BORDER-RIGHT: #333 2px solid; PADDING-TOP: 1px; -moz-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -webkit-box-shadow: 0 4px 30px rgba(0, 0, 0, 0.7); -moz-border-radius: 5px; -webkit-border-radius: 5px } .my-places-popup #lightbox #lightboxContent { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 0; -webkit-border-radius: 0 } .lb-container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lb-content .container { PADDING-BOTTOM: 12px; MIN-HEIGHT: 0px !important; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .lbAction { Z-INDEX: 1005; POSITION: absolute; TOP: 9px; RIGHT: 9px } #overlay { Z-INDEX: 1000; POSITION: fixed; FILTER: alpha(opacity=30); BACKGROUND-COLOR: #000; WIDTH: 100%; BOTTOM: 0px; DISPLAY: none; HEIGHT: 100%; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .30 } .done#lightbox #lbLoadMessage { DISPLAY: none } .done#lightbox #lbContent { DISPLAY: block } .loading#lightbox #lbContent { DISPLAY: none } .loading#lightbox #lbLoadMessage { DISPLAY: block } .myPlacesContent { PADDING-BOTTOM: 16px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; HEIGHT: auto !important; MAX-HEIGHT: 500px !important; FONT-SIZE: 95%; OVERFLOW: auto; PADDING-TOP: 16px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .avatar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .myavatar { MARGIN-BOTTOM: 12px; MAX-HEIGHT: 150px; OVERFLOW: hidden } #lightbox .tallPara { PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; PADDING-TOP: 14px } #lightbox UL { MARGIN: 4px 0px 12px } #lightbox UL LI { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } #lightbox UL LI A:hover { TEXT-DECORATION: underline } DIV.lbContainer P.taskButtonsContent { MARGIN: 12px 0px 6px } .toBeRemoved { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .toBeRemoved > TD { BACKGROUND: #f0f0f0; COLOR: #666; TEXT-DECORATION: line-through } .unsavedItem { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD:first-child { BACKGROUND-IMAGE: url(../../../images/ci/ng/unsaved_changes.gif); BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 18px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 50% } .unsavedItem TD { BACKGROUND-IMAGE: none } A.selectedItem { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } A.selectedItem:focus { Z-INDEX: 10001; BORDER-BOTTOM: medium none; POSITION: relative; BORDER-LEFT: #9bb4cf 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BACKGROUND: #eff6ff; COLOR: #000; BORDER-TOP: #9bb4cf 2px solid; TOP: 3px; BORDER-RIGHT: #9bb4cf 2px solid; PADDING-TOP: 3px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0 } TR.inEditMode-row { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } TR.inEditMode-row TD { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 0px solid; PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 0px solid; PADDING-TOP: 6px !important } #dataCollectionContainer { MARGIN: -20px -30px 0px } .popup #dataCollectionContainer { MARGIN: -12px -20px } DIV#dataCollectionContainer DIV.contentBlock { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 6px } .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #bb-question-discover .inventoryListContainerDiv { PADDING-LEFT: 12px } .picker .inventoryListContainerDiv { PADDING-LEFT: 12px } .blogContainer .inventoryListContainerDiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV[id*='step'] { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } .submittitle { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #infoStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #taskStatusStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } #linkedContentStep { PADDING-BOTTOM: 18px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 18px } DIV[id*='stepcontent'] { PADDING-BOTTOM: 0px; PADDING-LEFT: 48px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-TOP: 0px } .steptitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #0da8c6; FONT-SIZE: 125%; PADDING-TOP: 0px } .submittitle { PADDING-BOTTOM: 18px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } .steptitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { TEXT-ALIGN: right; LINE-HEIGHT: 1; WIDTH: 1.5em; DISPLAY: inline-block; COLOR: #aaa; FONT-SIZE: 140% } .submittitle SPAN { MARGIN-RIGHT: 3px } #toolSettingsForm .steptitle SPAN { DISPLAY: none } #toolSettingsForm .stepcontent { PADDING-LEFT: 20px } #toolSettingsForm .steptitle { PADDING-LEFT: 9px } #toolSettingsForm .submittitle.steptitle { PADDING-LEFT: 27px } H3.noNumber { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 4px } .stepcontent { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .stepcontent LI { PADDING-BOTTOM: 6px; MARGIN-BOTTOM: 6px } .stepcontent LI LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .stepcontent LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .stepcontent .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepHelp { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 4px; FONT-STYLE: italic; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } .stepcontent .stepHelp:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .stepcontent .fieldHelp { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 2px } A.browse + .fieldHelp { PADDING-TOP: 9px } .stepcontent .nonHelp { COLOR: #000; FONT-SIZE: 95% } .stepcontent .nestedList LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .nestedListSmall LI { FONT-SIZE: 90% } .nestedSubList { MARGIN: 6px 6px 6px 30px } .stepLite { PADDING-BOTTOM: 12px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; PADDING-TOP: 6px } .columnStep .column-3 { MIN-HEIGHT: 200px } .columnStep .column-3 TABLE.attachments { FONT-SIZE: 90% } .columnStep DIV H3 { MARGIN: 6px } .columnStep DIV DIV { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } OL.nestedList LI DIV.imgLabel { WIDTH: auto } OL.nestedList LI DIV.imgLabel SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; COLOR: #000; FONT-WEIGHT: bold; PADDING-TOP: 0px } OL.nestedList LI DIV.imgLabel SPAN.control { DISPLAY: inline } #title_color_value { PADDING-TOP: 6px } DIV.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.gb_gridCell_inner H3.label { POSITION: relative; MIN-WIDTH: 6em; MARGIN: 0px 0px 3px; WIDTH: 20%; MAX-WIDTH: 15em; WORD-WRAP: break-word; FLOAT: left } DIV.field { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { MARGIN: 0px 0px 3px; WIDTH: 79%; WORD-WRAP: break-word; FLOAT: left; OVERFLOW: visible; WORD-BREAK: normal } DIV.noLabelField { WIDTH: 100% } DIV.label SPAN.contextMenuContainer { DISPLAY: inline } DIV.noLabelField BR { DISPLAY: none } SPAN.stepHelp BR { DISPLAY: block } SPAN.fieldHelp BR { DISPLAY: block } DIV.field OL P { PADDING-BOTTOM: 3px } DIV.noLabelField UL P { PADDING-BOTTOM: 3px } DIV.field EM { MARGIN-TOP: 5px; DISPLAY: inline-block; FONT: italic 100% Georgia, serif; COLOR: #888 } FIELDSET.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } DIV.info { MARGIN: 0px; BACKGROUND: #f6f6f6 } FIELDSET.info DIV.label { COLOR: #666 } .reqfield { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 40px; PADDING-RIGHT: 0px; FONT: italic 105% Georgia, serif; FLOAT: left; COLOR: #777; PADDING-TOP: 24px } .reqfield:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .required > .label > LABEL:before { POSITION: relative; DISPLAY: inline-block; FONT: 260%/0.2 Georgia, serif; COLOR: #ff8000; VERTICAL-ALIGN: top; CONTENT: "*"; TOP: 11px; MARGIN-RIGHT: 1px } .reqfield IMG { DISPLAY: none } .required > .label > LABEL IMG { DISPLAY: none } .requiredField { PADDING-BOTTOM: 6px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(../../../images/ci/icons/required.gif) no-repeat 0px center; PADDING-TOP: 6px } DIV.label IMG.indicator { POSITION: absolute; TOP: 0px; LEFT: -18px } .largeText DIV.label { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText DIV.field { FONT-SIZE: 130%; FONT-WEIGHT: bold } .largeText A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 75% !important; FONT-WEIGHT: normal } .field A.browse { MARGIN: 0px 0px 0px 3px; FONT-SIZE: 95% } DIV.editBlock { FLOAT: left; MARGIN-RIGHT: 12px } .largeText DIV.field DIV.editBlock LABEL { FONT-SIZE: 80%; FONT-WEIGHT: normal } .largeText DIV.field DIV.exemptdiv LABEL { FONT-SIZE: 65% } .largeText TEXTAREA { FONT-SIZE: 80% } LI.inEditMode { BORDER-BOTTOM: #444 2px solid; BORDER-LEFT: #444 2px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #ededed; BORDER-TOP: #444 2px solid; BORDER-RIGHT: #444 2px solid; PADDING-TOP: 3px; -moz-border-radius: 6px; -webkit-border-radius: 6px } .e_expandArea { MARGIN-TOP: 21px } #e_groups_menu { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BACKGROUND: #ceeaee; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .parent-child-listing { WIDTH: 50% } .parent-child-listing .stepHelp { MARGIN-LEFT: 24px } .parent-child-listing UL { BORDER-LEFT: #ccc 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -4px 0px 12px 10px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .parent-child-listing LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .stepcontent .hierarchy { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .stepcontent .hierarchy LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: 0px; PADDING-TOP: 0px } OL.hierarchy LI OL { PADDING-BOTTOM: 0px; MARGIN: 8px 0px 0px 30px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; PADDING-TOP: 0px } OL.hierarchy LI H5 { POSITION: relative; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 11em; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 8px } OL.hierarchy LI H5 SPAN { BORDER-BOTTOM: medium none; DISPLAY: inline; COLOR: #888; FONT-SIZE: 100% } OL.hierarchy LI H5 A { POSITION: absolute; FONT-SIZE: 90%; TOP: 9px; RIGHT: 0px; FONT-WEIGHT: normal } OL.hierarchy LI DIV { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 2px; FONT-SIZE: 95%; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } OL.hierarchy LI DIV.gbData SPAN { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 0px 9px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 2px } OL.hierarchy LI DIV.gbData SPAN:first-child { BORDER-LEFT: medium none; PADDING-LEFT: 0px; MARGIN-LEFT: 0px } OL.hierarchy LI DIV INPUT.points { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT { VERTICAL-ALIGN: middle } OL.hierarchy LI DIV INPUT.points { WIDTH: 2em } OL.hierarchy LI DIV INPUT.name { WIDTH: 16em } LI.parent { PADDING-BOTTOM: 0px !important } OL.hierarchy LI.parent OL LI H5 { BACKGROUND-IMAGE: none } .stepPanels { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 6px } .stepPanels LI { BORDER-BOTTOM: medium none } .panelTitle { POSITION: relative; PADDING-BOTTOM: 3px; MARGIN: 4px 0px 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; CURSOR: pointer; PADDING-TOP: 3px } .mdHead A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { COLOR: #000; TEXT-DECORATION: none } .panelTitle A { WIDTH: 100%; DISPLAY: block } .panelTitle .date { POSITION: absolute; COLOR: #666; FONT-SIZE: 95%; TOP: 2px; RIGHT: 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none } .panelTitle A SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: black; FONT-SIZE: 100%; PADDING-TOP: 2px } .mdHead A SPAN.date { FONT-WEIGHT: normal } .mdList { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 9px; MARGIN: 0px 0px 9px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BACKGROUND: #f6f6f6; PADDING-TOP: 9px; -moz-box-shadow: 1px 1px 9px rgba(0, 0, 0, .2) } .stepPanel P SPAN { COLOR: #666 } .mdList H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .mdList P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanel P { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 5px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .stepPanelControls { FONT-SIZE: 90% } .contentAreaBlock { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN: 0px 24px 24px; BACKGROUND: #fff; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .contentAreaBlock #step1 { BORDER-TOP: 0px } .taskbuttondiv { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .taskButtonsContent { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .okbutton { TEXT-ALIGN: right; PADDING-BOTTOM: 24px; MARGIN: 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 12px } .picker .taskbuttondiv { PADDING-BOTTOM: 9px; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .container .taskbuttondiv:first-child { MARGIN-TOP: 0px } DIV#dataCollectionContainer .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#dataCollectionContainer .reqfield + .taskbuttondiv { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } DIV#containerdiv .mapCanvasForm .taskbuttondiv:first-child { PADDING-BOTTOM: 18px; MARGIN: 9px 0px 0px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 18px } #customizeDataCollection .taskbuttonhelp { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px } DIV#dataCollectionContainer .taskbuttonhelp + .taskbuttondiv { PADDING-BOTTOM: 18px; PADDING-LEFT: 58px; PADDING-RIGHT: 24px; PADDING-TOP: 0px } SPAN.stepTitleRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } SPAN.contentListRight P.taskbuttondiv { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; FONT-WEIGHT: bold; PADDING-TOP: 0px !important } .taskButtonsContent { PADDING-BOTTOM: 0px; MARGIN: 24px -12px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 9px } P.okbutton INPUT { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FONT-SIZE: 100%; PADDING-TOP: 1px } .taskbuttonhelp { PADDING-BOTTOM: 0px; FONT-STYLE: italic; PADDING-LEFT: 58px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; PADDING-TOP: 0px } #taskbuttondiv P { BORDER-BOTTOM: red 1px solid; TEXT-ALIGN: left; BORDER-LEFT: red 1px solid; FONT-STYLE: italic; MARGIN: 6px 0px; DISPLAY: block; FONT-SIZE: 90%; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .stepTitleRight { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; TOP: -2px; RIGHT: -2px; PADDING-TOP: 6px; LEFT: auto } LEGEND { POSITION: absolute; LINE-HEIGHT: 0; HEIGHT: 0px; TOP: -10000px } FIELDSET OL LI SPAN.tagContainer INPUT { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer A.browse { FONT-SIZE: 95% } FIELDSET OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI OL LI SPAN.tagContainer SPAN { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: 2px; DISPLAY: inline; FLOAT: none; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } FIELDSET OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.tagContainer SPAN.hidden { DISPLAY: none } FIELDSET OL LI SPAN.hidden { DISPLAY: none } FIELDSET OL LI OL LI SPAN.hidden { DISPLAY: none } .contentBlock OL LI SPAN.hidden { DISPLAY: none } .selectItems { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 639px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .selectItems SELECT { MARGIN: 6px 0px 0px; WIDTH: 300px; DISPLAY: block; MAX-WIDTH: 300px; HEIGHT: 115px; FONT-SIZE: 100% } #dataCollectionContainer .noLabelField > .selectItems { POSITION: relative; PADDING-BOTTOM: 15px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 15px } #dataCollectionContainer .noLabelField > .userRoleSelect:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems:before { POSITION: absolute; BORDER-LEFT: #ccc 1px dashed; BOTTOM: 0px; CONTENT: ""; TOP: 0px; LEFT: 347px } #dataCollectionContainer .noLabelField > .selectItems.userRoleSelect:before { LEFT: 358px } #dataCollectionContainer .noLabelField > .selectItems.cumulativeSelectItems:before { LEFT: 47% } .selectItems INPUT[type=button] { MARGIN: 6px 0px 0px } .selectItems INPUT[type=text] { MARGIN: 6px 0px; WIDTH: 300px; DISPLAY: block; FONT-SIZE: 100% } .selectArrows { POSITION: relative; MARGIN-TOP: 60px } .selectArrows A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectArrows BUTTON { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: transparent; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } .selectItems H4 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px 56px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .userRoleSelect { WIDTH: auto } .userSelectedRoles { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 56px; PADDING-RIGHT: 0px; PADDING-TOP: 3px } .userSelectedRoles .selectArrows { POSITION: absolute; MARGIN: 0px; TOP: 28px; LEFT: 20px } .selectItems .available-roles H4 { MARGIN-LEFT: 0px } .selectItems .available-roles SELECT { HEIGHT: 200px } .multiSelect { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .multiSelect > DIV { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; WIDTH: 46%; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } .multiSelect SELECT { WIDTH: 100% } .multiSelect .selectArrows { TEXT-ALIGN: center; MARGIN: 40px 0px; WIDTH: 5% } .widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: 6px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } .widgetControls { FONT-SIZE: 90% } TABLE .widgetControls { FONT-SIZE: 90% } .widget .spellCheck { FLOAT: right } .widget .textBoxItem { FLOAT: right } DIV.liveArea FIELDSET.stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.liveArea FIELDSET.stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.liveArea FIELDSET.stepcontent TEXTAREA { WIDTH: 100% } DIV.liveArea FIELDSET.stepcontent SPAN.inlineHelp { DISPLAY: inline } .quickAddPal .stepcontent { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 9px; PADDING-TOP: 3px } .quickAddPal .stepcontent LI { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px } .quickAddPal .stepcontent .label { WIDTH: 30%; PADDING-RIGHT: 2px; OVERFLOW: visible } .quickAddPal .stepcontent .field { WIDTH: 65% } .quickAddPal LI.fieldError .fieldErrorText { DISPLAY: block; COLOR: red; MARGIN-LEFT: 74px; FONT-SIZE: 85%; FONT-WEIGHT: normal } DIV.quickAddPal DIV.field INPUT[type=text] { WIDTH: 100% } DIV.quickAddPal DIV.field SELECT { WIDTH: 100% } DIV.quickAddPal DIV.field TEXTAREA { WIDTH: 100% } DIV.quickAddPal LI.stepHelp { WIDTH: auto } DIV.quickAddPal LI DIV SPAN { WIDTH: auto } DIV.field SPAN.fileName { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; DISPLAY: inline; FONT-WEIGHT: bold; PADDING-TOP: 0px } DIV.field SPAN.control { DISPLAY: inline } DIV.quickAddPal DIV.field INPUT.datePickerInput { WIDTH: 8em } DIV.quickAddPal DIV.field INPUT.timePickerInput { WIDTH: 8em } .dtpickerEndDiv { PADDING-TOP: 10px } DIV#texteditor { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: left; PADDING-TOP: 3px } DIV#texteditor TEXTAREA { WIDTH: 450px; DISPLAY: block; MARGIN-LEFT: 0px } DIV#texteditor A.textBoxItem { TEXT-ALIGN: right; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 80%; PADDING-RIGHT: 2px; DISPLAY: block; PADDING-TOP: 2px } SELECT.survey_question { MAX-WIDTH: 100% } .htmlarea .toolbar DIV > DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; FLOAT: left; HEIGHT: 22px; PADDING-TOP: 0px } .htmlarea IFRAME { MIN-WIDTH: 300px !important } .htmlarea .toolbar A.wikiButton { WIDTH: auto !important } .htmlarea .toolbar A.wikiButton IMG { WIDTH: auto !important } .vtbe_footer { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .vtbe_footer SPAN { FONT-SIZE: 100% } .vtbe_footer INPUT[type=button] { FONT-SIZE: 95% } .vtbe_footer A { MARGIN: 0px 0px 0px 3px } .resize_handle { BORDER-BOTTOM: #bbb 1px solid; TEXT-ALIGN: center; BACKGROUND: url(images/controls.png) #ccc no-repeat 50% -1px; HEIGHT: 12px; BORDER-TOP: #ddd 1px solid; CURSOR: n-resize } .resize_handle:hover { BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #bbb; BORDER-TOP-COLOR: #ccc } .resize_handle IMG { WIDTH: 100%; HEIGHT: 8px } .tabGroupsPreview { MARGIN: -11px -12px 24px; FONT-SIZE: 100% } .previewContent { Z-INDEX: 1; POSITION: relative; PADDING-BOTTOM: 14px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: auto; PADDING-RIGHT: 14px; BACKGROUND: url(images/backgrounds_h.png) #aaa repeat-x 0px -320px; PADDING-TOP: 14px } .previewContent IFRAME { WIDTH: 100%; HEIGHT: 300px } .previewContent .appTabs { TOP: -3px } .tabGroupsPreview TABLE DIV { DISPLAY: block } .previewOverlay { POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=30); TEXT-TRANSFORM: uppercase; WIDTH: 100%; LETTER-SPACING: 10px; COLOR: #555; FONT-SIZE: 300%; TOP: 130px; FONT-WEIGHT: bold } .tabGroupsPreview .previewOverlay { TOP: 40px } .previewOverlay SPAN { FILTER: alpha(opacity=30); PADDING-BOTTOM: 6px; BACKGROUND-COLOR: white; PADDING-LEFT: 24px; PADDING-RIGHT: 12px; PADDING-TOP: 6px; opacity: .30 } P.warning { PADDING-BOTTOM: 9px; BACKGROUND-COLOR: #cf1d19; MARGIN: 12px 0px 24px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 9px } .warning { BACKGROUND: #a7d0df } DIV.tabPreview { Z-INDEX: 1; BORDER-BOTTOM: #cdcdcd 12px solid; POSITION: relative; BORDER-LEFT: #cdcdcd 12px solid; MARGIN: 0px 6px 6px; WIDTH: auto; BACKGROUND: #cdcdcd; BORDER-TOP: #cdcdcd 12px solid; BORDER-RIGHT: #cdcdcd 12px solid } DIV.tabPreview DIV.paneTabs { MARGIN-TOP: 12px } .buttonLibrary { POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 207px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .buttonLibrary LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; FLOAT: left; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .buttonLibrary LI A { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 3px } .buttonLibrary LI A.selected { FONT-WEIGHT: bold; TEXT-DECORATION: none } .buttonLibrary LI A:hover { TEXT-DECORATION: underline } DIV.menuStyleStep { MARGIN: 9px 40px 0px 0px; WIDTH: 212px; FLOAT: left } DIV.menuDefaultStyleStep { MARGIN: 9px auto; WIDTH: 212px } .schemeWrapper { MARGIN: 0px 12px 0px 0px; FLOAT: left } .buttonLibrary .schemeWrapper { PADDING-BOTTOM: 10px; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #fff; FLOAT: none; PADDING-TOP: 10px; -moz-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 01px 1px 3px rgba(0, 0, 0, 0.1); border-radius: 4px } .buttonLibrary .selected .schemeWrapper { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #bbb; PADDING-TOP: 10px } #selectedPalette .schemePreview { BORDER-BOTTOM: #bbb 10px solid; BORDER-LEFT: #bbb 10px solid; BORDER-TOP: #bbb 10px solid; BORDER-RIGHT: #bbb 10px solid; -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); -moz-border-radius: 4px; -webkit-border-radius: 4px; box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.2); border-radius: 4px } .schemeWrapper SPAN { TEXT-ALIGN: center; PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT: italic 100% Georgia; PADDING-TOP: 6px } UL.buttonLibrary LI.selected { POSITION: absolute; TOP: 6px; LEFT: 0px } UL.buttonLibrary LI.selected A.selected { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A.selected SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI.selected A SPAN { COLOR: #333 !important; FONT-WEIGHT: bold } UL.buttonLibrary LI { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .schemePreview { PADDING-BOTTOM: 0px; PADDING-LEFT: 16px; WIDTH: 160px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .modulePreview { BORDER-BOTTOM: 0px solid; POSITION: relative; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 0px !important; MARGIN: 6px 0px 0px auto; PADDING-LEFT: 0px !important; WIDTH: 140px; BOTTOM: 0px; PADDING-RIGHT: 0px !important; HEIGHT: 57px; FONT-SIZE: 85%; BORDER-TOP: 1px solid; RIGHT: 0px; BORDER-RIGHT: 0px solid; PADDING-TOP: 0px !important; LEFT: auto } .schemePreviewHead { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 6px !important } .modulePreviewHead { PADDING-BOTTOM: 4px !important; MARGIN: 0px; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; FONT-WEIGHT: bold; PADDING-TOP: 4px !important } .schemePreviewBody { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 3px } .modulePreviewBody { PADDING-BOTTOM: 3px !important; PADDING-LEFT: 9px !important; PADDING-RIGHT: 9px !important; PADDING-TOP: 4px !important } .moduleList { BORDER-TOP: #ccc 1px solid } .moduleItem { BORDER-BOTTOM: #ccc 1px solid } .module { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; OVERFLOW: hidden; PADDING-TOP: 0px } .moduleHeading { PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 10px } .module H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 110% } .moduleDescription { WIDTH: 90% } .more { DISPLAY: none } .moduleAction { MARGIN: 10px 0px } .moduleCategory { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .moduleCategory A { FONT-WEIGHT: bold } .moduleSample { PADDING-LEFT: 10px; DISPLAY: none } .expandedModule { BACKGROUND-COLOR: #efefef } .expandedModule .moduleDetails { WIDTH: 47% } .expandedModule .moduleSample { WIDTH: 47% } .expandedModule .more { DISPLAY: inline } .expandedModule .moduleSample { DISPLAY: block } .leftColumn-wide#moduleList .contentListPlain { PADDING-LEFT: 18px } .moduleListActionBar { PADDING-LEFT: 18px } #moduleList .contentListPlain > LI.expandedModule .moduleSample > DIV { MIN-HEIGHT: 50px !important; WORD-WRAP: normal } #moduleBody { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } #moduleBorder { BORDER-BOTTOM-COLOR: #ccc; BACKGROUND-COLOR: #efede3; BORDER-TOP-COLOR: #ccc; COLOR: #444; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .portlet { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #efede3; MARGIN: 0px 10px 20px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #444; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .05); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 0 2px 4px rgba(0, 0, 0, .05); border-radius: 3px } .containerPortal > DIV:first-child .portlet { MARGIN: 0px 10px 20px 0px } .reorderableModule:hover { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; -webkit-transition-property: border, background; -webkit-transition-duration: 200ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border, background; -moz-transition-duration: 200ms; -moz-transition-timing-function: ease-in-out } .reorderableModule:hover H2 { COLOR: #000 } .module-dragstate { BORDER-BOTTOM-COLOR: #555; BORDER-RIGHT-WIDTH: 2px; BORDER-TOP-COLOR: #555; BACKGROUND: #fff; BORDER-TOP-WIDTH: 2px; BORDER-BOTTOM-WIDTH: 2px; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; BORDER-LEFT-WIDTH: 2px; opacity: .9; -moz-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-box-shadow: 2px 5px 24px rgba(0, 0, 0, .5); -webkit-transition-property: border-width, border-color, background, -webkit-box-shadow; -webkit-transition-duration: 50ms; -webkit-transition-timing-function: ease-in-out; -moz-transition-property: border-width, border-color, background, -moz-box-shadow; -moz-transition-duration: 50ms; -moz-transition-timing-function: ease-in-out } #moduleTitle { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 { POSITION: relative; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 8px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 8px; -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 2px 2px 0 0; text-shadow: 0 1px 0 #fff } .portlet H2 .moduleTitle { WORD-WRAP: break-word } .portlet H2.dragHandle { PADDING-LEFT: 20px } .portlet H2.dragHandle:hover { CURSOR: move } .portlet H2 A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; COLOR: #fff; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .portlet H2 A:hover { TEXT-DECORATION: underline } .portlet H2 A IMG { VERTICAL-ALIGN: middle } .portlet H2.noTitle { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 1.4em; PADDING-TOP: 0px } .portlet H2.noTitle:hover { BACKGROUND: #ededed } .portlet A { WORD-WRAP: break-word; TEXT-DECORATION: none } .portlet A:hover { TEXT-DECORATION: underline } .edit_controls { TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; FLOAT: right; PADDING-TOP: 7px } .portlet .edit_controls { VISIBILITY: hidden } .portlet:hover .edit_controls { VISIBILITY: visible } .edit_controls A { Z-INDEX: 201; POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 1px; TEXT-DECORATION: none; PADDING-TOP: 0px; verical-align: top } .portlet .edit_controls A:hover { TEXT-DECORATION: none } .portlet:hover .edit_controls A { TEXT-DECORATION: none } .edit_controls .moduleToggleLink { Z-INDEX: 201; POSITION: absolute; FILTER: alpha(opacity=50); PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 14px; PADDING-RIGHT: 3px; HEIGHT: 14px; TOP: 3px; PADDING-TOP: 3px; LEFT: -4px; opacity: .5 } .edit_controls A IMG { DISPLAY: none } .edit_controls A:before { FONT: 16px/1 "Utilicons"; COLOR: #bcbcbc; text-shadow: 0 1px 0 #fff } .edit_controls A:hover:before { COLOR: #888 } .edit_controls A.moduleToggleLink { BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 8px 6px } .edit_controls A[title*='Expand'].moduleToggleLink { BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 8px 6px } .edit_controls A.moduleCloseLink:before { CONTENT: "X" } .edit_controls A.moduleDetachLink:before { FONT: 16px/1 "Utilicons"; CONTENT: "w" } .edit_controls A[href*='edit_module']:before { CONTENT: "S" } .collapsible { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px; border-radius: 0 0 3px 3px } .collapsible TABLE { BORDER-SPACING: 3px 2px; BORDER-COLLAPSE: separate; FONT-FAMILY: Helvetica, Arial, sans-serif; COLOR: #333; FONT-SIZE: 90% } .collapsible .help { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .portlet H1 + P + P { LINE-HEIGHT: 1.45; FONT-STYLE: italic; MARGIN: 0px 0px 6px; FONT-FAMILY: Georgia, sans-serif; COLOR: #777; FONT-SIZE: 93% } .imgWrapper { TEXT-ALIGN: center; MARGIN: 6px auto; OVERFLOW: auto } .portlet H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } #lightbox H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.portletBlock H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .portlet DIV.blockContents H4 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .flyout H3 { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #999; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .labelMenuItem { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 6px; DISPLAY: block; PADDING-TOP: 5px } .portlet H4 { PADDING-BOTTOM: 2px; TEXT-INDENT: 0px; MARGIN: 4px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000; PADDING-TOP: 1px } .portlet .portletList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList LI:first-child { BORDER-TOP: medium none } .portlet .portletList LI IMG { DISPLAY: none } .portlet .courseListing LI > A { FONT-WEIGHT: bold } .portlet .courseRole { COLOR: #777 } .portlet .dataBlockLabel { COLOR: #777 } .portlet .eventDate { COLOR: #777 } .portlet .eventList LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .eventList LI .date { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f0f0f0; COLOR: #597298; FONT-WEIGHT: bold; PADDING-TOP: 2px; -moz-border-radius: 1px; -webkit-border-radius: 1px; border-radius: 1px } .portlet .eventList LI .event { PADDING-BOTTOM: 2px; PADDING-LEFT: 18px; PADDING-RIGHT: 4px; PADDING-TOP: 2px } .portlet .eventList LI .description { FONT-SIZE: 90% } .portlet .eventDate { FONT-SIZE: 90% } .portlet .eventList LI .event A { FONT-WEIGHT: bold } .portlet SPAN.origin { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #999; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .portlet .portletList-img > LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 7px } .portlet .portletList-img > LI:first-child { BORDER-TOP: medium none; PADDING-TOP: 0px } .portlet .portletList-img > LI IMG { DISPLAY: none } .portlet .courseInformation { PADDING-BOTTOM: 0px; TEXT-INDENT: -16px; MARGIN: 4px 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock { PADDING-BOTTOM: 0px; TEXT-INDENT: -4px; MARGIN: 4px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .courseDataBlock UL { MARGIN-TOP: 5px } .portlet .courseDataBlock UL LI { TEXT-INDENT: 0px } .portlet .calculatorModule { TEXT-ALIGN: center } .portlet .calculator { PADDING-BOTTOM: 6px; MARGIN: 0px auto; PADDING-LEFT: 6px; WIDTH: 10em; PADDING-RIGHT: 6px; PADDING-TOP: 6px } .portlet .portletPath { MARGIN: 4px; BACKGROUND: #f0f0f0; FONT-SIZE: 90%; -moz-border-radius: 1px; -webkit-border-radius: 1px } .portlet .portletPath SPAN { PADDING-BOTTOM: 1px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; DISPLAY: inline-block; BACKGROUND: #ddd; COLOR: #666; FONT-WEIGHT: bold; PADDING-TOP: 1px; -moz-border-radius: 1px 0 0 1px; -webkit-border-radius: 1px 0 0 1px } .portlet .courseDataBlock UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 1px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; BACKGROUND: url(images/indicators.png) no-repeat 0px -895px; PADDING-TOP: 0px } .portlet .courseDataBlock A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock LI A { FONT-WEIGHT: normal; TEXT-DECORATION: none } .portlet .courseDataBlock A:hover { TEXT-DECORATION: underline } .portlet .courseDataBlock LI A:hover { TEXT-DECORATION: underline } .portletHelp { PADDING-BOTTOM: 2px; MARGIN: 4px 7px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #688ba8; FONT-SIZE: 95%; PADDING-TOP: 1px } DIV.module_actions { PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.8em; MARGIN: 4px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px } DIV.module_actions A:link { BORDER-BOTTOM: #ccc 1px outset; BORDER-LEFT: #ccc 1px outset; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; MARGIN-BOTTOM: 5px; COLOR: #036; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px outset; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px outset; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.module_actions A:hover { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions A:active { BORDER-BOTTOM: #eee 1px inset; BORDER-LEFT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BORDER-RIGHT: #eee 1px inset } DIV.module_actions IMG { MARGIN: 0px 3px; VERTICAL-ALIGN: middle } DIV.module_actions SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.module_actions LABEL { FONT-WEIGHT: bold } DIV.scroll_div { MAX-HEIGHT: 300px; OVERFLOW: auto } .portlet DIV.scroll_div { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; MARGIN-BOTTOM: 3px; BACKGROUND: #fff4bf; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .submission_list { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .submission_list LI { PADDING-BOTTOM: 9px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; PADDING-TOP: 9px } .submission_list LI:first-child { BORDER-TOP: medium none } .submission_list LI A { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .submission_list LI A.label { MARGIN-LEFT: 0px; FONT-SIZE: 100%; FONT-WEIGHT: bold } .submission_list LI DIV.button { MARGIN: 4px 0px 0px; FLOAT: right } .submission_list LI SPAN { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } .eudModule { PADDING-BOTTOM: 24px; MARGIN: 0px } .styledModule-dark { PADDING-BOTTOM: 24px; MARGIN: 0px } .portlet .noItems { TEXT-ALIGN: center; FONT-STYLE: italic } .eudModule .eudModule-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .styledModule-dark .module-inner { BORDER-BOTTOM: #ccc 1px dotted; OVERFLOW-Y: auto; MAX-HEIGHT: 500px } .eud-button-wrap { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } IMG.eud-avatar { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 28px; PADDING-RIGHT: 2px; BACKGROUND: #fff; HEIGHT: 28px; PADDING-TOP: 2px; -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -moz-border-radius: 2px; -webkit-border-radius: 2px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } .actionMenuButton { FILTER: none; PADDING-BOTTOM: 4px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; DISPLAY: block; BACKGROUND: #eee; VERTICAL-ALIGN: middle; PADDING-TOP: 3px } DIV[id*='actionMenu_'] { Z-INDEX: 1000; MARGIN-TOP: -4px; MARGIN-LEFT: -3px } .portlet .portletBlock { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 6px } .portlet .portletBlock:first-child { BORDER-TOP: 0px } .moduleActions + .portletBlock { BORDER-TOP: 0px } .blockGroups LI:first-child { -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0; border-radius: 3px 3px 0 0 } .portlet .memberList { MARGIN: 0px 0px 5px } .itemGroups { PADDING-BOTTOM: 0px; MARGIN: 4px 9px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .itemGroups .itemGroups { MARGIN-BOTTOM: 4px; MARGIN-LEFT: 0px } .portlet .blockGroups LI { FONT-SIZE: 100% } .portlet .itemGroups LI { PADDING-BOTTOM: 7px; LINE-HEIGHT: 120%; OVERFLOW-X: hidden; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet .memberList LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 14px !important; PADDING-TOP: 0px } .portlet .course { DISPLAY: block; FONT-SIZE: 90% } .portlet UL.memberList { DISPLAY: block; FONT-SIZE: 90% } .portlet SPAN.refresh { DISPLAY: block; FONT-SIZE: 90% } .portlet .course { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet SPAN.noIndent { MARGIN-LEFT: 0px !important } .portlet .whatsNew SPAN.course { MARGIN-LEFT: 0px !important } .portlet SPAN.course { MARGIN-LEFT: 0px !important } .portlet UL.hierarchyList { MARGIN-LEFT: 22px } .portlet UL.hierarchyList LI { OVERFLOW-X: visible; TEXT-INDENT: -18px } .portlet UL.hierarchyList LI * { TEXT-INDENT: 0px } .portlet UL.hierarchyList LI.childless { TEXT-INDENT: 0px } .portlet UL LI UL LI SPAN.warning { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.due { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL LI UL LI SPAN.newItemCount { BORDER-BOTTOM: #bf1b17 1px solid; BORDER-LEFT: #bf1b17 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; WHITE-SPACE: nowrap; COLOR: #ef312c; BORDER-TOP: #bf1b17 1px solid; BORDER-RIGHT: #bf1b17 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .flag { BORDER-BOTTOM: #efa495 1px solid; BORDER-LEFT: #efa495 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; BACKGROUND: #ffe4df; COLOR: #c30; FONT-SIZE: 90%; BORDER-TOP: #efa495 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #efa495 1px solid; PADDING-TOP: 0px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .portlet UL.memberList SPAN { FONT-SIZE: 100% } .portlet UL.memberList SPAN.newItemCount { FONT-SIZE: 100% } .portletInfoFooter { POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 9px; BOTTOM: 5px; PADDING-RIGHT: 9px; COLOR: #999; FONT-SIZE: 90%; RIGHT: 0px; PADDING-TOP: 2px } .dateSelector { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .blockGroups LI SPAN.newItemCount { COLOR: #999; FONT-WEIGHT: normal } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHeadOpen + P { BACKGROUND: #fff } .blockGroups LI SPAN.itemHead A:hover { BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline } .portlet .portletBlock H4 A:hover { BACKGROUND: #eee } .portlet .portletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .portlet .portletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .portlet .subCategories LI A { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 5px; DISPLAY: block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 2px 9px; COLOR: #0099b6; BORDER-TOP: #ccc 1px dotted; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 8px } .blockGroups .itemHead:hover { CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen { BACKGROUND: url(images/portlet_contract_alt.gif) #fff no-repeat 1px 9px; COLOR: #0099b6 } .blockGroups .itemHeadOpen:hover { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups .itemHeadOpen:focus { BACKGROUND-COLOR: #fff; CURSOR: pointer; TEXT-DECORATION: underline } .blockGroups LI IMG.spacer { WIDTH: 50px; HEIGHT: 0px } .blockGroups LI SPAN.headerText:hover { CURSOR: pointer; TEXT-DECORATION: underline } .viewHeader { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .viewHeader H3 { COLOR: #666; FONT-WEIGHT: bold } DIV.waitingFrame { BACKGROUND: #fff } .moduleControlWrapper { MARGIN: 6px 0px 0px; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 6px } .moduleControlWrapper A { POSITION: relative; MARGIN: 0px 2px } .moduleControlWrapper A:after { POSITION: relative; COLOR: #bbb; FONT-SIZE: 14px; CONTENT: "\2192"; RIGHT: 0px; FONT-WEIGHT: bold } .moduleBlock { MARGIN: 6px } .portlet H1 { MARGIN: 6px; FONT-SIZE: 120% } .assessmentPortlet DIV.assessmentPortletBlock { BORDER-BOTTOM-COLOR: #777; PADDING-BOTTOM: 0px; BORDER-TOP-COLOR: #777; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: #f9f9f9; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: #f1f1f1; LETTER-SPACING: 0px; COLOR: #444; FONT-SIZE: 110%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; TEXT-DECORATION: none; PADDING-TOP: 4px } .assessmentPortlet DIV.assessmentPortletBlock H4 A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A:hover { BACKGROUND: #eee } .assessmentPortlet DIV.assessmentPortletBlock H4 A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H4.blockTitle A SPAN { COLOR: #ddd; FONT-WEIGHT: normal } .assessmentPortlet UL.subCategories { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet DIV.assessmentPortletBlock UL.subCategories LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.assessmentBlockGroups LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .assessmentPortlet UL.subCategories LI A { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/more_options.gif) #e3efff no-repeat 3px center; LETTER-SPACING: 1px; COLOR: #597298; BORDER-TOP: #777 1px solid; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.assessmentBlockGroups LI A.itemHead:hover { BACKGROUND-COLOR: #e3efff; TEXT-DECORATION: underline } UL.assessmentBlockGroups LI A.itemHeadOpen { BACKGROUND: #fff no-repeat 3px center } UL.assessmentBlockGroups LI A.itemHeadOpen:hover { BACKGROUND-COLOR: #fff; TEXT-DECORATION: underline } .assessmentPortlet UL.subCategories LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } UL.assessmentBlockGroups LI:first-child A { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .assessmentPortlet UL.subCategories LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } UL.assessmentBlockGroups LI A:hover { FILTER: alpha(opacity=100); BACKGROUND-COLOR: #fff; opacity: 1 } .assessmentPortlet UL.itemGroup LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } UL.assessmentBlockGroups LI UL.itemGroups LI A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FONT-SIZE: 105%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet UL.itemGroup LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI A:hover { TEXT-DECORATION: underline } UL.itemGroups LI UL.items { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; FONT-SIZE: 110%; PADDING-TOP: 2px } UL.assessmentBlockGroups LI UL.itemGroups LI A { FONT-WEIGHT: normal } UL.itemGroups LI UL.items LI A { FONT-WEIGHT: normal } .assessmentPortlet DIV.assessmentPortletBlock H3 { MARGIN: 0px } .assessmentPortlet DIV.assessmentPortletBlock H3 A { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f0f0f0; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet DIV.assessmentPortletBlock H3 A:hover { TEXT-DECORATION: none } .assessmentPortlet DIV.assessmentPortletBlock:first-child H3 A { BORDER-TOP: medium none } .assessmentPortlet DIV.assessmentPortletBlock H3 A.open { PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: url(images/less_options.gif) #e3efff no-repeat 99% center; TEXT-DECORATION: none; PADDING-TOP: 3px } .assessmentPortlet UL.objectList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortletBlock UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .blockContents UL LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.memberList LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .assessmentPortlet .blockContents UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet .blockContents UL LI SPAN { MARGIN: 0px 0px 0px 4px } .assessmentPortlet UL LI UL LI SPAN { MARGIN: 0px 0px 0px 4px } .portlet #loginBoxFull { PADDING-BOTTOM: 16px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull P { MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; COLOR: #444; FONT-SIZE: 0.95em } .portlet #loginBoxFull P.welcome { PADDING-BOTTOM: 0px; MARGIN: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #000; FONT-SIZE: 1em; FONT-WEIGHT: bold; PADDING-TOP: 0px } .portlet #loginBoxFull UL { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .portlet #loginBoxFull LI { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } .portlet #loginBoxFull LI LABEL { FONT-SIZE: 100%; FONT-WEIGHT: normal } .portlet #loginBoxFull INPUT[type='text'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='password'] { BORDER-BOTTOM: #bbb 2px solid; BORDER-LEFT: #bbb 2px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 3px -4px; PADDING-LEFT: 5px; WIDTH: 300px; PADDING-RIGHT: 5px; COLOR: #666; FONT-SIZE: 100%; BORDER-TOP: #bbb 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #bbb 2px solid; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px } .portlet #loginBoxFull INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; COLOR: #000; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } .portlet #loginBoxFull A { FONT-SIZE: 0.9em } .portlet #loginBoxFull P A { FONT-SIZE: 1em } .portlet #loginBoxFull P.welcome A { FONT-SIZE: 1em } .portlet #loginBoxFull LI + LI + LI { FLOAT: left } .portlet #loginBoxFull LI + LI + LI + LI { TEXT-ALIGN: right; FLOAT: right } .portlet #loginBoxFull LI INPUT.submit { MARGIN: -14px -3px 0px 0px } #body { PADDING-BOTTOM: 60px } #loadstatus { POSITION: relative; HEIGHT: 180px } FIELDSET.highlight { BACKGROUND: #eee } FIELDSET.highlight DIV.input { BORDER-BOTTOM-COLOR: #ccc; BORDER-TOP-COLOR: #ccc; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc } .builderItem .item { BORDER-BOTTOM: transparent 1px solid; BORDER-LEFT: transparent 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FONT-SIZE: 100%; BORDER-TOP: transparent 1px solid; BORDER-RIGHT: transparent 1px solid; PADDING-TOP: 12px } .builderItem:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } #lessonPlanForm #dataCollectionContainer .contentListPlain LI:hover { BORDER-BOTTOM-COLOR: #666; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } LI.builderItem { MIN-HEIGHT: auto } .builderItem .close { POSITION: absolute; TOP: 5px; CURSOR: pointer; RIGHT: 5px } .builderItem IFRAME { WIDTH: 100% !important } DIV.subheading { FONT-WEIGHT: bold } DIV.required DIV.inputField { PADDING-LEFT: 1.5em; BACKGROUND: url(../../images/ci/icons/required.gif) no-repeat left 2px; MARGIN-LEFT: -1.5em } .inputOptions { PADDING-BOTTOM: 0.5em; PADDING-LEFT: 0.5em; PADDING-RIGHT: 0.5em; BORDER-TOP: #ccc 1px dotted; PADDING-TOP: 0.5em } .offscreen { POSITION: absolute; HEIGHT: 0px; LEFT: -999em } .label A:hover { CURSOR: pointer } #lessonPlanForm #customFormBuilderDiv { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer { MARGIN: 0px } #lessonPlanForm #dataCollectionContainer .contentListPlain { MARGIN: 0px } .alignPanelLightbox { MIN-WIDTH: 650px; PADDING-BOTTOM: 10px; MIN-HEIGHT: 250px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 10px } .alignHeader { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .alignPanel TABLE TD { FONT-SIZE: 90% } .alignPanel TABLE TH { FONT-SIZE: 90% } .alignPanel TABLE TD.descriptionCell { MIN-WIDTH: 120px; WORD-WRAP: break-word } .alignPanel THEAD TH.smallCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } .alignPanel THEAD TH { WHITE-SPACE: nowrap } .alignPanel TD.actionCell { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 1%; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; PADDING-TOP: 4px } .pageBreadcrumb { PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #fff; HEIGHT: 1em; PADDING-TOP: 6px } .pageBreadcrumb UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .pageBreadcrumb LI { FLOAT: left; COLOR: #999; MARGIN-LEFT: 3px; FONT-WEIGHT: bold } .pageBreadcrumb LI A { COLOR: #036; FONT-WEIGHT: bold; MARGIN-RIGHT: 3px; TEXT-DECORATION: none } .pageBreadcrumb LI A.active { COLOR: #036; FONT-WEIGHT: bold; TEXT-DECORATION: none } .sStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #063; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .sStatusI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 14px; COLOR: #c00; MARGIN-LEFT: 8px; FONT-SIZE: 90%; PADDING-TOP: 0px } .panelList { PADDING-BOTTOM: 0px; MARGIN: 2px 0px 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: break-word; PADDING-TOP: 0px } .panelList > LI { MARGIN: 0px 0px 1px } .panelNested { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #fff; MARGIN: 4px 0px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; OVERFLOW: hidden; PADDING-TOP: 4px } .panelHead { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; WORD-WRAP: break-word; BACKGROUND: #efefef; PADDING-TOP: 6px } .panelHead A { COLOR: #000; TEXT-DECORATION: none } .panelItem { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; PADDING-BOTTOM: 6px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; PADDING-TOP: 6px } .panelList_leftCol { POSITION: absolute; TOP: 6px; LEFT: 6px } .panelList_rightCol { POSITION: absolute; TOP: 6px; RIGHT: 6px } .panelList_centerCol { PADDING-BOTTOM: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 0px } UL.logMessages { LIST-STYLE-TYPE: none; TEXT-INDENT: -1em; PADDING-LEFT: 1em; MARGIN-LEFT: 0px; LIST-STYLE-IMAGE: none } LI.logError { COLOR: red } LI.logWarning { COLOR: blue } LI.logMessage { MARGIN-TOP: 0.1em } .connectionWrapper { POSITION: relative; MARGIN-TOP: 1px; PADDING-RIGHT: 30px } .connectionWrapper A { POSITION: absolute; MARGIN-TOP: -14px; TOP: 50%; RIGHT: 0px } .invertItems { POSITION: relative; DISPLAY: block !important; MARGIN-RIGHT: 26px } .invertItems A { POSITION: absolute; TOP: -14px; RIGHT: -33px } .subcategories { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 11px !important; PADDING-RIGHT: 11px !important; PADDING-TOP: 6px !important } .subcategories H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.calendarTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.announcementTitle { TEXT-ALIGN: center; MARGIN: 9px 0px 0px } DIV.calendarTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.announcementTitle H3 { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: inline; FONT-SIZE: 130%; VERTICAL-ALIGN: middle; PADDING-TOP: 2px } DIV.calMonth { PADDING-BOTTOM: 6px; MARGIN: 10px 4px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: block; OVERFLOW: auto; PADDING-TOP: 2px } DIV.calMonth TABLE { BORDER-BOTTOM: #a8beda 2px solid; BORDER-LEFT: #a8beda 1px solid; MARGIN: 0px auto; BORDER-COLLAPSE: collapse; BORDER-TOP: #a8beda 2px solid; BORDER-RIGHT: #a8beda 2px solid } DIV.calMonth TABLE THEAD TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE TBODY TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 1px; PADDING-RIGHT: 0px; BACKGROUND: #a8beda; PADDING-TOP: 0px } DIV.calMonth TABLE THEAD TD DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TBODY TH DIV { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE THEAD TH { BORDER-BOTTOM: #a0a0a0 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 8em; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; OVERFLOW: hidden; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } DIV.calMonth TABLE TBODY TD { BORDER-BOTTOM: #a8beda 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 8em; PADDING-RIGHT: 0px; BACKGROUND: url(images/backgrounds_h.png) white repeat-x 0px -400px; HEIGHT: 8em; OVERFLOW: hidden; BORDER-RIGHT: #a8beda 1px solid; PADDING-TOP: 0px } DIV.calMonth TABLE TH:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:focus { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TH:active { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -600px; -moz-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.2) } DIV.calMonth TABLE TD A.daylink { BORDER-BOTTOM: #a8beda 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 0.2em; PADDING-LEFT: 0.2em; WIDTH: 1.2em; PADDING-RIGHT: 0.2em; DISPLAY: block; BACKGROUND: #e3efff; FLOAT: left; FONT-SIZE: 110%; FONT-WEIGHT: bold; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0.2em } DIV.calMonth TABLE TD A.daylink:hover { BACKGROUND-COLOR: #e3efff } DIV.calMonth TABLE TD A.daylink SPAN { POSITION: absolute; TOP: 0px; LEFT: -1000px } DIV.calMonth TABLE TD.today { BACKGROUND-COLOR: #fff4bf } DIV.calMonth TABLE TD.today A.daylink { BACKGROUND: #fff4bf; FONT-WEIGHT: bold } DIV.calMonth TABLE TD.today A.daylink:hover { BACKGROUND: url(images/backgrounds_h.png) #fff4bf repeat-x 0px -50px } DIV.calMonth TABLE TD.offday { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:hover { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD.offday:focus { BACKGROUND: #eee; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.calMonth TABLE TD DIV { WIDTH: 8em; CLEAR: both; OVERFLOW: hidden } DIV.calMonth TABLE TD DIV UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.calMonth TABLE TD DIV UL LI { PADDING-BOTTOM: 1px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; FONT-SIZE: 90%; PADDING-TOP: 1px } TABLE.calYear { POSITION: relative; MIN-WIDTH: 200px; MARGIN: 6px; BORDER-COLLAPSE: collapse; FONT-SIZE: 95% } TABLE.calYearFloat { MARGIN: 6px 0.66%; WIDTH: 32%; FLOAT: left } TABLE.calYear THEAD TD { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear TBODY TH { POSITION: absolute; TOP: 0px; LEFT: -10000px } TABLE.calYear CAPTION { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 108%; PADDING-TOP: 2px } TABLE.calYear CAPTION A { FONT-WEIGHT: bold; TEXT-DECORATION: none } TABLE.calYear CAPTION A:hover { TEXT-DECORATION: underline } TABLE.calYear THEAD TH { BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; BACKGROUND: url(images/backgrounds_h.png) #ddd repeat-x 0px -50px; COLOR: #333; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 2px } TABLE.calYear TBODY TD { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 23px; PADDING-RIGHT: 2px; WHITE-SPACE: nowrap; BACKGROUND: white; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } TABLE.calYear TD A { POSITION: relative; WIDTH: 100%; DISPLAY: block; TEXT-DECORATION: none } TABLE.calYear TD A IMG { FLOAT: left } TABLE.calYear TD:hover { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:focus { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TD:active { BACKGROUND: #fff4bf; -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calYear TH:hover { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:focus { BACKGROUND-COLOR: #ccc } TABLE.calYear TH:active { BACKGROUND-COLOR: #ccc } TABLE.calYear TD.today { BACKGROUND: #999 } TABLE.calYear TD.today:hover { BACKGROUND: #999 } TABLE.calYear TD.today:focus { BACKGROUND: #999 } TABLE.calYear TD.today A { COLOR: #fff; FONT-WEIGHT: bold; text-shadow: 0 -1px 0 #555 } TABLE.calYear TD.today A:hover { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:active { BACKGROUND-IMAGE: none } TABLE.calYear TD.today A:focus { BACKGROUND-IMAGE: none } TABLE.calYear TD.offday { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:hover { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.offday:focus { BORDER-BOTTOM: #a8beda 1px solid; BORDER-LEFT: #a8beda 1px solid; BACKGROUND: #eee; COLOR: #444; BORDER-TOP: #a8beda 1px solid; BORDER-RIGHT: #a8beda 1px solid; TEXT-DECORATION: none; -moz-box-shadow: none; -webkit-box-shadow: none } TABLE.calYear TD.hasEvent { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -50px; FONT-WEIGHT: bold } TABLE.calendarDay { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; MARGIN: 10px 0px 0px; WIDTH: 100%; BORDER-COLLAPSE: collapse; BORDER-TOP: #cdcdcd 1px solid; BORDER-RIGHT: #cdcdcd 1px solid } TABLE.calendarDay THEAD { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay THEAD TH { POSITION: absolute; TOP: 0px; LEFT: -1000px } UL.calendarWeek LI TABLE.calendarDay { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none } TABLE.calendarDay TBODY TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 14px; PADDING-LEFT: 3px; WIDTH: 6%; PADDING-RIGHT: 12px; BACKGROUND: #f3f3f3; COLOR: #555; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px } TABLE.calendarDay TBODY TH:hover { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:focus { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TH:active { BACKGROUND: url(images/backgrounds_h.png) #e6e5e5 repeat-x 0px -200px } TABLE.calendarDay TBODY TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 12px; BACKGROUND: #fff; VERTICAL-ALIGN: top; BORDER-TOP: #cdcdcd 1px solid; PADDING-TOP: 0px } TABLE.calendarDay TBODY TD.hasEvent { PADDING-LEFT: 6px } TABLE.calendarDay TBODY TD.hasEvent A.jumpToEvent { POSITION: absolute; TOP: 0px; LEFT: -1000px } TABLE.calendarDay TBODY TR.halfHour TH { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.halfHour TD { BORDER-TOP: #ededed 1px solid } TABLE.calendarDay TBODY TR.midday TH { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TBODY TR.midday TD { BORDER-TOP: #cdcdcd 2px solid } TABLE.calendarDay TR.notBusinessHours TH { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #f3f3f3; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TABLE.calendarDay TR.notBusinessHours TD { BACKGROUND: #fafafa } TABLE.calendarDay TBODY TR.notBusinessHours TD.hasEvent { BACKGROUND: #fafafa } TABLE.calendarDay TR TH SPAN.ampm { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #bbb; LETTER-SPACING: 0.1em; COLOR: #fff; FONT-SIZE: 75%; TOP: -1.2em; PADDING-TOP: 0px; LEFT: -4px } TABLE.calendarDay TBODY TR:hover { -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2) } TABLE.calendarDay TBODY TR:hover TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TH { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD { BACKGROUND-COLOR: #f0f0f0 } TABLE.calendarDay TBODY TR:hover TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:focus TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TBODY TR:active TD.hasEvent { BACKGROUND: #f0f0f0 } TABLE.calendarDay TD DIV DIV { PADDING-BOTTOM: 1px; MARGIN: 0px 4px 0px -6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: block; BACKGROUND: #b5ccea; FLOAT: left; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } TABLE.calendarDay TD DIV DIV.contextMenuContainer { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px -3px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: none; PADDING-TOP: 0px } TABLE.calendarDay TD DIV SPAN { COLOR: #555; FONT-SIZE: 90% } UL.calendarWeek { BORDER-BOTTOM: #cdcdcd 1px solid; BORDER-LEFT: #cdcdcd 1px solid; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 10px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #cdcdcd 1px solid; LIST-STYLE-IMAGE: none; BORDER-RIGHT: #cdcdcd 1px solid; PADDING-TOP: 0px } UL.calendarWeek LI { BORDER-BOTTOM: #cdcdcd 1px solid; POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } UL.calendarWeek LI UL:first-child { BORDER-TOP: medium none } UL.calendarWeek UL LI:first-child { BORDER-TOP: medium none } UL.calendarWeek LI H3.weekDay { PADDING-BOTTOM: 0.3em; MARGIN: 0px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BACKGROUND: #e3efff; COLOR: #666; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 0.3em } UL.calendarWeek LI H3.weekDay:hover { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:focus { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI H3.weekDay:active { BACKGROUND: url(images/backgrounds_h.png) #e3efff repeat-x 0px -200px } UL.calendarWeek LI UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.calendarWeek LI UL LI { BORDER-BOTTOM: medium none; PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ededed 1px solid; PADDING-TOP: 6px } UL.calendarWeek LI UL LI:hover { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:focus { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI:active { BACKGROUND: url(images/backgrounds_h.png) repeat-x 0px -205px } UL.calendarWeek LI UL LI H4 { PADDING-BOTTOM: 1px; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 3px; WIDTH: 10em; PADDING-RIGHT: 3px; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; FONT-WEIGHT: normal; PADDING-TOP: 1px } UL.calendarWeek LI DIV { MARGIN-LEFT: 11em } UL.calendarWeek LI DIV.contextMenuContainer { MARGIN: 0px 0px 0px -3px } UL.calendarWeek LI UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } .diffbox-wrapper { MARGIN: 9px auto; WIDTH: 80% } .legendbox-wrapper { MARGIN: 9px auto; WIDTH: 90% } .legendbox-wrapper > DIV { BORDER-LEFT: #ddd 1px solid } .legendbox-wrapper > DIV:first-child { BORDER-LEFT: medium none } .diffbox-left { FLOAT: left } .diffbox-right { FLOAT: left } .diffbox-arrow { FLOAT: left } .legendbox { FLOAT: left } .diffbox-left { WIDTH: 44% } .diffbox-right { WIDTH: 44% } .legendbox-3 { WIDTH: 33% } .legendbox-2 { WIDTH: 48% } .diffbox-left > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .diffbox-right > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .legendbox > DIV { PADDING-BOTTOM: 3px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BACKGROUND: #fff; PADDING-TOP: 3px } .diffbox-right > DIV { BORDER-BOTTOM: #ddd 2px solid; BORDER-LEFT: #ddd 2px solid; BORDER-TOP: #ddd 2px solid; BORDER-RIGHT: #ddd 2px solid } .diffbox-left UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-right UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .legendbox UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 4px } .diffbox-left UL LI:first-child { BORDER-TOP: 0px } .diffbox-right UL LI:first-child { BORDER-TOP: 0px } .legendbox UL LI:first-child { BORDER-TOP: 0px } .diffbox-left .label { WIDTH: 30%; COLOR: #666 } .diffbox-right .label { WIDTH: 30%; COLOR: #666 } .legendbox .label { WIDTH: 30%; COLOR: #666 } .diffbox-left .field { WIDTH: 59% } .diffbox-right .field { WIDTH: 59% } .legendbox .label { WIDTH: 45%; FONT-SIZE: 90% } .legendbox .field { WIDTH: 55% } .diffbox-arrow { TEXT-ALIGN: center; WIDTH: 6%; PADDING-TOP: 50px } .diffLegend-sample { POSITION: static !important; WIDTH: 90px !important; HEIGHT: 17px !important } .addedImg-sample { HEIGHT: 13px !important } .removedImg-sample { HEIGHT: 13px !important } .changedImg-sample { HEIGHT: 13px !important } .diff-html-added { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-removed { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .added-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .removed-sample { POSITION: relative; DISPLAY: inline-block; FONT-SIZE: 100%; CURSOR: pointer } .diff-html-added { BACKGROUND-COLOR: #cfc } .added-sample { BACKGROUND-COLOR: #cfc } .diff-html-removed { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .removed-sample { BACKGROUND-COLOR: #fdc6c6; TEXT-DECORATION: line-through } .diff-html-changed { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .changed-sample { BACKGROUND: url(images/diffunderline.gif) repeat-x 50% bottom; CURSOR: pointer } .diff-html-added IMG { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .addedImg-sample { BORDER-BOTTOM: #cfc 2px solid; BORDER-LEFT: #cfc 2px solid; BORDER-TOP: #cfc 2px solid; BORDER-RIGHT: #cfc 2px solid } .diff-html-removed IMG { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .removedImg-sample { BORDER-BOTTOM: #fdc6c6 2px solid; BORDER-LEFT: #fdc6c6 2px solid; BORDER-TOP: #fdc6c6 2px solid; BORDER-RIGHT: #fdc6c6 2px solid } .diff-html-changed IMG { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } .changedImg-sample { BORDER-BOTTOM: #009 2px dotted; BORDER-LEFT: #009 2px dotted; BORDER-TOP: #009 2px dotted; BORDER-RIGHT: #009 2px dotted } DIV.diff-removed-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-added-image { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } .diff-addedImg-sample { POSITION: absolute; FILTER: alpha(opacity=55); MARGIN: 2px; BOTTOM: 0px; TOP: 0px; RIGHT: 0px; LEFT: 0px; opacity: .55; -moz-opacity: .55 } DIV.diff-removed-image { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } .diff-removedImg-sample { BACKGROUND-IMAGE: url(images/diffmin.gif); BACKGROUND-COLOR: #fdc6c6 } DIV.diff-added-image { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } .diff-addedImg-sample { BACKGROUND-IMAGE: url(images/diffplus.gif); BACKGROUND-COLOR: #cfc; BACKGROUND-REPEAT: no-repeat } DIV.blogContainer DIV.wikiPage { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid } DIV.blogContainer DIV.wikiPage H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; FONT-SIZE: 120%; PADDING-TOP: 9px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryDate { PADDING-BOTTOM: 6px; FONT-STYLE: italic; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #666; FONT-SIZE: 95%; PADDING-TOP: 6px } .editWiki { MARGIN: 9px } .topRound { DISPLAY: none } .bottomRound { DISPLAY: none } .playerControls { POSITION: relative; PADDING-BOTTOM: 6px !important; MARGIN-TOP: 0px; PADDING-LEFT: 6px !important; PADDING-RIGHT: 6px !important; MARGIN-BOTTOM: 2px; PADDING-TOP: 6px !important } IMG.managedPluginStatusIcon { MARGIN: 1px 7px 3px 0px } UL.metaDataList { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.metaDataList LI { PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 2px } UL.metaDataList LI H3 { MARGIN: 0px; DISPLAY: inline } .bb-cpgbtd { FONT-SIZE: 90% } .bb-cpgbth { FONT-SIZE: 90% } .bb-cpmgtd { COLOR: #000; FONT-SIZE: 85% } .bb-cpmgth { FONT-SIZE: 85%; FONT-WEIGHT: bold } #resizeHandle { BORDER-BOTTOM: #999 1px solid; POSITION: absolute; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 0px; WIDTH: 3px; BOTTOM: 0px; BACKGROUND: #ddd; BORDER-TOP: #999 1px solid; TOP: 0px; BORDER-RIGHT: #999 1px solid; LEFT: 200px; -moz-border-radius: 1px; -webkit-border-radius: 1px } #resizeHandle:hover { BACKGROUND: #aaa; CURSOR: e-resize } #resizeHandle .collapseControl { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } #resizeHandle .pullcollapsed { BORDER-BOTTOM: #999 1px solid; POSITION: relative; BORDER-LEFT: #999 1px solid; MARGIN-TOP: 200px; WIDTH: 11px; DISPLAY: block; BACKGROUND: url(images/menu_collapse3.gif) no-repeat -2px -3px; HEIGHT: 22px; FONT-SIZE: 8px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; LEFT: -5px; -moz-border-radius: 2px; -webkit-border-radius: 2px } .collapseControl:hover { CURSOR: pointer } .caretTitleModifier { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; COLOR: #444; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 1px } .landingPageColumn H3.hiddenlink .linkStatus { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; PADDING-TOP: 0.4em } TABLE.inventory .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.inventory .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover TH { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } TABLE.reorderable .vtbegenerated TBODY TR:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .additional { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 6px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .additional .left { FLOAT: left } .additional .right { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FLOAT: right; COLOR: #777; PADDING-TOP: 2px } .additional .right SPAN.size { COLOR: #000; FONT-WEIGHT: bold } .additional .left SPAN.suboption { DISPLAY: block } A.add { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #b3efb3; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.add:hover { BORDER-BOTTOM-COLOR: #42af41; BACKGROUND-COLOR: #e4ffdf; BORDER-TOP-COLOR: #42af41; BORDER-RIGHT-COLOR: #42af41; BORDER-LEFT-COLOR: #42af41 } A.remove { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffc4bf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } A.remove:hover { BORDER-BOTTOM-COLOR: #ef3b3b; BACKGROUND-COLOR: #ffd2cf; BORDER-TOP-COLOR: #ef3b3b; BORDER-RIGHT-COLOR: #ef3b3b; BORDER-LEFT-COLOR: #ef3b3b } .smallControls { MIN-WIDTH: 19em; MARGIN-TOP: 3px !important; FONT-SIZE: 90% } .smallControls .label { WIDTH: 29% } .smallControls .field { WIDTH: 70% } .smallControls .stepHelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100% !important; PADDING-TOP: 0px } .listColumnHead { BORDER-BOTTOM: #ccc 1px dotted; MARGIN-BOTTOM: 3px; COLOR: #555; FONT-SIZE: 90%; FONT-WEIGHT: bold } .customFormBuilderLabel { WIDTH: 88%; DISPLAY: block; WORD-WRAP: break-word } .textareaWrapper TEXTAREA { WIDTH: 100% } .textareaWrapper TABLE { WIDTH: 100% } .tools.navPalette { } DIV.instructionData { MARGIN: 0px 0px 12px } DIV.instructionData UL { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px 12px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.instructionData UL LI SPAN { COLOR: #555; FONT-SIZE: 90% } DIV.instructionData UL LI H3 { MARGIN: 0px; DISPLAY: inline; FONT-SIZE: 100% } DIV.instructionData UL LI.instructions { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 0px } DIV.instructionData UL LI.saving { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.instructionData UL LI.instructions A.browse { BORDER-BOTTOM: medium none; BORDER-LEFT: #ccc 1px solid; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .assessmentInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } .assessmentInstructions H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px }

.assessmentPortlet { Z-INDEX: 1; POSITION: fixed; RIGHT: 43px } .assessmentPortlet H3 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.assessmentPortletBlock H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .assessmentPortlet DIV.blockContents H4 { LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 100%; FONT-WEIGHT: bold } .savingQuestion { POSITION: relative; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; DISPLAY: none; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #c03; FONT-SIZE: 150%; PADDING-TOP: 2px } TR.dummyVTBEFooter TD { BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: right; BORDER-LEFT: #666 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; BORDER-TOP: #666 1px solid; BORDER-RIGHT: #666 1px solid; PADDING-TOP: 2px } .qIncomplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; COLOR: #333; BORDER-TOP: #999 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } .qComplete { BORDER-BOTTOM: #999 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #999 1px solid; BACKGROUND-COLOR: #ccc; MARGIN: 1px; WIDTH: 30px; DISPLAY: block; FLOAT: left; COLOR: #888; BORDER-TOP: #999 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #999 1px solid; TEXT-DECORATION: none } DIV.canvasHead { PADDING-BOTTOM: 12px; MARGIN: 0.6em 0px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #f6f6f6; PADDING-TOP: 6px } DIV.canvasHead UL LI { BORDER-TOP: #eee 1px solid } DIV.canvasHead UL LI:first-child { BORDER-TOP: medium none } DIV.canvasHead UL LI DIV.label { COLOR: #555 } .peer_instructions { MARGIN: 12px 6px } .peerHelp { COLOR: #555 } H2.evaluator { MARGIN: 1em 0px 0.3em } H2.evaluator SPAN { FONT-SIZE: 90%; FONT-WEIGHT: normal } DIV.peerCriteriaStatus { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 0.3em; PADDING-LEFT: 0.3em; PADDING-RIGHT: 0.3em; BACKGROUND: #fff; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 0.3em } DIV.peerCriteriaStatus A.itemHeadOpen { MARGIN: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #597298; FONT-SIZE: 90%; FONT-WEIGHT: bold; TEXT-DECORATION: none } DIV.peerCriteriaStatus A.itemHeadOpen:hover { TEXT-DECORATION: underline } DIV.peerCriteriaStatus TD.qStatus { PADDING-BOTTOM: 4px; PADDING-LEFT: 1px; WIDTH: 5%; PADDING-RIGHT: 1px; PADDING-TOP: 4px } DIV.peerCriteriaStatus TD.qStatus A SPAN { BORDER-BOTTOM: #fff 1px solid; BORDER-LEFT: #fff 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 2px; PADDING-RIGHT: 1px; BACKGROUND: white; BORDER-TOP: #fff 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 1px solid; PADDING-TOP: 1px } DIV.peerCriteriaStatus TD.qStatus A SPAN.qComplete { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qComplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus TD.qStatus A.qActive SPAN.qIncomplete { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid; TEXT-DECORATION: none } DIV.peerCriteriaStatus A SPAN IMG { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 12px; PADDING-RIGHT: 2px; HEIGHT: 12px; PADDING-TOP: 2px } .questionNumber { FONT-WEIGHT: bold } .questionType { FONT-WEIGHT: bold } .questionNumber { COLOR: #aaa } .questionDiv { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: -1px 0px 6px; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0.6em } .questionDiv H3 { BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 0.6em; MARGIN: 0px 0px 0.6em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv P { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .questionDiv DIV.criteriaText { PADDING-BOTTOM: 0px; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .questionDiv DIV.submission_text { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; WIDTH: 100%; PADDING-RIGHT: 4px; HEIGHT: 150px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .questionDiv TABLE { WIDTH: 98% } .questionDiv TABLE TABLE { WIDTH: auto } .questionDiv TD.label { WIDTH: 150px; WHITE-SPACE: nowrap } #creceipt { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: red; FONT-WEIGHT: bold; PADDING-TOP: 4px } UL.fileData { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.fileData LI { BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; FLOAT: left; PADDING-TOP: 2px } UL.listNav { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; BACKGROUND: #ddd; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.listNav LI { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WHITE-SPACE: nowrap; BACKGROUND: #ededed; FLOAT: left; COLOR: #2d2680; PADDING-TOP: 0px } UL.listNav LI A { PADDING-BOTTOM: 4px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 4px } UL.listNav LI A:hover { BACKGROUND-COLOR: #dedede; TEXT-DECORATION: underline } UL.listNav LI A.active { BORDER-BOTTOM: #000 2px solid; BORDER-LEFT: #000 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; BACKGROUND: #fff; COLOR: #000; BORDER-TOP: #000 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 2px solid; PADDING-TOP: 2px } UL.evaluation { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0.6em 1.2em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } UL.evaluation LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ddd 1px solid; PADDING-TOP: 4px } UL.evaluation LI P { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 0px; WIDTH: 79%; PADDING-RIGHT: 0px; FLOAT: left; PADDING-TOP: 0px } UL.evaluation H4 { PADDING-BOTTOM: 0px; MARGIN: 1px 0px; PADDING-LEFT: 4px; WIDTH: 20%; PADDING-RIGHT: 0px; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } UL.evaluation LI P SPAN { COLOR: #555 } DIV.stepPanel DIV.user_html { PADDING-BOTTOM: 0px; MARGIN: 5px 5px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.stepPanels H4.defaultCursor { CURSOR: default } H4.defaultCursor { CURSOR: default } .qShow { DISPLAY: block } .qHide { DISPLAY: none } .completionContainer { PADDING-BOTTOM: 6px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainerLarge { PADDING-BOTTOM: 6px; HEIGHT: 75px; OVERFLOW: auto; PADDING-TOP: 6px } .completionContainer A IMG { VERTICAL-ALIGN: baseline } .pagedRumble { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 14px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 4px } .pagedPointsOutsideBar { POSITION: relative; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; TOP: 0px; RIGHT: 6px; FONT-WEIGHT: bold; PADDING-TOP: 0px; LEFT: auto } .pagedPoints { PADDING-BOTTOM: 6px; LINE-HEIGHT: 100%; MARGIN: -5px 24px -5px -10px; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; BACKGROUND: #fae7ae 0px 50%; LETTER-SPACING: 1px; COLOR: #000 !important; FONT-SIZE: 110%; FONT-WEIGHT: bold; PADDING-TOP: 5px } .designAreaHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaFooter { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } .designAreaHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaFooter H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; PADDING-TOP: 0px } .designAreaHeader .headertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .designAreaFooter .footertext { PADDING-BOTTOM: 0.4em; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV#emptyText { MARGIN: 0.6em 16px } .infoListWrapper { BORDER-BOTTOM: #eee 1px solid; POSITION: relative; BORDER-LEFT: #eee 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } #assessmentGradeForm .infoListWrapper { MARGIN: 0px -12px 18px } .infoListWrapper H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .infoListWrapper H3 A { PADDING-BOTTOM: 3px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: block; BACKGROUND: url(images/indicators.png) no-repeat 0px -443px; PADDING-TOP: 3px } .infoListWrapper H3 A.open { BACKGROUND: url(images/indicators.png) no-repeat 0px -1040px } .infoList { MARGIN: 6px 12px } .infoList > LI { PADDING-BOTTOM: 0px !important; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #ddd 1px dotted; PADDING-TOP: 3px !important } .infoListWrapper .infoList > LI { BORDER-TOP: #cdcdcd 1px dotted } .infoList LI:first-child { BORDER-TOP: medium none } .infoList LI DIV H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #555; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 0px } .details .infoList { MARGIN-TOP: 0px !important } .infoListFloat { MARGIN: 0px } .infoListFloat LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 3px !important; PADDING-LEFT: 10px !important; PADDING-RIGHT: 10px !important; BACKGROUND: url(images/indicators.png) no-repeat 0px 50%; FLOAT: left; COLOR: #555; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 3px !important } .copyQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .linkQuestion { PADDING-BOTTOM: 2px !important; PADDING-LEFT: 22px !important } .copyQuestion { BACKGROUND: url(/images/ci/icons/file_copy_ti.png) no-repeat 1px center } .linkQuestion { BACKGROUND: url(/images/ci/icons/file_link_ti.png) no-repeat 1px center } DIV.contentListRight { Z-INDEX: 1000; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 9px; RIGHT: 9px; FONT-WEIGHT: normal; PADDING-TOP: 4px } DIV.contentListRight A { MARGIN-LEFT: 4px; FONT-WEIGHT: bold } DIV.contentListRight SPAN:first-child + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN + SPAN { FONT-SIZE: 85% } DIV.contentListRight SPAN:first-child + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:before { CONTENT: "(" } DIV.contentListRight SPAN:first-child + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN:first-child + SPAN + SPAN:after { CONTENT: ")" } DIV.contentListRight SPAN[style*='none']:first-child + SPAN { DISPLAY: none } DIV.contentListRight SPAN[style*='none']:first-child + SPAN + SPAN { DISPLAY: none } DIV.contentListRight SPAN SPAN { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #666; FONT-SIZE: 90%; PADDING-TOP: 9px } DIV.contentListRight STRONG { PADDING-BOTTOM: 2px; PADDING-LEFT: 0.4em; PADDING-RIGHT: 0.4em; PADDING-TOP: 0px } DIV.assessmentHeader { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } DIV.assessmentHeader H3 { PADDING-BOTTOM: 0px; MARGIN: 3px 3px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.assessmentHeader DIV { MARGIN: 3px; COLOR: #555 } .questionShell { WIDTH: 100% } .questionShell > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TBODY > TR { BORDER-TOP: #f1f1f1 1px solid } .questionShell > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell > TBODY > TR:first-child { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .questionShell TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: top; PADDING-TOP: 3px } .questionShell TH.labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell .labelCell { WIDTH: 17%; COLOR: #888; FONT-WEIGHT: bold } .questionShell TD.valueCell { WIDTH: 83% } .questionShell .correctAnswer { WIDTH: 2% } .questionShell .field { POSITION: relative; PADDING-BOTTOM: 0px; PADDING-LEFT: 15px; WIDTH: 95%; PADDING-RIGHT: 15px; PADDING-TOP: 0px } .questionShell .field IMG { POSITION: absolute; TOP: 52%; LEFT: -2px } .questionShell .field .vtbegenerated IMG { POSITION: relative; TOP: auto; LEFT: auto } .questionShell .vtbegenerated { WIDTH: 95%; DISPLAY: inline !important } .questionShell TD.valueCell TABLE .vtbegenerated { DISPLAY: inline !important } .takeQuestionDiv .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } #assessmentGradeForm .liveArea.stepTitleRight { BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 8px; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-COLOR: #ccc; PADDING-LEFT: 12px; PADDING-RIGHT: 30px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc; BORDER-LEFT-COLOR: #ccc; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px; PADDING-TOP: 8px; -moz-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -webkit-box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; -moz-border-radius: 0 0 0 4px; -webkit-border-radius: 0 0 0 4px; box-shadow: 1px -1px 3px rgba(0, 0, 0, 0.05) inset; border-radius: 0 0 0 4px } DIV.multiAssign { MARGIN: 3px 0px 9px } DIV.multiAssign UL { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; LIST-STYLE-IMAGE: none; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI.read { BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; PADDING-BOTTOM: 6px; LINE-HEIGHT: 1.3em; MARGIN: 0px 9px 0px 0px; PADDING-LEFT: 6px; WIDTH: 13em; PADDING-RIGHT: 6px; BACKGROUND: #f6f6f6; FLOAT: left; CLEAR: none; FONT-SIZE: 90%; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 1px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI A { FONT-SIZE: 100%; FONT-WEIGHT: bold } DIV.multiAssign UL LI P { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 1px } DIV.multiAssign UL LI.label { BORDER-BOTTOM: 0px; TEXT-ALIGN: left; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.1em; PADDING-LEFT: 0px; WIDTH: 12em; PADDING-RIGHT: 0px; WHITE-SPACE: normal; BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #888; BORDER-TOP: 0px; FONT-WEIGHT: normal; BORDER-RIGHT: 0px; PADDING-TOP: 0px } DIV.multiAssign UL LI P SPAN { COLOR: #888 } DIV.multiAssign A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } H3 A.buttonMicro { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 1px auto 12px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: url(images/backgrounds_h.png) #ededed repeat-x 0px -50px; COLOR: #666; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 0px } DIV.multiAssign A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:hover { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } H3 A.buttonMicro:focus { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; BACKGROUND: #fff; COLOR: #333; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid } DIV.multiAssign A.simpleLink { DISPLAY: block; COLOR: #666; FONT-WEIGHT: normal } H3 SPAN.status A.buttonMicro { MARGIN-LEFT: 6px; FONT-SIZE: 90%; FONT-WEIGHT: normal } H3 SPAN.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 DIV.status { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f3f3f3; MARGIN-LEFT: 6px; FONT-SIZE: 80%; FONT-WEIGHT: normal; PADDING-TOP: 3px } H3 SPAN.status SPAN { COLOR: #888 } H3 DIV.status SPAN { COLOR: #888 } H3 DIV.status { DISPLAY: inline } .gbtable_header DIV.gbText { text-shadow: 0 -1px 0 #777 } .gbtable THEAD DIV.gbText { text-shadow: 0 -1px 0 #777 } .subActionBar:hover { Z-INDEX: 1000 } .subActionBar DIV.block { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar DIV.button { BORDER-LEFT: #999 1px dotted; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; FLOAT: left; PADDING-TOP: 2px } .subActionBar SPAN.block { FLOAT: none } .subActionBar SPAN.button { FLOAT: none } .subActionBar LI.sub { POSITION: relative } .subActionBar FIELDSET LEGEND + DIV.block { BORDER-LEFT: 0px } .subActionBar SELECT { MAX-WIDTH: 180px; VERTICAL-ALIGN: middle } .subActionBar DIV.button { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .subActionBar DIV.last { BORDER-RIGHT: medium none } .subActionBar FIELDSET { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .subActionBar OPTGROUP { FONT-STYLE: normal; MARGIN-TOP: 6px; COLOR: #777; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal } .subActionBar OPTGROUP OPTION { COLOR: #000 } .subActionBar UL LI.sortableSelector A { PADDING-LEFT: 18px } .navPageHeader { TEXT-ALIGN: center; MARGIN: 1em 0px } .navPageHeader H3 { DISPLAY: inline; MARGIN-LEFT: 12px } .navPageHeader SPAN { MARGIN: 0px 6px 0px 0px; COLOR: #888; FONT-WEIGHT: normal } FIELDSET.secondaryActions { FLOAT: right } DIV.secondaryBlock { FLOAT: right } .cellInfoPanel { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #eee 1px solid; BORDER-TOP: #eee 1px solid; BORDER-RIGHT: #eee 1px solid } .cellStatus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: #f6f6f6; FONT-SIZE: 85%; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .cellStatus DIV { PADDING-BOTTOM: 2px; PADDING-LEFT: 8px; PADDING-RIGHT: 8px; FLOAT: left; PADDING-TOP: 2px } .statusTitle { BACKGROUND: #eee; COLOR: #666 } .statdata { COLOR: #000; OVERFLOW: hidden } .cellStatus DIV.gbTableTimeStamp { PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; FLOAT: right; COLOR: #666; PADDING-TOP: 2px } .sortImage { POSITION: absolute; TOP: 9px; LEFT: 6px } .bubble { Z-INDEX: 1000; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 190px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } .bubble UL { Z-INDEX: 1000; BORDER-BOTTOM: #57b 1px solid; BORDER-LEFT: #acc2df 1px solid; PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #e2eefe; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; OVERFLOW: hidden; BORDER-TOP: #acc2df 1px solid; BORDER-RIGHT: #57b 1px solid; PADDING-TOP: 6px } .bubble UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 4px; PADDING-LEFT: 0px; WIDTH: 174px; PADDING-RIGHT: 0px; FLOAT: left; COLOR: #666; CLEAR: left; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .bubble UL LI SPAN { WIDTH: 80px; DISPLAY: block; FLOAT: left; COLOR: #666; FONT-WEIGHT: normal; MARGIN-RIGHT: 3px } .bubble UL LI SPAN.icon { WIDTH: 20px; FLOAT: left; OVERFLOW: hidden } .bubble UL LI SPAN.label { WIDTH: 147px; FONT-SIZE: 100%; FONT-WEIGHT: normal } .bubbleStem { POSITION: relative; WIDTH: 190px; HEIGHT: 14px } .bottom .bubbleStem { BOTTOM: 4px } .top .bubbleStem { TOP: -2px } .left .bubbleStem { PADDING-LEFT: 24px } .right .bubbleStem { TEXT-ALIGN: right; RIGHT: 24px } .selectList { Z-INDEX: 100; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: left; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } #viewList { Z-INDEX: 1000 !important } .selectList LI { Z-INDEX: 101; MARGIN: 0px 4px 0px 0px; FLOAT: left } .selectList .sub A { DISPLAY: block; TEXT-DECORATION: none } .selectList .sub:hover UL { TOP: 20px !important; LEFT: 0px } .selectList .sub UL LI { POSITION: static !important; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .selectList .sub UL LI H4 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #888; FONT-SIZE: 90%; FONT-WEIGHT: bold; PADDING-TOP: 6px } .selectList .sub UL LI H4 { WIDTH: 152px } .selectList .sub UL LI A { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:hover { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub UL LI A:focus { BACKGROUND-IMAGE: none; PADDING-LEFT: 18px !important } .selectList .sub A #currentView { BACKGROUND-IMAGE: none } .selectList .sub A #currentSortBy { BACKGROUND-IMAGE: none } .selectList .sub A #currentColSortDir { BACKGROUND-IMAGE: none } UL.selectList LI.sub UL LI.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } UL.selectList LI.sub UL LI.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } .nav .sub .favorite.current A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BACKGROUND-COLOR: #f9f9f9; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 2px center } DIV.gradeDetails { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 6px } DIV.gradeDetails DIV.label { WIDTH: 15% } SPAN.unstyled { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; PADDING-TOP: 0px } @media Print { DIV.hideOnPrint { DISPLAY: none } } DIV.gradeDetailsStep { BORDER-BOTTOM: #ccc 2px solid; OVERFLOW-X: auto; OVERFLOW-Y: visible; MARGIN: 0px 0px 6px } .gradeInfoHeader { PADDING-BOTTOM: 3px; MARGIN: 0px -12px 12px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3 { PADDING-BOTTOM: 3px; MARGIN: 0px 4px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-WEIGHT: normal; PADDING-TOP: 3px } .gradeInfoHeader H3 SPAN { COLOR: #000; FONT-WEIGHT: bold } .gradeInfoHeader H3.root { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #888; COLOR: #fff; PADDING-TOP: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gradeInfoHeader H3.root SPAN { COLOR: #fff } UL.gb_currView LI.sub UL LI.favorite A { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } UL.gb_currView LI.sub UL LI.favorite A:hover { BACKGROUND-IMAGE: url(/images/ci/icons/favorite_on_li.png) !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 0px 4px } .navStatusButtons .taskbuttondiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.staticFooter DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader DIV.details { MARGIN-LEFT: 18px } DIV.staticHeader { MARGIN: 10px 0px 0px } DIV.staticFooter DIV.details { BORDER-BOTTOM: #ddd 1px solid } .gbColumns_rumble { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: 0px; BORDER-LEFT: #ddd 1px solid; MARGIN-LEFT: 38px !important; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid } .gbColumns_rumble_bottom { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ddd 1px solid } .staticHeader { POSITION: relative; ZOOM: 1; CLEAR: both } .staticFooter { POSITION: relative; ZOOM: 1; CLEAR: both } .staticHeader DIV.itemHeaderControl { RIGHT: 0px } .staticFooter DIV.itemHeaderControl { RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { RIGHT: 0px } .staticHeader DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticFooter DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } UL.gbCategories LI DIV.itemHeaderControl { TOP: 0px; RIGHT: 0px } .staticHeader DIV.itemHeaderControl A { DISPLAY: inline-block } .staticFooter DIV.itemHeaderControl A { DISPLAY: inline-block } UL.gbCategories LI DIV.itemHeaderControl A { DISPLAY: inline-block } UL.dragableHighlight { BORDER-BOTTOM: #999 1px dashed; PADDING-BOTTOM: 3px; MARGIN: 12px -30px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; BORDER-TOP: #999 1px dashed; PADDING-TOP: 12px } UL.gbCategories LI H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticHeader H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } DIV.staticFooter H3.item { PADDING-BOTTOM: 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 6px } UL.gbCategories LI H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticHeader H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.staticFooter H3.item A.toggleLink { MARGIN-TOP: -2px; MARGIN-RIGHT: 6px } DIV.areaHighlight DIV.container { BACKGROUND: #f9f9f9 } DIV.areaHighlight DIV.bottomRound B { BACKGROUND: #f9f9f9 } UL.dragableHighlight LI H3.item { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .dragableHighlight DIV.details { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } .dbThreadInfo DL { MARGIN: 1em } .dbThreadInfo DT { PADDING-BOTTOM: 0.1em; MARGIN: 0px; PADDING-LEFT: 0.1em; WIDTH: 8em; PADDING-RIGHT: 0.1em; FLOAT: left; COLOR: #999; CLEAR: left; FONT-WEIGHT: bold; PADDING-TOP: 0.1em } .dbThreadInfo DD { PADDING-BOTTOM: 0.1em; MARGIN: 0px 0px 0px 9em; PADDING-LEFT: 0.1em; PADDING-RIGHT: 0.1em; PADDING-TOP: 0.1em } .rating { POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 80px; PADDING-RIGHT: 0px; BACKGROUND: url(images/controls.png) no-repeat 0px -20px; HEIGHT: 16px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .star0 { BACKGROUND-POSITION: 0px -20px } .star1 { BACKGROUND-POSITION: 0px -36px } .star2 { BACKGROUND-POSITION: 0px -52px } .star3 { BACKGROUND-POSITION: 0px -68px } .star4 { BACKGROUND-POSITION: 0px -84px } .star5 { BACKGROUND-POSITION: 0px -100px } UL.rating LI { TEXT-INDENT: -999em; CURSOR: pointer } UL.rating LI A { Z-INDEX: 200; POSITION: absolute; WIDTH: 16px; HEIGHT: 16px; TOP: 0px; TEXT-DECORATION: none; LEFT: 0px } UL.rating LI.one A { LEFT: 0px } UL.rating LI.two A { LEFT: 16px } UL.rating LI.three A { LEFT: 32px } UL.rating LI.four A { LEFT: 48px } UL.rating LI.five A { LEFT: 64px } UL.rating LI A:hover { Z-INDEX: 2; WIDTH: 80px; BACKGROUND: url(images/controls.png) no-repeat -90px -36px; HEIGHT: 16px; OVERFLOW: hidden; LEFT: 0px } UL.rating LI.one A:hover { BACKGROUND-POSITION: -90px -36px } UL.rating LI.two A:hover { BACKGROUND-POSITION: -90px -52px } UL.rating LI.three A:hover { BACKGROUND-POSITION: -90px -68px } UL.rating LI.four A:hover { BACKGROUND-POSITION: -90px -84px } UL.rating LI.five A:hover { BACKGROUND-POSITION: -90px -100px } DIV.collectionViewReadMessageBorder { BORDER-LEFT: #ccc 1px solid; MARGIN-LEFT: 30px } DIV.collectionViewUnreadMessageBorder { BORDER-BOTTOM: #999 3px solid; BORDER-LEFT: #999 3px solid; MARGIN-LEFT: 30px; BORDER-TOP: #999 3px solid; BORDER-RIGHT: #999 3px solid } TABLE.treeframe TR TD { VERTICAL-ALIGN: middle } TABLE.tree_view TR TD IMG { VERTICAL-ALIGN: middle } TABLE.treeframe { MARGIN: 0px } TABLE.treeframe TBODY TR TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe THEAD TR TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; PADDING-TOP: 1px } TABLE.treeframe TR.high { BACKGROUND-COLOR: transparent } TR.thread TD { VERTICAL-ALIGN: middle; BORDER-TOP: #ccc 1px solid } TR.thread TD IMG { VERTICAL-ALIGN: middle } TABLE.unreadmessageborder { BORDER-BOTTOM: #666 3px solid; BORDER-LEFT: #666 3px solid; BORDER-TOP: #666 3px solid; BORDER-RIGHT: #666 3px solid } TABLE.readmessageborder { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } TR.show { DISPLAY: table-row } TR.hide { DISPLAY: none } .loadingelipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #ffc; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .gradefield { TEXT-ALIGN: center; PADDING-BOTTOM: 4px; MARGIN: 9px 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #000; FONT-SIZE: 120%; VERTICAL-ALIGN: middle; OVERFLOW: visible; PADDING-TOP: 4px } .gradefield INPUT { BORDER-BOTTOM: #666 2px solid; BORDER-LEFT: #666 2px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 100%; MARGIN: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; FONT-FAMILY: arial, sans-serif; BACKGROUND: #fff; FONT-SIZE: 110%; VERTICAL-ALIGN: middle; BORDER-TOP: #666 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #666 2px solid; PADDING-TOP: 1px } .gradefield INPUT.inputtypebutton { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 8px; WIDTH: auto; PADDING-RIGHT: 8px; DISPLAY: inline; BACKGROUND: #ededed; HEIGHT: auto; FONT-SIZE: 80%; OVERFLOW: visible; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } .gradefield A { FONT-SIZE: 120%; FONT-WEIGHT: bold } .gradefield SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; COLOR: #555; FONT-SIZE: 80%; PADDING-TOP: 0px } .overridegrade { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 3px 0px 3px 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: inline; FONT-SIZE: 80%; VERTICAL-ALIGN: middle; PADDING-TOP: 0px } .overridegrade INPUT.inputtypebutton { MARGIN-TOP: -3px; FONT-SIZE: 70%; VERTICAL-ALIGN: middle; FONT-WEIGHT: normal } DIV.parentmessage { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 9px; MARGIN: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #ededed; CLEAR: both; FONT-SIZE: 90%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .availability { PADDING-BOTTOM: 1px; FONT-STYLE: italic; MARGIN: 6px 0px; PADDING-LEFT: 3px; WIDTH: auto; PADDING-RIGHT: 3px; FONT-SIZE: 85%; PADDING-TOP: 1px } TD.tag_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.msg_controls { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 3px; BACKGROUND: #cad7e7; PADDING-TOP: 3px } TD.checkbox_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px } TD.prevnextpostarea { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 2px } H3.dbheading { MARGIN-TOP: 0px; DISPLAY: inline; MARGIN-BOTTOM: 0px; FONT-WEIGHT: normal } .dbThread { BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; BORDER-LEFT: #aaa 1px solid; MARGIN: 24px 30px; BACKGROUND: #eee; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; -moz-box-shadow: 0 3px 6px #ccc; -webkit-box-shadow: 0 3px 6px #ccc; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbThreadCheckbox { POSITION: absolute } .dbThreadCheckbox INPUT { MARGIN: 10px } .dbThread .dbThreadInfo { PADDING-BOTTOM: 1em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; COLOR: #555; PADDING-TOP: 1em } .dbThreadInfo DL { MARGIN: 0px; WIDTH: 50%; FLOAT: left; FONT-SIZE: 95% } .dbThreadBody { PADDING-BOTTOM: 2em; PADDING-LEFT: 2em; PADDING-RIGHT: 2em; BACKGROUND: #fff; PADDING-TOP: 2em } P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbParentPost P.dbAttachment { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0.6em; PADDING-TOP: 1.2em } .dbThreadHeader { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter { PADDING-BOTTOM: 0px; PADDING-LEFT: 2em; PADDING-RIGHT: 1em; PADDING-TOP: 0px } .dbThreadFooter .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadHeader .navButtons { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; WIDTH: 49%; PADDING-RIGHT: 12px; DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } .dbThreadFooter .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } .dbThreadHeader .threadButtons { TEXT-ALIGN: right; PADDING-BOTTOM: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: right; PADDING-TOP: 1em } DIV.spacerDiv { CLEAR: both } .threadButtons .browse { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .dbThreadInfo .reply { PADDING-BOTTOM: 2px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 2px } .threadButtons .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo .reply { VERTICAL-ALIGN: middle; FONT-WEIGHT: bold } .dbThreadInfo P { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; PADDING-TOP: 0.6em } .dbThreadInfo P.detailButtons { FLOAT: right } .dbThreadTree { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MIN-HEIGHT: 80px; MAX-HEIGHT: 200px; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #threadArea { PADDING-BOTTOM: 18px; MARGIN: 0px -30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 18px } #message { MARGIN: 0px -30px -20px; BORDER-TOP: #ccc 1px solid } #message_upper { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 1px; MARGIN: -20px -30px 0px } .dbParentPost { BORDER-BOTTOM: #bbb 1px dashed; BORDER-LEFT: #bbb 1px dashed; PADDING-BOTTOM: 0px; MARGIN: -0.6em 0px 1.2em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #bbb 1px dashed; BORDER-RIGHT: #bbb 1px dashed; PADDING-TOP: 0.6em; -moz-border-radius: 3px; -webkit-border-radius: 3px } .dbParentPost H4 { MARGIN: 0px 0px 0.6em } .dbParentPost H4 A { WIDTH: 100%; DISPLAY: block } .dbParentPost P { PADDING-BOTTOM: 1.2em; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .dbParentPostBody { PADDING-BOTTOM: 0.6em; PADDING-LEFT: 0.6em; PADDING-RIGHT: 0.6em; MARGIN-BOTTOM: 0.6em; BACKGROUND: #fcfcfc; CLEAR: both; PADDING-TOP: 0.6em } .loadingElipse { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; MARGIN: 12px auto; PADDING-LEFT: 14px; WIDTH: 140px; PADDING-RIGHT: 14px; DISPLAY: block; BACKGROUND: #fff7de; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } .unreadmessage { FONT-WEIGHT: bold } H3.unreadmessage { FONT-WEIGHT: bold } .unreadmessage.dbheading { FONT-SIZE: 100% } .unread-count { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #128fa8; COLOR: #fff; PADDING-TOP: 2px; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px } #threadArea DIV.checked { BACKGROUND-COLOR: #eee } #threadArea DIV.checked_top { BACKGROUND-COLOR: #eee } #threadArea DIV.checked { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: 0px; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } #threadArea DIV.checked_top { BORDER-BOTTOM: 0px; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-radius: 3px 3px 0 0 } DIV.blogContainer { WIDTH: 74%; FLOAT: left } DIV.blogContainer H3.blogHead { PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer DIV.blogEntry { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogContainer DIV.blogEntry H4 { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 12px; WORD-WRAP: break-word; BACKGROUND: url(images/small_discussions.gif) no-repeat 8px 9px; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 9px } DIV.blogContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 3px 12px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } DIV.blogContainer DIV.entryDate { COLOR: #444; FONT-SIZE: 95% } DIV.blogContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.blogContainer DIV.entryFooter { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #eaeaea; PADDING-TOP: 6px; -moz-border-radius: 0 0 3px 3px; -webkit-border-radius: 0 0 3px 3px } DIV.blogContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.5% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px -12px; DISPLAY: none; BORDER-TOP: #999 1px solid; BORDER-RIGHT: 0px; -moz-box-shadow: none; -webkit-box-shadow: none } DIV.blogContainer DIV.entryFooter DIV.addBlogComment H3 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .addBlogComment .stepcontent OL { WIDTH: 100% } .addBlogComment .stepcontent OL LI { WIDTH: 100% } DIV.blogContainer DIV.entryFooter DIV.addBlogComment DIV.controls { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } DIV.blogContainer UL.entryComments { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #eaeaea; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.blogContainer UL.entryComments LI P { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 4px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 12px } DIV.blogContainer UL.entryComments LI P.commentDate { Z-INDEX: 10; BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: right; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; MARGIN: 2px 0px -1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bubble_top_thin.gif) no-repeat 15px 100%; COLOR: #444; FONT-SIZE: 90%; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px } DIV.blogContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; COLOR: #444; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.blogContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.blogContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.blogContainer DIV.blogInstructions H4 { BACKGROUND-IMAGE: none; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.blogNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.journalNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } DIV.contentAreaNav { BORDER-LEFT: #ccc 4px double; PADDING-BOTTOM: 12px; MARGIN: -20px -30px -20px 0px; WIDTH: 25%; FLOAT: right } .messageCollectionContainer { FLOAT: left } DIV.blogNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.blogNav UL LI { WORD-WRAP: break-word; OVERFLOW: hidden } DIV.blogNav UL.blogArchiveList LI A { WIDTH: 100%; WORD-WRAP: break-word } .indentedWikiList { PADDING-BOTTOM: 0px !important; PADDING-LEFT: 22px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .indentedWikiList IMG { MARGIN: 0px 3px 0px -22px } .blogNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .journalNav #gradeDetailsForm { MARGIN: 0px 6px 0px -18px } .blogNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } .journalNav #gradeDetailsForm .liveArea { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 6px; -moz-box-shadow: none; -webkit-box-shadow: none; -moz-border-radius: 3px; -webkit-border-radius: 3px } DIV.blogNav LI.currentBlog { FONT-WEIGHT: bold } DIV.blogNav LI.currentBlog SPAN { FONT-WEIGHT: normal } DIV.blogContainer .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.blogNav .newItems { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav .gradeStatus { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px 4px 0px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.blogNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend { PADDING-BOTTOM: 0px; MARGIN: 12px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.blogNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.journalNav UL.iconLegend LI { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #666; FONT-SIZE: 82%; PADDING-TOP: 0px } DIV.blogNav UL UL { MARGIN-LEFT: 9px } DIV.blogNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } DIV.journalContainer { WIDTH: 74%; FLOAT: left; MARGIN-RIGHT: 1% } DIV.journalContainer H3.blogHead { TEXT-ALIGN: center; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 12px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; BACKGROUND: #aaa; COLOR: #fff; FONT-SIZE: 100%; PADDING-TOP: 3px } DIV.journalContainer DIV.blogEntry { BORDER-BOTTOM: #eee 3px solid; POSITION: relative; BORDER-LEFT: #eee 0px solid; PADDING-BOTTOM: 0px; MARGIN: 12px 0px; PADDING-LEFT: 36px; PADDING-RIGHT: 0px; BACKGROUND: url(images/blog_notebook_paper.gif) #fff repeat-y 0px 0px; BORDER-TOP: #eee 3px solid; BORDER-RIGHT: #eee 3px solid; PADDING-TOP: 0px } DIV.journalContainer DIV.blogEntry H4 { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; FONT-SIZE: 110%; OVERFLOW: hidden; PADDING-TOP: 12px } DIV.journalContainer DIV.entryDate { Z-INDEX: 100; BORDER-BOTTOM: #c0dace 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; PADDING-TOP: 3px } DIV.journalContainer DIV.entryDate A { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogEntry DIV.entryText { PADDING-BOTTOM: 18px; OVERFLOW-X: auto; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; PADDING-TOP: 12px } DIV.journalContainer DIV.entryFooter { PADDING-BOTTOM: 12px; MARGIN: 0px 0px 0px -31px; PADDING-LEFT: 43px; PADDING-RIGHT: 12px; ZOOM: 1; BACKGROUND: url(images/blog_notebook_paper_bot.gif) repeat-x center bottom; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter H4 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: left; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.entryFooter A.genericButton { DISPLAY: block; FLOAT: right } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TABLE { WIDTH: 98% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment TEXTAREA { WIDTH: 99.35% } DIV.journalContainer DIV.entryFooter DIV.addBlogComment { DISPLAY: none; MARGIN-BOTTOM: 6px } DIV.journalContainer UL.entryComments { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #fff; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI { PADDING-BOTTOM: 6px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #c0dace 1px solid; LIST-STYLE-IMAGE: none; PADDING-TOP: 6px } DIV.journalContainer UL.entryComments LI P { PADDING-BOTTOM: 0px; MARGIN: 4px 18px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalContainer UL.entryComments LI P.commentDate { COLOR: #444; MARGIN-LEFT: 19px; FONT-SIZE: 90% } DIV.journalContainer UL.entryComments LI H5 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; DISPLAY: inline; BACKGROUND: url(images/small_blog_comment.gif) no-repeat 0px 3px; COLOR: #000; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 3px } DIV.journalContainer UL.entryComments LI.newComment H5 { FONT-WEIGHT: bold } DIV.journalContainer DIV.blogInstructions { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #f1f1f1; PADDING-TOP: 3px } DIV.journalContainer DIV.blogInstructions H4 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 3px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: 100%; PADDING-TOP: 0px } DIV.journalContainer DIV.blogInstructions P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.journalNav UL { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.journalNav UL LI { OVERFLOW: hidden } DIV.journalNav LI.currentBlog { FONT-WEIGHT: bold } DIV.journalNav LI.currentBlog SPAN { FONT-WEIGHT: normal } .newItems { PADDING-BOTTOM: 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; BACKGROUND: #fff1c5; COLOR: #000; FONT-WEIGHT: normal; PADDING-TOP: 0px } DIV.journalNav .newItems { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 0px } DIV.journalContainer DIV.u_controlsWrapper SPAN.newItems { DISPLAY: block; FLOAT: left; MARGIN-LEFT: 4px } DIV.journalNav UL UL { MARGIN-LEFT: 9px } DIV.journalNav UL#blogArchive UL { MARGIN: 0px 9px 9px 18px } #blogNavLinks { POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; TOP: 6px; RIGHT: 6px; PADDING-TOP: 0px } .contentAreaPalette UL#aboutBlog LI.currentBlogView { BORDER-BOTTOM: #0078cb 2px solid; BORDER-LEFT: #0078cb 2px solid; PADDING-BOTTOM: 2px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; MARGIN-BOTTOM: 3px; BACKGROUND: #eff6ff; BORDER-TOP: #0078cb 2px solid; BORDER-RIGHT: #0078cb 2px solid; PADDING-TOP: 2px } .currentBlogView A { COLOR: black; TEXT-DECORATION: none } UL.blogArchiveList { MARGIN-LEFT: 16px } UL.blogArchiveList LI { PADDING-BOTTOM: 4px } #gradeWidget SPAN#blogGradeValue { POSITION: relative; PADDING-LEFT: 6px } #blogGradeValue IMG { POSITION: absolute; TOP: 0px; LEFT: 0px } .contentAreaNav A.itemHead { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 24px; PADDING-RIGHT: 9px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 6px } .contentAreaPalette { POSITION: relative; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 4px } DIV.blogNav .contentAreaPalette:first-child { BORDER-TOP: 0px } DIV.journalNav .contentAreaPalette:first-child { BORDER-TOP: 0px } .rightColumn-narrow .contentAreaPalette:first-child { BORDER-TOP: 0px } .contentAreaPalette UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 0px 24px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px } .contentAreaPalette LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; PADDING-TOP: 0px } .contentAreaPalette LI LI { FONT-SIZE: 100% } DIV.iconLegendBlog { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .contentAreaNav A#blogListLink { PADDING-RIGHT: 48px } #loginPageContainer { MARGIN: 0px auto; MIN-HEIGHT: 100%; HEIGHT: auto !important } #loginHeader { POSITION: absolute; TOP: 0px; RIGHT: 0px } #loginHeader UL LI { POSITION: relative; MARGIN: 0px 0px 0px -4px; DISPLAY: inline-block; BACKGROUND: #888; VERTICAL-ALIGN: top; BORDER-TOP: 0px } #loginHeader UL LI A { PADDING-BOTTOM: 6px; TEXT-INDENT: -10000px; PADDING-LEFT: 12px; WIDTH: 28px; PADDING-RIGHT: 12px; DISPLAY: inline-block; HEIGHT: 18px; PADDING-TOP: 6px } #loginHeader UL LI:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang H2:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginLang:hover H2 { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset; box-shadow: 0 0 24px rgba(0, 0, 0, .3) inset } #loginHeader UL LI:first-child { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI:first-child A { -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px } #loginHeader UL LI IMG { DISPLAY: none } #loginHeader UL LI.font-size:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.contrast:before { Z-INDEX: 2; POSITION: absolute; TEXT-ALIGN: center; FONT: 130%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "T"; TOP: 5px; RIGHT: 0px; LEFT: 0px; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginHeader UL LI.font-size A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast A { Z-INDEX: 1; POSITION: relative } #loginHeader UL LI.contrast:before { CONTENT: "c" } #loginHeader UL LI:hover:before { COLOR: #fff; CURSOR: pointer } #loginHeader UL LI.contrast { BORDER-LEFT: #777 1px solid; MARGIN-LEFT: -4px } #loginLang { POSITION: absolute; TOP: 0px; LEFT: 0px } #loginLang H2 { PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-LEFT: 14px; WIDTH: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; BACKGROUND: #888; HEIGHT: 17px; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 4px; -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0 } #loginLang H2 SPAN { TEXT-INDENT: -999px; WIDTH: 0px; DISPLAY: inline-block; OVERFLOW: hidden } #loginLang H2:before { FONT: 140%/1 "Utilicons"; COLOR: #f0f0f0; CONTENT: "W"; text-shadow: 0 -1px 0 rgba(0, 0, 0, .2) } #loginLang H2:hover:before { COLOR: #fff } #loginLang UL { POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; WIDTH: 150px; PADDING-RIGHT: 6px; TOP: -1000px; PADDING-TOP: 6px; LEFT: -1000px } #loginLang:hover UL { WIDTH: 175px; TOP: 28px; LEFT: 0px; -moz-border-radius: 0 3px 3px 0; -webkit-border-radius: 0 3px 3px 0 } #loginLang H2:hover:after { Z-INDEX: 100 } #loginLang:hover H2:after { Z-INDEX: 100 } #loginLang UL LI A { WIDTH: auto } DIV.loginBody { PADDING-BOTTOM: 0px; MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 600px; PADDING-RIGHT: 0px; BACKGROUND: url(images/Bb_learn_small.png) no-repeat 94px 94px; PADDING-TOP: 260px } DIV.loginBody .receipt { PADDING-BOTTOM: 14px; MARGIN: 0px auto 16px; PADDING-LEFT: 19px; WIDTH: 409px; PADDING-RIGHT: 4px; PADDING-TOP: 12px } #loginBox { TEXT-ALIGN: center } #loginBox UL { MARGIN: 0px auto; WIDTH: 415px } #loginBox LI { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #loginBox LI + LI + LI { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } #loginBox LI + LI + LI + LI { POSITION: relative; TEXT-ALIGN: right; DISPLAY: block } #loginBox LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; TEXT-TRANSFORM: uppercase; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; DISPLAY: block; LETTER-SPACING: 1px; COLOR: #999; FONT-SIZE: 120%; PADDING-TOP: 0px } .portlet #loginBoxFull LI LABEL { PADDING-BOTTOM: 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 90%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #loginBox LI INPUT { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100%; PADDING-RIGHT: 10px; FONT-SIZE: 140%; PADDING-TOP: 10px; -moz-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 3px 3px 12px rgba(0, 0, 0, 0.1) } #loginBox INPUT[type='text'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='password'] { BORDER-BOTTOM: #777 4px solid; BORDER-LEFT: #777 4px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 0px 0px -10px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #efefef; COLOR: #666; BORDER-TOP: #777 4px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #777 4px solid; PADDING-TOP: 6px; -moz-border-radius: 5px 5px 5px 5px; -webkit-border-radius: 5px 5px 5px 5px } #loginBox INPUT[type='text']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:focus { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='text']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox INPUT[type='password']:hover { BORDER-BOTTOM-COLOR: #00add0; BORDER-TOP-COLOR: #00add0; BACKGROUND: #fff; COLOR: #333; BORDER-RIGHT-COLOR: #00add0; BORDER-LEFT-COLOR: #00add0 } #loginBox LI INPUT[type='submit'] { PADDING-BOTTOM: 7px; MARGIN: -31px -9px 0px 12px; PADDING-LEFT: 22px; WIDTH: auto; PADDING-RIGHT: 22px; FONT-SIZE: 130%; PADDING-TOP: 7px } #loginFormTitle { POSITION: absolute; DISPLAY: none } #loginFormText { POSITION: absolute; DISPLAY: none } DIV.portlet #loginFormTitle { POSITION: static; DISPLAY: block } DIV.portlet #loginFormText { POSITION: static; DISPLAY: block } #loginOptions { TEXT-ALIGN: center; MARGIN: 38px auto 26px; WIDTH: 600px } #loginOptions H2 { MARGIN: 10px } #loginOptions P { MARGIN: 10px; COLOR: #444; FONT-SIZE: 0.85em } #loginOptions UL LI { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI.subOption { MARGIN: 0px 9px 6px; DISPLAY: inline-block } #loginOptions UL LI A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } #loginOptions UL LI.subOption A { BORDER-BOTTOM: #0099b6 1px dotted; FONT-SIZE: 130% } .forgot A { BORDER-BOTTOM: #0099b6 1px dotted } #loginOptions UL LI A:hover { BORDER-BOTTOM-STYLE: solid } #loginOptions UL LI.subOption A:hover { BORDER-BOTTOM-STYLE: solid } .forgot A:hover { BORDER-BOTTOM-STYLE: solid } #loginText { TEXT-ALIGN: center; PADDING-BOTTOM: 18px; PADDING-LEFT: 80px; PADDING-RIGHT: 80px; DISPLAY: none; BACKGROUND: #5f6062; BORDER-TOP: #777 1px solid; PADDING-TOP: 12px } #loginText P SPAN { COLOR: #fff; FONT-SIZE: 105%; FONT-WEIGHT: bold } #loginText P { MARGIN: 0px; COLOR: #ededed; FONT-SIZE: 95% } #loginImage { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: none; PADDING-TOP: 0px } #loginImage IMG { MARGIN: 0px auto } #loginAnnouncements { PADDING-BOTTOM: 7px; MARGIN: 0px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 24px } #loginAnnouncements H3 { BORDER-BOTTOM: #bbb 1px solid; PADDING-BOTTOM: 6px; MARGIN: 0px 9px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: none; COLOR: #555; FONT-SIZE: 110%; PADDING-TOP: 6px } #loginAnnouncements UL { TEXT-ALIGN: center; MARGIN: 0px auto; WIDTH: 800px } #loginAnnouncements UL LI:before { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:after { Z-INDEX: -2; POSITION: absolute; WIDTH: 50%; BOTTOM: 15px; MAX-WIDTH: 300px; HEIGHT: 20%; CONTENT: ""; -moz-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); -webkit-box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5); box-shadow: 0 15px 10px rgba(0, 0, 0, 0.5) } #loginAnnouncements UL LI:before { LEFT: 8px; -moz-transform: rotate(-2deg); -webkit-transform: rotate(-2deg) } #loginAnnouncements UL LI:after { RIGHT: 8px; -moz-transform: rotate(2deg); -webkit-transform: rotate(2deg) } #loginAnnouncements LI { POSITION: relative; TEXT-ALIGN: justify; PADDING-BOTTOM: 24px; MARGIN: 0px 0px 12px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; ZOOM: 1; BACKGROUND: #fff; COLOR: #666; FONT-SIZE: 95%; VERTICAL-ALIGN: top; PADDING-TOP: 18px; -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15) } #loginAnnouncements UL LI STRONG:first-child { MARGIN: 0px 0px 12px; FONT-FAMILY: Georgia, serif; FLOAT: left; COLOR: #000; FONT-SIZE: 115% } #loginAnnouncements UL LI STRONG + EM { TEXT-ALIGN: right; MARGIN: 0px; DISPLAY: block; FONT-FAMILY: Georgia; FLOAT: right } #loginAnnouncements UL LI STRONG + EM + BR { DISPLAY: none } #loginAnnouncements UL LI .vtbegenerated { LINE-HEIGHT: 1.38; CLEAR: both } #loginAnnouncements UL LI:first-child { BORDER-TOP: 0px } #loginAnnouncements A { BORDER-BOTTOM: #128fa8 1px dotted } #loginAnnouncements A:hover { BORDER-BOTTOM-STYLE: solid } #loginAnnouncements A:focus { BORDER-BOTTOM-STYLE: solid } #loginHeader H1 { DISPLAY: none } #loginHeader H2 { DISPLAY: none } #loginHeader .productLogo { DISPLAY: none } #loginOptions #gatewayButtonsTitle { DISPLAY: none } #loginOptions #gatewayButtonsInstructions { DISPLAY: none } .login-page #copyright { POSITION: absolute; TEXT-ALIGN: center; MARGIN-TOP: 24px; WIDTH: 900px; BOTTOM: 24px; MARGIN-LEFT: -450px; LEFT: 50% } #loginAnnouncements + #copyright { POSITION: relative } .loginCopyright { WIDTH: 580px !important } .login-page #copyright .logo { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: #efede3; PADDING-TOP: 0px } .login-page #copyright .newCopyright { POSITION: relative; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline-block; PADDING-TOP: 0px } .loginCopyright .legal { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .additionalInfo { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; MIN-HEIGHT: 2.5em; WIDTH: 24em; BORDER-TOP: red 1px solid; BORDER-RIGHT: red 1px solid } .loginCopyright .legal { BORDER-LEFT: medium none; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; WIDTH: 24.5em; PADDING-RIGHT: 12px; PADDING-TOP: 3px } #loginPane + #copyright .legal P { MARGIN: 0px; DISPLAY: inline } #loginPane + #copyright .additionalInfo P { MARGIN: 0px; DISPLAY: inline } .login-page .copyrightDetailContents { MIN-HEIGHT: 6.5em; MARGIN-LEFT: -394px; LEFT: 50% } H1.pageTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .caliperTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .discoverTitle { MARGIN: -16px 0px 5px; PADDING-TOP: 0px } .unitHomePageTitle { MARGIN: -60px -30px 5px } .caliperTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .unitHomePageTitle H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: none; PADDING-TOP: 0px } .discoverTitle H1 { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } .unitHomePageTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .caliperTitle A.browse { PADDING-BOTTOM: 1px; MARGIN: 4px 0px 0px 6px; FLOAT: right; FONT-SIZE: 55%; FONT-WEIGHT: normal; PADDING-TOP: 2px } .unitHomePageTitle A.browseNoImg { PADDING-BOTTOM: 3px; PADDING-TOP: 2px } .reports { MIN-WIDTH: 810px; BACKGROUND: #f0f0f0 } .reports .navigationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .locationPane { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .contentPaneWide { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports .container { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .reports #dataCollectionContainer { MARGIN: 0px } .reports DIV[id*='step'] { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } .reports UL { MARGIN: 12px } .reports .stepcontent { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports UL LI { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; CLEAR: both; PADDING-TOP: 0px } .reports .label { COLOR: #777 } .reports .field { COLOR: #000 } .reports UL LI:after { DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; CLEAR: both; CONTENT: "." } .reports H1 { PADDING-BOTTOM: 9px; MARGIN: 0px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 9px } .reports H2 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; PADDING-TOP: 3px } .reports H3 { PADDING-BOTTOM: 3px; MARGIN: 6px 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .reports H3 A IMG { VERTICAL-ALIGN: middle; MARGIN-RIGHT: 6px } .reports H3.steptitle { PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; LETTER-SPACING: 0px; COLOR: #fff; FONT-SIZE: 110%; PADDING-TOP: 4px } .reports H4 { PADDING-BOTTOM: 3px; MARGIN: 0px 10px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #bbb; COLOR: #fff; FONT-SIZE: 115%; PADDING-TOP: 3px } .reports H5 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 6px; MARGIN: 12px -12px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 100%; PADDING-TOP: 0px } .reports .attachments { MARGIN: 0px } .reports t.wide { MARGIN: 0px; WIDTH: 100% } #toc { LIST-STYLE-POSITION: outside; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: decimal; MARGIN: 12px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #toc UL { MARGIN: 0px 24px 24px } .toc_div { BORDER-BOTTOM: #ccc 2px solid; BORDER-LEFT: #ccc 2px solid; PADDING-BOTTOM: 4px; MARGIN: 6px 18px 18px; PADDING-LEFT: 8px; PADDING-RIGHT: 0px; CLEAR: both; BORDER-TOP: #ccc 2px solid; BORDER-RIGHT: #ccc 2px solid; PADDING-TOP: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .toc_div OL LI UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .reports .toc_div H2 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-TOP: 0px } .toc_div H2 A IMG { MARGIN-RIGHT: 6px } .toc_div A.toggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BACKGROUND: #f6f6f6; FLOAT: right; FONT-SIZE: 95%; TOP: -4px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .toc_div A.toggle:hover { BACKGROUND: #fff } .backtotop { FLOAT: right } .dateofreport { FLOAT: right } .dateofreport { MARGIN: 6px 18px 12px 0px } .reports .block { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 18px 24px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px 4px 0 4px; -webkit-border-radius: 4px 4px 0 4px } .backtotop { POSITION: relative; MARGIN-BOTTOM: -40px; FLOAT: right; MARGIN-RIGHT: -1px } .backtotop A { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 8px; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #f6f6f6; FONT-SIZE: 95%; BORDER-TOP: medium none; BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none; PADDING-TOP: 3px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .backtotop A:hover { BACKGROUND: #fff } .backtotop A IMG { MARGIN-RIGHT: 5px } DIV.fontPreview { BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; PADDING-BOTTOM: 4px; MARGIN: 3px 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; DISPLAY: block; BACKGROUND: #fff; FLOAT: left; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 4px } .textareaDiv { PADDING-BOTTOM: 6px } .textareaDiv TABLE { WIDTH: 98% } .textareaDiv TABLE TABLE { WIDTH: 100% } .textareaDiv TABLE TABLE TABLE { WIDTH: 100% } .textareaDiv TEXTAREA { WIDTH: 100%; BORDER-TOP: #666 2px solid } DIV.textToolbar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; WIDTH: 97.7%; PADDING-RIGHT: 0px; BACKGROUND: #f6f6f6; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 4px } DIV.textToolbar A { WHITE-SPACE: nowrap; FONT-SIZE: 90% } DIV.textToolbar LABEL { PADDING-LEFT: 4px; FONT-SIZE: 90%; VERTICAL-ALIGN: middle } DIV.textToolbar SELECT { FONT-SIZE: 90%; VERTICAL-ALIGN: middle } .previewTextArea { BORDER-BOTTOM: #999 2px solid; BORDER-LEFT: #999 2px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 459px; PADDING-RIGHT: 0px; DISPLAY: none; BACKGROUND: #fff; HEIGHT: 112px; OVERFLOW: auto; BORDER-TOP: #999 2px solid; BORDER-RIGHT: #999 2px solid; PADDING-TOP: 0px } .previewTextArea DIV.previewTitle { BORDER-BOTTOM: #eee 2px solid; PADDING-BOTTOM: 2px; MARGIN: 0px 0px 4px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; BACKGROUND: #eee; PADDING-TOP: 2px } .previewTextArea DIV.previewTitle A { FLOAT: right } .previewTextArea DIV.previewTitle H6 { MARGIN: 0px; FLOAT: left; FONT-SIZE: 90% } .previewTextArea DIV.previewContent { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .messageContainer H6 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: 95%; PADDING-TOP: 0px } .messageContainer P { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .messageVariable { BORDER-BOTTOM: #ed9 1px solid; BORDER-LEFT: #ed9 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; DISPLAY: inline; COLOR: #000; FONT-SIZE: 100%; BORDER-TOP: #ed9 1px solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ed9 1px solid; PADDING-TOP: 0px; -moz-border-radius: 1px; -webkit-border-radius: 1px } .myPlaces .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .explore .navPaletteContent { PADDING-BOTTOM: 9px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 9px } .myPlaces A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; PADDING-LEFT: 30px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .myPlaces A:hover { TEXT-DECORATION: underline } .myPlaces A:focus { TEXT-DECORATION: underline } .myPlaces A.home { PADDING-RIGHT: 20px } .myPlaces SPAN.homeIconWrap { POSITION: absolute; BACKGROUND: url(/images/ci/icons/clphomepage/home_ti.gif) no-repeat 0px 0px; TOP: 3px; RIGHT: 3px } .myPlaces SPAN.homeIconWrap IMG { WIDTH: 16px; HEIGHT: 16px } .myPlaces A.unit { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.course { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.ee { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.program { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.workspace { LIST-STYLE-TYPE: none; MARGIN: 0px; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px 3px } .myPlaces A.unit { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.unit:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_unit_ti.gif) } .myPlaces A.course { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.course:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_course_ti.gif) } .myPlaces A.ee { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.ee:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_ee_ti.gif) } .myPlaces A.program { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.program:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_program_ti.gif) } .myPlaces A.workspace { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .myPlaces A.workspace:hover { BACKGROUND-IMAGE: url(/images/ci/icons/clp_workspace_ti.gif) } .explore A { PADDING-LEFT: 30px; BACKGROUND: url(images/indicators.png) no-repeat 9px -1489px } .explore H4 A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:hover { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .explore H4 A:focus { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px } .wizardBody .locationPane { MARGIN: 0px; DISPLAY: block } .wizardBody .breadcrumbs .courseName { DISPLAY: none } .wizardBody .breadcrumbs .courseId { DISPLAY: none } .wizardBody .breadcrumbs { HEIGHT: 24px } .wizardBody .path .root A:before { POSITION: relative; FONT-FAMILY: "Pictos"; COLOR: #aaa; FONT-SIZE: 20px; CONTENT: "H"; TOP: -2px; FONT-WEIGHT: normal } .wizardBody .modeSwitchWrap { POSITION: absolute; TOP: 15px; RIGHT: 12px } .wizardBody { BACKGROUND: #fff } .wizardBody .container { POSITION: static } .wizardBody #contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 210px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 10px; PADDING-TOP: 12px } .wizardBody FORM#contentPanel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .topRound { DISPLAY: none } .wizardBody > .locationPane > .contentPaneWide > .topRound { POSITION: absolute; DISPLAY: block; TOP: 60px } .wizardBody #pageTitleDiv IMG { DISPLAY: none } .wizardBody .reqfield { MARGIN: 0px 0px 6px -6px; FLOAT: none } .wizardBody #containerdiv { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardHead H2 { MARGIN: 0px; FONT-SIZE: 110% } .wizardHead .helphelp { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .wizardBody .contentPaneWide > .contentBox > .pageTitle H1 { FONT-SIZE: 150% } .wizardBody .containerWizard { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; OVERFLOW: hidden; PADDING-TOP: 0px; -moz-border-radius: 4px; -webkit-border-radius: 4px } .wizardBody .contentPaneWide > .contentBox > .pageTitle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 18px; MARGIN: -13px -12px 24px -224px; PADDING-LEFT: 24px; PADDING-RIGHT: 24px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 14px } .wizardBody .contentPaneWide > .contentBox { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .wizardHead { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; MARGIN-BOTTOM: 24px; BACKGROUND: #efede3; PADDING-TOP: 12px } .wizardBody #dataCollectionContainer { MARGIN: 0px } .wizardHead + .container { BORDER-BOTTOM: #aaa 1px solid; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: url(images/bblearn_2011_bg.png) #efede3 0px -5px; BORDER-TOP: #aaa 1px solid; BORDER-RIGHT: #aaa 1px solid; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-radius: 4px 4px 4px 4px } .wizardBody .containerWizard .container { HEIGHT: auto } .wizardBody .containerWizard .locationPane { MARGIN-TOP: 12px } .wizardBody UL.contentList LI DIV.details { OVERFLOW-X: visible } .wizardFinishText { MARGIN: 6px 0px 150px } .wizardSubmit { POSITION: relative; PADDING-BOTTOM: 6px; MARGIN: 0px 0px -79px -210px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #ccc 1px solid; TOP: 18px; PADDING-TOP: 18px } .wizardSubmit INPUT[name='cancel'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='Previous'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='finish'] { BORDER-BOTTOM: #bbb 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#efefef,endColorstr=#cfcfcf); BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 7px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; BACKGROUND: #cfcfcf; COLOR: #444; FONT-SIZE: 105%; VERTICAL-ALIGN: middle; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; TEXT-DECORATION: none; PADDING-TOP: 6px; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) } .wizardSubmit INPUT[name='cancel']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='cancel']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[name='Previous']:focus { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #efefef; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: none; -webkit-box-shadow: none } .wizardSubmit INPUT[type=image] { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 2px } .wizardSubmit SPAN { MARGIN: 0px 18px; COLOR: #999 } .wizardSubmit SPAN STRONG { COLOR: #000 } .wizardBottomRound B.inner { BACKGROUND: #fff1c5 } .wizardBottomRound B.outer { BACKGROUND: #fff1c5 } .wizardBottomRound B.middle { BACKGROUND: #fff1c5 } .navigationPaneWizard { PADDING-BOTTOM: 0px; MARGIN-TOP: 63px; PADDING-LEFT: 12px; WIDTH: 190px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .navigationPaneWizard DIV B.inner { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.middle { MARGIN-RIGHT: 0px !important } .navigationPaneWizard DIV B.outer { MARGIN-RIGHT: 0px !important } .navigationPaneWizard .navPalette { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .wizardBody #courseMenuPalette { BORDER-BOTTOM: #999 1px solid; BORDER-LEFT: #999 0px solid; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 12px; PADDING-LEFT: 0px; WIDTH: 200px; PADDING-RIGHT: 0px; BACKGROUND: #eee; BORDER-TOP: #999 1px solid; BORDER-RIGHT: #999 1px solid; PADDING-TOP: 0px; -moz-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25), -1px 0 1px #F9F9F9 inset, -6px 6px 12px rgba(0, 0, 0, 0.2); -moz-border-radius: 0 4px 4px 0; -webkit-border-radius: 0 4px 4px 0 } .wizardBody #courseMenuPalette DIV.navPaletteContent { -moz-border-radius: 0 0 3px 0; -webkit-border-radius: 0 0 3px 0; border-radius: 0 0 3px 0 } .navigationPaneWizard H2 { PADDING-BOTTOM: 6px; TEXT-TRANSFORM: uppercase; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; LETTER-SPACING: 0.2em; COLOR: #00add0; FONT-SIZE: 90%; FONT-WEIGHT: 100; PADDING-TOP: 6px } .navigationPaneWizard .navPalette SPAN { PADDING-BOTTOM: 6px; BACKGROUND-COLOR: #ededed; PADDING-LEFT: 9px; PADDING-RIGHT: 9px; DISPLAY: block; PADDING-TOP: 6px } .navigationPaneWizard .navPalette LI { PADDING-BOTTOM: 6px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; COLOR: #777; FONT-SIZE: 95%; PADDING-TOP: 6px } .navigationPaneWizard .navPalette UL LI:first-child { POSITION: relative; BORDER-TOP: medium none } .navigationPaneWizard .navPalette UL LI.currentStep { COLOR: #000; FONT-WEIGHT: bold } .navigationPaneWizard .navPalette UL LI.currentStep:after { POSITION: absolute; LINE-HEIGHT: 0.5; COLOR: #999; FONT-SIZE: 18px; CONTENT: "?"; TOP: 9px; RIGHT: 0px } .containerWizard .controlPanel .navPaletteContent A { PADDING-BOTTOM: 4px; OVERFLOW-X: hidden; MARGIN: 0px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; DISPLAY: block; BACKGROUND: url(../../../images/ci/ng/portlet_expand.gif) no-repeat 2px 6px; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 4px } .containerWizard .navPaletteContent H2 { MARGIN: 0px; FONT-SIZE: 105% } .containerWizard .navPaletteContent H2 A { PADDING-BOTTOM: 6px; PADDING-LEFT: 23px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; FONT-WEIGHT: bold; PADDING-TOP: 6px } .containerWizard .controlpanel LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } #logDetail { OVERFLOW-Y: auto; HEIGHT: 300px } .totalMsgs { PADDING-BOTTOM: 9px !important; PADDING-LEFT: 14px !important; PADDING-RIGHT: 6px !important; COLOR: #555; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 11px !important } .latestEntry { FLOAT: right !important; COLOR: #666; FONT-SIZE: 85%; FONT-WEIGHT: normal } .log-summary { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px } .log-summary A { MARGIN: 0px 3px; DISPLAY: inline-block } .log-summary LI { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .sis-seperator { BORDER-LEFT: #ccc 1px dotted; PADDING-BOTTOM: 9px; MIN-HEIGHT: 26px; PADDING-LEFT: 14px; PADDING-RIGHT: 3px; VERTICAL-ALIGN: middle; PADDING-TOP: 9px } .log-summary LI:first-child { BORDER-LEFT: medium none } .log-type { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; COLOR: #fff; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .log-summary .log-type { FONT-SIZE: 120% } .log-error { BACKGROUND: #ef3e36 } .log-warning { BACKGROUND: #fcb040 } .log-message { BACKGROUND: #0b9444 } .log-debug { BACKGROUND: #00aeef } .log-header { MARGIN: 0px 0px 9px } .attachments .log-type { MIN-WIDTH: 6em; TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; LETTER-SPACING: 0.1em; FONT-SIZE: 90%; FONT-WEIGHT: normal } .table-scroll-wrapper TABLE { MARGIN: 0px } .table-scroll-wrapper TBODY { OVERFLOW-Y: auto; HEIGHT: 200px; OVERFLOW: hidden } .row-selected { BACKGROUND-COLOR: #e2eefe !important } .log-search > DIV > DIV { PADDING-BOTTOM: 0px !important; MARGIN: 6px 6px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 9px !important; DISPLAY: inline-block; BORDER-RIGHT: #bbb 1px dotted; PADDING-TOP: 0px !important } .answerSavedButton { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png) !important; BORDER-BOTTOM-COLOR: #777; FILTER: none; BACKGROUND-COLOR: #888; BORDER-TOP-COLOR: #777; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat !important; BACKGROUND-POSITION: 6px center; COLOR: #eee; BORDER-RIGHT-COLOR: #777; BORDER-LEFT-COLOR: #777; text-shadow: 0 -1px 0 #000 } .answerSavedButton:hover { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavedButton:focus { BORDER-BOTTOM-COLOR: #555; BACKGROUND-COLOR: #666; BORDER-TOP-COLOR: #555; COLOR: #fff; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555; text-shadow: 0 -1px 0 #000 } .answerSavingButton { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:hover { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .answerSavingButton:focus { BACKGROUND-IMAGE: url(/images/ci/icons/file_li.gif) !important; BORDER-BOTTOM-COLOR: #999; BACKGROUND-COLOR: #ccc; BORDER-TOP-COLOR: #999; PADDING-LEFT: 22px !important; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 6px center; COLOR: #444; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .timeUpWarning { COLOR: #cf0c0c } .thirtySecondWarning { COLOR: #cf0c0c } .oneMinuteWarning { COLOR: #cf0c0c } .fiveMinuteWarning { COLOR: #000 } .halfTimeWarning { COLOR: #000 } .headerForProgressBar { Z-INDEX: 100; POSITION: relative } DIV.assessmentPortletBlock H3.headerForProgressBar A { BACKGROUND: none transparent scroll repeat 0% 0% } .progressBar { Z-INDEX: 90; POSITION: absolute; BOTTOM: 0px; TOP: 0px; LEFT: 0px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .progressBarStyle { BACKGROUND: #b6f796 } .progressBarStyleOneMin { BACKGROUND: #ffe79f } .progressBarStyleThirtySec { BACKGROUND: #ffafaf } .progressBarStyleOvertime { BACKGROUND: #ffafaf } .timerBar { BORDER-BOTTOM: #fff 2px solid; POSITION: relative; TEXT-ALIGN: center; BORDER-LEFT: #fff 2px solid; PADDING-BOTTOM: 3px; MARGIN: 4px 14px 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f9f9f9; FONT-SIZE: 105%; BORDER-TOP: #fff 2px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #fff 2px solid; PADDING-TOP: 3px; -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.15); -moz-border-radius: 9px; -webkit-border-radius: 9px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timer STRONG { Z-INDEX: 100; POSITION: relative } .timerText { PADDING-BOTTOM: 6px; PADDING-LEFT: 14px; PADDING-RIGHT: 14px; PADDING-TOP: 6px } .liveArea.timer { PADDING-BOTTOM: 9px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; PADDING-TOP: 6px } .questionStatus { PADDING-BOTTOM: 0px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 3px } .timedQuestionStatus { PADDING-BOTTOM: 0px; MARGIN: 0px 2px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #ddd 2px groove; PADDING-TOP: 3px } .completionContainer { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } .questionStatus .questionStatusLabel { MARGIN: 0px; LETTER-SPACING: 0px; FONT-WEIGHT: normal } .questionStatus .questionStatusLabel A { COLOR: #666; TEXT-DECORATION: none } .questionStatus .questionStatusLabel A:hover { COLOR: #000; TEXT-DECORATION: underline } .timerMessage { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FLOAT: right; PADDING-TOP: 2px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5) } .timeLabel { COLOR: #666; FONT-WEIGHT: normal } .timeValue { FONT-SIZE: 120% } .timer-collapsed.timer-toggle { PADDING-BOTTOM: 4px; PADDING-LEFT: 14px; PADDING-RIGHT: 0px; DISPLAY: inline-block; BACKGROUND: url(images/portlet_expand_alt.gif) no-repeat 0px 2px; PADDING-TOP: 0px } .timer-expanded.timer-toggle { POSITION: absolute; WIDTH: 20px; BACKGROUND: url(images/portlet_contract_alt.gif) no-repeat 3px 4px; HEIGHT: 20px; TOP: 5px; LEFT: 4px } .timerBar .timerLabel:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .timerMessage:before { FONT: 1.4em/0 "Pictos", sans-serif; MARGIN-RIGHT: 0.4em } .progressBarStyleOvertime + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "t" } .progressBarStyleOneMin + .timerLabel:before { COLOR: #7f6b2f; CONTENT: "!" } .progressBarStyleThirtySec + .timerLabel:before { COLOR: #cf0c0c; CONTENT: "!" } .timerMessage:before { CONTENT: "t" } .halfTimeWarning:before { COLOR: #999 } #theGrid { POSITION: relative } .gridOverflowControl { PADDING-BOTTOM: 24px; OVERFLOW-X: auto; ZOOM: 1 } .rubricTable TBODY TD TEXTAREA { BORDER-BOTTOM: #ccc 1px solid; MIN-WIDTH: 9em; BORDER-LEFT: #ccc 1px solid; WIDTH: 99%; HEIGHT: 6em; COLOR: #555; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricTable TBODY TD TEXTAREA + SCRIPT + DIV { TEXT-ALIGN: right } .rubricTable TBODY TD DIV INPUT[type='text'] { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: 4em; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #rubricRowReorder { Z-INDEX: 100; POSITION: absolute; TOP: 5em } #rubricColReorder { Z-INDEX: 100; POSITION: absolute; TOP: 3em; LEFT: 15% } #rubricColReorder FIELDSET { POSITION: relative; WHITE-SPACE: nowrap } #rubricColSort { WHITE-SPACE: nowrap; MARGIN-RIGHT: 60px } #rubricColSort LI { POSITION: relative; PADDING-BOTTOM: 2px; MARGIN: 0px 1px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; WHITE-SPACE: nowrap; BORDER-RIGHT: #999 1px dotted; PADDING-TOP: 0px } #rubricColSort LI INPUT { POSITION: absolute; TOP: 0px; LEFT: 0px } #reorderPanelControls { POSITION: absolute; TOP: 0px; RIGHT: 0px } #reorderPanelControls A { TEXT-DECORATION: none } #collabRubricList .collabRubricListTypeContainer { MARGIN: 4px } .rubricGradingTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricTable { BORDER-SPACING: 9px; WIDTH: 100%; BORDER-COLLAPSE: separate; MARGIN-LEFT: -9px } .rubricGradingTable TH { COLOR: #45586f } .rubricTable TH { COLOR: #45586f } .rubricTable THEAD TH { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 3px } .rubricTable THEAD TH:first-child { BORDER-LEFT: medium none } .rubricGradingTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; BACKGROUND: #fff; COLOR: #444; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 6px; -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, .25); -moz-border-radius: 3px; -webkit-border-radius: 3px; box-shadow: 1px 1px 3px rgba(0, 0, 0, .25) } .rubricTable TBODY TD { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .rubricGradingTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH { PADDING-BOTTOM: 9px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; VERTICAL-ALIGN: top; BORDER-TOP: #ccc 1px solid; FONT-WEIGHT: bold; PADDING-TOP: 9px } .rubricTable TBODY TH LABEL { FONT-WEIGHT: normal } .rubricTable TBODY TH INPUT { FONT-WEIGHT: normal } .rubricTable TBODY TH > SPAN { FONT-WEIGHT: normal } .rubricGradingTable .rubricCellHeader { PADDING-BOTTOM: 6px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .rubricGradingTable .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .radioLabel { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricSelectedValue { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingTable .selectedCell .rubricCellDescription { PADDING-BOTTOM: 6px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-TOP: 6px } .rubricGradingList .radioLabel { PADDING-BOTTOM: 3px; PADDING-LEFT: 24px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FONT-WEIGHT: bold; PADDING-TOP: 3px } .rubricGradingTable .rubricCellContainer { POSITION: relative; MIN-HEIGHT: 30px; OVERFLOW: hidden } .rubricCellRadio { POSITION: absolute; TOP: 6px } .rubricGradingList .rubricCellRadio { POSITION: absolute; TOP: 2px } .selectedCell .rubricCellRadio { TOP: -60px } .pointContainer { FONT-WEIGHT: bold } .rubricGradingTable .feedback { DISPLAY: none } .rubricGradingTable .selectedCell .feedback { DISPLAY: block } .rubricGradingTable .feedback TEXTAREA { WIDTH: 99% } .rubricGradingTable .selectedCell { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px; COLOR: #000; -moz-box-shadow: 0 0 6px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, .3); box-shadow: 0 0 6px rgba(0, 0, 0, .3) } .rubricGradingList .selectedCell { BACKGROUND: url(images/button_ok_ti.png) no-repeat 4px 3px } .rubricGradingTable TBODY TD:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #d1eaef; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .rubricTable TBODY TD:hover { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .rubricGradingTable TBODY .selectedCell:hover { BACKGROUND: url(images/button_ok_ia.png) #d1eaef no-repeat 12px 12px } .rubricCriteriaHead { WIDTH: 15% !important } .rubricInlineEdit { POSITION: relative } .rubricInlineEdit > DIV { Z-INDEX: 100; POSITION: absolute; WHITE-SPACE: nowrap } .gridActionBar { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .gridActionBar .data TH { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 6px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; BACKGROUND: #f1f1f1; BORDER-TOP: #ddd 1px solid; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 6px; -moz-border-radius: 3px; -webkit-border-radius: 3px } .stepcontent .gridActionBar LI { PADDING-BOTTOM: 0px; MARGIN-BOTTOM: 0px } .rubricGradingTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricTable .data { BACKGROUND: none transparent scroll repeat 0% 0% } .rubricSelectedValue { DISPLAY: block; FONT-SIZE: 130%; FONT-WEIGHT: bold } .rangePercent { COLOR: #666; FONT-SIZE: 90%; FONT-WEIGHT: normal } .selectedCell .rangeValue { PADDING-BOTTOM: 0px; MARGIN: 6px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #aaa 1px dashed; PADDING-TOP: 6px } .rubricControlContainer .containerTabs { MARGIN: 0px } .rubricControlContainer .contentAreaBlock { MARGIN: 0px } .rubricGradingList .rubricGradingCell { POSITION: relative; MARGIN: 1px 0px; OVERFLOW: hidden } .rubricGradingList .feedback { PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 3px } .rubricGradingList .feedback TEXTAREA { WIDTH: 99% !important } .rubricGradingList H4 { POSITION: relative; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; PADDING-TOP: 3px } .rubricGradingList H4 SPAN { POSITION: absolute; PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #fff1c5; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; TOP: 0px; RIGHT: 0px; FONT-WEIGHT: bold; PADDING-TOP: 1px } .rubricGradingTotalPoints { MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingOverride { PADDING-BOTTOM: 6px; MARGIN: 6px 0px; FONT-SIZE: 110% } .rubricGradingComments .editor { MARGIN-TOP: 20px } .rubricGradingComments .rubricVtbeLabel { DISPLAY: block; MARGIN-BOTTOM: 10px } .alignmentPanel TR { COLOR: #555 } .alignmentPanel .gradingRubric { BACKGROUND-COLOR: #ffd; COLOR: #000 } .alignmentPanel .gradingRubric .title { FONT-WEIGHT: bold } .alignmentPanel UL.nav SPAN { PADDING-LEFT: 3px } .rubricPanel THEAD TR TH { WHITE-SPACE: normal !important } .rubricPopupContainer .rubricControlContainer { MARGIN: 0px 0px 10px } .rubricPopupContainer .onlyOne.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .onlyOne.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .previous.pagelink { DISPLAY: none } .rubricPopupContainer .last.changeRubricContainer .next.pagelink { DISPLAY: none } .rubricGradingCell .pointRangeEdit { DISPLAY: none } .selectedCell.rubricGradingCell .pointRangeView { DISPLAY: none } .rubricPopupContainer .first.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricPopupContainer .middle.changeRubricContainer .next.pagelink { DISPLAY: inline } .rubricPopupContainer .last.changeRubricContainer .previous.pagelink { DISPLAY: inline } .rubricGradingTable .pointRangeView { DISPLAY: block; FONT-WEIGHT: bold } .selectedCell.rubricGradingCell .pointRangeEdit { DISPLAY: block; FONT-WEIGHT: bold } TD[align='right'] { TEXT-ALIGN: right !important } TD[align='left'] { TEXT-ALIGN: left !important } TR[align='right'] { TEXT-ALIGN: right !important } TR[align='left'] { TEXT-ALIGN: left !important } .vtbegenerated { PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; DISPLAY: block !important; BACKGROUND: none transparent scroll repeat 0% 0%; FONT-SIZE: small; PADDING-TOP: 0px !important } .vtbegenerated P { MARGIN-BOTTOM: 4px } .vtbegenerated ADDRESS { FONT-STYLE: italic; DISPLAY: block } .vtbegenerated IMG { FILTER: alpha(opacity = auto) !important; opacity: auto } .vtbegenerated UL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated MENU { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated DIR { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated OL { MARGIN: 1em 0px; PADDING-LEFT: 40px } .vtbegenerated OL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .vtbegenerated LI { LIST-STYLE-POSITION: inside } .vtbegenerated UL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated UL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DIR DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated MENU DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL UL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL OL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DIR { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL MENU { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated DL DL { MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px } .vtbegenerated OL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated MENU UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated DIR UL LI { LIST-STYLE-TYPE: circle } .vtbegenerated OL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated UL MENU { LIST-STYLE-TYPE: circle } .vtbegenerated MENU MENU { LIST-STYLE-TYPE: circle } .vtbegenerated DIR MENU { LIST-STYLE-TYPE: circle } .vtbegenerated OL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated UL DIR { LIST-STYLE-TYPE: circle } .vtbegenerated MENU DIR { LIST-STYLE-TYPE: circle } .vtbegenerated DIR DIR { LIST-STYLE-TYPE: circle } .vtbegenerated OL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated OL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated OL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated OL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL OL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated UL OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated UL OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated MENU OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated MENU DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR UL { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR MENU { LIST-STYLE-TYPE: square } .vtbegenerated DIR OL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR UL DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR MENU DIR { LIST-STYLE-TYPE: square } .vtbegenerated DIR DIR DIR { LIST-STYLE-TYPE: square } .vtbegenerated UL UL UL LI { LIST-STYLE-TYPE: square } .vtbegenerated TABLE { BORDER-COLLAPSE: separate } .vtbegenerated H5 { FONT-SIZE: 90% } .vtbegenerated BLOCKQUOTE { MARGIN: 1em 35px } .vtbegenerated UL[type='circle'] LI { LIST-STYLE-TYPE: circle } .vtbegenerated UL[type='square'] LI { LIST-STYLE-TYPE: square } .vtbegenerated UL[type='disc'] LI { LIST-STYLE-TYPE: disc } .inlineVtbegenerated { DISPLAY: inline } .tree .treeNodeIcon { WIDTH: 16px; HEIGHT: 16px } .navPaletteContent .submenu LI.favorite { PADDING-LEFT: 10px } .navPaletteContent UL[id*='files_groupContents'] .favorite { PADDING-LEFT: 0px } .columnPalette H5 { MARGIN: 6px 0px 3px; COLOR: #555 } .blogNav .stepcontent { PADDING-BOTTOM: 6px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .button-split-left { DISPLAY: inline-block; FLOAT: left; BORDER-RIGHT: #f6f6f6 2px solid; -webkit-border-bottom-right-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -moz-border-radius-bottomright: 0 } .button-split-left:hover { BORDER-RIGHT: #555 2px solid } .button-split-right { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: inline-block; FLOAT: left; MARGIN-LEFT: -1px; PADDING-TOP: 4px; -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0 } .full_evaluation_view_component H3 { MARGIN: 18px 0px 3px } .full_evaluation_view_component H3:first-child { MARGIN: 9px 0px 3px } .gradeSide_panel .container { POSITION: relative; PADDING-RIGHT: 45% } .gradeSide_panel .contentListPlain { MARGIN: -20px 0px 0px -30px } .collabContainer { PADDING-BOTTOM: 30px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; PADDING-TOP: 20px } .gradeSide { WIDTH: 36%; TOP: 20px; RIGHT: 20px } .gradeSide { BORDER-BOTTOM: #555 3px solid; POSITION: absolute; BORDER-LEFT: #555 3px solid; PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-LEFT: 4px; BOTTOM: auto; PADDING-RIGHT: 4px; BACKGROUND: #888 0px 0px; BORDER-TOP: #555 3px solid; TOP: 20px; RIGHT: 20px; BORDER-RIGHT: #555 3px solid; PADDING-TOP: 4px; LEFT: auto; border-radius: 4px } .collapseTabsData A.close { TOP: 4px; RIGHT: 4px } .evalColumn .taskbuttondiv { PADDING-BOTTOM: 12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 12px } .gradeItemsWrapper { OVERFLOW: visible } .gradeSide .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .evalColumn { BORDER-BOTTOM: #bbb 1px solid; BORDER-LEFT: #bbb 1px solid; PADDING-BOTTOM: 18px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; BORDER-TOP: #bbb 1px solid; BORDER-RIGHT: #bbb 1px solid; PADDING-TOP: 6px; box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2) } .evalColumn .liveArea { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none } .column-wrapper { POSITION: relative; OVERFLOW: visible !important } .column-nav { WIDTH: 190px; FLOAT: left } .colspan2 { POSITION: relative; MARGIN-LEFT: 190px } .colspan2#standards-column { BORDER-LEFT: #ccc 3px double; PADDING-BOTTOM: 12px; MARGIN-BOTTOM: -41px; TOP: -20px; LEFT: -3px } .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; WORD-WRAP: break-word; COLOR: #555; PADDING-TOP: 18px } .column-nav .pageHead-2 { PADDING-BOTTOM: 18px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; PADDING-TOP: 18px } .pageHead-2 H2 { MARGIN: 0px; FONT-SIZE: 120%; FONT-WEIGHT: normal } .pageHead-2 SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; COLOR: #000; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 0px } .pageHead-2 SPAN:first-child { BORDER-RIGHT: #aaa 1px dotted } .column-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 0px; PADDING-TOP: 6px } .column-nav-inner { PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .category-column .column-nav-inner { BORDER-BOTTOM: #ccc 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee',endColorstr = '#cccccc',GradientType = 1); BORDER-LEFT: medium none; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #column_lrn_std_category { BORDER-RIGHT: #ccc 3px double } .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 18px !important; BACKGROUND: #fff; PADDING-TOP: 6px !important } #standards-column .column-inner { PADDING-BOTTOM: 12px !important; PADDING-LEFT: 18px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 6px !important } .column-nav .column-inner { DISPLAY: none } .navmenu-list-item { BORDER-BOTTOM: #777 1px solid; POSITION: relative; PADDING-BOTTOM: 12px; PADDING-LEFT: 18px; PADDING-RIGHT: 21px; DISPLAY: block; WORD-WRAP: break-word; PADDING-TOP: 12px } .navmenu-list > LI:hover { BACKGROUND: #777 } .navmenu-list > LI > A { COLOR: #f6f6f6; FONT-SIZE: 110%; FONT-WEIGHT: 200; TEXT-DECORATION: none } .navmenu-list A SPAN { DISPLAY: none } .navmenu-list .active { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active:hover { BORDER-BOTTOM: #777 1px solid; BORDER-LEFT: #777 1px solid; PADDING-BOTTOM: 12px; PADDING-LEFT: 20px; WIDTH: 142px; PADDING-RIGHT: 18px; BACKGROUND: #eee; COLOR: #000; BORDER-TOP: #777 1px solid; FONT-WEIGHT: 600; BORDER-RIGHT: #777 0px solid; PADDING-TOP: 12px; LEFT: -3px; -moz-box-shadow: -4px 3px 5px #777; -webkit-box-shadow: -4px 3px 5px #777; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #777; border-radius: 4px 0 0 4px } .navmenu-list .active A { COLOR: #000 } .column2-nav .category-column .navmenu-list LI > A { PADDING-LEFT: 24px } .column-wrapper .actionBar > UL > LI > A { PADDING-BOTTOM: 8px; PADDING-LEFT: 16px; PADDING-RIGHT: 16px; DISPLAY: inline-block; COLOR: #333; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 8px } .column-wrapper .actionBar > UL > LI > A:hover { BACKGROUND: #ccc } .standards .button-2 { COLOR: #444 } .standards .button-2:hover { BORDER-BOTTOM-COLOR: #aaa; BORDER-TOP-COLOR: #aaa; BORDER-RIGHT-COLOR: #aaa; BORDER-LEFT-COLOR: #aaa } .category-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .category-column .navmenu-list-item { BORDER-BOTTOM-COLOR: #d6d6d6; BORDER-TOP-COLOR: #d6d6d6; BORDER-RIGHT-COLOR: #d6d6d6; BORDER-LEFT-COLOR: #d6d6d6 } .category-column .navmenu-list-item A { COLOR: #333 } .category-column .navmenu-list-item:hover { FILTER: alpha(opacity = 100) !important; BACKGROUND-COLOR: #e0e0e0; opacity: 1 } .category-column .navmenu-list .active { Z-INDEX: 1001; BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; RIGHT: -4px; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; -moz-box-shadow: -4px 3px 5px #DDD; -webkit-box-shadow: -4px 3px 5px #DDD; -moz-border-radius: 4px 0 0 4px; -webkit-border-radius: 4px 0 0 4px; box-shadow: -4px 3px 5px #DDD; border-radius: 4px 0 0 4px } .navmenu-list .inactive { FILTER: alpha(opacity = 75); opacity: .75 } .standards .actionBar { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px -12px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: none transparent scroll repeat 0% 0%; HEIGHT: 32px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px; -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .actionBar#actionbarlrn_std_doc { BORDER-BOTTOM-COLOR: #777 } .actionBar#actionbarlrn_std_doc > UL > LI > A { COLOR: #f0f0f0; -moz-border-radius: 4px 0 0 0; -webkit-border-radius: 4px 0 0 0; border-radius: 4px 0 0 0; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.4) } .actionBar#actionbarlrn_std_doc > UL > LI > A:hover { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_doc > UL > LI:hover > A { BACKGROUND: #777; COLOR: #fff } .actionBar#actionbarlrn_std_category > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std_category > UL > LI > A:hover { BACKGROUND: #ccc; COLOR: #000 } .actionBar#actionbarlrn_std { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 9px 0px 20px; BACKGROUND: #f0f0f0; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .actionBar#actionbarlrn_std > UL > LI > A { COLOR: #666; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.6) } .actionBar#actionbarlrn_std > UL > LI > A:hover { BACKGROUND: #ddd; COLOR: #000 } .standards .actionBar > UL { MARGIN: 0px; HEIGHT: 32px } .standards .actionBar UL LI { FLOAT: left } .standards .groupLabel { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 6px; PADDING-TOP: 2px } .standards .searchbar .selectedItem LABEL SPAN { FONT-SIZE: 90% } .navmenu-actions-1 { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BACKGROUND: #f0f0f0; BORDER-TOP: #ccc 1px solid; TOP: 4px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 1px; LEFT: -4px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px } .active .navmenu-actions-1 { LEFT: -4px } .navmenu-actions-2 { POSITION: absolute; PADDING-BOTTOM: 1px !important; PADDING-LEFT: 1px !important; PADDING-RIGHT: 1px !important; TOP: 22px; PADDING-TOP: 1px !important; LEFT: -4px } .navmenu-list-item .contextMenuContainer { POSITION: absolute; MARGIN-TOP: -8px; TOP: 50%; RIGHT: 9px; opacity: 0 } .navmenu-list .active .contextMenuContainer { opacity: 1 } .navmenu-list .active:hover .contextMenuContainer { opacity: 1 } .navmenu-list-item:hover .contextMenuContainer { opacity: .5 } .navmenu-list-item:hover .contextMenuContainer:hover { opacity: 1 } .standards .column-1 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-3 { MIN-HEIGHT: 0px; FONT-SIZE: 90% } .standards .column-2 { BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; PADDING-LEFT: 1%; WIDTH: 46%; PADDING-RIGHT: 1%; PADDING-TOP: 0px } .standards .column-3 { MARGIN: 0px; WIDTH: 31% } .standardForm > H3 + DIV.column-2 { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standards .stepcontent { PADDING-BOTTOM: 12px; MARGIN: 0px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 6px } .standards .stepcontent OL LI { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none } .standardForm { POSITION: absolute !important; TOP: 38px; LEFT: 6px } .inline-form-title { MARGIN: 6px 0px } .docs-column .column-nav-inner { BORDER-BOTTOM: #777 1px solid; FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#999999',endColorstr = '#777777',GradientType = 1); BORDER-LEFT: #777 1px solid; MIN-HEIGHT: 400px; BACKGROUND: #999; COLOR: #fff; BORDER-TOP: #777 1px solid; BORDER-RIGHT: medium none; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px } .docs-column .navmenu-list:first-child { MARGIN: 12px 0px 0px } .iconToggleWrapper { ZOOM: 1; DISPLAY: inline-block } .iconToggle { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px 0px 0px -5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; ZOOM: 1; DISPLAY: inline-block; BACKGROUND: #fff; COLOR: #444; FONT-SIZE: 95%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .quickAddPal .iconToggle { MARGIN: 0px 0px 0px -1px } .iconToggle:first-child { MARGIN: 0px; -moz-border-radius: 2px 0 0 2px; -webkit-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px } .iconToggle:hover { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #e8f0fe; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999 } .stepcontent .iconToggle .fieldHelp { Z-INDEX: 100; BORDER-BOTTOM: #555 1px solid; POSITION: absolute; MIN-WIDTH: 200px; BORDER-LEFT: #555 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; BACKGROUND: #fff; FONT-SIZE: 90%; BORDER-TOP: #555 1px solid; TOP: 100%; BORDER-RIGHT: #555 1px solid; PADDING-TOP: 3px; LEFT: 0px; -moz-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, .3); -moz-border-radius: 3px; -webkit-border-radius: 3px } .iconToggle:hover .fieldHelp { Z-INDEX: 10; DISPLAY: block } .iconToggleWrapper .selectedItem { BORDER-BOTTOM-COLOR: #999; BORDER-TOP-COLOR: #999; BACKGROUND: #cdcdcd; COLOR: #000; BORDER-RIGHT-COLOR: #999; BORDER-LEFT-COLOR: #999; -moz-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; -webkit-box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset; box-shadow: 1px 1px 7px rgba(0, 0, 0, 0.2) inset } .iconToggle LABEL SPAN { DISPLAY: none; COLOR: #555 } .selectedItem LABEL SPAN { DISPLAY: inline } .selectedItem .fieldHelp STRONG { DISPLAY: none } #lrn_std .panelHead { PADDING-BOTTOM: 9px; PADDING-LEFT: 25px; PADDING-RIGHT: 16px; PADDING-TOP: 9px } #lrn_std .sHeader { MARGIN-LEFT: -21px } #lrn_std .contextMenuContainer { } .lb-content .itemTray { POSITION: absolute } .lb-drawer { PADDING-BOTTOM: 54px } .lb-noTitleBar #pageTitleBar { DISPLAY: none } .lb-locationPane { MARGIN: 0px } .lb-locationPane #contentPanel { MARGIN: 0px } .lb-contentBox { BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: medium none; BORDER-RIGHT: medium none; border-radius: 0 } .overSoftLimit { COLOR: red } .autocomplete_pos { TOP: 15px !important; LEFT: 0px !important } .autocomplete { Z-INDEX: 5; BORDER-BOTTOM: #888 1px solid; POSITION: absolute; BORDER-LEFT: #888 1px solid; BACKGROUND-COLOR: #fff; WIDTH: 250px; BORDER-TOP: #888 1px solid; BORDER-RIGHT: #888 1px solid; box-shadow: 0 0 3px rgba(0, 0, 0, .3) } .autocomplete .selected { BACKGROUND-COLOR: #ccc } .autocomplete UL LI { PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; WIDTH: 98%; PADDING-RIGHT: 2px; DISPLAY: block; CURSOR: pointer; PADDING-TOP: 2px } .quickAddPal .field { POSITION: relative } .quickAddPal .noLabelField { POSITION: relative } .renameCategory { Z-INDEX: 1200; POSITION: absolute; BOTTOM: 0px; DISPLAY: block; TOP: 0px; RIGHT: 0px; LEFT: 0px } .renameCategory A { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } LI SPAN.labelMenuItem { COLOR: #000; FONT-WEIGHT: bold } #toolSettingsWrapper_table TBODY TR { BORDER-TOP: #ddd 1px dashed } #toolSettingsWrapper_table TR TH { PADDING-BOTTOM: 6px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 6px } #toolSettingsWrapper_table TBODY TR.rowTitle TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle TH { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 0px } #toolSettingsWrapper_table TBODY TR.rowTitle { BACKGROUND-COLOR: #ebebeb; BORDER-TOP: #ddd 1px solid } #toolSettingsWrapper_table TBODY TR.rowTitle H3 { MARGIN: 0.5em 0px } .tooltipContainer { POSITION: relative; TEXT-DECORATION: none } .tooltip { DISPLAY: none; WORD-WRAP: break-word } .tooltip-top { DISPLAY: none; WORD-WRAP: break-word } .tooltipContainer:hover .tooltip { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltipContainer:hover .tooltip-top { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: alpha(opacity=90); PADDING-BOTTOM: 0.5em; BACKGROUND-COLOR: #3b3b3b; MARGIN: auto; PADDING-LEFT: 1em; WIDTH: 150px; BOTTOM: 2em; PADDING-RIGHT: 1em; DISPLAY: inline-block; FONT-FAMILY: arial; COLOR: #fff; FONT-SIZE: 12px; CURSOR: normal; PADDING-TOP: 0.5em; LEFT: -75px; opacity: .9; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-opacity: .9; -moz-border-radius-bottomleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; -khtml-opacity: .9 } .tooltip:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip-top:after { Z-INDEX: -1; POSITION: absolute; LINE-HEIGHT: 0; DISPLAY: block; HEIGHT: 0px; FONT-SIZE: 2.5em; CONTENT: "\25B8" } .tooltip:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: 1px; COLOR: #3b3b3b; LEFT: 1px; -moz-transform: rotate(90deg); -webkit-transform: rotate(90deg); -o-transform: rotate(90deg); -khtml-transform: rotate(90deg) } .tooltip-top:after { TEXT-ALIGN: center; WIDTH: 100%; BOTTOM: auto; COLOR: #4f4f4f; TOP: 0px; LEFT: -2px; -moz-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); -o-transform: rotate(-90deg); -khtml-transform: rotate(-90deg) } .paddedMetadata { PADDING-BOTTOM: 6px !important; PADDING-LEFT: 0px !important; PADDING-RIGHT: 6px !important; PADDING-TOP: 6px !important } .quickAddPal .colorlist LI A.transparent { BACKGROUND-IMAGE: url(/images/swatches/transparent.gif); BACKGROUND-POSITION: -1px -1px; COLOR: transparent } .quickAddPal .colorlist LI A.transparent:hover { BACKGROUND-POSITION: -2px -2px } DIV.checkListActions { PADDING-BOTTOM: 10px } .quickAddPal .colorlist LI A.transparent:active { BACKGROUND-POSITION: -3px -3px } .quickAddPal .colorlist LI A.transparent:focus { BACKGROUND-POSITION: -3px -3px } .theme_scrollbar_content H2 { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; FONT-STYLE: italic; MARGIN: -35px 0px 15px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; LETTER-SPACING: 0.06em; COLOR: #333; FONT-SIZE: 130%; FONT-WEIGHT: normal; PADDING-TOP: 0px } #wizard .theme_scrollbar_content H2 { COLOR: #ccc } .theme-switch-wrapper { DISPLAY: inline-block } .theme-switch { POSITION: relative; MARGIN: -14px 9px -14px 0px; DISPLAY: inline-block; VERTICAL-ALIGN: middle; BORDER-RIGHT: #ccc 1px solid } .theme-switch .sub > A { PADDING-BOTTOM: 14px; LINE-HEIGHT: 1; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; DISPLAY: block; OVERFLOW: hidden; PADDING-TOP: 14px } .theme-switch .sub > A:hover { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .theme-switch .sub:hover > A { -moz-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; -webkit-box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset; box-shadow: 0 0 24px rgba(0, 0, 0, 0.15) inset } .dummy-switch.theme-switch:hover { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow: none } .theme-switch A SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch SPAN SPAN { WIDTH: 16px; DISPLAY: inline-block; BACKGROUND: url(images/pantone_fan.png) no-repeat 0px 0px; HEIGHT: 16px; OVERFLOW: hidden } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:after { BORDER-BOTTOM: 7px solid; POSITION: absolute; BORDER-LEFT: 7px solid; BORDER-TOP: 0px; CONTENT: ""; TOP: -7px; BORDER-RIGHT: 7px solid; LEFT: 10px } .theme-switch:hover .cmdiv UL:before { BORDER-BOTTOM-COLOR: #999; TOP: -8px } .theme-switch .nav .sub UL { WIDTH: 180px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px } .theme-switch .nav .sub UL LI H4 { FILTER: progid:DXImageTransform.Microsoft.gradient(startColorstr=#999999,endColorstr=#333333); PADDING-BOTTOM: 4px; MARGIN-TOP: 5px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; COLOR: #fff; PADDING-TOP: 4px } .theme-switch .nav .sub UL A { PADDING-BOTTOM: 4px; PADDING-LEFT: 18px; WIDTH: 142px; PADDING-RIGHT: 4px; FONT-SIZE: 95%; PADDING-TOP: 4px } BODY DIV.lb-overlay { BACKGROUND: url(images/reorder_bg.png) #bbb -10px 0px } #wizard { Z-INDEX: 1100; BORDER-BOTTOM: #666 1px solid; POSITION: fixed; BORDER-LEFT: #666 1px solid; WIDTH: 900px; BACKGROUND: #555; MARGIN-LEFT: -450px; BORDER-TOP: #666 1px solid; TOP: 5px; BORDER-RIGHT: #666 1px solid; LEFT: 50%; box-shadow: 0 11px 20px rgba(0, 0, 0, .7); border-radius: 9px; background-clip: content-box } #wizard H1 { BORDER-BOTTOM: #666 1px solid; PADDING-BOTTOM: 10px; MARGIN: 1px 0px 0px 1px; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; BACKGROUND: #494949; COLOR: #bbb; FONT-SIZE: 110%; PADDING-TOP: 10px; box-shadow: 0 -1px 0 #363636 inset; border-radius: 9px 9px 0 0; text-shadow: 0 -1px 0 #111 } #wizard .accordion-wrapper { MARGIN: 0px 30px; BACKGROUND: none transparent scroll repeat 0% 0%; border-radius: 0 0 6px 6px } #wizard .accordion_toggle { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_content { PADDING-BOTTOM: 8px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #eee; FONT-SIZE: 115%; PADDING-TOP: 8px } #wizard .accordion_toggle { POSITION: relative; TEXT-ALIGN: right; PADDING-RIGHT: 60px; COLOR: #aaa; FONT-SIZE: 90%; BORDER-TOP: #444 1px solid; CURSOR: pointer; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .accordion_toggle .accordionTabLabel { FLOAT: left; COLOR: #eee; FONT-SIZE: 125%; TEXT-DECORATION: none } #wizard .accordion_toggle SPAN#selectedStructureName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle SPAN#selectedThemeName { PADDING-BOTTOM: 4px; PADDING-LEFT: 5px; PADDING-RIGHT: 19px; BACKGROUND: url(/images/ci/ng/close_mini.gif) #aaa no-repeat 96% 50%; VISIBILITY: visible; COLOR: #000; MARGIN-LEFT: 3px; PADDING-TOP: 4px; border-radius: 5px } #wizard .accordion_toggle_help { TEXT-ALIGN: left } #wizard .accordion_toggle A#unselectStructure { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectTheme { PADDING-BOTTOM: 2px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; DISPLAY: none; FLOAT: right; COLOR: #1ec8ea; MARGIN-LEFT: 5px; FONT-SIZE: 90%; PADDING-TOP: 2px } #wizard .accordion_toggle A#unselectStructure:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectTheme:hover { VISIBILITY: visible } #wizard .accordion_toggle A#unselectStructure:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle A#unselectTheme:hover SPAN { TEXT-DECORATION: line-through } #wizard .accordion_toggle:first-child { BORDER-TOP: 0px; box-shadow: none } #wizard .accordion_content { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: #3d3b3b; HEIGHT: 245px; OVERFLOW: hidden; PADDING-TOP: 0px } #wizard .accordion_content A { COLOR: #1ec8ea } #wizard .accordion_toggle_addstructure .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-1.png) no-repeat } #wizard .accordion_toggle_choosetheme .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-2.png) no-repeat } #wizard .accordion_toggle_help .right-image { BACKGROUND: url(/images/ci/icons/wizard_step-4.png) no-repeat } #wizard .right-image { POSITION: absolute; WIDTH: 30px; DISPLAY: inline-block; BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: center center; HEIGHT: 30px; TOP: 6px; RIGHT: 8px; opacity: .5 } #wizard .previewArea { PADDING-BOTTOM: 5px; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: #474747; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: 235px; MAX-HEIGHT: 235px; FONT-SIZE: 85%; OVERFLOW: hidden; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 5px } .course_welcome_help_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } .selected.course_welcome_help_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.course_welcome_help_scrollbar_handle { } .course_welcome_help_container { POSITION: relative } #wizard .previewArea .introduction { WIDTH: 80% } #wizard .previewArea .helplink { WIDTH: 80% } #wizard .previewArea .customHelp { WIDTH: 80% } #wizard .previewArea .conclusion { POSITION: absolute; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #3d3b3c; PADDING-LEFT: 10px; WIDTH: 20%; BACKGROUND-ATTACHMENT: fixed; PADDING-RIGHT: 10px; COLOR: #bbb; FONT-SIZE: 90%; TOP: 0px; RIGHT: 0px; PADDING-TOP: 0px } #wizard .previewArea .customHelp { PADDING-BOTTOM: 1em; MARGIN-TOP: 0.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; COLOR: #bbb; FONT-SIZE: 90%; BORDER-TOP: #555 1px dotted; PADDING-TOP: 1em } #wizard .previewArea H3 { MARGIN-TOP: 0.2em; MARGIN-BOTTOM: 3px; FONT-SIZE: 140%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN { TEXT-TRANSFORM: uppercase; DISPLAY: block; COLOR: #888; FONT-SIZE: 65%; FONT-WEIGHT: normal } #wizard .previewArea H3 SPAN SPAN { TEXT-TRANSFORM: lowercase; FONT-STYLE: italic; DISPLAY: inline; FONT-SIZE: 95% } #wizard .helplink .easylist { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN-TOP: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 0px !important; BORDER-TOP: 0px; BORDER-RIGHT: 0px; PADDING-TOP: 0px } #wizard .helplink .easylist LI { PADDING-BOTTOM: 0px; MARGIN: 0px 10px 10px; PADDING-LEFT: 0px; WIDTH: 46%; PADDING-RIGHT: 0px; FLOAT: left; BORDER-TOP: #555 2px dotted; PADDING-TOP: 3px } #wizard .helplink .easylist LI H3 { FONT-FAMILY: Georgia, serif } #wizard .helplink .easylist LI P { PADDING-LEFT: 0px } #wizard .helplink .easylist LI P { COLOR: #ddd } #wizard .log-summary { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; box-shadow: 0; border-radius: 0 } #wizard .conclusion H3 { TEXT-TRANSFORM: uppercase; MARGIN-TOP: 10px; COLOR: #888; FONT-SIZE: 100%; FONT-WEIGHT: normal } #wizard .conclusion UL { MARGIN-BOTTOM: 15px } #wizard .conclusion UL LI { MARGIN-BOTTOM: 5px } #wizard .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } .content-inner { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #f5f4ef; HEIGHT: 245px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid } #wizard .content-inner { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #3d3b3b; BORDER-TOP: 0px; BORDER-RIGHT: 0px } #wizard .introtext { PADDING-BOTTOM: 1em; LINE-HEIGHT: 1.5em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 2em; FLOAT: left; COLOR: #ccc; FONT-SIZE: 100%; FONT-WEIGHT: normal; PADDING-TOP: 1em } #wizard .introtext LABEL { FONT-STYLE: italic; DISPLAY: none; MARGIN-LEFT: 15px; FONT-SIZE: 85% } #wizard .introtext INPUT { FONT-STYLE: italic; FONT-FAMILY: Georgia, serif; MARGIN-BOTTOM: 10px; FONT-SIZE: 200% } #wizard .introtext .courseNameAndDescription TABLE TABLE { WIDTH: 99%; MARGIN-LEFT: 7px } #wizard .introtext TEXTAREA { FONT-SIZE: 110% } #wizard .introtext INPUT { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext TEXTAREA { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; WIDTH: 96%; PADDING-RIGHT: 0px; FONT-FAMILY: inherit; MARGIN-LEFT: 15px; PADDING-TOP: 7px; resize: none } #wizard .introtext .courseNameAndDescription { WIDTH: 60%; PADDING-RIGHT: 0.8em; FLOAT: left; MARGIN-RIGHT: 1em; BORDER-RIGHT: #666 3px dotted } #wizard .introtext P { LINE-HEIGHT: 1.4em; FONT-STYLE: italic; MARGIN: 55px 20px 0px 0px; FONT-FAMILY: Georgia, serif; FONT-SIZE: 90% } .themes .horizontal-block { BORDER-BOTTOM: #ddd 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 8px; MARGIN: 35px 10px 0px; PADDING-LEFT: 0px; WIDTH: 230px; PADDING-RIGHT: 0px; HEIGHT: 184px; BORDER-TOP: #ddd 1px solid; CURSOR: pointer; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 8px } #wizard .themes .horizontal-block { BORDER-BOTTOM-COLOR: #555; BORDER-TOP-COLOR: #555; BORDER-RIGHT-COLOR: #555; BORDER-LEFT-COLOR: #555 } .help .horizontal-block { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 250px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .themes .horizontal-block IMG { MARGIN: 0px auto; WIDTH: 203px; HEIGHT: 152px } .theme-selector { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 26px; PADDING-RIGHT: 26px; PADDING-TOP: 10px } .structure .theme-selector { PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px } .theme-selector SPAN { FONT-SIZE: 110%; FONT-WEIGHT: bold } #wizard .selected .theme-selector SPAN { COLOR: #333 } .selected .theme-selector SPAN { COLOR: #fff } .structure .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } .themes .horizontal-block:hover { BACKGROUND-COLOR: #e8e7e5 } #wizard .structure .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard .themes .horizontal-block:hover { BACKGROUND-COLOR: #5b5858 } #wizard LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected A { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner LI.selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } .content-inner .selected:hover { BORDER-BOTTOM: #333 1px solid; BORDER-LEFT: #333 1px solid; BACKGROUND-COLOR: #363636; COLOR: #333; BORDER-TOP: #333 1px solid; BORDER-RIGHT: #333 1px solid } #wizard LI.selected A { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard LI.selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .selected { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } #wizard .themes .selected.horizontal-block:hover { BACKGROUND-COLOR: #f5f4ef; COLOR: #333 } DIV.scroller { HEIGHT: 200px; OVERFLOW: hidden } .themes DIV.scroller { HEIGHT: 245px } DIV.scroller DIV.section { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; WIDTH: 780px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 225px; OVERFLOW: hidden; PADDING-TOP: 0px } .horizontal-block { TEXT-ALIGN: left; PADDING-BOTTOM: 6px; MARGIN: 8px 0px 0px 7px; PADDING-LEFT: 18px; WIDTH: 167px; PADDING-RIGHT: 0px; DISPLAY: inline-block; FLOAT: none; HEIGHT: 214px; FONT-SIZE: 80%; VERTICAL-ALIGN: top; PADDING-TOP: 3px; border-radius: 5px } .horizontal-block UL { MARGIN-LEFT: 4px } .structure .horizontal-block { HEIGHT: 178px; CURSOR: pointer } #wizard .gotocourse { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 28px; PADDING-RIGHT: 2px; COLOR: #ccc; BORDER-TOP: #444 1px solid; PADDING-TOP: 10px; -webkit-box-shadow: 0 1px 0 #666 inset; box-shadow: 0 1px 0 #666 inset } #wizard .gotocourse LABEL { WIDTH: auto; DISPLAY: inline-table } #wizard .gotocourse LABEL SPAN { DISPLAY: block; COLOR: #999; FONT-SIZE: 10px } #wizard .gotocourse .button-2 { BORDER-BOTTOM-COLOR: #333; PADDING-BOTTOM: 8px; BORDER-TOP-COLOR: #333; MARGIN-BOTTOM: 7px; BORDER-RIGHT-COLOR: #333; FONT-SIZE: 115%; BORDER-LEFT-COLOR: #333; MARGIN-RIGHT: 25px; PADDING-TOP: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2), 1px 1px 0 #fefefe inset, -1px -1px 0 #888 inset; text-shadow: 0 1px 0 #BBB } #wizard .gotocourse .button-2:hover { BORDER-BOTTOM-COLOR: #222; BORDER-TOP-COLOR: #222; BORDER-RIGHT-COLOR: #222; BORDER-LEFT-COLOR: #222 } #wizard .number { POSITION: relative; LINE-HEIGHT: 1; FLOAT: left; COLOR: #999; FONT-SIZE: 150%; VERTICAL-ALIGN: middle; TOP: -1px; FONT-WEIGHT: bold; MARGIN-RIGHT: 18px } #wizard .accordion_toggle_help .number { TEXT-INDENT: -9999px; WIDTH: 20px; BACKGROUND: url(/images/ci/icons/step_star_light.png) no-repeat; HEIGHT: 20px; MARGIN-RIGHT: 14px; opacity: .4; background-size: 100% 100% } #wizard .gotocourse .secondary.button-2 { COLOR: #555; FONT-WEIGHT: normal; text-shadow: none } #wizard .gotocourse #welcomePageCancelButton { MARGIN-RIGHT: 10px } #wizard A.wizard-close:before { FONT: 150% "Utilicons"; CONTENT: "X" } #wizard A.wizard-close { POSITION: absolute; COLOR: #888; TOP: 8px; RIGHT: 13px } .theme_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 2px } #wizard .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.theme_scrollbar_handle { } .theme_scrollbar_content { TEXT-ALIGN: center; HEIGHT: 245px; OVERFLOW: hidden } .structure_scrollbar_container { POSITION: relative } .structure_scrollbar_track { POSITION: absolute; MARGIN: 1px 0px; WIDTH: 10px; HEIGHT: 99%; TOP: 0px; CURSOR: move; RIGHT: 0px } DIV.courseStructureDescriptions .structure_scrollbar_track { MARGIN: 1px 3% 1px 0px; TOP: 10px } #wizard .structure_scrollbar_track { MARGIN: 1px 0px; TOP: 0px } #wizard .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } .selected.structure_scrollbar_handle { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: #555; WIDTH: 8px; BORDER-TOP: 0px; CURSOR: move; BORDER-RIGHT: 0px; -moz-border-radius: 5px; -webkit-border-radius: 5px } #wizard .selected.structure_scrollbar_handle:hover { BACKGROUND-COLOR: #777 } .selected.structure_scrollbar_handle { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle { } .selected.structure_scrollbar_handle:hover { } #wizard .courseStructureDescriptions .selected.structure_scrollbar_handle:hover { } .structure_scrollbar_content { MARGIN-TOP: 30px; HEIGHT: 370px; OVERFLOW: hidden } #wizard .structure_scrollbar_content { MARGIN-TOP: 22px; HEIGHT: 200px } .courseStructureOuterDiv { MIN-WIDTH: 800px; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MIN-HEIGHT: 400px; PADDING-LEFT: 0px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 10px; PADDING-TOP: 0px } #wizard .courseStructureOuterDiv { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #3d3b3b; MIN-HEIGHT: 250px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; PADDING-TOP: 0px } .courseStructureNameScroller { BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; BORDER-LEFT: #ccc 1px solid; BACKGROUND-COLOR: #fff; MARGIN: 10px 0px 0px; WIDTH: 170px; FLOAT: left; HEIGHT: 400px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; box-shadow: -1px 0 4px #CCC; border-top-left-radius: 4px; border-bottom-left-radius: 4px } #wizard .courseStructureNameScroller { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; MARGIN-TOP: 0px; HEIGHT: 220px; BORDER-TOP: 0px; BORDER-RIGHT: 0px; box-shadow: none; border-radius: 0 } .courseStructureNameScroller OL LI { MARGIN-BOTTOM: 3px; CURSOR: pointer } .courseStructureNameScroller OL LI:focus { OUTLINE-STYLE: dotted; OUTLINE-COLOR: #000; OUTLINE-WIDTH: 1px } .courseStructureNameScroller OL LI.courseStructureChoiceLink:focus { OUTLINE-COLOR: #fff; -moz-box-shadow: inset 0 0 6px #128FA8; -webkit-box-shadow: inset 0 0 6px #128FA8; box-shadow: inset 0 0 6px #128FA8 } #wizard .courseStructureNameScroller OL LI { MARGIN-LEFT: 13px } .courseStructureHeader { PADDING-BOTTOM: 5px; FONT-STYLE: italic; PADDING-LEFT: 10px; PADDING-RIGHT: 0px; FONT-FAMILY: Georgia, serif; COLOR: #999; FONT-SIZE: 85%; CURSOR: default !important; PADDING-TOP: 15px } #structureDescription H3 { TEXT-ALIGN: center; MARGIN-TOP: 110px; FONT: italic 100% Georgia, serif } #wizard .courseStructureHeader { PADDING-LEFT: 0px; COLOR: #aaa; PADDING-TOP: 0px; text-shadow: 0 0 1px #222 } .courseStructureChoiceLink { PADDING-BOTTOM: 5px; PADDING-LEFT: 33px; PADDING-RIGHT: 5px; DISPLAY: block; FONT-SIZE: 85%; FONT-WEIGHT: normal; TEXT-DECORATION: none; PADDING-TOP: 5px } #wizard .courseStructureChoiceLink { PADDING-LEFT: 20px } .courseStructureChoiceSelected { BACKGROUND-COLOR: #f5f4ef; COLOR: #3d3b3b; border-top-left-radius: 4px; border-bottom-left-radius: 4px } .courseStructureChoiceSelected A { COLOR: #333 } #wizard .courseStructureChoiceSelected A { COLOR: #333 } .courseStructureDescriptions { POSITION: relative; HEIGHT: 400px; MARGIN-LEFT: 170px } #wizard .courseStructureDescriptions { POSITION: relative; MARGIN: 10px 0px 10px 170px; HEIGHT: 225px } .courseStructureDescriptionAndMenu { BORDER-BOTTOM: #ccc 1px solid; POSITION: static; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 18px; BACKGROUND-COLOR: #f5f4ef; MARGIN: 10px 0px 0px; MIN-HEIGHT: 400px; PADDING-LEFT: 20px; WIDTH: 95%; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 400px; COLOR: #333; FONT-SIZE: 12px; OVERFLOW: hidden; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px } #wizard .courseStructureDescriptionAndMenu { BORDER-BOTTOM: 0px; POSITION: static; BORDER-LEFT: 0px; MARGIN-TOP: 0px; MIN-HEIGHT: 225px; WIDTH: 635px; HEIGHT: 225px; BORDER-TOP: 0px; BORDER-RIGHT: 0px } .courseStructureDescriptions P { MARGIN-BOTTOM: 15px } .courseStructureDescriptions H3 { TEXT-ALIGN: center; MARGIN-TOP: 30px; MARGIN-BOTTOM: 0px; COLOR: #666; FONT-SIZE: 120% } .courseStructureDescriptions BR { DISPLAY: none } .structureIncludeSampleContentCheck { BACKGROUND-COLOR: #f4f1e3; PADDING-LEFT: 15px; WIDTH: 100%; DISPLAY: block; HEIGHT: 40px; MARGIN-LEFT: -20px; PADDING-TOP: 10px; box-shadow: -10px 0 6px #CCC inset } #wizard .structureIncludeSampleContentCheck { Z-INDEX: 1; POSITION: absolute; PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 7px; WIDTH: 630px; PADDING-RIGHT: 0px; HEIGHT: 25px; MARGIN-LEFT: -12px; BORDER-TOP: #ccc 1px solid; TOP: 185px; PADDING-TOP: 7px; box-shadow: 0 0 2px #999; border-radius: 5px 5px 0 0 } #wizard .accordion_content .useSelectedStructure { MARGIN-RIGHT: 15px } #wizard .accordion_content .useSelectedStructure { COLOR: #333 } #wizard .accordion_content .useExistingMenu { COLOR: #333 } #wizard .courseStructureDescriptions .structure_scrollbar_track { RIGHT: 15px } .courseStructureMenu { POSITION: relative; BORDER-LEFT: #aaa 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; MARGIN: 0px 0px 0px 20px; MIN-HEIGHT: 400px; PADDING-LEFT: 10px; WIDTH: 200px; PADDING-RIGHT: 10px; FLOAT: right; OVERFLOW: hidden; PADDING-TOP: 0px; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); border-top-right-radius: 5px; border-bottom-right-radius: 5px } #wizard .courseStructureMenu { PADDING-BOTTOM: 35px; MIN-HEIGHT: 265px } .courseStructureMenu .listCm .courseMenu A { PADDING-BOTTOM: 0px; PADDING-LEFT: 30px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .courseStructureMenu .listCm .courseMenu .divider { PADDING-BOTTOM: 6px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; PADDING-TOP: 6px } .courseStructureMenu .topRound { DISPLAY: none } .courseStructureMenu .actionBarMicro { DISPLAY: none } .courseStructureMenu .bottomRound { DISPLAY: none } .courseStructureMenu #courseMenuPalette DIV.navPaletteContent { PADDING-TOP: 0px } .arrow_guide { POSITION: absolute; WIDTH: 156px; BACKGROUND: url(/images/ci/icons/left-arrow-point.png) no-repeat; HEIGHT: 34px; LEFT: 3% } #wizard .arrow_guide { TOP: 81% } .courseStructureDescription IMG { TEXT-ALIGN: center; MARGIN: 10px 0px 5px } .courseStructureDescription P.existing_text { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription P.existing_icon { TEXT-ALIGN: center; MARGIN: 0px; COLOR: #666; FONT-SIZE: 95% } .courseStructureDescription A.button-3 { COLOR: #333; MARGIN-RIGHT: 15px } .courseStructureDescription A.existingstructure.unselectStructureButton { MARGIN-TOP: 5px; MARGIN-RIGHT: 37% } .courseStructureNameScroller .current-value { BACKGROUND-IMAGE: url(/images/ci/icons/current_li.png); BORDER-BOTTOM: #555 1px solid; POSITION: absolute; PADDING-BOTTOM: 6px; PADDING-LEFT: 17px; WIDTH: 130px; BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-POSITION: 0px 20%; FONT-SIZE: 85%; TOP: 5px; FONT-WEIGHT: normal; LEFT: 15px; box-shadow: 0 -1px 0 #333 inset } #wizard .courseStructureNameScroller .current-value { TOP: 0px } .noSectionDivider { BORDER-TOP: medium none } .dividerRow { PADDING-BOTTOM: 0px !important; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BORDER-TOP: #acc2df 1px dotted; PADDING-TOP: 5px !important } .keyboardAccess .selectArrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows A { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .y-arrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess .selectArrows BUTTON { MARGIN: 0px; WIDTH: 18px; DISPLAY: inline-block } .keyboardAccess LABEL { DISPLAY: inline-block; FONT: italic 100% Georgia, serif; MARGIN-BOTTOM: 3px; COLOR: #777 } .keyboardAccess .selectArrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .keyboardAccess .y-arrows { TEXT-ALIGN: center; MARGIN: 3px 0px } .access-reorder-block { MIN-WIDTH: 200px; PADDING-BOTTOM: 0px; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 0px } .access-reorder-block SELECT { MIN-WIDTH: 200px } .y-arrows { TEXT-ALIGN: center; CLEAR: both } .brandingImgWrap IMG[src*='header_institution'] { POSITION: absolute; MAX-HEIGHT: 60px; TOP: 0px; LEFT: 12px } .sample-content { FONT: 113% Georgia, serif; BACKGROUND: url(images/bg_chalk_dark_s.png) 0px 0px } .sample-content .item H3 SPAN { FONT: bold 120% Georgia, serif; COLOR: #25bfcb !important } .sample-content TABLE { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated { FONT: italic 108%/1.6 Georgia, serif } .sample-content .vtbegenerated UL { MARGIN: 4px 0px } .sample-content .vtbegenerated P { PADDING-BOTTOM: 4px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .sample-content .vtbegenerated BR { HEIGHT: 1px } .sample-content.liItem:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } .buildList > LI.sample-content:hover { BORDER-BOTTOM-COLOR: #666; BACKGROUND-COLOR: #f6f6f6; BORDER-TOP-COLOR: #666; BORDER-RIGHT-COLOR: #666; BORDER-LEFT-COLOR: #666 } DIV.loading-overwrite { Z-INDEX: 10000; POSITION: absolute; TEXT-ALIGN: center; WIDTH: 100%; BACKGROUND: url(/images/ci/misc/progress/progress_learningSystem.gif) white no-repeat center 100px; HEIGHT: 100%; TOP: 0px; LEFT: 0px; opacity: 100 } DIV.loading-overwrite SPAN { POSITION: relative; FONT-SIZE: 200%; TOP: 10px } .sample-content DL { MARGIN: 0px } .sample-content DT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 9em; PADDING-RIGHT: 0px; FLOAT: left; FONT-WEIGHT: bold; PADDING-TOP: 0px } .sample-content DD { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 10em; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .dueDate { COLOR: #063 } .dueDatePassed { COLOR: #900 } .inventory_paging A.inactive { opacity: .4 } .inactive { opacity: .4 } .linkLeftSpacesp { PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .codeFragment { FONT-FAMILY: "Courier New" } .filteredTextHeader { BORDER-BOTTOM: 1px dotted; TEXT-ALIGN: center; BORDER-LEFT: 1px dotted; PADDING-BOTTOM: 5px; LINE-HEIGHT: 150%; BACKGROUND-COLOR: lightyellow; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; DISPLAY: inline-block; BORDER-TOP: 1px dotted; BORDER-RIGHT: 1px dotted; PADDING-TOP: 5px } .filteredText { BACKGROUND-COLOR: lightyellow; COLOR: red } .floatedReceipt { BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; PADDING-BOTTOM: 10px !important; LINE-HEIGHT: 1.3em; BACKGROUND-COLOR: #fcfbd1 !important; MARGIN: 0px 0px 6px; PADDING-LEFT: 10px !important; WIDTH: 300px; PADDING-RIGHT: 22px !important; FONT-FAMILY: Helvetica, serif; COLOR: #333 !important; BORDER-TOP: #ddd 1px solid; FONT-WEIGHT: normal !important; BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 10px !important; box-shadow: 1px 1px 5px #666; border-radius: 4px } .floatedReceipt A.close:before { } .floatedReceipt A.close:hover:before { } .floatedReceipt EM { FONT-WEIGHT: bold } .floatedReceipt A { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px !important; MARGIN: 0px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; BACKGROUND: url(none); COLOR: #333 !important; BORDER-TOP: 0px; FONT-WEIGHT: normal !important; BORDER-RIGHT: 0px; PADDING-TOP: 0px !important } .floatedReceipt A:hover { TEXT-DECORATION: none !important } .floatedReceipt#receipt_floated_theme { Z-INDEX: 1001; POSITION: absolute; TOP: 50px; RIGHT: 45px } .floatedReceipt#receipt_floated_courseMenu { Z-INDEX: 1201; POSITION: absolute; LEFT: 180px } .floatedReceipt .arrow { BORDER-BOTTOM: transparent 15px dashed; POSITION: absolute; BORDER-LEFT: transparent 15px dashed; HEIGHT: 0px; FONT-SIZE: 0px; BORDER-TOP: transparent 15px dashed; BORDER-RIGHT: transparent 15px dashed } .pointTop.floatedReceipt .arrow { BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #fcfbd1; TOP: -30px; LEFT: 58% } .pointLeft.floatedReceipt .arrow { BORDER-RIGHT-STYLE: solid; BORDER-RIGHT-COLOR: #fcfbd1; TOP: 10px; LEFT: -30px } .nav .sub .flyout .slideoutLink { FONT-WEIGHT: bold } .nav .sub .slideoutLink IMG { WIDTH: 16px; BACKGROUND: url(images/utilicons_arrows_dark.png) 16px 16px; FLOAT: right; HEIGHT: 16px } .nav .sub .slideoutLink-active { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-RIGHT: -1px; BORDER-RIGHT: #ccc 0px solid; box-shadow: -3px 0 3px rgba(0, 0, 0, .3); border-radius: 0 } .nav .sub .slideoutLink-active IMG { BACKGROUND: url(images/utilicons_arrows_dark.png) 0px 16px } .slideoutOpen { MARGIN-LEFT: -1px !important; BORDER-RIGHT: #ccc 1px solid } .statusFilter { POSITION: relative; PADDING-LEFT: 8px; FONT-SIZE: 13px } LABEL.statusFilter { TOP: 0px } SPAN.statusFilter { TOP: 1px } .collapsible TABLE.reportcard TR TD:first-child { DISPLAY: block !important } #loginRedirectProviders H3 { MARGIN: 10px } #loginRedirectProviderList LI { MARGIN: 0px 10px 5px 0px; DISPLAY: inline-block } #loginRedirectProviderList LI IMG { WIDTH: 16px; HEIGHT: 16px } .paletteItems LABEL { MAX-WIDTH: 90%; WORD-WRAP: break-word } .paletteItems LI INPUT[type=checkbox] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems LI INPUT[type=radio] { POSITION: absolute; TOP: 0px; LEFT: 0px } .paletteItems .inactive { MARGIN: 0px; opacity: .4 } DIV.comments DIV DIV.collabComments { BACKGROUND-COLOR: white; MAX-HEIGHT: 100px; OVERFLOW: auto !important } DIV.studentGradesCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetEditTabCommentPreview { WIDTH: 110px; HEIGHT: 110px; OVERFLOW: auto !important } DIV.grdDetHistTabCommentPreview { WIDTH: 200px; HEIGHT: 110px; OVERFLOW: auto !important } .tooltip_show:focus { POSITION: static; WIDTH: auto; HEIGHT: auto; OVERFLOW: visible } .radio-list { PADDING-LEFT: 20px } .radio-list LI { PADDING-BOTTOM: 4px !important; TEXT-INDENT: -26px; PADDING-LEFT: 0px !important; PADDING-RIGHT: 0px !important; PADDING-TOP: 0px !important } .radio-list LI INPUT[type=radio] { VERTICAL-ALIGN: bottom; MARGIN-RIGHT: 6px } .radio-list LI .button-4 { MARGIN-LEFT: 4px } .cartMode.csPicker #copyright { DISPLAY: none } .details .key-valueTable + .vtbegenerated { MARGIN-TOP: 12px !important } .ondemand-module { POSITION: relative; MARGIN: 14px 3px } .ondemand-module DIV { MARGIN-BOTTOM: 12px } .ondemand-module DIV A { PADDING-BOTTOM: 10px; PADDING-LEFT: 4%; PADDING-RIGHT: 12px; DISPLAY: block; BACKGROUND: #00add0; COLOR: #fff; FONT-SIZE: 120%; FONT-WEIGHT: bold; PADDING-TOP: 10px; border-radius: 5px } .ondemand-module DIV A:hover { BACKGROUND: #00b3be; TEXT-DECORATION: none; box-shadow: 0 0 12px #2cb673; text-shadow: 0 -1px 0 rgba(0, 0, 0, .4) } .ondemand-module DIV A > SPAN { DISPLAY: block; MARGIN-BOTTOM: 3px; FONT-SIZE: 80%; FONT-WEIGHT: normal } .ondemand-module SPAN.release { BORDER-BOTTOM: #00add0 1px solid; POSITION: absolute; BORDER-LEFT: #00add0 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 13px; PADDING-RIGHT: 10px; BACKGROUND: #9dddea; COLOR: #000; FONT-SIZE: 85%; BORDER-TOP: #00add0 1px solid; TOP: -7px; RIGHT: -4px; BORDER-RIGHT: #00add0 1px solid; PADDING-TOP: 3px; border-radius: 12px 12px 12px 12px; text-shadow: 0 1px 0 rgba(255, 255, 255, .3) } .ondemand-module P { MARGIN: 0px 13px; FONT: italic 93%/1.45 Georgia, serif; COLOR: #666 }

@import url( theme1.css?v=9.1.90132.0 ); @import url( theme2.css?v=9.1.90132.0 );

BODY { HEIGHT: auto } HTML { HEIGHT: auto } BODY { MIN-WIDTH: 0px } DIV.topGlobalLinks { MIN-WIDTH: 0px } .navigationPane { DISPLAY: none } .contentPane { MARGIN: 0px 14px } .questionDiv .submission_text { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .completionContainerLarge { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry H4 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogEntry .entryText { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .blogContainer .entryComments LI P { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .journalNav UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE THEAD TH { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TBODY TD { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .calMonth TABLE TD DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .modeSwitch { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet A.cmimg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } A.cmimg-small { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .frameResizeToggle A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .fileInputWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .field { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .noLabelField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .liveArea .stepcontent TEXTAREA { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonLibrary { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .previewTextArea { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .rating LI A:hover { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .dbThreadTree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .nav .sub UL LI A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmdiv A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .menumini A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .timediv UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentTags { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .auto_complete UL LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-header H2 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .lb-wrapper .lb-content { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myPlacesContent { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .myavatar { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .bubble .detailComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeDetailsStep { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tableOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .inventory { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .brandingImgWrap { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList-read .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .item { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .contentListPlain .contentListRight + .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #announcementList .details { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .landingPageColumn UL LI UL.datalistScroll { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .panelNested { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .module { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .moduleHeading { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .collapsible { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .imgWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .scroll_div { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .eudModule .eudModule-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .styledModule-dark .module-inner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet .itemGroups LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .portlet UL.hierarchyList LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .customBanner { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .loggedInAs { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #loggedInUserName { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .topTabs .hotItems UL.hotLinks { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cmImg { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemTray .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .cartTableWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemIconHolder A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .title { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .itemInfo .high { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .sideTOC .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .navPaletteContent A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .courseMenu H3 { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .courseMenu A { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .expTreeContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .listCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .buttonCm .treeContainer .tree { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeContainer .tree LI H4 + UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #pickerPalette .tree > LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .treeScrollable { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } #logDetail { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .table-scroll-wrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gridOverflowControl { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeItemsWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gradeSide .tocTreeWrapper { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV UL LI DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.comments DIV DIV.collabComments { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.studentGradesCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetEditTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } DIV.grdDetHistTabCommentPreview { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .u_scrollPanel-vertical { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .currentScore { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbContainer { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gbtable_header DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gc_info UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .gblist LI SPAN { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .cumulativeSelectItems .selected_items .itemList { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .flynav UL { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .overrow DIV { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .weightField { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important } .criteriaItem { HEIGHT: auto !important; MAX-HEIGHT: none !important; OVERFLOW: visible !important }

/* ================================================================== * General i18n functions * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ // internal methods function _escape(string) { // ?= does not seem to work return (''+string).replace(/^'|([^\\])'/g, "$1\\'").replace(/\n/g, "&crlf;"); } function _unescape(string) { return string.replace(/&crlf;/g, "\n"); } function _substitute(string, parameters) { for ( var key in parameters) { if ( parameters.hasOwnProperty( key ) ) { string = eval( "string.replace(/\\{" + key + "\\}/g, '" + _escape(parameters[key]) + "')" ); } } return _unescape(string); } // Public methods: these methods are instance methods of dynamically generated // Javascript bundle objects. See Java class blackboard.platform.intl.JsResource // and Perl module CI::L10n::JsResource. // Get a string from a resource bundle function i18n_get_string(key) { return this[key]; } // Get string and perform substitution using positions (arrays) or names (object) function i18n_get_formatted_string(key, parameters) { var string = this.getString(key); if (string && parameters) { // Convert to object keyed by string representation of array index if ( parameters.constructor.toString() == [].constructor.toString() ) { var array = parameters; parameters = {}; for (var i = 0; i < array.length; ++i) { parameters[''+i] = array[i]; } } string = _substitute(string, parameters); } return string; }

/* Prototype JavaScript framework, version 1.7 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://www.prototypejs.org/ * *--------------------------------------------------------------------------*/ var Prototype = { Version: '1.7', Browser: (function(){ var ua = navigator.userAgent; var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]'; return { IE: !!window.attachEvent && !isOpera, Opera: isOpera, WebKit: ua.indexOf('AppleWebKit/') > -1, Gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, MobileSafari: /Apple.*Mobile/.test(ua) } })(), BrowserFeatures: { XPath: !!document.evaluate, SelectorsAPI: !!document.querySelector, ElementExtensions: (function() { var constructor = window.Element || window.HTMLElement; return !!(constructor && constructor.prototype); })(), SpecificElementExtensions: (function() { if (typeof window.HTMLDivElement !== 'undefined') return true; var div = document.createElement('div'), form = document.createElement('form'), isSupported = false; if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) { isSupported = true; } div = form = null; return isSupported; })() }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari) Prototype.BrowserFeatures.SpecificElementExtensions = false; var Abstract = { }; var Try = { these: function() { var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } } return returnValue; } }; /* Based on Alex Arnell's inheritance implementation. */ var Class = (function() { var IS_DONTENUM_BUGGY = (function(){ for (var p in { toString: 1 }) { if (p === 'toString') return false; } return true; })(); function subclass() {}; function create() { var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0])) parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); } Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); } for (var i = 0, length = properties.length; i < length; i++) klass.addMethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass; } function addMethods(source) { var ancestor = this.superclass && this.superclass.prototype, properties = Object.keys(source); if (IS_DONTENUM_BUGGY) { if (source.toString != Object.prototype.toString) properties.push("toString"); if (source.valueOf != Object.prototype.valueOf) properties.push("valueOf"); } for (var i = 0, length = properties.length; i < length; i++) { var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames()[0] == "$super") { var method = value; value = (function(m) { return function() { return ancestor[m].apply(this, arguments); }; })(property).wrap(method); value.valueOf = method.valueOf.bind(method); value.toString = method.toString.bind(method); } this.prototype[property] = value; } return this; } return { create: create, Methods: { addMethods: addMethods } }; })(); (function() { var _toString = Object.prototype.toString, NULL_TYPE = 'Null', UNDEFINED_TYPE = 'Undefined', BOOLEAN_TYPE = 'Boolean', NUMBER_TYPE = 'Number', STRING_TYPE = 'String', OBJECT_TYPE = 'Object', FUNCTION_CLASS = '[object Function]', BOOLEAN_CLASS = '[object Boolean]', NUMBER_CLASS = '[object Number]', STRING_CLASS = '[object String]', ARRAY_CLASS = '[object Array]', DATE_CLASS = '[object Date]', NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON && typeof JSON.stringify === 'function' && JSON.stringify(0) === '0' && typeof JSON.stringify(Prototype.K) === 'undefined'; function Type(o) { switch(o) { case null: return NULL_TYPE; case (void 0): return UNDEFINED_TYPE; } var type = typeof o; switch(type) { case 'boolean': return BOOLEAN_TYPE; case 'number': return NUMBER_TYPE; case 'string': return STRING_TYPE; } return OBJECT_TYPE; } function extend(destination, source) { for (var property in source) destination[property] = source[property]; return destination; } function inspect(object) { try { if (isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } } function toJSON(value) { return Str('', { '': value }, []); } function Str(key, holder, stack) { var value = holder[key], type = typeof value; if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') { value = value.toJSON(key); } var _class = _toString.call(value); switch (_class) { case NUMBER_CLASS: case BOOLEAN_CLASS: case STRING_CLASS: value = value.valueOf(); } switch (value) { case null: return 'null'; case true: return 'true'; case false: return 'false'; } type = typeof value; switch (type) { case 'string': return value.inspect(true); case 'number': return isFinite(value) ? String(value) : 'null'; case 'object': for (var i = 0, length = stack.length; i < length; i++) { if (stack[i] === value) { throw new TypeError(); } } stack.push(value); var partial = []; if (_class === ARRAY_CLASS) { for (var i = 0, length = value.length; i < length; i++) { var str = Str(i, value, stack); partial.push(typeof str === 'undefined' ? 'null' : str); } partial = '[' + partial.join(',') + ']'; } else { var keys = Object.keys(value); for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i], str = Str(key, value, stack); if (typeof str !== "undefined") { partial.push(key.inspect(true)+ ':' + str); } } partial = '{' + partial.join(',') + '}'; } stack.pop(); return partial; } } function stringify(object) { return JSON.stringify(object); } function toQueryString(object) { return $H(object).toQueryString(); } function toHTML(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); } function keys(object) { if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); } var results = []; for (var property in object) { if (object.hasOwnProperty(property)) { results.push(property); } } return results; } function values(object) { var results = []; for (var property in object) results.push(object[property]); return results; } function clone(object) { return extend({ }, object); } function isElement(object) { return !!(object && object.nodeType == 1); } function isArray(object) { return _toString.call(object) === ARRAY_CLASS; } var hasNativeIsArray = (typeof Array.isArray == 'function') && Array.isArray([]) && !Array.isArray({}); if (hasNativeIsArray) { isArray = Array.isArray; } function isHash(object) { return object instanceof Hash; } function isFunction(object) { return _toString.call(object) === FUNCTION_CLASS; } function isString(object) { return _toString.call(object) === STRING_CLASS; } function isNumber(object) { return _toString.call(object) === NUMBER_CLASS; } function isDate(object) { return _toString.call(object) === DATE_CLASS; } function isUndefined(object) { return typeof object === "undefined"; } extend(Object, { extend: extend, inspect: inspect, toJSON: NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON, toJSONEx: toJSON, // Leaving this in here to assist in debugging odd stringify issues in IE if we see them again in other contexts. toQueryString: toQueryString, toHTML: toHTML, keys: Object.keys || keys, values: values, clone: clone, isElement: isElement, isArray: isArray, isHash: isHash, isFunction: isFunction, isString: isString, isNumber: isNumber, isDate: isDate, isUndefined: isUndefined }); })(); Object.extend(Function.prototype, (function() { var slice = Array.prototype.slice; function update(array, args) { var arrayLength = array.length, length = args.length; while (length--) array[arrayLength + length] = args[length]; return array; } function merge(array, args) { array = slice.call(array, 0); return update(array, args); } function argumentNames() { var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1] .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '') .replace(/\s+/g, '').split(','); return names.length == 1 && !names[0] ? [] : names; } function bind(context) { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = slice.call(arguments, 1); return function() { var a = merge(args, arguments); return __method.apply(context, a); } } function bindAsEventListener(context) { var __method = this, args = slice.call(arguments, 1); return function(event) { var a = update([event || window.event], args); return __method.apply(context, a); } } function curry() { if (!arguments.length) return this; var __method = this, args = slice.call(arguments, 0); return function() { var a = merge(args, arguments); return __method.apply(this, a); } } function delay(timeout) { var __method = this, args = slice.call(arguments, 1); timeout = timeout * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); } function defer() { var args = update([0.01], arguments); return this.delay.apply(this, args); } function wrap(wrapper) { var __method = this; return function() { var a = update([__method.bind(this)], arguments); return wrapper.apply(this, a); } } function methodize() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { var a = update([this], arguments); return __method.apply(null, a); }; } return { argumentNames: argumentNames, bind: bind, bindAsEventListener: bindAsEventListener, curry: curry, delay: delay, defer: defer, wrap: wrap, methodize: methodize } })()); (function(proto) { function toISOString() { return this.getUTCFullYear() + '-' + (this.getUTCMonth() + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2) + 'T' + this.getUTCHours().toPaddedString(2) + ':' + this.getUTCMinutes().toPaddedString(2) + ':' + this.getUTCSeconds().toPaddedString(2) + 'Z'; } function toJSON() { return this.toISOString(); } if (!proto.toISOString) proto.toISOString = toISOString; if (!proto.toJSON) proto.toJSON = toJSON; })(Date.prototype); RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); this.currentlyExecuting = false; } catch(e) { this.currentlyExecuting = false; throw e; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\' } }); Object.extend(String.prototype, (function() { var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; function prepareReplacement(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; } function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); if (Object.isString(pattern)) pattern = RegExp.escape(pattern); if (!(pattern.length || pattern.source)) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } } return result; } function sub(pattern, replacement, count) { replacement = prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); } function scan(pattern, iterator) { this.gsub(pattern, iterator); return String(this); } function truncate(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); } function strip() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); } function stripTags() { return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } function stripScripts() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); } function extractScripts() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'), matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); } function evalScripts() { return this.extractScripts().map(function(script) { return eval(script) }); } function escapeHTML() { return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); } function unescapeHTML() { return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&'); } function toQueryParams(separator) { var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return { }; return match[1].split(separator || '&').inject({ }, function(hash, pair) { if ((pair = pair.split('='))[0]) { var key = decodeURIComponent(pair.shift()), value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); } else hash[key] = value; } return hash; }); } function toArray() { return this.split(''); } function succ() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); } function times(count) { return count < 1 ? '' : new Array(count + 1).join(this); } function camelize() { return this.replace(/-+(.)?/g, function(match, chr) { return chr ? chr.toUpperCase() : ''; }); } function capitalize() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function underscore() { return this.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/-/g, '_') .toLowerCase(); } function dasherize() { return this.replace(/_/g, '-'); } function inspect(useDoubleQuotes) { var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) { if (character in String.specialChar) { return String.specialChar[character]; } return '\\u00' + character.charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; } function unfilterJSON(filter) { return this.replace(filter || Prototype.JSONFilter, '$1'); } function isJSON() { var str = this; if (str.blank()) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return (/^[\],:{}\s]*$/).test(str); } function evalJSON(sanitize) { var json = this.unfilterJSON(), cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; if (cx.test(json)) { json = json.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { } throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); } function parseJSON() { var json = this.unfilterJSON(); return JSON.parse(json); } function include(pattern) { return this.indexOf(pattern) > -1; } function startsWith(pattern) { return this.lastIndexOf(pattern, 0) === 0; } function endsWith(pattern) { var d = this.length - pattern.length; return d >= 0 && this.indexOf(pattern, d) === d; } function empty() { return this == ''; } function blank() { return /^\s*$/.test(this); } function interpolate(object, pattern) { return new Template(this, pattern).evaluate(object); } return { gsub: gsub, sub: sub, scan: scan, truncate: truncate, strip: String.prototype.trim || strip, stripTags: stripTags, stripScripts: stripScripts, extractScripts: extractScripts, evalScripts: evalScripts, escapeHTML: escapeHTML, unescapeHTML: unescapeHTML, toQueryParams: toQueryParams, parseQuery: toQueryParams, toArray: toArray, succ: succ, times: times, camelize: camelize, capitalize: capitalize, underscore: underscore, dasherize: dasherize, inspect: inspect, unfilterJSON: unfilterJSON, isJSON: isJSON, evalJSON: NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON, include: include, startsWith: startsWith, endsWith: endsWith, empty: empty, blank: blank, interpolate: interpolate }; })()); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) { if (object && Object.isFunction(object.toTemplateReplacements)) object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) { if (object == null) return (match[1] + ''); var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3], pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); } return before + String.interpret(ctx); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = { }; var Enumerable = (function() { function each(iterator, context) { var index = 0; try { this._each(function(value) { iterator.call(context, value, index++); }); } catch (e) { if (e != $break) throw e; } return this; } function eachSlice(number, iterator, context) { var index = -number, slices = [], array = this.toArray(); if (number < 1) return array; while ((index += number) < array.length) slices.push(array.slice(index, index+number)); return slices.collect(iterator, context); } function all(iterator, context) { iterator = iterator || Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator.call(context, value, index); if (!result) throw $break; }); return result; } function any(iterator, context) { iterator = iterator || Prototype.K; var result = false; this.each(function(value, index) { if (result = !!iterator.call(context, value, index)) throw $break; }); return result; } function collect(iterator, context) { iterator = iterator || Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator.call(context, value, index)); }); return results; } function detect(iterator, context) { var result; this.each(function(value, index) { if (iterator.call(context, value, index)) { result = value; throw $break; } }); return result; } function findAll(iterator, context) { var results = []; this.each(function(value, index) { if (iterator.call(context, value, index)) results.push(value); }); return results; } function grep(filter, iterator, context) { iterator = iterator || Prototype.K; var results = []; if (Object.isString(filter)) filter = new RegExp(RegExp.escape(filter)); this.each(function(value, index) { if (filter.match(value)) results.push(iterator.call(context, value, index)); }); return results; } function include(object) { if (Object.isFunction(this.indexOf)) if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found; } function inGroupsOf(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while(slice.length < number) slice.push(fillWith); return slice; }); } function inject(memo, iterator, context) { this.each(function(value, index) { memo = iterator.call(context, memo, value, index); }); return memo; } function invoke(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); } function max(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value >= result) result = value; }); return result; } function min(iterator, context) { iterator = iterator || Prototype.K; var result; this.each(function(value, index) { value = iterator.call(context, value, index); if (result == null || value < result) result = value; }); return result; } function partition(iterator, context) { iterator = iterator || Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator.call(context, value, index) ? trues : falses).push(value); }); return [trues, falses]; } function pluck(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; } function reject(iterator, context) { var results = []; this.each(function(value, index) { if (!iterator.call(context, value, index)) results.push(value); }); return results; } function sortBy(iterator, context) { return this.map(function(value, index) { return { value: value, criteria: iterator.call(context, value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); } function toArray() { return this.map(); } function zip() { var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last())) iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); }); } function size() { return this.toArray().length; } function inspect() { return '#<Enumerable:' + this.toArray().inspect() + '>'; } return { each: each, eachSlice: eachSlice, all: all, every: all, any: any, some: any, collect: collect, map: collect, detect: detect, findAll: findAll, select: findAll, filter: findAll, grep: grep, include: include, member: include, inGroupsOf: inGroupsOf, inject: inject, invoke: invoke, max: max, min: min, partition: partition, pluck: pluck, reject: reject, sortBy: sortBy, toArray: toArray, entries: toArray, zip: zip, size: size, inspect: inspect, find: detect }; })(); function $A(iterable) { if (!iterable) return []; if ('toArray' in Object(iterable)) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; } function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; } Array.from = $A; (function() { var arrayProto = Array.prototype, slice = arrayProto.slice, _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available function each(iterator, context) { for (var i = 0, length = this.length >>> 0; i < length; i++) { if (i in this) iterator.call(context, this[i], i, this); } } if (!_each) _each = each; function clear() { this.length = 0; return this; } function first() { return this[0]; } function last() { return this[this.length - 1]; } function compact() { return this.select(function(value) { return value != null; }); } function flatten() { return this.inject([], function(array, value) { if (Object.isArray(value)) return array.concat(value.flatten()); array.push(value); return array; }); } function without() { var values = slice.call(arguments, 0); return this.select(function(value) { return !values.include(value); }); } function reverse(inline) { return (inline === false ? this.toArray() : this)._reverse(); } function uniq(sorted) { return this.inject([], function(array, value, index) { if (0 == index || (sorted ? array.last() != value : !array.include(value))) array.push(value); return array; }); } function intersect(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); } function clone() { return slice.call(this, 0); } function size() { return this.length; } function inspect() { return '[' + this.map(Object.inspect).join(', ') + ']'; } function indexOf(item, i) { i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++) if (this[i] === item) return i; return -1; } function lastIndexOf(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; } function concat() { var array = slice.call(this, 0), item; for (var i = 0, length = arguments.length; i < length; i++) { item = arguments[i]; if (Object.isArray(item) && !('callee' in item)) { for (var j = 0, arrayLength = item.length; j < arrayLength; j++) array.push(item[j]); } else { array.push(item); } } return array; } Object.extend(arrayProto, Enumerable); if (!arrayProto._reverse) arrayProto._reverse = arrayProto.reverse; Object.extend(arrayProto, { _each: _each, clear: clear, first: first, last: last, compact: compact, flatten: flatten, without: without, reverse: reverse, uniq: uniq, intersect: intersect, clone: clone, toArray: clone, size: size, inspect: inspect }); var CONCAT_ARGUMENTS_BUGGY = (function() { return [].concat(arguments)[0][0] !== 1; })(1,2) if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat; if (!arrayProto.indexOf) arrayProto.indexOf = indexOf; if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf; })(); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() { function initialize(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); } function _each(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } } function set(key, value) { return this._object[key] = value; } function get(key) { if (this._object[key] !== Object.prototype[key]) return this._object[key]; } function unset(key) { var value = this._object[key]; delete this._object[key]; return value; } function toObject() { return Object.clone(this._object); } function keys() { return this.pluck('key'); } function values() { return this.pluck('value'); } function index(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; } function merge(object) { return this.clone().update(object); } function update(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); } function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); } function toQueryString() { return this.inject([], function(results, pair) { var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') { if (Object.isArray(values)) { var queryValues = []; for (var i = 0, len = values.length, value; i < len; i++) { value = values[i]; queryValues.push(toQueryPair(key, value)); } return results.concat(queryValues); } } else results.push(toQueryPair(key, values)); return results; }).join('&'); } function inspect() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; } function clone() { return new Hash(this); } return { initialize: initialize, _each: _each, set: set, get: get, unset: unset, toObject: toObject, toTemplateReplacements: toObject, keys: keys, values: values, index: index, merge: merge, update: update, toQueryString: toQueryString, inspect: inspect, toJSON: toObject, clone: clone }; })()); Hash.from = $H; Object.extend(Number.prototype, (function() { function toColorPart() { return this.toPaddedString(2, 16); } function succ() { return this + 1; } function times(iterator, context) { $R(0, this, true).each(iterator, context); return this; } function toPaddedString(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; } function abs() { return Math.abs(this); } function round() { return Math.round(this); } function ceil() { return Math.ceil(this); } function floor() { return Math.floor(this); } return { toColorPart: toColorPart, succ: succ, times: times, toPaddedString: toPaddedString, abs: abs, round: round, ceil: ceil, floor: floor }; })()); function $R(start, end, exclusive) { return new ObjectRange(start, end, exclusive); } var ObjectRange = Class.create(Enumerable, (function() { function initialize(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; } function _each(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } } function include(value) { if (value < this.start) return false; if (this.exclusive) return value < this.end; return value <= this.end; } return { initialize: initialize, _each: _each, include: include }; })()); var Ajax = { getTransport: function() { return Try.these( function() {return new XMLHttpRequest()}, function() {return new ActiveXObject('Msxml2.XMLHTTP')}, function() {return new ActiveXObject('Microsoft.XMLHTTP')} ) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) { if (!this.include(responder)) this.responders.push(responder); }, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); }, hasResponder: function( callback ) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { return true; } }); return false; } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) { this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || { }); this.options.method = this.options.method.toLowerCase(); if (Object.isHash(this.options.parameters)) this.options.parameters = this.options.parameters.toObject(); } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) { this.url = url; this.method = this.options.method; var params = Object.isString(this.options.parameters) ? this.options.parameters : Object.toQueryString(this.options.parameters); if (!['get', 'post'].include(this.method)) { params += (params ? '&' : '') + "_method=" + this.method; this.method = 'post'; } if (params && this.method === 'get') { this.url += (this.url.include('?') ? '&' : '?') + params; } this.parameters = params.toQueryParams(); try { var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); /* Force Firefox to handle ready state 4 for synchronous requests */ if (!this.options.asynchronous && this.transport.overrideMimeType) this.onStateChange(); } catch (e) { this.dispatchException(e); } }, onStateChange: function() { var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete)) this.respondToReadyState(this.transport.readyState); }, setRequestHeaders: function() { var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') { headers['Content-type'] = this.options.contentType + (this.options.encoding ? '; charset=' + this.options.encoding : ''); /* Force "Connection: close" for older Mozilla browsers to work * around a bug where XMLHttpRequest sends an incorrect * Content-length header. See Mozilla Bugzilla #246651. */ if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) headers['Connection'] = 'close'; } if (typeof this.options.requestHeaders == 'object') { var extras = this.options.requestHeaders; if (Object.isFunction(extras.push)) for (var i = 0, length = extras.length; i < length; i += 2) headers[extras[i]] = extras[i+1]; else $H(extras).each(function(pair) { headers[pair.key] = pair.value }); } for (var name in headers) this.transport.setRequestHeader(name, headers[name]); }, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300) || status == 304; }, getStatus: function() { try { if (this.transport.status === 1223) return 204; return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) { var state = Ajax.Request.Events[readyState]; // quite a high number of Interactive events can be generated on some browsers // triggering a memory issue in FF3 when building the response object. So if there is no // registered listener, quick return // see https://bugzilla.mozilla.org/show_bug.cgi?id=453709 if ( state == 'Interactive' ) { if ( this.notListeningToInteractive ) { if ( this.notListeningToInteractive.value ) return; } else { this.notListeningToInteractive = new Object(); this.notListeningToInteractive.value = ( !this.options['onInteractive'] && !Ajax.Responders.hasResponder( state ) ); if ( this.notListeningToInteractive.value ) return; } } var response = new Ajax.Response(this); if (state == 'Complete') { try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); } var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) this.evalResponse(); } try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); } if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); } }); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request){ this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); } if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() { var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank()) return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) { var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) { if (options.insertion) { if (Object.isString(options.insertion)) { var insertion = { }; insertion[options.insertion] = responseText; receiver.insert(insertion); } else options.insertion(receiver, responseText); } else receiver.update(responseText); } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = { }; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) { if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $s(element) { if (Object.isString(element)) { return document.getElementById(element); } return element; } function $(element) { if (arguments.length > 1) { for (var i = 0, elements = [], length = arguments.length; i < length; i++) elements.push($(arguments[i])); return elements; } if (Object.isString(element)) element = document.getElementById(element); return Element.extend(element); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(expression, parentElement) { var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++) results.push(Element.extend(query.snapshotItem(i))); return results; }; } /*--------------------------------------------------------------------------*/ if (!Node) var Node = { }; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function(global) { function shouldUseCache(tagName, attributes) { if (tagName === 'select') return false; if ('type' in attributes) return false; return true; } var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){ try { var el = document.createElement('<input name="x">'); return el.tagName.toLowerCase() === 'input' && el.name === 'x'; } catch(err) { return false; } })(); var element = global.Element; global.Element = function(tagName, attributes) { attributes = attributes || { }; tagName = tagName.toLowerCase(); var cache = Element.cache; if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); } if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); var node = shouldUseCache(tagName, attributes) ? cache[tagName].cloneNode(false) : document.createElement(tagName); return Element.writeAttribute(node, attributes); }; Object.extend(global.Element, element || { }); if (element) global.Element.prototype = element.prototype; })(this); Element.idCounter = 1; Element.cache = { }; Element._purgeElement = function(element) { var uid = element._prototypeUID; if (uid) { Element.stopObserving(element); element._prototypeUID = void 0; delete Element.Storage[uid]; } } Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { element = $(element); element.style.display = 'none'; return element; }, show: function(element) { element = $(element); element.style.display = ''; return element; }, // only extend the element if it is a string - otherwise we don't need to extend the element remove: function(element) { if (Object.isString(element)) { element = $(element); } if (element.parentNode) { element.parentNode.removeChild(element); } return element; }, update: (function(){ var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){ var el = document.createElement("select"), isBuggy = true; el.innerHTML = "<option value=\"test\">test</option>"; if (el.options && el.options[0]) { isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION"; } el = null; return isBuggy; })(); var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){ try { var el = document.createElement("table"); if (el && el.tBodies) { el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>"; var isBuggy = typeof el.tBodies[0] == "undefined"; el = null; return isBuggy; } } catch (e) { return true; } })(); var LINK_ELEMENT_INNERHTML_BUGGY = (function() { try { var el = document.createElement('div'); el.innerHTML = "<link>"; var isBuggy = (el.childNodes.length === 0); el = null; return isBuggy; } catch(e) { return true; } })(); var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY || TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY; var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () { var s = document.createElement("script"), isBuggy = false; try { s.appendChild(document.createTextNode("")); isBuggy = !s.firstChild || s.firstChild && s.firstChild.nodeType !== 3; } catch (e) { isBuggy = true; } s = null; return isBuggy; })(); function update(element, content) { element = $(element); var purgeElement = Element._purgeElement; var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) { element.text = content; return element; } if (ANY_INNERHTML_BUGGY) { if (tagName in Element._insertionTranslations.tags) { while (element.firstChild) { element.removeChild(element.firstChild); } Element._getContentFromAnonymousElement(tagName, content.stripScripts()) .each(function(node) { element.appendChild(node) }); } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) { while (element.firstChild) { element.removeChild(element.firstChild); } var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true); nodes.each(function(node) { element.appendChild(node) }); } else { element.innerHTML = content.stripScripts(); } } else { element.innerHTML = content.stripScripts(); } content.evalScripts.bind(content).defer(); return element; } return update; })(), replace: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); } element.parentNode.replaceChild(content, element); return element; }, insert: function(element, insertions) { element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) insertions = {bottom:insertions}; var content, insert, tagName, childNodes; for (var position in insertions) { content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; } content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer(); } return element; }, wrap: function(element, wrapper, attributes) { element = $(element); if (Object.isElement(wrapper)) $(wrapper).writeAttribute(attributes || { }); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode) element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper; }, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({'id': 'id', 'className': 'class'}).each(function(pair) { var property = pair.first(), attribute = pair.last(), value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property, maximumLength) { element = $(element); maximumLength = maximumLength || -1; var elements = []; while (element = element[property]) { if (element.nodeType == 1) elements.push(Element.extend(element)); if (elements.length == maximumLength) break; } return elements; }, // Collect items without extending them all: rawRecursivelyCollect: function(element, property) { element = $(element); var elements = []; while (element = element[property]) if (element.nodeType == 1) { elements.push(element); } return elements; }, ancestors: function(element) { return Element.recursivelyCollect(element, 'parentNode'); }, descendants: function(element) { return Element.select(element, "*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { var results = [], child = $(element).firstChild; while (child) { if (child.nodeType === 1) { results.push(Element.extend(child)); } child = child.nextSibling; } return results; }, // Find the immediate descendents of the given element without extending them all rawImmediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).rawNextSiblings()); return []; }, previousSiblings: function(element, maximumLength) { return Element.recursivelyCollect(element, 'previousSibling'); }, nextSiblings: function(element) { return Element.recursivelyCollect(element, 'nextSibling'); }, // Find the next siblings without actually extending them all rawNextSiblings: function(element) { return $(element).rawRecursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return Element.previousSiblings(element).reverse() .concat(Element.nextSiblings(element)); }, match: function(element, selector) { element = $(element); if (Object.isString(selector)) return Prototype.Selector.match(element, selector); return selector.match(element); }, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = Element.ancestors(element); return Object.isNumber(expression) ? ancestors[expression] : Prototype.Selector.find(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return Element.firstDescendant(element); return Object.isNumber(expression) ? Element.descendants(element)[expression] : Element.select(element, expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.previousSiblings(), expression, index); } else { return element.recursivelyCollect("previousSibling", index + 1)[index]; } }, next: function(element, expression, index) { element = $(element); if (Object.isNumber(expression)) index = expression, expression = false; if (!Object.isNumber(index)) index = 0; if (expression) { return Prototype.Selector.find(element.nextSiblings(), expression, index); } else { var maximumLength = Object.isNumber(index) ? index + 1 : 1; return element.recursivelyCollect("nextSibling", index + 1)[index]; } }, select: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element); }, adjacent: function(element) { element = $(element); var expressions = Array.prototype.slice.call(arguments, 1).join(', '); return Prototype.Selector.select(expressions, element.parentNode).without(element); }, identify: function(element) { element = $(element); var id = Element.readAttribute(element, 'id'); if (id) return id; do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id)); Element.writeAttribute(element, 'id', id); return id; }, readAttribute: function(element, name) { element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } } return element.getAttribute(name); }, writeAttribute: function(element, name, value) { element = $(element); var attributes = { }, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) { name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null) element.removeAttribute(name); else if (value === true) element.setAttribute(name, name); else element.setAttribute(name, value); } return element; }, getHeight: function(element) { return Element.getDimensions(element).height; }, getWidth: function(element) { return Element.getDimensions(element).width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) { if (!(element = $(element))) return; if (!Element.hasClassName(element, className)) element.className += (element.className ? ' ' : '') + className; return element; }, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace( new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return Element[Element.hasClassName(element, className) ? 'removeClassName' : 'addClassName'](element, className); }, cleanWhitespace: function(element) { element = $s(element); var node = element.firstChild; while (node) { var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) element.removeChild(node); node = nextNode; } return element; }, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) { element = $(element), ancestor = $(ancestor); if (element.compareDocumentPosition) return (element.compareDocumentPosition(ancestor) & 8) === 8; if (ancestor.contains) return ancestor.contains(element) && ancestor !== element; while (element = element.parentNode) if (element == ancestor) return true; return false; }, scrollTo: function(element) { element = $(element); var pos = Element.cumulativeOffset(element); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) { element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value || value == 'auto') { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; } if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value; }, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) { element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) if (property == 'opacity') element.setOpacity(styles[property]); else elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element; }, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, makePositioned: function(element) { element = $s(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (Prototype.Browser.Opera) { element.style.top = 0; element.style.left = 0; } } return element; }, undoPositioned: function(element) { element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; } return element; }, makeClipping: function(element) { element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden') element.style.overflow = 'hidden'; return element; }, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, clonePosition: function(element, source) { var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || { }); source = $(source); var p = Element.viewportOffset(source), delta = [0, 0], parent = null; element = $(element); if (Element.getStyle(element, 'position') == 'absolute') { parent = Element.getOffsetParent(element); delta = Element.viewportOffset(parent); } if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; } if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element; } }; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: { } } }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap( function(proceed, element, style) { switch (style) { case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()]) return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; } else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; } return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style); } } ); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap( function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); } ); } else if (Prototype.Browser.IE) { Element.Methods.getStyle = function(element, style) { element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') { if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) if (value[1]) return parseFloat(value[1]) / 100; return 1.0; } if (value == 'auto') { if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) return element['offset' + style.capitalize()] + 'px'; return null; } return value; }; Element.Methods.setOpacity = function(element, value) { function stripAlpha(filter){ return filter.replace(/alpha\([^\)]*\)/gi,''); } element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal')) element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element; }; Element._attributeTranslations = (function(){ var classProp = 'className', forProp = 'for', el = document.createElement('div'); el.setAttribute(classProp, 'x'); if (el.className !== 'x') { el.setAttribute('class', 'x'); if (el.className === 'x') { classProp = 'class'; } } el = null; el = document.createElement('label'); el.setAttribute(forProp, 'x'); if (el.htmlFor !== 'x') { el.setAttribute('htmlFor', 'x'); if (el.htmlFor === 'x') { forProp = 'htmlFor'; } } el = null; return { read: { names: { 'class': classProp, 'className': classProp, 'for': forProp, 'htmlFor': forProp }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute); }, _getAttr2: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: (function(){ var el = document.createElement('div'), f; el.onclick = Prototype.emptyFunction; var value = el.getAttribute('onclick'); if (String(value).indexOf('{') > -1) { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; attribute = attribute.toString(); attribute = attribute.split('{')[1]; attribute = attribute.split('}')[0]; return attribute.strip(); }; } else if (value === '') { f = function(element, attribute) { attribute = element.getAttribute(attribute); if (!attribute) return null; return attribute.strip(); }; } el = null; return f; })(), _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } } } } })(); Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc frameBorder').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr2, src: v._getAttr2, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values); if (Prototype.BrowserFeatures.ElementExtensions) { (function() { function _descendants(element) { var nodes = element.getElementsByTagName('*'), results = []; for (var i = 0, node; node = nodes[i]; i++) if (node.tagName !== "!") // Filter out comment nodes. results.push(node); return results; } Element.Methods.down = function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? _descendants(element)[expression] : Element.select(element, expression)[index || 0]; } })(); } } else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; } else if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1) if (element.tagName.toUpperCase() == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { } return element; }; } if ('outerHTML' in document.documentElement) { Element.Methods.replace = function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; } content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) { var nextSibling = element.next(), fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling) fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else fragments.each(function(node) { parent.appendChild(node) }); } else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }; } Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html, force) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; var workaround = false; if (t) workaround = true; else if (force) { workaround = true; t = ['', '', 0]; } if (workaround) { div.innerHTML = '&nbsp;' + t[0] + html + t[1]; div.removeChild(div.firstChild); for (var i = t[2]; i--; ) { div = div.firstChild; } } else { div.innerHTML = html; } return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1] } }; (function() { var tags = Element._insertionTranslations.tags; Object.extend(tags, { THEAD: tags.TBODY, TFOOT: tags.TBODY, TH: tags.TD }); })(); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } }; Element.Methods.ByTag = { }; Object.extend(Element, Element.Methods); (function(div) { if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) { window.HTMLElement = { }; window.HTMLElement.prototype = div['__proto__']; Prototype.BrowserFeatures.ElementExtensions = true; } div = null; })(document.createElement('div')); Element.extend = (function() { function checkDeficiency(tagName) { if (typeof window.Element != 'undefined') { var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random()+'').slice(2), el = document.createElement(tagName); proto[id] = 'x'; var isBuggy = (el[id] !== 'x'); delete proto[id]; el = null; return isBuggy; } } return false; } function extendElementWith(element, methods) { for (var property in methods) { var value = methods[property]; if (Object.isFunction(value) && !(property in element)) element[property] = value.methodize(); } } var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object'); if (Prototype.BrowserFeatures.SpecificElementExtensions) { if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) { return function(element) { if (element && typeof element._extendedByPrototype == 'undefined') { var t = element.tagName; if (t && (/^(?:object|applet|embed)$/i.test(t))) { extendElementWith(element, Element.Methods); extendElementWith(element, Element.Methods.Simulated); extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]); } } return element; } } return Prototype.K; } var Methods = { }, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) { if (!element || typeof element._extendedByPrototype != 'undefined' || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName.toUpperCase(); if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); extendElementWith(element, methods); element._extendedByPrototype = Prototype.emptyFunction; return element; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend; })(); if (document.documentElement.hasAttribute) { Element.hasAttribute = function(element, attribute) { return element.hasAttribute(attribute); }; } else { Element.hasAttribute = Element.Methods.Simulated.hasAttribute; } Element.addMethods = function(methods) { var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods), "BUTTON": Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; } if (!tagName) Object.extend(Element.Methods, methods || { }); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); } function extend(tagName) { tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName]) Element.Methods.ByTag[tagName] = { }; Object.extend(Element.Methods.ByTag[tagName], methods); } function copy(methods, destination, onlyIfAbsent) { onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) { var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination)) destination[property] = value.methodize(); } } function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; var element = document.createElement(tagName), proto = element['__proto__'] || element.constructor.prototype; element = null; return proto; } var elementPrototype = window.HTMLElement ? HTMLElement.prototype : Element.prototype; if (F.ElementExtensions) { copy(Element.Methods, elementPrototype); copy(Element.Methods.Simulated, elementPrototype, true); } if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = { }; }; document.viewport = { getDimensions: function() { return { width: this.getWidth(), height: this.getHeight() }; }, getScrollOffsets: function() { return Element._returnOffset( window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; (function(viewport) { var B = Prototype.Browser, doc = document, element, property = {}; function getRootElement() { if (B.WebKit && !doc.evaluate) return document; if (B.Opera && window.parseFloat(window.opera.version()) < 9.5) return document.body; return document.documentElement; } function define(D) { if (!element) element = getRootElement(); property[D] = 'client' + D; viewport['get' + D] = function() { return element[property[D]] }; return viewport['get' + D](); } viewport.getWidth = define.curry('Width'); viewport.getHeight = define.curry('Height'); })(document.viewport); Element.Storage = { UID: 1 }; Element.addMethods({ getStorage: function(element) { if (!(element = $(element))) return; var uid; if (element === window) { uid = 0; } else { if (typeof element._prototypeUID === "undefined") element._prototypeUID = Element.Storage.UID++; uid = element._prototypeUID; } if (!Element.Storage[uid]) Element.Storage[uid] = $H(); return Element.Storage[uid]; }, store: function(element, key, value) { if (!(element = $(element))) return; if (arguments.length === 2) { Element.getStorage(element).update(key); } else { Element.getStorage(element).set(key, value); } return element; }, retrieve: function(element, key, defaultValue) { if (!(element = $(element))) return; var hash = Element.getStorage(element), value = hash.get(key); if (Object.isUndefined(value)) { hash.set(key, defaultValue); value = defaultValue; } return value; }, clone: function(element, deep) { if (!(element = $(element))) return; var clone = element.cloneNode(deep); clone._prototypeUID = void 0; if (deep) { var descendants = Element.select(clone, '*'), i = descendants.length; while (i--) { descendants[i]._prototypeUID = void 0; } } return Element.extend(clone); }, purge: function(element) { if (!(element = $(element))) return; var purgeElement = Element._purgeElement; purgeElement(element); var descendants = element.getElementsByTagName('*'), i = descendants.length; while (i--) purgeElement(descendants[i]); return null; } }); (function() { function toDecimal(pctString) { var match = pctString.match(/^(\d+)%?$/i); if (!match) return null; return (Number(match[1]) / 100); } function getPixelValue(value, property, context) { var element = null; if (Object.isElement(value)) { element = value; value = element.getStyle(property); } if (value === null) { return null; } if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) { return window.parseFloat(value); } var isPercentage = value.include('%'), isViewport = (context === document.viewport); if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) { var style = element.style.left, rStyle = element.runtimeStyle.left; element.runtimeStyle.left = element.currentStyle.left; element.style.left = value || 0; value = element.style.pixelLeft; element.style.left = style; element.runtimeStyle.left = rStyle; return value; } if (element && isPercentage) { context = context || element.parentNode; var decimal = toDecimal(value); var whole = null; var position = element.getStyle('position'); var isHorizontal = property.include('left') || property.include('right') || property.include('width'); var isVertical = property.include('top') || property.include('bottom') || property.include('height'); if (context === document.viewport) { if (isHorizontal) { whole = document.viewport.getWidth(); } else if (isVertical) { whole = document.viewport.getHeight(); } } else { if (isHorizontal) { whole = $(context).measure('width'); } else if (isVertical) { whole = $(context).measure('height'); } } return (whole === null) ? 0 : whole * decimal; } return 0; } function toCSSPixels(number) { if (Object.isString(number) && number.endsWith('px')) { return number; } return number + 'px'; } function isDisplayed(element) { var originalElement = element; while (element && element.parentNode) { var display = element.getStyle('display'); if (display === 'none') { return false; } element = $(element.parentNode); } return true; } var hasLayout = Prototype.K; if ('currentStyle' in document.documentElement) { hasLayout = function(element) { if (!element.currentStyle.hasLayout) { element.style.zoom = 1; } return element; }; } function cssNameFor(key) { if (key.include('border')) key = key + '-width'; return key.camelize(); } Element.Layout = Class.create(Hash, { initialize: function($super, element, preCompute) { $super(); this.element = $(element); Element.Layout.PROPERTIES.each( function(property) { this._set(property, null); }, this); if (preCompute) { this._preComputing = true; this._begin(); Element.Layout.PROPERTIES.each( this._compute, this ); this._end(); this._preComputing = false; } }, _set: function(property, value) { return Hash.prototype.set.call(this, property, value); }, set: function(property, value) { throw "Properties of Element.Layout are read-only."; }, get: function($super, property) { var value = $super(property); return value === null ? this._compute(property) : value; }, _begin: function() { if (this._prepared) return; var element = this.element; if (isDisplayed(element)) { this._prepared = true; return; } var originalStyles = { position: element.style.position || '', width: element.style.width || '', visibility: element.style.visibility || '', display: element.style.display || '' }; element.store('prototype_original_styles', originalStyles); var position = element.getStyle('position'), width = element.getStyle('width'); if (width === "0px" || width === null) { element.style.display = 'block'; width = element.getStyle('width'); } var context = (position === 'fixed') ? document.viewport : element.parentNode; element.setStyle({ position: 'absolute', visibility: 'hidden', display: 'block' }); var positionedWidth = element.getStyle('width'); var newWidth; if (width && (positionedWidth === width)) { newWidth = getPixelValue(element, 'width', context); } else if (position === 'absolute' || position === 'fixed') { newWidth = getPixelValue(element, 'width', context); } else { var parent = element.parentNode, pLayout = $(parent).getLayout(); newWidth = pLayout.get('width') - this.get('margin-left') - this.get('border-left') - this.get('padding-left') - this.get('padding-right') - this.get('border-right') - this.get('margin-right'); } element.setStyle({ width: newWidth + 'px' }); this._prepared = true; }, _end: function() { var element = this.element; var originalStyles = element.retrieve('prototype_original_styles'); element.store('prototype_original_styles', null); element.setStyle(originalStyles); this._prepared = false; }, _compute: function(property) { var COMPUTATIONS = Element.Layout.COMPUTATIONS; if (!(property in COMPUTATIONS)) { throw "Property not found."; } return this._set(property, COMPUTATIONS[property].call(this, this.element)); }, toObject: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var obj = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) obj[key] = value; }, this); return obj; }, toHash: function() { var obj = this.toObject.apply(this, arguments); return new Hash(obj); }, toCSS: function() { var args = $A(arguments); var keys = (args.length === 0) ? Element.Layout.PROPERTIES : args.join(' ').split(' '); var css = {}; keys.each( function(key) { if (!Element.Layout.PROPERTIES.include(key)) return; if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return; var value = this.get(key); if (value != null) css[cssNameFor(key)] = value + 'px'; }, this); return css; }, inspect: function() { return "#<Element.Layout>"; } }); Object.extend(Element.Layout, { PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'), COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'), COMPUTATIONS: { 'height': function(element) { if (!this._preComputing) this._begin(); var bHeight = this.get('border-box-height'); if (bHeight <= 0) { if (!this._preComputing) this._end(); return 0; } var bTop = this.get('border-top'), bBottom = this.get('border-bottom'); var pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); if (!this._preComputing) this._end(); return bHeight - bTop - bBottom - pTop - pBottom; }, 'width': function(element) { if (!this._preComputing) this._begin(); var bWidth = this.get('border-box-width'); if (bWidth <= 0) { if (!this._preComputing) this._end(); return 0; } var bLeft = this.get('border-left'), bRight = this.get('border-right'); var pLeft = this.get('padding-left'), pRight = this.get('padding-right'); if (!this._preComputing) this._end(); return bWidth - bLeft - bRight - pLeft - pRight; }, 'padding-box-height': function(element) { var height = this.get('height'), pTop = this.get('padding-top'), pBottom = this.get('padding-bottom'); return height + pTop + pBottom; }, 'padding-box-width': function(element) { var width = this.get('width'), pLeft = this.get('padding-left'), pRight = this.get('padding-right'); return width + pLeft + pRight; }, 'border-box-height': function(element) { if (!this._preComputing) this._begin(); var height = element.offsetHeight; if (!this._preComputing) this._end(); return height; }, 'border-box-width': function(element) { if (!this._preComputing) this._begin(); var width = element.offsetWidth; if (!this._preComputing) this._end(); return width; }, 'margin-box-height': function(element) { var bHeight = this.get('border-box-height'), mTop = this.get('margin-top'), mBottom = this.get('margin-bottom'); if (bHeight <= 0) return 0; return bHeight + mTop + mBottom; }, 'margin-box-width': function(element) { var bWidth = this.get('border-box-width'), mLeft = this.get('margin-left'), mRight = this.get('margin-right'); if (bWidth <= 0) return 0; return bWidth + mLeft + mRight; }, 'top': function(element) { var offset = element.positionedOffset(); return offset.top; }, 'bottom': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pHeight = parent.measure('height'); var mHeight = this.get('border-box-height'); return pHeight - mHeight - offset.top; }, 'left': function(element) { var offset = element.positionedOffset(); return offset.left; }, 'right': function(element) { var offset = element.positionedOffset(), parent = element.getOffsetParent(), pWidth = parent.measure('width'); var mWidth = this.get('border-box-width'); return pWidth - mWidth - offset.left; }, 'padding-top': function(element) { return getPixelValue(element, 'paddingTop'); }, 'padding-bottom': function(element) { return getPixelValue(element, 'paddingBottom'); }, 'padding-left': function(element) { return getPixelValue(element, 'paddingLeft'); }, 'padding-right': function(element) { return getPixelValue(element, 'paddingRight'); }, 'border-top': function(element) { return getPixelValue(element, 'borderTopWidth'); }, 'border-bottom': function(element) { return getPixelValue(element, 'borderBottomWidth'); }, 'border-left': function(element) { return getPixelValue(element, 'borderLeftWidth'); }, 'border-right': function(element) { return getPixelValue(element, 'borderRightWidth'); }, 'margin-top': function(element) { return getPixelValue(element, 'marginTop'); }, 'margin-bottom': function(element) { return getPixelValue(element, 'marginBottom'); }, 'margin-left': function(element) { return getPixelValue(element, 'marginLeft'); }, 'margin-right': function(element) { return getPixelValue(element, 'marginRight'); } } }); if ('getBoundingClientRect' in document.documentElement) { Object.extend(Element.Layout.COMPUTATIONS, { 'right': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.right - rect.right).round(); }, 'bottom': function(element) { var parent = hasLayout(element.getOffsetParent()); var rect = element.getBoundingClientRect(), pRect = parent.getBoundingClientRect(); return (pRect.bottom - rect.bottom).round(); } }); } Element.Offset = Class.create({ initialize: function(left, top) { this.left = left.round(); this.top = top.round(); this[0] = this.left; this[1] = this.top; }, relativeTo: function(offset) { return new Element.Offset( this.left - offset.left, this.top - offset.top ); }, inspect: function() { return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this); }, toString: function() { return "[#{left}, #{top}]".interpolate(this); }, toArray: function() { return [this.left, this.top]; } }); function getLayout(element, preCompute) { return new Element.Layout(element, preCompute); } function measure(element, property) { return $(element).getLayout().get(property); } function getDimensions(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display !== 'none') { return { width: element.offsetWidth, height: element.offsetHeight }; } var style = element.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') newStyles.position = 'absolute'; Element.setStyle(element, newStyles); var dimensions = { width: element.offsetWidth, height: element.offsetHeight }; Element.setStyle(element, originalStyles); return dimensions; } // Implementing a new method to avoid retesting the entire application with clientHeight function getDimensionsEx(element) { element = $(element); var display = Element.getStyle(element, 'display'); if (display && display != 'none') { // Safari bug return {width: element.clientWidth, height: element.clientHeight}; } return getDimensions(element); } function getOffsetParent(element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var isInline = (Element.getStyle(element, 'display') === 'inline'); if (!isInline && element.offsetParent) return $(element.offsetParent); while ((element = element.parentNode) && element !== document.body) { if (Element.getStyle(element, 'position') !== 'static') { return isHtml(element) ? $(document.body) : $(element); } } return $(document.body); } function cumulativeOffset(element) { element = $(element); var valueT = 0, valueL = 0; if (element.parentNode) { do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); } return new Element.Offset(valueL, valueT); } function positionedOffset(element) { element = $(element); var layout = element.getLayout(); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (isBody(element)) break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); valueL -= layout.get('margin-top'); valueT -= layout.get('margin-left'); return new Element.Offset(valueL, valueT); } function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return new Element.Offset(valueL, valueT); } function viewportOffset(forElement) { element = $(element); var valueT = 0, valueL = 0, docBody = document.body; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == docBody && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (element != docBody) { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return new Element.Offset(valueL, valueT); } function absolutize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'absolute') { return element; } var offsetParent = getOffsetParent(element); var eOffset = element.viewportOffset(), pOffset = offsetParent.viewportOffset(); var offset = eOffset.relativeTo(pOffset); var layout = element.getLayout(); element.store('prototype_absolutize_original_styles', { left: element.getStyle('left'), top: element.getStyle('top'), width: element.getStyle('width'), height: element.getStyle('height') }); element.setStyle({ position: 'absolute', top: offset.top + 'px', left: offset.left + 'px', width: layout.get('width') + 'px', height: layout.get('height') + 'px' }); return element; } function relativize(element) { element = $(element); if (Element.getStyle(element, 'position') === 'relative') { return element; } var originalStyles = element.retrieve('prototype_absolutize_original_styles'); if (originalStyles) element.setStyle(originalStyles); return element; } if (Prototype.Browser.IE) { getOffsetParent = getOffsetParent.wrap( function(proceed, element) { element = $(element); if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element)) return $(document.body); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; } ); positionedOffset = positionedOffset.wrap(function(proceed, element) { element = $(element); if (!element.parentNode) return new Element.Offset(0, 0); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed') hasLayout(offsetParent); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); } else if (Prototype.Browser.Webkit) { cumulativeOffset = function(element) { element = $(element); var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body) if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent; } while (element); return new Element.Offset(valueL, valueT); }; } Element.addMethods({ getLayout: getLayout, measure: measure, getDimensions: getDimensions, getDimensionsEx: getDimensionsEx, getOffsetParent: getOffsetParent, cumulativeOffset: cumulativeOffset, positionedOffset: positionedOffset, cumulativeScrollOffset: cumulativeScrollOffset, viewportOffset: viewportOffset, absolutize: absolutize, relativize: relativize }); function isBody(element) { return element.nodeName.toUpperCase() === 'BODY'; } function isHtml(element) { return element.nodeName.toUpperCase() === 'HTML'; } function isDocument(element) { return element.nodeType === Node.DOCUMENT_NODE; } function isDetached(element) { return element !== document.body && !Element.descendantOf(element, document.body); } if ('getBoundingClientRect' in document.documentElement) { Element.addMethods({ viewportOffset: function(element) { element = $(element); if (isDetached(element)) return new Element.Offset(0, 0); var rect = element.getBoundingClientRect(), docEl = document.documentElement; return new Element.Offset(rect.left - docEl.clientLeft, rect.top - docEl.clientTop); } }); } })(); window.$$ = function() { var expression = $A(arguments).join(', '); return Prototype.Selector.select(expression, document); }; Prototype.Selector = (function() { function select() { throw new Error('Method "Prototype.Selector.select" must be defined.'); } function match() { throw new Error('Method "Prototype.Selector.match" must be defined.'); } function find(elements, expression, index) { index = index || 0; var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i; for (i = 0; i < length; i++) { if (match(elements[i], expression) && index == matchIndex++) { return Element.extend(elements[i]); } } } function extendElements(elements) { for (var i = 0, length = elements.length; i < length; i++) { Element.extend(elements[i]); } return elements; } var K = Prototype.K; return { select: select, match: match, find: find, extendElements: (Element.extend === K) ? K : extendElements, extendElement: Element.extend }; })(); Prototype._original_property = window.Sizzle; /*! * Sizzle CSS Selector Engine - v1.0 * Copyright 2009, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * More information: http://sizzlejs.com/ */ (function(){ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, done = 0, toString = Object.prototype.toString, hasDuplicate = false, baseHasDuplicate = true; [0, 0].sort(function(){ baseHasDuplicate = false; return 0; }); var Sizzle = function(selector, context, results, seed) { results = results || []; var origContext = context = context || document; if ( context.nodeType !== 1 && context.nodeType !== 9 ) { return []; } if ( !selector || typeof selector !== "string" ) { return results; } var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), soFar = selector; while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { soFar = m[3]; parts.push( m[1] ); if ( m[2] ) { extra = m[3]; break; } } if ( parts.length > 1 && origPOS.exec( selector ) ) { if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { set = posProcess( parts[0] + parts[1], context ); } else { set = Expr.relative[ parts[0] ] ? [ context ] : Sizzle( parts.shift(), context ); while ( parts.length ) { selector = parts.shift(); if ( Expr.relative[ selector ] ) selector += parts.shift(); set = posProcess( selector, set ); } } } else { if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { var ret = Sizzle.find( parts.shift(), context, contextXML ); context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; } if ( context ) { var ret = seed ? { expr: parts.pop(), set: makeArray(seed) } : Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; if ( parts.length > 0 ) { checkSet = makeArray(set); } else { prune = false; } while ( parts.length ) { var cur = parts.pop(), pop = cur; if ( !Expr.relative[ cur ] ) { cur = ""; } else { pop = parts.pop(); } if ( pop == null ) { pop = context; } Expr.relative[ cur ]( checkSet, pop, contextXML ); } } else { checkSet = parts = []; } } if ( !checkSet ) { checkSet = set; } if ( !checkSet ) { throw "Syntax error, unrecognized expression: " + (cur || selector); } if ( toString.call(checkSet) === "[object Array]" ) { if ( !prune ) { results.push.apply( results, checkSet ); } else if ( context && context.nodeType === 1 ) { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { results.push( set[i] ); } } } else { for ( var i = 0; checkSet[i] != null; i++ ) { if ( checkSet[i] && checkSet[i].nodeType === 1 ) { results.push( set[i] ); } } } } else { makeArray( checkSet, results ); } if ( extra ) { Sizzle( extra, origContext, results, seed ); Sizzle.uniqueSort( results ); } return results; }; Sizzle.uniqueSort = function(results){ if ( sortOrder ) { hasDuplicate = baseHasDuplicate; results.sort(sortOrder); if ( hasDuplicate ) { for ( var i = 1; i < results.length; i++ ) { if ( results[i] === results[i-1] ) { results.splice(i--, 1); } } } } return results; }; Sizzle.matches = function(expr, set){ return Sizzle(expr, null, null, set); }; Sizzle.find = function(expr, context, isXML){ var set, match; if ( !expr ) { return []; } for ( var i = 0, l = Expr.order.length; i < l; i++ ) { var type = Expr.order[i], match; if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { var left = match[1]; match.splice(1,1); if ( left.substr( left.length - 1 ) !== "\\" ) { match[1] = (match[1] || "").replace(/\\/g, ""); set = Expr.find[ type ]( match, context, isXML ); if ( set != null ) { expr = expr.replace( Expr.match[ type ], "" ); break; } } } } if ( !set ) { set = context.getElementsByTagName("*"); } return {set: set, expr: expr}; }; Sizzle.filter = function(expr, set, inplace, not){ var old = expr, result = [], curLoop = set, match, anyFound, isXMLFilter = set && set[0] && isXML(set[0]); while ( expr && set.length ) { for ( var type in Expr.filter ) { if ( (match = Expr.match[ type ].exec( expr )) != null ) { var filter = Expr.filter[ type ], found, item; anyFound = false; if ( curLoop == result ) { result = []; } if ( Expr.preFilter[ type ] ) { match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); if ( !match ) { anyFound = found = true; } else if ( match === true ) { continue; } } if ( match ) { for ( var i = 0; (item = curLoop[i]) != null; i++ ) { if ( item ) { found = filter( item, match, i, curLoop ); var pass = not ^ !!found; if ( inplace && found != null ) { if ( pass ) { anyFound = true; } else { curLoop[i] = false; } } else if ( pass ) { result.push( item ); anyFound = true; } } } } if ( found !== undefined ) { if ( !inplace ) { curLoop = result; } expr = expr.replace( Expr.match[ type ], "" ); if ( !anyFound ) { return []; } break; } } } if ( expr == old ) { if ( anyFound == null ) { throw "Syntax error, unrecognized expression: " + expr; } else { break; } } old = expr; } return curLoop; }; var Expr = Sizzle.selectors = { order: [ "ID", "NAME", "TAG" ], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(elem){ return elem.getAttribute("href"); } }, relative: { "+": function(checkSet, part, isXML){ var isPartStr = typeof part === "string", isTag = isPartStr && !/\W/.test(part), isPartStrNotTag = isPartStr && !isTag; if ( isTag && !isXML ) { part = part.toUpperCase(); } for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { if ( (elem = checkSet[i]) ) { while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? elem || false : elem === part; } } if ( isPartStrNotTag ) { Sizzle.filter( part, checkSet, true ); } }, ">": function(checkSet, part, isXML){ var isPartStr = typeof part === "string"; if ( isPartStr && !/\W/.test(part) ) { part = isXML ? part : part.toUpperCase(); for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { var parent = elem.parentNode; checkSet[i] = parent.nodeName === part ? parent : false; } } } else { for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { checkSet[i] = isPartStr ? elem.parentNode : elem.parentNode === part; } } if ( isPartStr ) { Sizzle.filter( part, checkSet, true ); } } }, "": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); }, "~": function(checkSet, part, isXML){ var doneName = done++, checkFn = dirCheck; if ( typeof part === "string" && !/\W/.test(part) ) { var nodeCheck = part = isXML ? part : part.toUpperCase(); checkFn = dirNodeCheck; } checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); } }, find: { ID: function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? [m] : []; } }, NAME: function(match, context, isXML){ if ( typeof context.getElementsByName !== "undefined" ) { var ret = [], results = context.getElementsByName(match[1]); for ( var i = 0, l = results.length; i < l; i++ ) { if ( results[i].getAttribute("name") === match[1] ) { ret.push( results[i] ); } } return ret.length === 0 ? null : ret; } }, TAG: function(match, context){ return context.getElementsByTagName(match[1]); } }, preFilter: { CLASS: function(match, curLoop, inplace, result, not, isXML){ match = " " + match[1].replace(/\\/g, "") + " "; if ( isXML ) { return match; } for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { if ( elem ) { if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { if ( !inplace ) result.push( elem ); } else if ( inplace ) { curLoop[i] = false; } } } return false; }, ID: function(match){ return match[1].replace(/\\/g, ""); }, TAG: function(match, curLoop){ for ( var i = 0; curLoop[i] === false; i++ ){} return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); }, CHILD: function(match){ if ( match[1] == "nth" ) { var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); match[2] = (test[1] + (test[2] || 1)) - 0; match[3] = test[3] - 0; } match[0] = done++; return match; }, ATTR: function(match, curLoop, inplace, result, not, isXML){ var name = match[1].replace(/\\/g, ""); if ( !isXML && Expr.attrMap[name] ) { match[1] = Expr.attrMap[name]; } if ( match[2] === "~=" ) { match[4] = " " + match[4] + " "; } return match; }, PSEUDO: function(match, curLoop, inplace, result, not){ if ( match[1] === "not" ) { if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { match[3] = Sizzle(match[3], null, null, curLoop); } else { var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); if ( !inplace ) { result.push.apply( result, ret ); } return false; } } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { return true; } return match; }, POS: function(match){ match.unshift( true ); return match; } }, filters: { enabled: function(elem){ return elem.disabled === false && elem.type !== "hidden"; }, disabled: function(elem){ return elem.disabled === true; }, checked: function(elem){ return elem.checked === true; }, selected: function(elem){ elem.parentNode.selectedIndex; return elem.selected === true; }, parent: function(elem){ return !!elem.firstChild; }, empty: function(elem){ return !elem.firstChild; }, has: function(elem, i, match){ return !!Sizzle( match[3], elem ).length; }, header: function(elem){ return /h\d/i.test( elem.nodeName ); }, text: function(elem){ return "text" === elem.type; }, radio: function(elem){ return "radio" === elem.type; }, checkbox: function(elem){ return "checkbox" === elem.type; }, file: function(elem){ return "file" === elem.type; }, password: function(elem){ return "password" === elem.type; }, submit: function(elem){ return "submit" === elem.type; }, image: function(elem){ return "image" === elem.type; }, reset: function(elem){ return "reset" === elem.type; }, button: function(elem){ return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; }, input: function(elem){ return /input|select|textarea|button/i.test(elem.nodeName); } }, setFilters: { first: function(elem, i){ return i === 0; }, last: function(elem, i, match, array){ return i === array.length - 1; }, even: function(elem, i){ return i % 2 === 0; }, odd: function(elem, i){ return i % 2 === 1; }, lt: function(elem, i, match){ return i < match[3] - 0; }, gt: function(elem, i, match){ return i > match[3] - 0; }, nth: function(elem, i, match){ return match[3] - 0 == i; }, eq: function(elem, i, match){ return match[3] - 0 == i; } }, filter: { PSEUDO: function(elem, match, i, array){ var name = match[1], filter = Expr.filters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } else if ( name === "contains" ) { return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; } else if ( name === "not" ) { var not = match[3]; for ( var i = 0, l = not.length; i < l; i++ ) { if ( not[i] === elem ) { return false; } } return true; } }, CHILD: function(elem, match){ var type = match[1], node = elem; switch (type) { case 'only': case 'first': while ( (node = node.previousSibling) ) { if ( node.nodeType === 1 ) return false; } if ( type == 'first') return true; node = elem; case 'last': while ( (node = node.nextSibling) ) { if ( node.nodeType === 1 ) return false; } return true; case 'nth': var first = match[2], last = match[3]; if ( first == 1 && last == 0 ) { return true; } var doneName = match[0], parent = elem.parentNode; if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { var count = 0; for ( node = parent.firstChild; node; node = node.nextSibling ) { if ( node.nodeType === 1 ) { node.nodeIndex = ++count; } } parent.sizcache = doneName; } var diff = elem.nodeIndex - last; if ( first == 0 ) { return diff == 0; } else { return ( diff % first == 0 && diff / first >= 0 ); } } }, ID: function(elem, match){ return elem.nodeType === 1 && elem.getAttribute("id") === match; }, TAG: function(elem, match){ return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; }, CLASS: function(elem, match){ return (" " + (elem.className || elem.getAttribute("class")) + " ") .indexOf( match ) > -1; }, ATTR: function(elem, match){ var name = match[1], result = Expr.attrHandle[ name ] ? Expr.attrHandle[ name ]( elem ) : elem[ name ] != null ? elem[ name ] : elem.getAttribute( name ), value = result + "", type = match[2], check = match[4]; return result == null ? type === "!=" : type === "=" ? value === check : type === "*=" ? value.indexOf(check) >= 0 : type === "~=" ? (" " + value + " ").indexOf(check) >= 0 : !check ? value && result !== false : type === "!=" ? value != check : type === "^=" ? value.indexOf(check) === 0 : type === "$=" ? value.substr(value.length - check.length) === check : type === "|=" ? value === check || value.substr(0, check.length + 1) === check + "-" : false; }, POS: function(elem, match, i, array){ var name = match[2], filter = Expr.setFilters[ name ]; if ( filter ) { return filter( elem, i, match, array ); } } } }; var origPOS = Expr.match.POS; for ( var type in Expr.match ) { Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); } var makeArray = function(array, results) { array = Array.prototype.slice.call( array, 0 ); if ( results ) { results.push.apply( results, array ); return results; } return array; }; try { Array.prototype.slice.call( document.documentElement.childNodes, 0 ); } catch(e){ makeArray = function(array, results) { var ret = results || []; if ( toString.call(array) === "[object Array]" ) { Array.prototype.push.apply( ret, array ); } else { if ( typeof array.length === "number" ) { for ( var i = 0, l = array.length; i < l; i++ ) { ret.push( array[i] ); } } else { for ( var i = 0; array[i]; i++ ) { ret.push( array[i] ); } } } return ret; }; } var sortOrder; if ( document.documentElement.compareDocumentPosition ) { sortOrder = function( a, b ) { if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( "sourceIndex" in document.documentElement ) { sortOrder = function( a, b ) { if ( !a.sourceIndex || !b.sourceIndex ) { if ( a == b ) { hasDuplicate = true; } return 0; } var ret = a.sourceIndex - b.sourceIndex; if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } else if ( document.createRange ) { sortOrder = function( a, b ) { if ( !a.ownerDocument || !b.ownerDocument ) { if ( a == b ) { hasDuplicate = true; } return 0; } var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); aRange.setStart(a, 0); aRange.setEnd(a, 0); bRange.setStart(b, 0); bRange.setEnd(b, 0); var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); if ( ret === 0 ) { hasDuplicate = true; } return ret; }; } (function(){ var form = document.createElement("div"), id = "script" + (new Date).getTime(); form.innerHTML = "<a name='" + id + "'/>"; var root = document.documentElement; root.insertBefore( form, root.firstChild ); if ( !!document.getElementById( id ) ) { Expr.find.ID = function(match, context, isXML){ if ( typeof context.getElementById !== "undefined" && !isXML ) { var m = context.getElementById(match[1]); return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; } }; Expr.filter.ID = function(elem, match){ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return elem.nodeType === 1 && node && node.nodeValue === match; }; } root.removeChild( form ); root = form = null; // release memory in IE })(); (function(){ var div = document.createElement("div"); div.appendChild( document.createComment("") ); if ( div.getElementsByTagName("*").length > 0 ) { Expr.find.TAG = function(match, context){ var results = context.getElementsByTagName(match[1]); if ( match[1] === "*" ) { var tmp = []; for ( var i = 0; results[i]; i++ ) { if ( results[i].nodeType === 1 ) { tmp.push( results[i] ); } } results = tmp; } return results; }; } div.innerHTML = "<a href='#'></a>"; if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && div.firstChild.getAttribute("href") !== "#" ) { Expr.attrHandle.href = function(elem){ return elem.getAttribute("href", 2); }; } div = null; // release memory in IE })(); if ( document.querySelectorAll ) (function(){ var oldSizzle = Sizzle, div = document.createElement("div"); div.innerHTML = "<p class='TEST'></p>"; if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { return; } Sizzle = function(query, context, extra, seed){ context = context || document; if ( !seed && context.nodeType === 9 && !isXML(context) ) { try { return makeArray( context.querySelectorAll(query), extra ); } catch(e){} } return oldSizzle(query, context, extra, seed); }; for ( var prop in oldSizzle ) { Sizzle[ prop ] = oldSizzle[ prop ]; } div = null; // release memory in IE })(); if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ var div = document.createElement("div"); div.innerHTML = "<div class='test e'></div><div class='test'></div>"; if ( div.getElementsByClassName("e").length === 0 ) return; div.lastChild.className = "e"; if ( div.getElementsByClassName("e").length === 1 ) return; Expr.order.splice(1, 0, "CLASS"); Expr.find.CLASS = function(match, context, isXML) { if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { return context.getElementsByClassName(match[1]); } }; div = null; // release memory in IE })(); function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ){ elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 && !isXML ){ elem.sizcache = doneName; elem.sizset = i; } if ( elem.nodeName === cur ) { match = elem; break; } elem = elem[dir]; } checkSet[i] = match; } } } function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { var sibDir = dir == "previousSibling" && !isXML; for ( var i = 0, l = checkSet.length; i < l; i++ ) { var elem = checkSet[i]; if ( elem ) { if ( sibDir && elem.nodeType === 1 ) { elem.sizcache = doneName; elem.sizset = i; } elem = elem[dir]; var match = false; while ( elem ) { if ( elem.sizcache === doneName ) { match = checkSet[elem.sizset]; break; } if ( elem.nodeType === 1 ) { if ( !isXML ) { elem.sizcache = doneName; elem.sizset = i; } if ( typeof cur !== "string" ) { if ( elem === cur ) { match = true; break; } } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { match = elem; break; } } elem = elem[dir]; } checkSet[i] = match; } } } var contains = document.compareDocumentPosition ? function(a, b){ return a.compareDocumentPosition(b) & 16; } : function(a, b){ return a !== b && (a.contains ? a.contains(b) : true); }; var isXML = function(elem){ return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; }; var posProcess = function(selector, context){ var tmpSet = [], later = "", match, root = context.nodeType ? [context] : context; while ( (match = Expr.match.PSEUDO.exec( selector )) ) { later += match[0]; selector = selector.replace( Expr.match.PSEUDO, "" ); } selector = Expr.relative[selector] ? selector + "*" : selector; for ( var i = 0, l = root.length; i < l; i++ ) { Sizzle( selector, root[i], tmpSet ); } return Sizzle.filter( later, tmpSet ); }; window.Sizzle = Sizzle; })(); ;(function(engine) { var extendElements = Prototype.Selector.extendElements; function select(selector, scope) { return extendElements(engine(selector, scope || document)); } function match(element, selector) { return engine.matches(selector, [element]).length == 1; } Prototype.Selector.engine = engine; Prototype.Selector.select = select; Prototype.Selector.match = match; })(Sizzle); window.Sizzle = Prototype._original_property; delete Prototype._original_property; var Form = { reset: function(form) { form = $(form); form.reset(); return form; }, serializeElements: function(elements, options) { if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit, accumulator, initial; if (options.hash) { initial = {}; accumulator = function(result, key, value) { if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); } else result[key] = value; return result; }; } else { initial = ''; accumulator = function(result, key, value) { return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value); } } return elements.inject(initial, function(result, element) { if (!element.disabled && element.name) { key = element.name; value = $(element).getValue(); if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) { result = accumulator(result, key, value); } } return result; }); } }; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) { var elements = $(form).getElementsByTagName('*'), element, arr = [ ], serializers = Form.Element.Serializers; for (var i = 0; element = elements[i]; i++) { arr.push(element); } return arr.inject([], function(elements, child) { if (serializers[child.tagName.toLowerCase()]) elements.push(Element.extend(child)); return elements; }) }, getInputs: function(form, typeName, name) { form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name)) continue; matchingInputs.push(Element.extend(input)); } return matchingInputs; }, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return /^(?:input|select|textarea)$/i.test(element.tagName); }); }, focusFirstElement: function(form) { form = $(form); var element = form.findFirstElement(); if (element) element.activate(); return form; }, request: function(form, options) { form = $(form), options = Object.clone(options || { }); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); } if (form.hasAttribute('method') && !options.method) options.method = form.method; return new Ajax.Request(action, options); } }; /*--------------------------------------------------------------------------*/ Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) { element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = { }; pair[element.name] = value; return Object.toQueryString(pair); } } return ''; }, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) { element = $(element); try { element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !(/^(?:button|reset|submit)$/i.test(element.type)))) element.select(); } catch (e) { } return element; }, disable: function(element) { element = $(element); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; } }; /*--------------------------------------------------------------------------*/ var Field = Form.Element; var $F = Form.Element.Methods.getValue; /*--------------------------------------------------------------------------*/ Form.Element.Serializers = (function() { function input(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return inputSelector(element, value); default: return valueSelector(element, value); } } function inputSelector(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; } function valueSelector(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; } function select(element, value) { if (Object.isUndefined(value)) return (element.type === 'select-one' ? selectOne : selectMany)(element); var opt, currentValue, single = !Object.isArray(value); for (var i = 0, length = element.length; i < length; i++) { opt = element.options[i]; currentValue = this.optionValue(opt); if (single) { if (currentValue == value) { opt.selected = true; return; } } else opt.selected = value.include(currentValue); } } function selectOne(element) { var index = element.selectedIndex; return index >= 0 ? optionValue(element.options[index]) : null; } function selectMany(element) { var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(optionValue(opt)); } return values; } function optionValue(opt) { return Element.hasAttribute(opt, 'value') ? opt.value : opt.text; } return { input: input, inputSelector: inputSelector, textarea: valueSelector, select: select, selectOne: selectOne, selectMany: selectMany, optionValue: optionValue, button: valueSelector }; })(); /*--------------------------------------------------------------------------*/ Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); /*--------------------------------------------------------------------------*/ Abstract.EventObserver = Class.create({ initialize: function(element, callback) { this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form') this.registerFormCallbacks(); else this.registerCallback(this.element); }, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); (function() { var Event = { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {} }; var docEl = document.documentElement; var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl && 'onmouseleave' in docEl; var isIELegacyEvent = function(event) { return false; }; if (window.attachEvent) { if (window.addEventListener) { isIELegacyEvent = function(event) { return !(event instanceof window.Event); }; } else { isIELegacyEvent = function(event) { return true; }; } } var _isButton; function _isButtonForDOMEvents(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); } var legacyButtonMap = { 0: 1, 1: 4, 2: 2 }; function _isButtonForLegacyEvents(event, code) { return event.button === legacyButtonMap[code]; } function _isButtonForWebKit(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 2 || (event.which == 1 && event.metaKey); case 2: return event.which == 3; default: return false; } } if (window.attachEvent) { if (!window.addEventListener) { _isButton = _isButtonForLegacyEvents; } else { _isButton = function(event, code) { return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) : _isButtonForDOMEvents(event, code); } } } else if (Prototype.Browser.WebKit) { _isButton = _isButtonForWebKit; } else { _isButton = _isButtonForDOMEvents; } function isLeftClick(event) { return _isButton(event, 0) } function isMiddleClick(event) { return _isButton(event, 1) } function isRightClick(event) { return _isButton(event, 2) } function element(event) { event = Event.extend(event); var node = event.target, type = event.type, currentTarget = event.currentTarget; if (currentTarget && currentTarget.tagName) { if (type === 'load' || type === 'error' || (type === 'click' && currentTarget.tagName.toLowerCase() === 'input' && currentTarget.type === 'radio')) node = currentTarget; } if (node.nodeType == Node.TEXT_NODE) node = node.parentNode; return Element.extend(node); } function findElement(event, expression) { var element = Event.element(event); if (!expression) return element; while (element) { if (Object.isElement(element) && Prototype.Selector.match(element, expression)) { return Element.extend(element); } element = element.parentNode; } } function pointer(event) { return { x: pointerX(event), y: pointerY(event) }; } function pointerX(event) { var docElement = document.documentElement, body = document.body || { scrollLeft: 0 }; return event.pageX || (event.clientX + (docElement.scrollLeft || body.scrollLeft) - (docElement.clientLeft || 0)); } function pointerY(event) { var docElement = document.documentElement, body = document.body || { scrollTop: 0 }; return event.pageY || (event.clientY + (docElement.scrollTop || body.scrollTop) - (docElement.clientTop || 0)); } function stop(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; } Event.Methods = { isLeftClick: isLeftClick, isMiddleClick: isMiddleClick, isRightClick: isRightClick, element: element, findElement: findElement, pointer: pointer, pointerX: pointerX, pointerY: pointerY, stop: stop }; var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (window.attachEvent) { function _relatedTarget(event) { var element; switch (event.type) { case 'mouseover': case 'mouseenter': element = event.fromElement; break; case 'mouseout': case 'mouseleave': element = event.toElement; break; default: return null; } return Element.extend(element); } var additionalMethods = { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return '[object Event]' } }; Event.extend = function(event, element) { if (!event) return false; if (!isIELegacyEvent(event)) return event; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement || element, relatedTarget: _relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); Object.extend(event, methods); Object.extend(event, additionalMethods); return event; }; } else { Event.extend = Prototype.K; } if (window.addEventListener) { Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__; Object.extend(Event.prototype, methods); } function _createResponder(element, eventName, handler) { var registry = Element.retrieve(element, 'prototype_event_registry'); if (Object.isUndefined(registry)) { CACHE.push(element); registry = Element.retrieve(element, 'prototype_event_registry', $H()); } var respondersForEvent = registry.get(eventName); if (Object.isUndefined(respondersForEvent)) { respondersForEvent = []; registry.set(eventName, respondersForEvent); } if (respondersForEvent.pluck('handler').include(handler)) return false; var responder; if (eventName.include(":")) { responder = function(event) { if (Object.isUndefined(event.eventName)) return false; if (event.eventName !== eventName) return false; Event.extend(event, element); handler.call(element, event); }; } else { if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED && (eventName === "mouseenter" || eventName === "mouseleave")) { if (eventName === "mouseenter" || eventName === "mouseleave") { responder = function(event) { Event.extend(event, element); var parent = event.relatedTarget; while (parent && parent !== element) { try { parent = parent.parentNode; } catch(e) { parent = element; } } if (parent === element) return; handler.call(element, event); }; } } else { if (eventName === "beforeunload") { responder = function(event) { Event.extend(event, element); return handler.call(element, event); }; } else { responder = function(event) { Event.extend(event, element); handler.call(element, event); }; } } } responder.handler = handler; respondersForEvent.push(responder); return responder; } function _destroyCache() { for (var i = 0, length = CACHE.length; i < length; i++) { Event.stopObserving(CACHE[i]); CACHE[i] = null; } } var CACHE = []; if (Prototype.Browser.IE) window.attachEvent('onunload', _destroyCache); if (Prototype.Browser.WebKit) window.addEventListener('unload', Prototype.emptyFunction, false); var _getDOMEventName = Prototype.K, translations = { mouseenter: "mouseover", mouseleave: "mouseout" }; if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) { _getDOMEventName = function(eventName) { return (translations[eventName] || eventName); }; } function observe(element, eventName, handler) { element = $(element); var responder = _createResponder(element, eventName, handler); if (!responder) return element; if (eventName.include(':')) { if (element.addEventListener) element.addEventListener("dataavailable", responder, false); else { element.attachEvent("ondataavailable", responder); element.attachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.addEventListener) element.addEventListener(actualEventName, responder, false); else element.attachEvent("on" + actualEventName, responder); } return element; } function stopObserving(element, eventName, handler) { element = $(element); var registry = Element.retrieve(element, 'prototype_event_registry'); if (!registry) return element; if (!eventName) { registry.each( function(pair) { var eventName = pair.key; stopObserving(element, eventName); }); return element; } var responders = registry.get(eventName); if (!responders) return element; if (!handler) { responders.each(function(r) { stopObserving(element, eventName, r.handler); }); return element; } var i = responders.length, responder; while (i--) { if (responders[i].handler === handler) { responder = responders[i]; break; } } if (!responder) return element; if (eventName.include(':')) { if (element.removeEventListener) element.removeEventListener("dataavailable", responder, false); else { element.detachEvent("ondataavailable", responder); element.detachEvent("onlosecapture", responder); } } else { var actualEventName = _getDOMEventName(eventName); if (element.removeEventListener) element.removeEventListener(actualEventName, responder, false); else element.detachEvent('on' + actualEventName, responder); } registry.set(eventName, responders.without(responder)); return element; } function fire(element, eventName, memo, bubble) { element = $(element); if (Object.isUndefined(bubble)) bubble = true; if (element == document && document.createEvent && !element.dispatchEvent) element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent('HTMLEvents'); event.initEvent('dataavailable', bubble, true); } else { event = document.createEventObject(); event.eventType = bubble ? 'ondataavailable' : 'onlosecapture'; } event.eventName = eventName; event.memo = memo || { }; if (document.createEvent) element.dispatchEvent(event); else element.fireEvent(event.eventType, event); return Event.extend(event); } Event.Handler = Class.create({ initialize: function(element, eventName, selector, callback) { this.element = $(element); this.eventName = eventName; this.selector = selector; this.callback = callback; this.handler = this.handleEvent.bind(this); }, start: function() { Event.observe(this.element, this.eventName, this.handler); return this; }, stop: function() { Event.stopObserving(this.element, this.eventName, this.handler); return this; }, handleEvent: function(event) { var element = Event.findElement(event, this.selector); if (element) this.callback.call(this.element, event, element); } }); function on(element, eventName, selector, callback) { element = $(element); if (Object.isFunction(selector) && Object.isUndefined(callback)) { callback = selector, selector = null; } return new Event.Handler(element, eventName, selector, callback).start(); } Object.extend(Event, Event.Methods); Object.extend(Event, { fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Element.addMethods({ fire: fire, observe: observe, stopObserving: stopObserving, on: on }); Object.extend(document, { fire: fire.methodize(), observe: observe.methodize(), stopObserving: stopObserving.methodize(), on: on.methodize(), loaded: false }); if (window.Event) Object.extend(window.Event, Event); else window.Event = Event; })(); (function() { /* Support for the DOMContentLoaded event is based on work by Dan Webb, Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */ var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearTimeout(timer); document.loaded = true; document.fire('dom:loaded'); } function checkReadyState() { if (document.readyState === 'complete') { document.stopObserving('readystatechange', checkReadyState); fireContentLoadedEvent(); } } function pollDoScroll() { try { document.documentElement.doScroll('left'); } catch(e) { timer = pollDoScroll.defer(); return; } fireContentLoadedEvent(); } if (document.addEventListener) { document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); } else { document.observe('readystatechange', checkReadyState); if (window == top) timer = pollDoScroll.defer(); } Event.observe(window, 'load', fireContentLoadedEvent); })(); Element.addMethods(); /*------------------------------- DEPRECATED -------------------------------*/ Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, {before:content}); }, Top: function(element, content) { return Element.insert(element, {top:content}); }, Bottom: function(element, content) { return Element.insert(element, {bottom:content}); }, After: function(element, content) { return Element.insert(element, {after:content}); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) { if (this.includeScrollOffsets) return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth); }, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) { if (!mode) return 0; if (mode == 'vertical') return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal') return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth; }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || { }; return Element.clonePosition(target, source, options); } }; /*--------------------------------------------------------------------------*/ if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){ function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; } var _getElementsByClassName = instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) { className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) { if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); })))) elements.push(Element.extend(child)); } return elements; }; return function(className, parentElement) { return _getElementsByClassName( parentElement || document.body, className ); }; }(Element.Methods); /*--------------------------------------------------------------------------*/ Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); /*--------------------------------------------------------------------------*/ (function() { window.Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); }, findElements: function(rootElement) { return Prototype.Selector.select(this.expression, rootElement); }, match: function(element) { return Prototype.Selector.match(element, this.expression); }, toString: function() { return this.expression; }, inspect: function() { return "#<Selector: " + this.expression + ">"; } }); Object.extend(Selector, { matchElements: function(elements, expression) { var match = Prototype.Selector.match, results = []; for (var i = 0, length = elements.length; i < length; i++) { var element = elements[i]; if (match(element, expression)) { results.push(Element.extend(element)); } } return results; }, findElement: function(elements, expression, index) { index = index || 0; var matchIndex = 0, element; for (var i = 0, length = elements.length; i < length; i++) { element = elements[i]; if (Prototype.Selector.match(element, expression) && index === matchIndex++) { return Element.extend(element); } } }, findChildElements: function(element, expressions) { var selector = expressions.toArray().join(', '); return Prototype.Selector.select(selector, element || document); } }); })(); /* * * Copyright (c) 2007 Andrew Tetlaw * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * * * * FastInit * http://tetlaw.id.au/view/javascript/fastinit * Andrew Tetlaw * Version 1.4.1 (2007-03-15) * Based on: * http://dean.edwards.name/weblog/2006/03/faster * http://dean.edwards.name/weblog/2006/06/again/ * Help from: * http://www.cherny.com/webdev/26/domloaded-object-literal-updated * */ var FastInit = { onload : function() { if (FastInit.done) { return; } FastInit.done = true; for(var x = 0, al = FastInit.f.length; x < al; x++) { FastInit.f[x](); } }, addOnLoad : function() { var a = arguments; for(var x = 0, al = a.length; x < al; x++) { if(typeof a[x] === 'function') { if (FastInit.done ) { a[x](); } else { FastInit.f.push(a[x]); } } } }, listen : function() { if (/WebKit|khtml/i.test(navigator.userAgent)) { FastInit.timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(FastInit.timer); delete FastInit.timer; FastInit.onload(); }}, 10); } else if (document.addEventListener) { document.addEventListener('DOMContentLoaded', FastInit.onload, false); } else if(!FastInit.iew32) { if(window.addEventListener) { window.addEventListener('load', FastInit.onload, false); } else if (window.attachEvent) { return window.attachEvent('onload', FastInit.onload); } } }, f:[],done:false,timer:null,iew32:false }; /*@cc_on @*/ /*@if (@_win32) FastInit.iew32 = true; document.write('<script id="__ie_onload" defer src="' + ((location.protocol == 'https:') ? '//0' : 'javascript:void(0)') + '"><\/script>'); document.getElementById('__ie_onload').onreadystatechange = function(){if (this.readyState == 'complete') { FastInit.onload(); }}; /*@end @*/ FastInit.listen(); /** * Only include the contents of this file once - for example, if this is included in a lightbox we don't want to re-run * all of this - just use the loaded version. (i.e. rerunning would clear page.bundle which would remove all the * language strings for the current page) */ if (!window.page) { var page = {}; page.isLoaded = false; /** * Utility for adding and using localized messages on the page. */ page.bundle = {}; page.bundle.messages = {}; page.bundle.addKey = function( key, value ) { page.bundle.messages[key] = value; }; page.bundle.getString = function( key /*, arg1, arg2, ..., argN */ ) { var result = page.bundle.messages[key]; if ( !result ) { return "!!!!" + key + "!!!!!"; } else { if ( arguments.length > 1 ) { for ( var i = 1; i < arguments.length; i++ ) { result = result.replace( new RegExp("\\{"+(i-1)+"\\}","g"), arguments[i] ); } } return result; } }; /** * Provides support for lazy initialization of javascript behavior when a certain * event happens to a certain item. */ page.LazyInit = function( event, eventTypes, initCode ) { var e = event || window.event; var target = Event.element( event ); // This is because events bubble and we want a reference // to the element we registered the handlers on. target = page.util.upToClass(target, "jsInit"); for (var i = 0; i < eventTypes.length; i++ ) { target['on'+eventTypes[i]] = null; } eval( initCode ); //initCode can reference "target" }; /** * Evaluates any <script> tags in the provided string in the global scope. * Useful for evaluating scripts that come back in text from an Ajax call. * If signalObject is passed then signalObject.evaluatingScripts will be set to false when done. */ page.globalEvalScripts = function(str, evalExternalScripts, signalObject) { //Get any external scripts var waitForVars = []; var scriptVars = [ { script: 'bb_htmlarea', variable: ['HTMLArea'] }, { script: 'w_editor', variable: ['WebeqEditors'] }, { script: 'wysiwyg.js', variable: ['vtbe_attchfiles'] }, { script: 'gradebook_utils.js', variable: ['gradebook_utils'] }, { script: 'rubric.js', variable: ['rubricModule'] }, { script: 'gridmgmt.js', variable: ['gridMgmt'] }, { script: 'calendar-time.js', variable: ['calendar'] }, { script: 'widget.js', variable: ['widget'] }, { script: 'vtbeTinymce.js', variable: ['tinyMceWrapper'] }, { script: 'WhatsNewView.js', variable: ['WhatsNewView'] }, { script: 'tiny_mce.js', variable: ['tinymce','tinyMCE'] } ]; if (evalExternalScripts) { var externalScriptRE = '<script[^>]*src=["\']([^>"\']*)["\'][^>]*>([\\S\\s]*?)<\/script>'; var scriptMatches = str.match(new RegExp(externalScriptRE, 'img')); if (scriptMatches && scriptMatches.length > 0) { $A(scriptMatches).each(function(scriptTag) { var matches = scriptTag.match(new RegExp(externalScriptRE, 'im')); if (matches && matches.length > 0 && matches[1] != '') { var scriptSrc = matches[1]; if (scriptSrc.indexOf('/dwr_open/') != -1) { // dwr_open calls will ONLY work if the current page's webapp == the caller's webapp, // otherwise we'll get a session error. THis will happen if a lightbox is loaded with // dynamic content from a different webapp (say /webapps/blackboard) while the main page // is loaded from /webapps/discussionboard. To avoid this, rewrite the url to use the // webapp associated with the current page. var newparts = scriptSrc.split('/'); var oldparts = window.location.pathname.split('/'); newparts[1] = oldparts[1]; newparts[2] = oldparts[2]; scriptSrc = newparts.join('/'); } var scriptElem = new Element('script', { type: 'text/javascript', src: scriptSrc }); var head = $$('head')[0]; head.appendChild(scriptElem); for ( var i = 0; i < scriptVars.length; i++ ) { if ( scriptSrc.indexOf( scriptVars[i].script ) != -1 ) { scriptVars[ i ].variable.each( function( s ) { waitForVars.push( s ); } ); break; } } } }); } } page.delayAddExtractedScripts(str.extractScripts(), waitForVars, signalObject); }; // Evaluate any inline script - delay a bit to give the scripts above time to load // NOTE that this is not guaranteed to work - if there are delays loading and initializing // the scripts required then code in these scripts might fail to find the required variables // If it is for our code then updating waitForVars appropriately per script will work page.delayAddExtractedScripts = function (scripts, waitForVars, signalObject) { var count = 0; if (waitForVars.length === 0) { page.actuallyAddExtractedScripts(scripts, signalObject); } else { new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( page.allVariablesDefined(waitForVars) ) { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } } else // give up if it takes longer than 5s to load { page.actuallyAddExtractedScripts(scripts, signalObject); pe.stop(); } }.bind(this), 0.05 ); } }; page.allVariablesDefined = function(vars) { var result = true; for ( var i = 0; i < vars.length; i++ ) { if ( !window[vars[i]] ) { result = false; break; } } return result; }; page.actuallyAddExtractedScripts = function (scripts, signalObject) { var scriptExecutionDelay = 0; if( signalObject ) { scriptExecutionDelay = signalObject.delayScriptExecution; } scripts.each(function(script) { if ( script != '' ) { if ( Prototype.Browser.IE && window.execScript ) { ( function() { window.execScript( script ); }.delay( scriptExecutionDelay ) ); } else { ( function() { var scriptElem = new Element( 'script', { type : 'text/javascript' } ); var head = $$( 'head' )[ 0 ]; script = document.createTextNode( script ); scriptElem.appendChild( script ); head.appendChild( scriptElem ); head.removeChild( scriptElem ); }.delay( scriptExecutionDelay ) ); } } } ); if (signalObject) { signalObject.evaluatingScripts = false; } }; page.setIframeHeight = function () { try { var iframeElements = $$('iframe.cleanSlate'); iframeElements.each( function( iframeElement ) { if ( iframeElement.contentWindow && iframeElement.contentWindow.document && iframeElement.contentWindow.document.body ) { iframeElement.style.height = iframeElement.contentWindow.document.body.scrollHeight + 50 + 'px'; } }); } catch( e ){} }; page.onResizeChannelIframe = function( channelExtRef ) { var frameId = 'iframe' + channelExtRef; var listId = 'list_channel' + channelExtRef; var f = $( frameId ); f.style.height = f.contentWindow.document.getElementById( listId ).scrollHeight + 15 + "px"; }; /** * Contains page-wide utility methods */ page.util = {}; /** * Returns whether the specific element has the specified class name. * Same as prototype's Element.hasClassName, except it doesn't extend the element (which is faster in IE). */ page.util.hasClassName = function ( element, className ) { var elementClassName = element.className; if (elementClassName.length === 0) { return false; } if (elementClassName == className || elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) { return true; } return false; }; page.util.fireClick = function ( elem ) { if (Prototype.Browser.IE) { elem.fireEvent("onclick"); } else { var evt = document.createEvent("HTMLEvents"); evt.initEvent("click", true, true); elem.dispatchEvent(evt); } }; page.util.useARIA = function () { if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); var ffversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ffversion >= 1.9) { return true; } } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; var ieversion= parseFloat( RegExp.$1 ); // capture x.x portion and store as a number if (ieversion>=8) { return true; } } return false; }; // Find an element with the given className, starting with the element passed in page.util.upToClass = function ( element, className ) { while (element && !page.util.hasClassName(element, className)) { element = element.parentNode; } return $(element); }; page.util.isRTL = function () { var els = document.getElementsByTagName("html"); var is_rtl = (typeof(els) != 'undefined' && els && els.length == 1 && els[0].dir == 'rtl' ); return is_rtl ; }; page.util.allImagesLoaded = function (imgList) { var allDone = true; if (imgList) { for ( var i = 0, c = imgList.length; i < c; i++ ) { var animg = imgList[i]; // TODO - this doesn't appear to work on IE. if ( !animg.complete ) { allDone = false; break; } } } return allDone; }; // Exposes (display but keep invisible) an invisible element for measurement // recursively traverses up the DOM looking for // a parent node of element whose display == 'none' // If found, sets its style to: display:block, position:absolute, and visibility:hidden // and saves it as element.hiddenNode so it can be easily unexposed page.util.exposeElementForMeasurement = function ( element ) { element = $(element); var e = element; var hiddenNode; // find parent node that is hidden while ( !hiddenNode && e && e.parentNode) { if ( $(e).getStyle('display') === 'none') { hiddenNode = $(e); } e = $(e.parentNode); } if ( hiddenNode ) { // save original style attributes: visibility, position, & display element.hiddenNode = hiddenNode; var style = hiddenNode.style; var originalStyles = { visibility: style.visibility, position: style.position, display: style.display }; var newStyles = { visibility: 'hidden', display: 'block' }; if (originalStyles.position !== 'fixed') { newStyles.position = 'absolute'; } hiddenNode.originalStyles = originalStyles; // set new style for: visibility, position, & display hiddenNode.setStyle( newStyles ); } }; // undo previous call to exposeElementForMeasurement page.util.unExposeElementForMeasurement = function ( element ) { element = $(element); if ( element && element.hiddenNode && element.hiddenNode.originalStyles ) { Element.setStyle( element.hiddenNode, element.hiddenNode.originalStyles ); element.hiddenNode.originalStyles = null; element.hiddenNode = null; } }; /** * Returns whether any part of the two elements overlap each other. */ page.util.elementsOverlap = function ( e1, e2 ) { var pos1 = $(e1).cumulativeOffset(); var a = { x1: pos1.left, y1: pos1.top, x2: pos1.left + e1.getWidth(), y2: pos1.top + e1.getHeight() }; var pos2 = $(e2).cumulativeOffset(); var b = { x1: pos2.left, y1: pos2.top, x2: pos2.left + e2.getWidth(), y2: pos2.top + e2.getHeight() }; return a.x1 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y2 > b.y1; }; /** * To handle the case where the focus is visible but too close to the bottom of the page, scroll the page up a bit. */ page.util.focusAndScroll= function(elem) { elem.focus(); return page.util.ensureVisible(elem); }; page.util.ensureVisible= function(elem) { var scrolltop = document.viewport.getScrollOffsets().top; var mytop = elem.cumulativeOffset()[1]; var height = document.viewport.getDimensions().height; var realtop = mytop - scrolltop; var thirty = height * 0.3; if (realtop > (height-thirty)) { window.scrollBy(0,thirty); } return false; }; page.util.processJSProtoString = function (string, checkToken) { // This value must match the value passed as the 2nd parameter to this string. // The goal is to pass a known value, as a constant, through the javascript: pseudo-protocol // handler. We can then examine the result to determine the decoding method used by the current // browser. var sniffToken = '%C3%A9'; // There are three known decoding cases, non-translated, UTF8, and unescape if (checkToken === unescape(sniffToken)) { // Unescape decoded return decodeURIComponent(escape(string)); } else if (checkToken === sniffToken) { // Non-translated return decodeURIComponent(string); } else { // UTF8 Decoded/Unknown return string; } }; /** * Find the first action bar that precedes sourceElement * Returns the action bar div element if found, null otherwise * * @param sourceElement */ page.util.findPrecedingActionBar = function( sourceElement ) { var actionBar = null; // Loop through each ancestor of sourceElement, // starting with parent, until an action bar is found sourceElement.ancestors().each( function( item ) { actionBar = item.previous('div.tabActionBar') || item.previous('div.actionBarMicro') || item.previous('div.actionBar'); if (actionBar) { throw $break; } }); return actionBar; }; page.util.getLargestDimensions = function (element) { var width = 0; var height = 0; var dim; while (element != document) { dim = $(element).getDimensions(); if (dim.width > width) { width = dim.width; } if (dim.height > height) { height = dim.height; } element = element.up(); } return { width: width, height: height }; }; /* * Resize the current window so that it will fit the largest dimensions found for the given element. * Will also reposition on the screen if required to fit. Will not size larger than the screen. * NOTE that this will only work for popup windows - main windows are typically in a tabset in * the browser and they don't allow resizing like this. That's OK because the main use case * for this method is to make sure popup windows are resized appropriately for their content. */ page.util.resizeToContent = function (startElement) { var dim = page.util.getLargestDimensions(startElement); var newWidth = dim.width; newWidth += 25; // TODO: Haven't figured out why I need this extra space yet... if (window.innerWidth > newWidth) { newWidth = window.innerWidth; } if (newWidth > screen.width) { newWidth = screen.width; } var newHeight = dim.height; newHeight += 100; // TODO: Haven't figured out why I need this extra space yet if (window.innerHeight > newHeight) { newHeight = window.innerHeight; } if (newHeight > screen.height) { newHeight = screen.height; } var left = 0; var top = 0; if ( window.screenLeft ) { left = window.screenLeft; top = window.screenTop; } else if ( window.screenX ) { left = window.screenX; top = window.screenY; } if (left + newWidth > screen.width) { left = screen.width - newWidth; if (left < 0) { left = 0; } } if (top + newHeight > screen.height) { top = screen.height - newHeight; if (top < 0) { top = 0; } } window.moveTo(left,top); window.resizeTo(newWidth,newHeight); }; /** * Sets the css position of all li elements that are contained in action bars on the page. * Since z-index only works on positioned elements, this function can be used to ensure that * divs with a higher z-index will always appear on top of any action bars on the page. * * @param cssPosition */ page.util.setActionBarPosition = function( cssPosition ) { $$( 'div.actionBar', 'div.tabActionBar', 'div.actionBarMicro' ).each( function( actionbar ) { actionbar.select( 'li' ).each( function( li ) { li.setStyle( {position: cssPosition} ); }); }); }; /** * Class for controlling the course menu-collapser. Also ensures the menu is * the right height */ page.PageMenuToggler = Class.create(); page.PageMenuToggler.prototype = { /** * initialize */ initialize: function( isMenuOpen,key,temporaryScope ) { page.PageMenuToggler.toggler = this; this.key = key; if (temporaryScope) { this.temporaryScope = temporaryScope; } else { this.temporaryScope = false; } this.isMenuOpen = isMenuOpen; this.puller = $('puller'); this.menuPullerLink = $(this.puller.getElementsByTagName('a')[0]); this.menuContainerDiv = $('menuWrap'); this.navigationPane = $('navigationPane'); this.contentPane = $('contentPanel') || $('contentPane'); this.navigationPane = $('navigationPane'); this.locationPane = $(this.navigationPane.parentNode); this.breadcrumbBar = $('breadcrumbs'); this.menu_pTop = parseInt(this.menuContainerDiv.getStyle('paddingTop'), 10); this.menu_pBottom = parseInt(this.menuContainerDiv.getStyle('paddingBottom'), 10); this.loc_pTop = parseInt(this.locationPane.getStyle('paddingTop'), 10); if ( this.breadcrumbBar ) { this.bc_pTop = parseInt(this.breadcrumbBar.getStyle('paddingTop'), 10); this.bc_pBottom = parseInt(this.breadcrumbBar.getStyle('paddingBottom'), 10); } else { this.bc_pTop = 0; this.bc_pBottom = 0; } this.toggleListeners = []; this.onResize( null ); // fix the menu size // Doesn't work in IE or Safari.. //Event.observe( window, 'resize', this.onResize.bindAsEventListener( this ) ); Event.observe( this.menuPullerLink, 'click', this.onToggleClick.bindAsEventListener( this ) ); }, /** * Adds a listener for course menu toggle events */ addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, /** * Notifies all registered toggle event listeners that a toggle has occurred. */ _notifyToggleListeners: function( isOpen ) { this.toggleListeners.each( function( listener ) { listener( isOpen ); }); }, notifyToggleListeners: function( isOpen ) { // we call once the toggle is complete and the DOM in its new state. 2012 themes add transition, which seems // to collide with the logic to get dimensions of dom element, so the delay is a 1 sec to let time for those // transitions to be done. this._notifyToggleListeners.bind( this, isOpen ).delay( 1 ); }, /** * getAvailableResponse */ getAvailableResponse : function ( req ) { var originalMenuOpen = this.isMenuOpen ; if ( req.responseText.length > 0 ) { if ( req.responseText == 'true' ) { this.isMenuOpen = true; } else { this.isMenuOpen = false; } } if ( originalMenuOpen != this.isMenuOpen ) { this.notifyToggleListeners( this.isMenuOpen ); this.menuContainerDiv.toggle(); this.puller.toggleClassName("pullcollapsed"); this.contentPane.toggleClassName("contcollapsed"); this.navigationPane.toggleClassName("navcollapsed"); } }, /** * Expands the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ expand : function () { this.menuContainerDiv.show(); this.puller.removeClassName("pullcollapsed"); this.contentPane.removeClassName("contcollapsed"); this.navigationPane.removeClassName("navcollapsed"); this.isMenuOpen = true; var msg = page.bundle.messages[ "coursemenu.hide" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( true ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, true ); } else { UserDataDWRFacade.setStringPermScope( this.key, true ); } }, /** * Collapses the menu. This can be used instead of toggling to explicitly * change the visibility of the menu. */ collapse : function () { this.menuContainerDiv.hide(); this.puller.addClassName("pullcollapsed"); this.contentPane.addClassName("contcollapsed"); this.navigationPane.addClassName("navcollapsed"); this.isMenuOpen = false; var msg = page.bundle.messages[ "coursemenu.show" ]; this.menuPullerLink.title = msg; $('expander').alt = msg; this.notifyToggleListeners( false ); if (this.temporaryScope) { UserDataDWRFacade.setStringTempScope( this.key, false ); } else { UserDataDWRFacade.setStringPermScope( this.key, false ); } }, /** * Event triggered when the puller toggle control is clicked. Changes the * menu from open to closed or closed to open depending on existing state. */ onToggleClick: function( event ) { if ( this.isMenuOpen ) { this.collapse(); } else { this.expand(); } Event.stop( event ); }, /** * onResize */ onResize: function( event ) { var menuHeight = this.menuContainerDiv.getHeight(); var contentHeight = this.contentPane.getHeight(); var maxHeight = ( menuHeight > contentHeight ) ? menuHeight : contentHeight; this.contentPane.setStyle({height: maxHeight + 'px'}); this.navigationPane.setStyle({height: maxHeight + 'px'}); } }; page.PageMenuToggler.toggler = null; /** * Class for controlling the page help toggler in the view toggle area */ page.PageHelpToggler = Class.create(); page.PageHelpToggler.prototype = { initialize: function( isHelpEnabled, showHelpText, hideHelpText, assumeThereIsHelp ) { page.PageHelpToggler.toggler = this; this.toggleListeners = []; this.isHelpEnabled = isHelpEnabled; this.showText = showHelpText; this.hideText = hideHelpText; this.contentPanel = $('contentPanel') || $('contentPane'); var helperList = []; if ( this.contentPanel && !assumeThereIsHelp) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { helperList.push( $(el) ); } } } var helpTextToggleLink = $('helpTextToggleLink'); if ( ( !helperList || helperList.length === 0) && !assumeThereIsHelp ) { if ( helpTextToggleLink ) { helpTextToggleLink.remove(); } } else { if ( !isHelpEnabled ) { helperList.invoke( "toggle" ); } if ( !this.showText ) { this.showText = page.bundle.getString("viewtoggle.editmode.showHelp"); } if ( !this.hideText ) { this.hideText = page.bundle.getString("viewtoggle.editmode.hideHelp"); } this.toggleLink = helpTextToggleLink; this.toggleImage = $(this.toggleLink.getElementsByTagName('img')[0]); Event.observe( this.toggleLink, "click", this.onToggleClick.bindAsEventListener( this ) ); $(this.toggleLink.parentNode).removeClassName('hidden'); this.updateUI(); } }, addToggleListener: function( listener ) { this.toggleListeners.push( listener ); }, _notifyToggleListeners: function() { this.toggleListeners.each( function( listener ) { listener( this.isHelpEnabled ); }); }, notifyToggleListeners: function() { // we notify once the whole menu collapse/expand is done, so the DOM is in final state this._notifyToggleListeners.bind( this ).delay( ); }, updateUI: function( ) { if ( this.isHelpEnabled ) { $("showHelperSetting").value = 'true'; this.toggleImage.src = "/images/ci/ng/small_help_on2.gif"; this.toggleLink.setAttribute( "title", this.showText ); this.toggleImage.setAttribute( "alt", this.showText ); } else { $("showHelperSetting").value = 'false'; this.toggleImage.src = "/images/ci/ng/small_help_off2.gif"; this.toggleLink.setAttribute( "title", this.hideText ); this.toggleImage.setAttribute( "alt", this.hideText ); } }, onToggleClick: function( event ) { // Toggle all elements that have the css class "helphelp" var helperList = []; if ( this.contentPanel ) { var allElems = []; allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('p') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('div') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('li') ) ); allElems = allElems.concat( $A(this.contentPanel.getElementsByTagName('span') ) ); for ( var i = 0; i < allElems.length; i++ ) { var el = allElems[i]; if ( page.util.hasClassName( el, 'helphelp' ) || page.util.hasClassName( el, 'stepHelp' ) || page.util.hasClassName( el, 'taskbuttonhelp' ) || page.util.hasClassName( el, 'pageinstructions' ) ) { $(el).toggle(); } } } if ( this.isHelpEnabled ) { this.isHelpEnabled = false; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "false" ); } else { this.isHelpEnabled = true; UserPageInstructionsSettingDWRFacade.setShowPageInstructions( "true" ); } this.updateUI(); this.notifyToggleListeners(); Event.stop( event ); } }; /** * Class for controlling the display of a context menu. */ page.ContextMenu = Class.create(); page.ContextMenu.prototype = { initialize: function( contextMenuContainer, divId, forceMenuRefresh ) { this.displayContextMenuLink = contextMenuContainer.down("a"); this.contextMenuContainer = contextMenuContainer; this.forceMenuRefresh = forceMenuRefresh; this.uniqueId = this.displayContextMenuLink.id.split('_')[1]; this.contextMenuDiv = this.displayContextMenuLink.savedDiv; if ( !this.contextMenuDiv ) { this.contextMenuDiv = contextMenuContainer.down("div");//$('cmdiv_' + this.uniqueId); this.displayContextMenuLink.savedDiv = this.contextMenuDiv; page.ContextMenu.hiddenDivs.set(divId,this.contextMenuDiv); } this.originalContextMenuDiv = this.contextMenuDiv.cloneNode(true); $(this.contextMenuDiv).setStyle({zIndex: 200}); this.displayContextMenuLink.appendChild( this.contextMenuDiv ); // Temporarily add the menu back where it started this.closeContextMenuLink = contextMenuContainer.down(".contextmenubar_top").down(0); this.contextParameters = contextMenuContainer.readAttribute("bb:contextParameters"); this.menuGeneratorURL = contextMenuContainer.readAttribute("bb:menuGeneratorURL"); this.nav = contextMenuContainer.readAttribute("bb:navItem"); this.enclosingTableCell = contextMenuContainer.up("td"); this.menuOrder = contextMenuContainer.readAttribute("bb:menuOrder"); this.overwriteNavItems = contextMenuContainer.readAttribute("bb:overwriteNavItems"); this.beforeShowFunc = contextMenuContainer.readAttribute("bb:beforeShowFunc"); if (this.beforeShowFunc) { this.beforeShowFunc = eval(this.beforeShowFunc); } if ( this.menuOrder ) { this.menuOrder = this.menuOrder.split(','); } if ( !this.contextParameters ) { this.contextParameters = ""; } if ( !this.menuGeneratorURL ) { this.menuGeneratorURL = ""; } if ( !this.nav ) { this.nav = ""; } this.dynamicMenu = false; if ( this.menuGeneratorURL ) { this.dynamicMenu = true; } if (this.dynamicMenu) { Event.observe( this.displayContextMenuLink, "click", this.generateDynamicMenu.bindAsEventListener( this ) ); } else { Event.observe( this.displayContextMenuLink, "click", this.onDisplayLinkClick.bindAsEventListener( this ) ); } Event.observe( this.closeContextMenuLink, "click", this.onCloseLinkClick.bindAsEventListener( this ) ); Event.observe( this.contextMenuDiv, "keydown", this.onKeyPress.bindAsEventListener( this ) ); // adding nowrap to table cell containing context menu // If no enclosing td is found, try th if ( !this.enclosingTableCell ) { this.enclosingTableCell = contextMenuContainer.up("th"); } if ( this.enclosingTableCell ) { if ( !this.enclosingTableCell.hasClassName("nowrapCell") ) { this.enclosingTableCell.addClassName("nowrapCell"); } // if label tag is an immediate parent of context menu span tag, it needs nowrap as well if ( this.enclosingTableCell.down("label") && !this.enclosingTableCell.down("label").hasClassName("nowrapLabel")) { this.enclosingTableCell.down("label").addClassName("nowrapLabel"); } } if ( !this.dynamicMenu ) { var contexMenuItems = contextMenuContainer.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; // remove the context menu div from the page for performance reasons - add it back when we need to show it Element.remove( this.contextMenuDiv ); }, onKeyPress: function( event ) { var elem, children, index; var key = event.keyCode || event.which; if ( key == Event.KEY_UP ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } Event.stop( event ); } else if ( key == Event.KEY_ESC ) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_TAB ) { elem = Event.element ( event ); children = this.contextMenuDiv.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( (!event.shiftKey && index == children.length - 1) || (event.shiftKey && index === 0)) { this.close(); this.displayContextMenuLink.focus(); Event.stop( event ); } } else if ( key == Event.KEY_RETURN ) { if ( this.useARIA ) { elem = Event.element ( event ); (function() { page.util.fireClick( elem ); }.bind(this).defer()); Event.stop( event ); } } }, onAnchorFocus: function ( event ) { Event.element( event ).setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { Event.element( event ).setStyle({ backgroundColor: '' }); }, afterMenuGeneration: function( req ) { if ( this.dynamicMenu ) { var result; this.dynamicMenu = this.forceMenuRefresh; try { result = req.responseText.evalJSON( true ); if ( result.success == "true" ) { // append uniqueId to each li var menuHTML = result.contentMenuHTMLList.replace(/(<li.*?id=")(.*?)(".*?>)/g,"$1$2_"+this.uniqueId+"$3"); if ( this.forceMenuRefresh ) { this.contextMenuDiv.innerHTML = this.originalContextMenuDiv.innerHTML; } this.contextMenuDiv.insert({bottom:menuHTML}); $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); var contexMenuItems = this.contextMenuDiv.getElementsBySelector("li > a").each( function (link ) { if ( !link.up('li').hasClassName("contextmenubar_top") ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); } }.bind( this ) ); } else { new page.InlineConfirmation("error", result.errorMessage, false ); } } catch ( e ) { new page.InlineConfirmation("error", result.errorMessage, false ); } } this.showMenu(); //focus on the first menu item (function() { this.contextMenuDiv.down("a").focus(); }.bind(this).defer()); }, appendItems: function( items, menuItemContainer ) { if (!menuItemContainer) { var uls = this.contextMenuDiv.getElementsBySelector("ul"); menuItemContainer = uls[uls.length-1]; } items.each( function ( item ) { if ( item.type == "seperator" ) { if (menuItemContainer.getElementsBySelector("li").length === 0) { return; } var ul = new Element('ul'); menuItemContainer.parentNode.appendChild( ul ); menuItemContainer = ul; return; } if ( !this.menuItemTempate ) { var menuItems = this.contextMenuDiv.getElementsBySelector("li"); this.menuItemTempate = menuItems[menuItems.length-1]; } var mi = this.menuItemTempate.cloneNode( true ); var a = mi.down('a'); var name = item.key ? page.bundle.getString( item.key ) : item.name ? item.name : "?"; a.update( name ); a.title = item.title ? item.title : name; a.href = "#"; menuItemContainer.appendChild( mi ); Event.observe( a, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( a, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( a, 'click', this.onItemClick.bindAsEventListener( this, item.onclick ) ); }.bind( this ) ); }, onItemClick: function( evt, func ) { this.onCloseLinkClick(); func(); Event.stop( evt ); }, setItems: function( items ) { // rather than try to match up new items with existing items, it's easier to delete the existing items // (except for the close item) and then add the new items // remove existing menu items, except close menu var menuItems = this.contextMenuDiv.getElementsBySelector("li").each( function (li ) { if ( !li.hasClassName("contextmenubar_top") ) { if (!this.menuItemTempate) { this.menuItemTempate = li; } li.stopObserving(); li.remove(); } }.bind( this ) ); // should only be one menuItemContainer var menuItemContainers = this.contextMenuDiv.getElementsBySelector("ul").each( function (ul) { if ( !ul.down("li") ) { ul.remove(); } }.bind( this ) ); this.appendItems(items, menuItems[0].parentNode); }, showMenu : function() { if (this.beforeShowFunc) { this.beforeShowFunc(this); } page.ContextMenu.registerContextMenu( this ); this.reorderMenuItems(); if ( this.useARIA ) { this.initARIA(); } var offset = this.displayContextMenuLink.cumulativeOffset(); var scrollOffset = this.displayContextMenuLink.cumulativeScrollOffset(); var viewportScrollOffset = document.viewport.getScrollOffsets(); if ( this.displayContextMenuLink.up( 'div.lb-content' ) ) { // Fix offset for context menu link inside a lightbox offset[0] = offset[0] + viewportScrollOffset[0]; offset[1] = offset[1] + viewportScrollOffset[1]; } else { // Fix the offset if the item is in a scrolled container offset[0] = offset[0] - scrollOffset[0] + viewportScrollOffset[0]; offset[1] = offset[1] - scrollOffset[1] + viewportScrollOffset[1]; } document.body.appendChild( this.contextMenuDiv ); this.contextMenuDiv.setStyle({display: "block"}); var width = this.contextMenuDiv.getWidth(); var bodyWidth = $(document.body).getWidth(); if ( page.util.isRTL() ) { offset[0] = offset[0] + this.displayContextMenuLink.getWidth() - width; } if ( offset[0] + width > bodyWidth ) { offset[0] = offset[0] - width + 30; } if ( this.keepMenuToRight ) { // In case the link is very wide (i.e. gradecenter accessible mode cell link for really wide cell) // make sure the menu renders to the right side of the link var linkWidth = this.displayContextMenuLink.getDimensions().width; if (linkWidth > width) { // Only worry if the link is actually wider than the menu offset[0] += (linkWidth-width); } } // Don't start the menu off the left side of the window if ( offset[0] < 0 ) { offset[0] = 0; } var height = this.contextMenuDiv.getHeight(); var bodyHeight = $(document.body).getHeight(); var ypos = offset[1] + this.displayContextMenuLink.getHeight() + 17; if ( ( height + ypos ) > bodyHeight ) { ypos -= height; ypos -= 34; } // Don't start the menu off the top of the screen if (ypos < 0 ) { ypos = 0; } if (height > bodyHeight) { // If the menu is too big to fit on the screen, set it to the height of the screen and allow scrollbars inside the menu this.contextMenuDiv.setStyle({ height: bodyHeight + "px", overflowY: "auto", overflowX: "hidden", left: offset[0] + "px", top: ypos + "px" }); } else { this.contextMenuDiv.setStyle({ left: offset[0] + "px", top: ypos + "px"}); } if ( !this.shim ) { this.shim = new page.popupShim( this.contextMenuDiv ); } this.shim.open(); }, initARIA: function() { if ( !this.initializedARIA ) { this.displayContextMenuLink.setAttribute( "aria-haspopup", "true" ); this.displayContextMenuLink.setAttribute( "role", "menubutton" ); this.contextMenuDiv.setAttribute( "role", "menu" ); this.contextMenuDiv.down( "ul" ).setAttribute( "role", "presentation" ); $A( this.contextMenuDiv.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval( decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "0"; link.setStyle( {cursor: 'pointer'} ); // make it look like a link. } }); this.initializedARIA = true; // Only initialize once. } }, reorderMenuItems : function() { if ( !this.menuOrder || this.menuOrder.length < 2 ) { return; } var orderMap = {}; var closeItem = null; var extraItems = []; // items not in order // Gather up all of the <li> tags in the menu and stick them in a map/object of id to the li object $A(this.contextMenuDiv.getElementsByTagName("li")).each( function( listItem ) { if (listItem.hasClassName("contextmenubar_top")) { closeItem = listItem; } else { if (this.menuOrder.indexOf(listItem.id) > -1) { orderMap[listItem.id] = listItem; // add item to map } else { extraItems.push(listItem); // listItem id not specified in menuOrder, so add listItem to extraItems } } }.bind(this) ); // Remove all the content from the context menu div $A(this.contextMenuDiv.getElementsByTagName("ul")).each( function( list ) { Element.remove(list); }.bind(this) ); // Re-add the special "close" item as the first item. var ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); ulElement.insert({bottom:closeItem}); // Loop through the order, adding a <ul> at the start, and starting a new <ul> whenever a "*separator*" // is encountered, and adding the corresponding <li> for each of the ids in the order using the map/object this.menuOrder.each( function( id ) { if (id == "*separator*") { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); } else { ulElement.insert({bottom:orderMap[id]}); } }.bind(this) ); // Add any extraItems to thier own ul if (extraItems.length > 0) { ulElement = $(document.createElement("ul")); if ( this.useARIA ) { ulElement.setAttribute('role','presentation'); } this.contextMenuDiv.insert({bottom:ulElement}); extraItems.each( function( lineItem ) { ulElement.insert({bottom:lineItem}); }.bind(this) ); } // Remove any empty ULs and ensure that the added <ul>s have id of form "cmul${num}_${uniqueId}" $A(this.contextMenuDiv.getElementsByTagName("ul")).findAll( function( list ) { if ( list.childElements().length === 0 ) { list.remove(); return false; } else { return true; } }).each( function( list, index ) { list.id = 'cmul'+index+'_'+this.uniqueId; }.bind(this) ); this.menuOrder = null; // only re-order once }, generateDynamicMenu : function(event) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { var context_parameters = this.contextParameters; var menu_generator_url = this.menuGeneratorURL; var nav = this.nav; var overwriteNavItems = this.overwriteNavItems; if ( context_parameters ) { context_parameters = context_parameters.toQueryParams(); } else { context_parameters = {}; } var params = Object.extend({nav_item: nav }, context_parameters ); params = Object.extend( params, { overwriteNavItems : overwriteNavItems } ); new Ajax.Request(menu_generator_url, { method: 'post', parameters: params, onSuccess: this.afterMenuGeneration.bind( this ) }); } else { this.afterMenuGeneration(this); } $(event).preventDefault(); }, onDisplayLinkClick: function( event ) { page.ContextMenu.closeAllContextMenus(); if (this.dynamicMenu) { this.generateDynamicMenu(event); this.dynamicMenu = false; } else { this.showMenu(); //focus on the first menu item (function() { if (this.contextMenuDiv.style.display != 'none') { this.contextMenuDiv.down("a").focus(); } }.bind(this).defer()); $(event).preventDefault(); } }, onCloseLinkClick: function( event ) { this.close(); // grade center hides displayContextMenuLink onMouseOut, so we need to check if it is visible // before setting focus or IE will complain. Need to do funky visibility check because IE8 // sets display to empty string when removing parent container class (bug?) var disp = this.displayContextMenuLink.style.display; if ( disp != 'none' && disp != '' ) { this.displayContextMenuLink.focus(); } if (event) { Event.stop( event ); } }, close: function() { this.contextMenuDiv.style.display = "none"; // Delay the removal of the element from the page so firefox will continue to process // the click on the menu item chosen (otherwise it stops processing as soon as we remove the // element resulting in the menu not actually working) (function() { Element.remove( this.contextMenuDiv ); }.bind(this).delay(0.1)); if ( this.shim ) { this.shim.close(); } }, closeNow: function() { if (this.contextMenuDiv.style.display != "none") { this.contextMenuDiv.style.display = "none"; Element.remove( this.contextMenuDiv ); if ( this.shim ) { this.shim.close(); } } } }; /** * Function called to change the 'arrow' of a breadcrumb to face downward when they are clicked for the * contextual menu. * @param uniqId - unique number which identifies the crumb which was clicked * @param size - the size of the breadcrumb * @return */ page.ContextMenu.changeArrowInBreadcrumb = function (uniqId, event) { page.ContextMenu.alignArrowsInBreadcrumb(event); $('arrowContext_'+uniqId).addClassName('contextArrowDown').removeClassName('contextArrow'); //Stop the click event to propagate anymore -else all arrows will be aligned again Event.stop( event ); return false; }; //To align all breadcrumb arrows in one direction page.ContextMenu.alignArrowsInBreadcrumb = function (event) { if ($('breadcrumbs') !== null){ var bList = $($('breadcrumbs').getElementsByTagName('ol')[0]); var bs = bList.immediateDescendants(); if (bs.length !== null && bs.length >1){ for (var i = 2; i <= bs.length; i++) { var arrowSpan = $('arrowContext_'+i); if (arrowSpan !== null ){ $('arrowContext_'+i).addClassName('contextArrow').removeClassName('contextArrowDown'); } } } } return false; }; // "static" methods page.ContextMenu.LI = function(event, divId, forceMenuRefresh) { page.LazyInit(event,['focus','mouseover'],'new page.ContextMenu(page.util.upToClass(target,\'contextMenuContainer\'), \'' + divId + '\',' + forceMenuRefresh + ');'); }; page.ContextMenu.contextMenus = []; // _Open_ context menus page.ContextMenu.registerContextMenu = function( menu ) { page.ContextMenu.contextMenus.push( menu ); }; page.ContextMenu.hiddenDivs = $H(); // All the menu divs on the page - only needed for cases such as view_spreadsheet2.js where we try to modify the menus outside this framework page.ContextMenu.hideMenuDiv = function( uniqueId) { var linkId = 'cmlink_' + uniqueId; var link = document.getElementById(linkId); if (link && !link.savedDiv ) { var elementId = 'cmdiv_' + uniqueId; var element = link.nextSibling; // Should be the text between the link and div but check anyways if ( !element || element.id != elementId) { element = element.nextSibling; if ( !element || element.id != elementId) { element = document.getElementById(elementId); } } if (element) { link.savedDiv = element; page.ContextMenu.hiddenDivs.set(uniqueId,element); Element.remove( element ); } } }; page.ContextMenu.addDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { document.body.appendChild(ele); }); }; page.ContextMenu.removeDivs = function() { $H(page.ContextMenu.hiddenDivs).values().each(function(ele) { Element.remove(ele); }); }; page.ContextMenu.closeAllContextMenus = function( event ) { var deferClose = false; if ( event ) { var e = Event.findElement( event, 'a' ); if ( e && e.href.indexOf("#contextMenu") >= 0 ) { Event.stop( event ); return; } deferClose = true; } page.ContextMenu.contextMenus.each( function( menu ) { if ( menu != this ) { if (deferClose) { menu.close(); } else { menu.closeNow(); } } }); page.ContextMenu.contextMenus = []; }; /** * Enables flyout menus to be opened using a keyboard or mouse. Enables * them to be viewed properly in IE as well. */ page.FlyoutMenu = Class.create(); page.FlyoutMenu.prototype = { initialize: function( subMenuListItem ) { this.subMenuListItem = $(subMenuListItem); this.menuLink = $(subMenuListItem.getElementsByTagName('a')[0]); //special case to render iframe shim under new course content build menu if (this.subMenuListItem.hasClassName('bcContent')) { var buildContentDiv = this.subMenuListItem.down("div.flyout"); if ( !buildContentDiv ) { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } else { this.subMenu = buildContentDiv; } } else { this.subMenu = $(subMenuListItem.getElementsByTagName('ul')[0]); } this.menuLink.flyoutMenu = this; // calculate the next/previous tab stops this.previousSibling = this.subMenuListItem.previous(); while ( this.previousSibling && (!this.previousSibling.down('a') || !this.previousSibling.visible()) ) { this.previousSibling = this.previousSibling.previous(); } this.nextSibling = this.subMenuListItem.next(); while ( this.nextSibling && (!this.nextSibling.down('a') || !this.nextSibling.visible()) ) { this.nextSibling = this.nextSibling.next(); } var rumble = $(this.subMenuListItem.parentNode.parentNode); this.inListActionBar = rumble && ( rumble.hasClassName("rumble_top") || rumble.hasClassName("rumble") ); Event.observe( this.menuLink, 'mouseover', this.onOpen.bindAsEventListener( this ) ); Event.observe( subMenuListItem, 'mouseout', this.onClose.bindAsEventListener( this ) ); Event.observe( this.menuLink, 'click', this.onLinkOpen.bindAsEventListener( this ) ); Event.observe( this.subMenuListItem, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); $A( this.subMenu.getElementsByTagName('li') ).each ( function( li ) { $A(li.getElementsByTagName('a')).each( function( link ) { Event.observe( link, 'focus', this.onAnchorFocus.bindAsEventListener( this ) ); Event.observe( link, 'blur', this.onAnchorBlur.bindAsEventListener( this ) ); Event.observe( link, 'click', this.onLinkClick.bindAsEventListener( this, link ) ); }.bind( this ) ); }.bind( this ) ); // ARIA menus currently don't work properly in IE8, JAWS consumes arrow up/down keys this.useARIA = page.util.useARIA() && !Prototype.Browser.IE; if ( this.useARIA ) { this.initARIA(); } this.enabled = true; }, initARIA: function() { var inListActionBar = this.inListActionBar; if ( inListActionBar ) { this.subMenuListItem.up('ul').setAttribute( "role", "menubar" ); } this.subMenuListItem.setAttribute( "role", "menuitem" ); this.subMenu.setAttribute( "role", "menu" ); if ( !this.menuLink.hasClassName("notMenuLabel") ) { this.subMenu.setAttribute( "aria-labelledby", this.menuLink.id ); } $A( this.subMenu.getElementsByTagName('a') ).each ( function( link ) { link.setAttribute( "role", "menuitem" ); link.parentNode.setAttribute( "role", "presentation" ); // List action bars have onclick handlers that prevent submission of the page // if no items are selected, so we can't register new onclicks here because // otherwise we can't stop them from executing. if ( !inListActionBar ) { if ( !link.href.include("#") ) { Event.observe( link, 'click', function() { if ( this.ohref.toLowerCase().startsWith("javascript") ) { eval(decodeURIComponent(this.ohref) ); } else { if ( this.target ) { window.open( this.ohref, this.target ); } else { window.location = this.ohref; } } } ); link.ohref = link.href; link.removeAttribute( "href" ); link.tabIndex = "-1"; link.style.cursor = 'pointer'; // make it look like a link. } } }); }, setEnabled: function( enabled ) { this.enabled = enabled; if ( !enabled ) { this.subMenu.setStyle({ display: '' }); } }, onKeyPress: function( event ) { if (!this.enabled) { return; } var key = event.keyCode || event.which; var elem = Event.element ( event ); var children, index, link; if ( key == Event.KEY_UP ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index > 0 ) { children[index - 1].focus(); } else if ( index === 0 ) { children[children.length - 1].focus(); // wrap to bottom } Event.stop( event ); } else if ( key == Event.KEY_DOWN ) { children = this.subMenu.getElementsBySelector("li > a"); index = children.indexOf( elem ); if ( index == -1 ) { this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); } else if ( index < ( children.length - 1 ) ) { children[index + 1].focus(); } else if ( index == ( children.length - 1 ) ) { children[0].focus(); // wrap to top } Event.stop( event ); } else if ( key == Event.KEY_LEFT ) { if ( !this.previousSibling || ( this.previousSibling.hasClassName("mainButton") || this.previousSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, true ); } else if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( !link || !this.previousSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_RIGHT ) { if ( !this.nextSibling || ( this.nextSibling.hasClassName("mainButton") || this.nextSibling.hasClassName("mainButtonType") ) ) { this.executeTab( event, true, false ); } else if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( !link || !this.nextSibling.hasClassName("sub") ) { return; } this.close(); page.util.fireClick( link ); Event.stop( event ); } } else if ( key == Event.KEY_ESC ) { this.close(); this.menuLink.focus(); Event.stop( event ); } else if ( key == Event.KEY_RETURN && this.useARIA && !this.inListActionBar ) { page.util.fireClick( elem ); Event.stop( event ); } else if ( key == Event.KEY_TAB && this.useARIA ) { this.executeTab( event, false, event.shiftKey ); } }, executeTab: function( event, forceMenuLinkTab, shift ) { var elem = Event.element ( event ); var link; if ( ( elem != this.menuLink ) || forceMenuLinkTab ) { if ( shift ) { // Go to previous menu if ( this.previousSibling ) { link = this.previousSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } else { // Go to next menu if ( this.nextSibling ) { link = this.nextSibling.getElementsByTagName('a')[0]; if ( link ) { link.focus(); } else { this.menuLink.focus(); } } else { this.menuLink.focus(); } } this.close(); Event.stop( event ); } }, onOpen: function( event ) { if (!this.enabled) { return; } this.open(); }, onClose: function( event ) { var to = $(event.relatedTarget || event.toElement); if ( !to || to.up('li.sub') != this.subMenuListItem ) { this.close(); } }, onLinkOpen: function( event ) { if (!this.enabled) { return; } this.open(); (function() { this.subMenu.down("li > a").focus(); }.bind(this).defer()); Event.stop( event ); }, resizeAfterShowHide: function() { // TODO - ideally this would just resize the outer div, but closing and opening 'works' this.close(); this.open(); }, open: function() { var alreadyShown = this.subMenu.getStyle('display') === 'block'; // If the menu is already showing (i.e. as_ce4 theme, we don't need to position it) if ( !alreadyShown ) { // Set position of action bar elements to static to enable z-index stack order page.util.setActionBarPosition( 'static' ); var menuTop = this.subMenuListItem.getHeight(); if ( this.subMenu.hasClassName( 'narrow' ) ) { menuTop = 0; } this.subMenuListItem.setStyle( {position: 'relative'} ); this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: menuTop+'px', left: '0px', width: '', height: '', overflowY: '' }); var offset = Position.cumulativeOffset( this.subMenuListItem ); var menuDims = this.subMenu.getDimensionsEx(); var menuHeight = menuDims.height; var popupWidth = this.subMenu.getWidth(); var subListItemDims = this.subMenuListItem.getDimensions(); var menuWidth = subListItemDims.width; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); var offsetTop = offset[1] - scrollOffsets.top; this.subMenu.flyoutMenu = this; if ( (offsetTop + menuHeight + subListItemDims.height) > viewportDimensions.height) { if ( (offsetTop - menuHeight) > 0 ) { // if menu goes below viewport but still fits on-page, show it above button this.subMenu.setStyle({ top: '-'+menuHeight+'px' }); } else { // we need to create scrollbars var newWidth = this.subMenu.getWidth() + 15; popupWidth = newWidth + 5; var newMenuHeight = viewportDimensions.height - (offsetTop + subListItemDims.height) - 20; var newMenuTop = menuTop; if (newMenuHeight < offsetTop) { // More space above than below newMenuHeight = offsetTop; newMenuTop = -offsetTop; } this.subMenu.setStyle( { display: 'block', zIndex: '999999', top: newMenuTop+'px', left: '0px', width: newWidth + 'px', height: newMenuHeight + 'px', overflowY: 'auto' }); } } var offsetLeft = offset[0] - scrollOffsets.left; if ( (offsetLeft + popupWidth) > viewportDimensions.width ) { var subMenuWidth = this.subMenuListItem.getWidth(); var newLeft = popupWidth - (viewportDimensions.width-offsetLeft); if ((newLeft > 0) && (newLeft < offsetLeft)) { newLeft = -newLeft; } else { newLeft = -offsetLeft; } this.subMenu.setStyle({ left: newLeft+'px' }); } if ( page.util.isRTL() ) { var newRight = 0; if ( (offsetLeft + menuWidth) - popupWidth < 0 ) { newRight = (offsetLeft + menuWidth) - popupWidth; } this.subMenu.setStyle({ left: '', right: newRight+'px'}); } if (!this.shim) { this.shim = new page.popupShim( this.subMenu); } this.shim.open(); } }, close: function() { // Reset position of action bar elements to relative page.util.setActionBarPosition( 'relative' ); this.subMenuListItem.setStyle({position: ''}); this.subMenu.setStyle({ display: '', top: '', left: '', width: '', height: '', overflowY: '' }); if ( this.shim ) { this.shim.close(); } }, onLinkClick: function( event, link ) { if (!this.enabled) { return; } setTimeout( this.blurLink.bind( this, link), 100); }, blurLink: function( link ) { link.blur(); if (page.util.hasClassName( link, "donotclose" )) { link.focus(); } else { this.close(); } }, onAnchorFocus: function ( event ) { if (!this.enabled) { return; } var link = Event.element( event ); link.setStyle({ backgroundColor: '#FFFFFF' }); }, onAnchorBlur: function( event ) { var link = Event.element( event ); link.setStyle({ backgroundColor: '' }); } }; /** * Class for providing functionality to menu palettes */ page.PaletteController = Class.create(); page.PaletteController.prototype = { /** * Constructor * * @param paletteIdStr Unique string identifier for a palette * @param expandCollapseIdStr Id value of anchor tag to be assigned * the palette expand/collapse functionality * @param closeOtherPalettesWhenOpen Whether to close all other palettes when this one is open */ initialize: function( paletteIdStr, expandCollapseIdStr, closeOtherPalettesWhenOpen, collapsed ) { // palette id string this.paletteItemStr = paletteIdStr; // palette element this.paletteItem = $(this.paletteItemStr); // default id string to palette contents container element this.defaultContentsContainerId = page.PaletteController.getDefaultContentsContainerId(this.paletteItemStr); // the currently active palette contents container element this.activeContentsContainer = $(this.defaultContentsContainerId); // expand/collapse palette toggle element this.paletteToggle = $(expandCollapseIdStr); if (this.paletteToggle) { Event.observe(this.paletteToggle, 'click', this.toggleExpandCollapsePalette.bindAsEventListener(this)); } this.closeOtherPalettesWhenOpen = closeOtherPalettesWhenOpen; page.PaletteController.registerPaletteBox(this); if (collapsed) { this.collapsePalette(true); } }, /** * Set the currently active palette contents container element * * @param container palette contents container element */ setActiveContentsContainer: function ( container ) { this.activeContentsContainer = container; }, /** * Get the currently active palette contents container element * * @return palette contents container element */ getActiveContentsContainer: function () { return this.activeContentsContainer; }, /** * Expands the palette if it's not already expanded. * * @return palette contents container element */ expandPalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display == "none" ) { itemList.style.display = "block"; itemPalClass.length = itemPalClass.length - 1; this.paletteItem.className = itemPalClass.join(" "); lastDiv.className = "bottomRound"; firstDiv.className = "topRound"; h2.className = ""; var itemTitle = expandCollapseLink.innerHTML.stripTags().trim(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_collapse.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.collapse.section.param', itemTitle); } if ( doNotPersist ) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Collapses the palette if it's not already collapsed. * * @return palette contents container element */ collapsePalette: function ( doNotPersist ) { var itemPalClass = []; itemPalClass = this.paletteItem.className.split(" "); var firstDiv = this.paletteItem.getElementsByTagName('div')[0]; var lastDiv = this.paletteItem.getElementsByTagName('div')[(this.paletteItem.getElementsByTagName('div').length-1)]; var h2 = $(this.paletteItemStr+"_paletteTitleHeading"); var accessibleInfoImg = h2.getElementsByTagName('img')[0]; var expandCollapseLink = h2.getElementsByTagName('a')[0]; if ( !this.useFirstTagForExpandCollapse( h2 ) ) { accessibleInfoImg = h2.getElementsByTagName('img')[1]; expandCollapseLink = h2.getElementsByTagName('a')[1]; } var itemList = this.activeContentsContainer; if ( itemList.style.display != "none" ) { itemList.style.display = "none"; itemPalClass[itemPalClass.length] = 'navPaletteCol'; this.paletteItem.className = itemPalClass.join(" "); if (itemPalClass.indexOf('controlpanel') != -1) { lastDiv.className = "bottomRound controlpanelCol"; // colors the bottomRound to match the h2 background } if (itemPalClass.indexOf('listCm')!=-1) { lastDiv.className = "bottomRound listCmCol"; // colors the bottomRound to match the h2 background firstDiv.className = "topRound listCmCol"; // colors the topRound to match the h2 background h2.className = "listCmCol"; // colors h2 background (removes background image) } if (itemPalClass.indexOf('tools') != -1) { lastDiv.className = "bottomRound toolsCol"; firstDiv.className = "topRound listCmCol"; h2.className = "toolsCol"; } var itemTitle = expandCollapseLink.innerHTML.stripTags(); if ( !this.useFirstTagForExpandCollapse( h2 ) ) { itemTitle = h2.getElementsByTagName('a')[0].innerHTML.stripTags().trim(); } accessibleInfoImg.alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); accessibleInfoImg.src = "/images/ci/icons/generic_expand.gif"; expandCollapseLink.title = page.bundle.getString('expandCollapse.expand.section.param', itemTitle); } if (doNotPersist) { return; } this.saveSessionStickyInfo( itemList.id, itemList.style.display ); }, /** * Takes in a key value pair to save to the session as sticky data. * * @param key The key that will have the current course id appended to it to be saved to the session. * @param value The value to the key. */ saveSessionStickyInfo: function( key, value ) { /* Get the course id off of the global variable if exists, so that data is saved per * user session per course. If course doesn't exist, use empty string. */ var current_course_id = window.course_id ? window.course_id : ""; UserDataDWRFacade.setStringTempScope( key + current_course_id, value ); }, /** * Whether the first tag has js onclick event binding on it for palette collapse/expand * * @param h2 */ useFirstTagForExpandCollapse: function ( h2 ) { return h2.getElementsByTagName('a')[0].id.indexOf( "noneExpandCollapseTag" ) > -1 ? false : true; }, /** * Toggles a palette from expand to collapse and vice versa. * * @param event Optional event object if this method was bound to event. */ toggleExpandCollapsePalette: function ( event, doNotPersist ) { // To prevent default event behavior if ( event ) { Event.stop( event ); } if ( this.activeContentsContainer.style.display == "none" ) { // palette is currently closed, so we will be expanding it if ( this.closeOtherPalettesWhenOpen ) { // if closeOtherPalettesWhenOpen is set to true for this palette, close all other palettes page.PaletteController.closeAllOtherPalettes(this.paletteItemStr, doNotPersist); } this.expandPalette( doNotPersist ); } else { // palette is currently expanded, so we will be collapsing it this.collapsePalette( doNotPersist ); } } }; // "static" methods page.PaletteController.paletteBoxes = []; page.PaletteController.registerPaletteBox = function( paletteBox ) { page.PaletteController.paletteBoxes.push( paletteBox ); }; /** * Get the palette controller js object by palette id * * @param paletteId */ page.PaletteController.getPaletteControllerObjById = function( paletteId ) { return page.PaletteController.paletteBoxes.find( function( pb ) { return ( pb.paletteItemStr == paletteId ); } ); }; /** * Closes all palettes except the specified one * * @param paletteToKeepOpen */ page.PaletteController.closeAllOtherPalettes = function( paletteToKeepOpen, doNotPersist ) { for(var i = 0; i < page.PaletteController.paletteBoxes.length; i++) { var paletteItem = page.PaletteController.paletteBoxes[i]; if (paletteToKeepOpen !== paletteItem.paletteItemStr) { paletteItem.collapsePalette( doNotPersist ); } } }; /** * Toggles (expand/collapse) the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.toggleExpandCollapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.toggleExpandCollapsePalette( null, doNotPersist); }; /** * Collapses the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.collapsePalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.collapsePalette( doNotPersist); }; /** * Expand the contents of a nav palette by palette id * * @param paletteId * @param doNotPersist - optional param to suppress persisting state, default is to persist */ page.PaletteController.expandPalette = function( paletteId, doNotPersist ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); paletteObj.expandPalette( doNotPersist); }; /** * Set the active palette contents container (element containing the body * contents of a palette). The active contents container is used to toggle * visibility when expanding and collapsing menu palettes. * * @param paletteId * @param paletteContentsContainer Optional container to set. * If not given, the palette's active * container will not be changed. * @return The new active palette contents container element. * If no paletteContentsContainer element was passed, * The current active palette contents container element * will be returned. */ page.PaletteController.setActivePaletteContentsContainer = function( paletteId, paletteContentsContainer ) { var paletteObj = page.PaletteController.getPaletteControllerObjById( paletteId ); if ( paletteContentsContainer ) { paletteObj.setActiveContentsContainer( paletteContentsContainer ); } return paletteObj.getActiveContentsContainer(); }; /* * Get the default palette contents container id string * * @param paletteId */ page.PaletteController.getDefaultContentsContainerId = function( paletteId ) { return paletteId + "_contents"; }; /** * Class for providing expand/collapse functionality (with dynamic loading) */ page.ItemExpander = Class.create(); page.ItemExpander.prototype = { /** * Constructor * - expandLink - the link that when clicked will expand/collapse the item * - expandArea - the actual area that will get expanded/collapsed (if the item is dynamically loaded, this area will be populated dynamically) * - expandText - the text to show as a tooltip on the link for expanding * - collapseText - the text to show as a tooltip on the link for collapsing * - expandTitleText - the customized text for link title afer expanding the item; if null/undefined, use expandText * - collapseTitleText - the customized text for link title after collapsing the item;if null/undefined, use collapseText * - dynamic - whether the contents are dynamically loaded * - dynamicUrl - the URL to get the contents of the item from * - contextParameters - additional URL parameters to add when calling the dynamicUrl * - sticky - load/save expand state from UserData; true if null/undefined * - expanded - initially expanded; false if null/undefined */ initialize: function( expandLink, expandArea, expandText, collapseText, dynamic, dynamicUrl, contextParameters, expandTitleText, collapseTitleText, sticky, expanded ) { this.expandLink = $(expandLink); this.expandLinkImage = this.expandLink.down('img'); this.expandArea = $s(expandArea); // Register the expander so it can be found page.ItemExpander.itemExpanderMap[this.expandLink.id] = this; this.expandText = expandText.unescapeHTML(); this.collapseText = collapseText.unescapeHTML(); if ( expandTitleText !== null && expandTitleText !== undefined ) { this.expandTitleText = expandTitleText.unescapeHTML(); } else { this.expandTitleText = this.expandText; } if ( collapseTitleText !== null && collapseTitleText !== undefined ) { this.collapseTitleText = collapseTitleText.unescapeHTML(); } else { this.collapseTitleText = this.collapseText; } this.dynamic = dynamic; this.dynamicUrl = dynamicUrl; if ( contextParameters !== null && contextParameters !== undefined ) { this.contextParameters = contextParameters.toQueryParams(); } else { this.contextParameters = {}; } this.sticky = ( sticky !== null && sticky !== undefined ) ? sticky : true; this.expanded = ( expanded !== null && expanded !== undefined ) ? expanded : false; this.hasContents = !this.dynamic; if ( this.sticky ) { // get the course id off of the global variable if exists, because data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.getStringTempScope( this.expandLink.id + current_course_id, this.getAvailableResponse.bind( this ) ); } this.expandCollapse( !this.expanded ); Event.observe( this.expandLink, "click", this.onToggleClick.bindAsEventListener( this ) ); }, getAvailableResponse : function ( response ) { var originalExpanded = this.expanded ; var cachedExpanded = false; if ( response.length > 0 ) { if ( response == 'true' ) { cachedExpanded = true; } else { cachedExpanded = false; } } if ( originalExpanded != cachedExpanded ) { //because we want the menu to be in the cached state, //we pass in the opposite so that expandCollapse changes the menu state. this.expandCollapse(originalExpanded); } }, onToggleClick: function( event ) { if ( event ) { Event.stop( event ); } this.expandCollapse(this.expanded); if ( this.sticky ) { // get the course id off of the global variable if exists, so that data is saved per user session per course var current_course_id = ( (typeof course_id != "undefined") && course_id !== null ) ? course_id : ""; UserDataDWRFacade.setStringTempScope( this.expandLink.id + current_course_id, this.expanded ); } }, expandCollapse: function(shouldCollapse) { var combo; if ( shouldCollapse ) //Collapse the item { $(this.expandArea).hide(); this.expandLink.title = this.expandTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.expandText; this.expandLinkImage.src = "/images/ci/icons/generic_expand.gif"; } if ( this.expandLink.hasClassName("comboLink_active") ) { combo = this.expandLink.up("li").down(".submenuLink_active"); this.expandLink.removeClassName("comboLink_active"); this.expandLink.addClassName("comboLink"); if ( combo ) { combo.removeClassName("submenuLink_active"); combo.addClassName("submenuLink"); } } else { this.expandLink.removeClassName("open"); } this.expanded = false; } else //Expand the item { if ( this.hasContents ) { $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; if ( this.expandLinkImage ) { this.expandLinkImage.alt = this.collapseText; this.expandLinkImage.src = "/images/ci/icons/generic_collapse.gif"; } if ( this.expandLink.hasClassName("comboLink") ) { combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } } else if ( this.dynamic ) { this.loadData(); } this.expanded = true; } }, loadData: function() { new Ajax.Request( this.dynamicUrl, { method: "post", parameters: this.contextParameters, requestHeaders: { cookie: document.cookie }, onSuccess: this.afterLoadData.bind( this ) }); }, afterLoadData: function( req ) { try { var result = req.responseText.evalJSON( true ); if ( result.success != "true" ) { new page.InlineConfirmation("error", result.errorMessage, false ); } else { this.hasContents = true; this.expandArea.innerHTML = result.itemContents; $(this.expandArea).setStyle({ zoom: 1 }); this.expandArea.show(); this.expandLink.title = this.collapseTitleText; this.expandLinkImage.alt = this.collapseText; if ( this.expandLink.hasClassName("comboLink") ) { var combo = this.expandLink.up("li").down(".submenuLink"); this.expandLink.removeClassName("comboLink"); this.expandLink.addClassName("comboLink_active"); if ( combo ) { combo.removeClassName("submenuLink"); combo.addClassName("submenuLink_active"); } } else { this.expandLink.addClassName("open"); } this.expanded = true; } } catch ( e ) { //Invalid response } } }; page.ItemExpander.itemExpanderMap = {}; /** * Class for controlling the "breadcrumb expansion" (i.e. the "..." hiding the inner * breadcrumbs) */ page.BreadcrumbExpander = Class.create(); page.BreadcrumbExpander.prototype = { initialize: function( breadcrumbBar ) { var breadcrumbListElement = $(breadcrumbBar.getElementsByTagName('ol')[0]); var breadcrumbs = breadcrumbListElement.immediateDescendants(); if ( breadcrumbs.length > 4 ) { this.ellipsis = document.createElement("li"); var ellipsisLink = document.createElement("a"); ellipsisLink.setAttribute("href", "#"); ellipsisLink.setAttribute("title", page.bundle.getString('breadcrumbs.expand') ); ellipsisLink.innerHTML = "..."; this.ellipsis.appendChild( ellipsisLink ); this.ellipsis = Element.extend( this.ellipsis ); Event.observe( ellipsisLink, "click", this.onEllipsisClick.bindAsEventListener( this ) ); this.hiddenItems = $A(breadcrumbs.slice(2,breadcrumbs.length - 2)); breadcrumbListElement.insertBefore( this.ellipsis, this.hiddenItems[0] ); this.hiddenItems.invoke( "hide" ); } // Make sure the breadcrumbs don't run into the mode switcher var breadcrumbContainer = $(breadcrumbListElement.parentNode); var modeSwitcher = breadcrumbBar.down('.modeSwitchWrap'); if ( modeSwitcher ) { var containerWidth = breadcrumbContainer.getWidth(); var containerOffset = breadcrumbContainer.cumulativeOffset(); var modeSwitcherOffset = modeSwitcher.cumulativeOffset(); var modeSwitcherWidth = modeSwitcher.getWidth(); if ( page.util.isRTL() ) { if ( modeSwitcherOffset[0] + modeSwitcherWidth > containerOffset[0] ) { breadcrumbContainer.setStyle({ paddingLeft: ( modeSwitcherOffset[0] + modeSwitcherWidth ) + 'px'} ); } } // else //{ // breadcrumbContainer.setStyle({ paddingRight: ( containerWidth - ( modeSwitcherOffset[0] - containerOffset[0] ) ) + 'px'} ); //} } }, onEllipsisClick: function( event ) { this.hiddenItems.invoke( "show" ); this.ellipsis.hide(); Event.stop( event ); } }; /** * Dynamically creates an inline confirmation. */ page.InlineConfirmation = Class.create(); page.InlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, oneReceiptPerPage ) { var receiptId = $s('receipt_id'); // do not insert a duplicate receipt, if one already exists if(receiptId && oneReceiptPerPage) { return; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if ( type == "warning" ) { cssClass = "warningReceipt"; } var contentPane = $('contentPanel') || $('portalPane'); var receiptHtml = '<div id="receipt_id" class="receipt '+ cssClass +'">'+ '<a name="inlineReceipt" tabindex="-1" style="color:#FFFFFF">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } receiptHtml += '<a class="close" href="#close" title="'+ page.bundle.getString("inlineconfirmation.close") +'" onClick="Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="'+ page.bundle.getString("inlineconfirmation.close") +'" src="/images/ci/ng/close_mini.gif"></a></div>'; contentPane.insert({top:receiptHtml}); // use aria live region to announce this confirmation message rather than setting focus to it. (Too many things are fighting over setting focus) // Note: if this confirmation is invoked from a menu handler, it may not announce if focus is lost when the menu closes. See how courseTheme.js sets focus before invoking. var insertedA = contentPane.down('a[name="inlineReceipt"]'); insertedA.setAttribute("aria-live","assertive"); insertedA.parentNode.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced } }; page.NestedInlineConfirmationIdCounter = 0; page.NestedInlineConfirmation = Class.create(); page.NestedInlineConfirmation.prototype = { initialize: function( type, message, showRefreshLink, previousElement,showCloseLink, extracss, insertBefore, oneReceiptPerPage, fadeAway, focusDiv, fadingTime, insertTop, receiptDivId, focusOnRender ) { if ( Object.isUndefined( focusOnRender ) ) { focusOnRender = true; } var receiptId = $s('receipt_nested_id'); // do not insert a duplicate receipt, if one already exists var newDivId = 'receipt_nested_id'; if(receiptId) { if (oneReceiptPerPage) { return; } newDivId = newDivId + (page.NestedInlineConfirmationIdCounter++); } if (receiptDivId) { // Remove the old message with the same receiptDivId if there is one before adding a new one if ( $( receiptDivId ) != null ) $( receiptDivId ).remove(); newDivId = receiptDivId; } var cssClass = "bad"; if ( type == "success" ) { cssClass = "good"; } else if (type == "warning") { cssClass = "warningReceipt"; } if (!extracss) { extracss = ""; } var arrowSpan = ''; if (extracss.indexOf( "point", 0 ) != -1) { arrowSpan = '<span class="arrow"></span>'; } var contentPane = $(previousElement); if (!contentPane) { // TODO - if we can't find the element we wanted to insert before, is it OK to just drop the notification? return; } var receiptHtml = '<div id="'+newDivId+'" style="display:none" class="receipt '+ cssClass +' '+extracss +'">'+arrowSpan+ '<a name="inlineReceipt" class="areceipt" tabindex="-1">'+message+'</a>'; if ( showRefreshLink ) { receiptHtml += ' <a href="#refresh" onClick="document.location.href = document.location.href; return false;">' + page.bundle.getString("inlineconfirmation.refresh") + '</a>'; } if (showCloseLink) { // either this is a JS Snippet to execute on close or a simple true in which case we do nothing extra var onCloseFunction = ""; if ( typeof showCloseLink === "string" || showCloseLink instanceof String ) { if ( !page.closeReceiptLinkCounter ) { page.closeReceiptLinkCounter = 0; } else { ++page.closeReceiptLinkCounter; } onCloseFunction = "onReceiptClosed" + page.closeReceiptLinkCounter; receiptHtml += "<script type='text/javascript'>window." + onCloseFunction + " = function( ) { " + showCloseLink + " ; }; </script>"; onCloseFunction += "( );" } receiptHtml += '<a class="close" href="#close" style="z-index:1000" title="' + page.bundle.getString("inlineconfirmation.close") + '" onClick="' + onCloseFunction + 'Element.remove( $(this).up(\'div.receipt\') ); return false;"><img alt="' + page.bundle.getString("inlineconfirmation.close") + '" src="/images/ci/ng/close_mini.gif"></a></div>'; } if ( insertBefore ) { contentPane.insert({before:receiptHtml}); } else if (insertTop) { contentPane.insert({top:receiptHtml}); } else { contentPane.insert({after:receiptHtml}); } this.insertedDiv = insertBefore?contentPane.previousSibling:(insertTop?contentPane.firstChild:contentPane.nextSibling); $(this.insertedDiv).show(); var insertedA = $(this.insertedDiv).down('a[name="inlineReceipt"]'); var fadingDuration = fadingTime ? fadingTime : 5000; if ( focusOnRender ) { try { ( function() { try { if ( focusDiv ) { page.util.focusAndScroll( $( focusDiv ) ); } else { page.util.focusAndScroll( insertedA ); } } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } }.defer() ); } catch ( focusError ) { // Ignore focus errors. These can happens sometimes on IE if focus is set on an element that is located // inside another element that has recently been switched from a hidden state to a visible one. } } else { // not setting focus to this confirmation, so we make it an aria live region so it will be announced to the screen reader if ( focusDiv ) { page.util.ensureVisible( $( focusDiv ) ); } else { page.util.ensureVisible( insertedA ); } insertedA.setAttribute("aria-live","assertive"); this.insertedDiv.setAttribute("role","application"); (function() { insertedA.update( insertedA.innerHTML ); }.defer(2)); // update live region so it is announced (needed for jaws 12) } if ( fadeAway ) { setTimeout( function() { Element.fade( contentPane.nextSibling, { duration : 0.3 } ); }, fadingDuration ); } }, close: function() { if ( this.insertedDiv ) { this.insertedDiv.remove(); } } }; page.NestedInlineFadeAwayConfirmation = Class.create(); page.NestedInlineFadeAwayConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; page.NestedInlineFadeAwaySingleConfirmation = Class.create(); page.NestedInlineFadeAwaySingleConfirmation.prototype = { initialize: function( type, message, showRefreshLink, element,showCloseLink, insertBefore, time, newDivId ) { var fadingDuration = time ? time : 2000; new page.NestedInlineConfirmation(type, message, showRefreshLink, element,showCloseLink, "", insertBefore, false /*only one instance*/, null, null, null, null, newDivId ); setTimeout( function() { var elementToFade = insertBefore?element.previousSibling:element.nextSibling; Element.fade( elementToFade, {duration:0.3} ); }, fadingDuration ); } }; /** * Make sure the container as position: relative so that the offset can work */ page.MiniReceipt = Class.create(); page.MiniReceipt.prototype = { initialize: function( message, containerElement, top, left, time ) { var visibleDuration = time ? time : 2000; var top = top?top:-22; // usually show receipt above var left = left?left:0; var alreadyExistingReceipt = $( containerElement ).down( "div.miniReceipt" ); if ( alreadyExistingReceipt ) { alreadyExistingReceipt.hide( ); } var receiptHtml = '<div class="miniReceipt adding" style="display: none; top:' + top + 'px; left:'+ left + 'px" role="alert" aria-live="assertive">' + message + '</div>'; var receiptElement = $( containerElement ).insert( { top:receiptHtml } ).firstDescendant( ); receiptElement.show( ); setTimeout( function() { Element.fade( receiptElement, {duration:0.3, afterFinish: function() { receiptElement.remove() } } ); }, visibleDuration ); } }; page.extendedHelp = function( helpattributes, windowName ) { window.helpwin = window.open('/webapps/blackboard/execute/viewExtendedHelp?' + helpattributes,windowName,'menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); window.helpwin.focus(); }; page.decoratePageBanner = function() { var bannerDiv = $('pageBanner'); var containerDiv = $('contentPanel') || $('contentPane'); if ( bannerDiv && containerDiv ) { // append hasTopBanner class to container div to hide topRound containerDiv.addClassName('hasTopBanner'); // hide empty title bar if ( !$('pageTitleText') && $('pageTitleDiv') ) { $('pageTitleDiv').hide(); } } }; page.initializeSinglePopupPage = function( pageId ) { // Initialize the single popup page, make sure the window will be closed by clicking submit or cancel, and the parent // window will be refreshed after submit. var items = document.forms; for ( var i = 0; i < items.length; i++ ) { var formItem = items[ i ]; formItem.observe( 'submit', function() { (function() { window.close(); if( window.opener.refreshConfirm ) { window.opener.refreshConfirm(pageId); } }.defer()); } ); if ( formItem.top_Cancel ) { Event.observe( formItem.top_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } if ( formItem.bottom_Cancel ) { Event.observe( formItem.bottom_Cancel, 'click', function( event ) { Event.stop( event ); window.close(); } ); } } }; page.openLightbox = function( link, title, url, width, height ) { var lightboxParam = { defaultDimensions : { w : width ? width : 1000, h : height ? height : 800 }, contents : '<iframe src="' + url + '" width="100%" height="100%"/>', title : title, closeOnBodyClick : false, showCloseLink : true, useDefaultDimensionsAsMinimumSize : true }; var lightboxInstance = new lightbox.Lightbox( lightboxParam ); lightboxInstance.open(); }; page.printAndClose = function() { (function() { window.print(); window.close(); }.defer()); }; /** * Utility for data collection step manipulation */ page.steps = {}; page.steps.HIDE = "hide"; page.steps.SHOW = "show"; /** * Hide or show an array of steps given the step ids and * renumber all visible steps on the page. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepIdArr - string array of step ids */ page.steps.hideShowAndRenumber = function ( action, stepIdArr ) { // hide or show each of the step ids given ($A(stepIdArr)).each( function( stepId ) { page.steps.hideShow( action, stepId ); }); // get all H3 elements that contain css class of "steptitle" var stepTitleTags = []; $A(document.getElementsByTagName('h3')).each( function( tag ) { if ( page.util.hasClassName( tag, 'steptitle' ) ) { stepTitleTags.push( $(tag) ); } }); // starting at number 1, renumber all of the visible steps var number = 1; stepTitleTags.each(function( stepTitleTag ) { if ( stepTitleTag.up('div').visible() ) { stepTitleTag.down('span').update(number); number++; } }); }; /** * Hide or show a single step given the step id. * * @param action - either page.steps.HIDE or page.steps.SHOW * @param stepId - string identifier to a single step */ page.steps.hideShow = function ( action, stepId ) { if ( action == page.steps.SHOW ) { $(stepId).show(); } else if ( action == page.steps.HIDE ) { $(stepId).hide(); } }; page.showChangeTextSizeHelp = function( ) { page.extendedHelp('internalhandle=change_text_size&helpkey=change_text_size','change_text_size' ); return false; }; page.showAccessibilityOptions = function() { var win = window.open('/webapps/portal/execute/changePersonalStyle?cmd=showAccessibilityOptions', 'accessibilityOptions','menubar=1,resizable=1,scrollbars=1,status=1,width=480,height=600'); win.focus(); }; page.toggleContrast = function( ) { new Ajax.Request('/webapps/portal/execute/changePersonalStyle?cmd=toggleContrast', { onSuccess: function(transport, json) { var fsWin; if (window.top.nav) { fsWin = window.top; } else if (window.opener && window.opener.top.nav) { fsWin = window.opener.top; window.close(); } if (fsWin) { fsWin.nav.location.reload(); fsWin.content.location.reload(); } else { window.top.location.reload(); } } }); return false; }; /** * IFrame-based shim used with popups so they render on top of all other page elements (including applets) */ page.popupShim = Class.create(); page.popupShim.prototype = { initialize: function( popup ) { this.popup = popup; }, close: function( ) { this.toggleOverlappingEmbeds( false ); }, open: function( ) { this.toggleOverlappingEmbeds( true ); }, toggleOverlappingEmbeds: function( turnOff ) { ['embed','object','applet','select'].each( function( tag ) { var elems = document.getElementsByTagName( tag ); for ( var i = 0, l = elems.length; i < l; i++ ) { var e = $(elems[i]); if ( !turnOff || ( page.util.elementsOverlap( this.popup, e ) && !e.descendantOf( this.popup ) ) ) { elems[i].style.visibility = ( turnOff ? 'hidden' : '' ); } } }.bind( this ) ); } }; /** * Class for controlling the vtbe enable toggle. */ page.VTBEToggle = Class.create(); page.VTBEToggle.prototype = { initialize: function( vtbeDiv, vtbeOnOffToolKey ) { var toggleFunc = this.toggleVTBE.bindAsEventListener( this ); this.vtbeOnOffToolKey = ( vtbeOnOffToolKey ) ? vtbeOnOffToolKey : "textbox.wysiwyg"; var vtbeDivs = null; if ( vtbeDiv ) { // autowire the specified vtbe vtbeDivs = [ vtbeDiv ]; } else { // autowire all vtbe divs on the page vtbeDivs = document.getElementsByTagName('div'); } $A(vtbeDivs).each( function( div ) { // add toggle listener for each vtbe switch if ( page.util.hasClassName(div, 'vtbeSwitch') ) { div = $(div); if ( div.up('form') ) { var anchor = div.down('a'); page.VTBEToggle.form = div.up('form'); Event.observe( anchor, 'click', toggleFunc ); // save original form data so we can detect unsaved data when toggling VTBE if ( page.VTBEToggle.form && !page.VTBEToggle.origFormData ) { page.VTBEToggle.origFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); } } } }); }, toggleVTBE: function( event ) { // Stop the event to handle firefox behavior when posting into a page. Event.stop(event); // check & warn user of modified form data if ( page.VTBEToggle.form && page.VTBEToggle.origFormData ) { var origFormData = page.VTBEToggle.origFormData; if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var currentFormData = Form.serializeElements( page.VTBEToggle.form.getElements(), true ); for(var i in origFormData) { if ( origFormData.hasOwnProperty( i ) ) { var origVal = origFormData[i]; var currVal = currentFormData[i]; if ( currVal && typeof currVal != 'object' && ( ( typeof currVal != 'string' && origVal != currVal ) || ( typeof currVal == 'string' && origVal.trim() != currVal.trim().replace("&nbsp;","") ) ) ) { if (!confirm( page.bundle.getString("wysiwyg.visual.editor.confirm.unsaved.changes") )) { return; } break; } } } } // get current state of vtbe, toggle it, then reload page UserDataDWRFacade.getStringPermScope( this.vtbeOnOffToolKey, function( wysiwyg ) { UserDataDWRFacade.setStringPermScope( this.vtbeOnOffToolKey, (wysiwyg == 'Y') ? 'N' : 'Y', function() { // If there's a lightbox open, give it a chance to update itself instead of reloading the window if (!window.lightbox || !lightbox.deferUpdateLightboxContent()) { window.location.reload(); } }); }.bind( this )); } }; /** * Looks through the children of the specified element for links with the specified * class name, and if it finds any, autowires lightboxes to them. If lightbox.js/effects.js * hasn't already been loaded, load it. */ page.LightboxInitializer = Class.create( { initialize: function( className, parentElement ) { this.className = className; var links = parentElement.getElementsByTagName('a'); for ( var i = 0, l = links.length; i < l; i++ ) { if ( page.util.hasClassName( links[i], className ) ) { if ( window.lightbox && window.Effect) { this._autowire(); } else { this._load(); } break; } } }, _autowire: function() { lightbox.autowireLightboxes( this.className ); }, _load: function() { var h = $$('head')[0]; var scs = ( !window.lightbox ? ['/javascript/ngui/lightbox.js'] : []).concat( !window.Effect ? ['/javascript/scriptaculous/effects.js'] : [] ); scs.each( function( sc ) { var s = new Element('script', { type: 'text/javascript', src: sc } ); h.appendChild( s ); }); this._wait(); }, _wait: function() { var count = 0; new PeriodicalExecuter( function( pe ) { if ( count < 100 ) { count++; if ( window.lightbox && window.Effect ) { pe.stop(); this._autowire(); } } else // give up if it takes longer than 5s to load lightbox.js/effects.js { pe.stop(); } }.bind(this), 0.05 ); } }); page.YouTubeControls = { toggleAXControls : function( playerid, openYtControlsId, event ) { if( $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display != 'block' ) { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'block'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'block'; $( openYtControlsId ).addClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } else { $( playerid.sub( 'ytEmbed', 'controls' ) ).style.display = 'none'; $( playerid.sub( 'ytEmbed', 'strip' ) ).style.display = 'none'; $( openYtControlsId ).removeClassName( 'liveAreaTab' ); if ( window.lightbox && lightbox.getCurrentLightbox() ) { lightbox.getCurrentLightbox()._resizeAndCenterLightbox( false ); } } Event.stop( event ); }, formatTime : function ( sec ) { var duration = parseInt( sec, 10 ); var totalMinutes = Math.floor( duration / 60 ); var hours = Math.floor( totalMinutes / 60 ); var seconds = duration % 60; var minutes = totalMinutes % 60; if ( hours > 0 ) { return hours + ':' + this.padZero( minutes ) + ':' + this.padZero( seconds ); } else { return this.padZero( minutes ) + ':' + this.padZero( seconds ); } }, padZero : function ( number ) { if (number < 10) { return "0" + number; } else { return number; } }, updateButtonLabels : function ( ytplayer, muteBtnId, playBtnId, status ) { if( ytplayer.isMuted() ) { $( muteBtnId ).update( page.bundle.getString( 'yt.unmute' ) ); } else { $( muteBtnId ).update( page.bundle.getString( 'yt.mute' ) ); } if( status == 1 ) { $( playBtnId ).update( page.bundle.getString( 'yt.pause' ) ); } else { $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); } } }; function onYouTubePlayerReady( playerid ) { var ytplayer = $( playerid ); if( !ytplayer ) { //ie fix: grab object tag instead of embed tag var objTagId = playerid.sub( 'ytEmbed', 'ytObject' ); ytplayer = $( objTagId ); } var playBtnId = playerid.sub( 'ytEmbed', 'playVideo' ); Event.observe( $( playBtnId ), 'click', function( event ) { if( ytplayer.getPlayerState() == 1 ) { ytplayer.pauseVideo(); } else { ytplayer.playVideo(); } Event.stop( event ); } ); var stopBtnId = playerid.sub( 'ytEmbed', 'stopVideo' ); Event.observe( $( stopBtnId ), 'click', function( event ) { ytplayer.pauseVideo(); ytplayer.seekTo( "0" ); $( playBtnId ).update( page.bundle.getString( 'yt.play' ) ); Event.stop( event ); } ); var volUpBtnId = playerid.sub( 'ytEmbed', 'volUp' ); Event.observe( $( volUpBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol > 89 ) { ytplayer.setVolume( 100 ); } else { ytplayer.setVolume( currVol + 10 ); } Event.stop( event ); } ); var volDownBtnId = playerid.sub( 'ytEmbed', 'volDown' ); Event.observe( $( volDownBtnId ), 'click', function( event ) { var currVol = ytplayer.getVolume(); if( currVol < 11 ) { ytplayer.setVolume( 0 ); } else { ytplayer.setVolume( currVol - 10 ); } Event.stop( event ); } ); var muteBtnId = playerid.sub( 'ytEmbed', 'mute' ); Event.observe( $( muteBtnId ), 'click', function( event ) { if( ytplayer.isMuted() ) { ytplayer.unMute(); } else { ytplayer.mute(); } Event.stop( event ); } ); var timeDivId = playerid.sub( 'ytEmbed', 'currentTime' ); var statusDivId = playerid.sub( 'ytEmbed', 'currentStatus'); var dtTime = new Date(); new PeriodicalExecuter( function( pe ) { //lightbox closed, so stop this PeriodicalExecuter if( !$( timeDivId ) ) { pe.stop(); return; } //update the current time $( timeDivId ).update( page.YouTubeControls.formatTime( ytplayer.getCurrentTime() ) ); //update the current status var status = ytplayer.getPlayerState(); var statusStr = page.bundle.getString( 'yt.stopped' ); switch( status ) { case -1 : statusStr = page.bundle.getString( 'yt.stopped' ); break; case 0 : statusStr = page.bundle.getString( 'yt.ended' ); break; case 1 : statusStr = page.bundle.getString( 'yt.playing' ); break; case 2 : statusStr = page.bundle.getString( 'yt.paused' ); break; case 3 : statusStr = page.bundle.getString( 'yt.buffering' ); break; case 5 : statusStr = page.bundle.getString( 'yt.cued' ); break; } page.YouTubeControls.updateButtonLabels( ytplayer, muteBtnId, playBtnId, status ); $( statusDivId ).update( statusStr ); }.bind(this), 0.5 ); //wire the open/close controls wrapper var openYtControlsId = playerid.sub( 'ytEmbed', 'openYtControls' ); Event.observe( $( openYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); var closeYtControlsId = playerid.sub( 'ytEmbed', 'closeYtControls' ); Event.observe( $( closeYtControlsId ), 'click', function( event ) { page.YouTubeControls.toggleAXControls( playerid, openYtControlsId, event ); } ); } page.util.flyoutMenuMainButtonKeyboardHandler = function( event ) { var key = event.keyCode || event.which; if (key == Event.KEY_LEFT || key == Event.KEY_RIGHT) { var elem = Event.element( event ); var target = elem.up( 'li' ); while ( true ) { if ( key == Event.KEY_LEFT ) { target = target.previous(); } else if ( key == Event.KEY_RIGHT ) { target = target.next(); } if ( !target || page.util.hasClassName( target, 'sub' ) || page.util.hasClassName( target, 'mainButton' ) || page.util.hasClassName( target, 'mainButtonType' ) ) { break; } } if ( target ) { var menuLinks = $A( target.getElementsByTagName( 'a' ) ); if ( menuLinks && menuLinks.length > 0 ) { menuLinks[ 0 ].focus(); Event.stop( event ); } } } }; page.util.initFlyoutMenuBehaviourForListActionMenuItems = function( container ) { //Initialize accessible flyout menu behavior if ( !container ) { container = document; } var uls = document.getElementsByTagName('ul'); if (uls) { var numUls = uls.length; for (var i = 0; i < numUls; i++) { var ul = uls[i]; if (page.util.hasClassName(ul, 'nav')) { var lis = ul.getElementsByTagName('li'); if (lis) { var numLis = lis.length; for (var j = 0; j < numLis; j++) { var li = lis[j]; if (page.util.hasClassName(li, 'sub')) { new page.FlyoutMenu($(li)); } else if (page.util.hasClassName(li, 'mainButton') || page.util.hasClassName(li, 'mainButtonType')) { var menuLinks = $A($(li).getElementsByTagName('a')); if (menuLinks && menuLinks.length > 0) { Event.observe(menuLinks[0], 'keydown', page.util.flyoutMenuMainButtonKeyboardHandler.bindAsEventListener(menuLinks[0])); } } } } } } } }; page.subheaderCleaner = { init : function( entityKind ) { var allHidden = true; var firstUl = null; var className = 'portletList-img courseListing ' + entityKind; $A( document.getElementsByClassName( className ) ).each( function( ul ) { if ( !ul.down() ) { ul.previous( 'h3' ).hide(); ul.hide(); if ( !firstUl ) { firstUl = ul; } } else { allHidden = false; } }); if ( allHidden && firstUl ) { firstUl.previous( 'div' ).show(); } } }; /** * Set up any JavaScript that will always be run on load (that doesn't depend on * any application logic / localization) here. * * Please leave this at the bottom of the file so it's easy to find. * */ FastInit.addOnLoad( function() { Event.observe( document.body, "click", page.ContextMenu.closeAllContextMenus.bindAsEventListener( window ) ); Event.observe( document.body, "click", page.ContextMenu.alignArrowsInBreadcrumb.bindAsEventListener( window ) ); Event.observe( document.body, 'keydown', function(event) { var key = event.keyCode || event.which; if ( key == 116 ) // reload current page on F5 key press { Event.stop( event ); // prevent browser from reloading complete frameset if ( Prototype.Browser.IE ) { event.keyCode = 0; } (function() { window.location.reload( true ); }.defer()); return false; } }); page.util.initFlyoutMenuBehaviourForListActionMenuItems(); if ( $('breadcrumbs') ) { new page.BreadcrumbExpander($('breadcrumbs')); // If we're in the content wrapper, hide the content wrapper breadcrumb frame // so that we don't get stacked breadcrumbs. if ( window.name === 'contentFrame' ) { var parent = window.parent; if ( parent ) { var frameset = parent.document.getElementById( 'contentFrameset' ); if ( frameset ) { frameset.rows = "*,100%"; } } } } var contentPane = $('contentPanel') || $('portalPane'); if ( contentPane ) { new page.LightboxInitializer( 'lb', contentPane ); } // add a label for inventory table checkboxes, if needed $A(document.getElementsByTagName("table")).each( function( table ) { if ( !page.util.hasClassName( table, 'inventory' ) ) { return; } var rows = table.rows; if ( rows.length < 2 ) { return; } for (var r = 0, rlen = rows.length - 1; r < rlen; r++) { var cells = rows[r+1].cells; // skip header row for (var c = 0, clen = cells.length; c < clen; c++) { var cell = $(cells[c]); var inp = cell.down('input'); if ( !inp || ( inp.type != 'checkbox' && inp.type != 'radio' ) ) { // We're only looking for checkbox/radio cells to label, so move on continue; } var lbl = cell.down('label'); if (lbl && !lbl.innerHTML.blank()) { break; // skip cells that already have a non-blank label } if ( !lbl ) { // add new label to checkbox lbl = new Element('label', {htmlFor: inp.id} ); lbl.addClassName('hideoff'); cell.insert({bottom:lbl}); } var headerCell = $(cell.parentNode).down('th'); if ( !headerCell ) { break; // skip rows without header cell } // create a temporary clone of the header cell and remove any hidden divs I.e. context menus var tempCell = $(headerCell.cloneNode(true)); var tempCellDivs = tempCell.getElementsByTagName("div"); for ( var i = 0; i < tempCellDivs.length; i++ ) { var d = tempCellDivs[i]; if ( d && !$(d).visible() ) { d.remove(); } } var lblBody = tempCell.innerHTML.replace( /<\/?[^>]*>/g, '' ); // strip html tags from header lblBody = page.bundle.getString('inventoryList.select.item', lblBody); lbl.update( lblBody ); // set label to header contents (minus tags) break; } } }); //set default font sizes to display text. hack to fix IE7 default font size issue. var sizes = {1:'xx-small', 2:'x-small', 3:'small', 4:'medium', 5:'large', 6:'x-large', 7:'xx-large'}; var fonts = document.getElementsByTagName('font'); for ( var i = 0; i < fonts.length; i++ ) { var font = fonts[i]; if ( font.size ) { // Since some font elements may be manually created by end users we have to handle random // values in here. if (!font.size.startsWith("+") && !font.size.startsWith("-")) { var fsize = parseInt(font.size, 10); if (fsize > 0 && fsize < 8) { font.style.fontSize = sizes[fsize]; } } } } try { if ( top && top.document.getElementById( 'bbFrameset' ) && window.name != 'nav' ) { top.document.getElementsByName('content')[0].title = page.bundle.getString( "frameset.contentframe.title" ) + " : " + document.title; } } catch ( err ) { // When Content System is loaded within a Vista popup window, cross-site security will prevent // accesses to top.document. Ignore this error and continue } page.scrollToEnsureVisibleElement(); page.isLoaded = true; }); /** * Class for adding an insertion marker within a list */ page.ListInsertionMarker = Class.create(); page.ListInsertionMarker.prototype = { initialize: function( listId, position, key, text ) { var list = $(listId); var listElements = list.childElements(); // create a marker list item var marker = new Element('li',{'id':listId+':'+key, 'class':'clearfix separator' }); marker.update('<h3 class="item" id=""><span class="reorder editmode"><span><img alt="" src="/images/ci/icons/generic_updown.gif"></span></span><span class="line"></span><span class="text">'+text+'</span></h3>'); //marker.setStyle({ position: 'relative', minHeight: '10px', padding: '0px', background: '#CCCCCC' }); position = ( position > listElements.length ) ? listElements.length : position; // add marker to list if (listElements.length == 0) { list.insert({top:marker}); // add marker to top of empty list } else if (listElements.length == position) { list.insert({bottom:marker}); // add marker after last element } else { listElements[position].insert({before:marker}); // add marker before element at position } var select = $('reorderControls'+listId).down('select'); // add a option for the marker to the keyboard repostioning select, if any if (select) { var option = new Element('option',{'value':key}).update( '-- '+text+' --' ); if (listElements.length == 0) { select.insert({top:option}); } else if (listElements.length == position) { select.insert({bottom:option}); } else { $(select.options[position]).insert({before:option}); } } } }; page.scrollToEnsureVisibleElement = function( ) { var params = window.location.search.parseQuery(); var ensureVisibleId = params.ensureVisibleId; if ( !ensureVisibleId ) { return; } var ensureVisibleElement = $(ensureVisibleId); if ( !ensureVisibleElement ) { return; } var pos = ensureVisibleElement.cumulativeOffset(); var scrollY = pos.top; var bodyHeight = $( document.body ).getHeight(); if (scrollY + ensureVisibleElement.getHeight() < bodyHeight) { return; // element is already visible } var receipt = $('inlineReceipt_good'); if ( receipt && receipt.visible() ) // pin receipt to top { var offset = receipt.cumulativeOffset(); offset.top = 0; var w = parseInt(receipt.getStyle('width'), 10); if ( Prototype.Browser.IE ) // width in IE includes border & padding, need to remove it { var bw = parseInt(receipt.getStyle('borderLeftWidth'), 10) + parseInt(receipt.getStyle('borderRightWidth'), 10); var pw = parseInt(receipt.getStyle('paddingLeft'), 10) + parseInt(receipt.getStyle('paddingRight'), 10); w = w - bw - pw; } receipt.setStyle({ position:"fixed", zIndex:"1000", left: offset.left + "px", top: offset.top + "px", width: w + "px"}); scrollY = scrollY - 2 * receipt.getHeight(); } // scroll window to show ensureVisibleElement window.scrollTo(0, scrollY ); }; /** * Recursively walks up the frameset stack asking each window to change their * document.domain attribute in anticipation of making a cross-site scripting * call to an LMS integration. * * <p>This should only be called from popup windows, as changing the document.domain * value of a window that is going to be reused later could do surprising things. * * @param domain Domain name shared by the Learn and LMS servers. */ page.setLmsIntegrationDomain = function( domain ) { if ( '' == domain ) { return; } try { if ( parent.page.setLmsIntegrationDomain ) { parent.page.setLmsIntegrationDomain( domain ); } } catch ( err ) { /* Ignore */ } document.domain = domain; }; page.refreshTopFrame = function() { if ( window.top.nav ) { window.top.nav.location.reload(); } }; page.rewriteTaskStatusUntilDone = function( spanId, taskId) { var theSpan = $(spanId); if (theSpan) { new Ajax.Request("/webapps/blackboard/execute/getSystemTaskStatus?taskId=" + taskId, { method: 'post', onSuccess: function(transport, json) { var result = transport.responseText.evalJSON( true ); theSpan = $(spanId); // reload it just in case it was removed between the request and response if (theSpan) { theSpan.update(result.text); if (result.complete == "false") { setTimeout(function() {page.rewriteTaskStatusUntilDone(spanId, taskId);}, 3000); } } }, onFailure: function(transport, json) { theSpan = $(spanId); //reload the span as above if (theSpan) { theSpan.hide(); $(spanId+'error').show(); } } }); } }; /* * Clean up the task id which associated with the specified course, so that the inline warning does not show up again */ page.cleanTaskId = function( courseId ) { //we don't care about the result, at worse it will display again on the next page new Ajax.Request("/webapps/blackboard/execute/courseMain?action=cleanTaskId&course_id=" + courseId, { method: 'post' }); }; } /* ================================================================== *The JavaScript Validation objects to be used in form validation. * Copyright (c) 2001 by Blackboard, Inc., * 1899 L Street, NW, 5th Floor * Washington, DC, 20036, U.S.A. * All rights reserved. * Submit RFC & bugs report to: [email protected] * This software is the confidential and proprietary information * of Blackboard, Inc. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Blackboard. * ==================================================================*/ /** * General purpose DOM utility methods. There's probably a better place for this. * Private methods and properties have names prefixed with "_". */ var bbDomUtil = { _inputTypes: [ 'input', 'textarea', 'select', 'button' ], _maxRecursion: 500, /** * @param elName name of the form input element (the request parameter name). * @return an array of two or more elements, a single element, or null. */ getInputElementByName: function( elName ) { var elArray = this._getInputElementsByNameInSection( 'dataCollectionContainer', elName ); if ( elArray.length === 0 ) { elArray = this._getInputElementsByName( elName ); } return ( elArray.length === 0 ) ? null : ( elArray.length == 1 ? elArray[ 0 ] : elArray ); }, /* * @param sectionId the ID of any element inside a form * @return the enclosing form element or null */ getEnclosingForm: function( sectionId ) { var form = null; if ( sectionId ) { var count; var section = document.getElementById( sectionId ); while ( section ) { ++count; if ( count > this._maxRecursion ) { break; } if ( section.tagName && section.tagName.toLowerCase() == "form" ) { form = section; break; } section = section.parentNode; } } return ( !form ) ? ( document.forms.length === 0 ? null : document.forms[ 0 ] ) : form; }, /** * Adds some additional processing to account for an IE bug * @param id the ID of an element */ getElementById: function( id ) { var el = $( id ); try { if ( el && /msie|internet explorer/i.test( navigator.userAgent ) && el.attributes.id && el.attributes.id.value != id && document.all ) { // IE usually returns item at 0 for ( var i = 0; i < document.all[ id ].length; ++i ) { if ( document.all[ id ][ i ].attributes.id && document.all[ id ][ i ].attributes.id.value == id ) { return $( document.all[ id ][ i ] ); } } } } catch ( e ) { // Ignore all exceptions } return el; }, syncCheckboxToInput: function( checkboxElement, inputElement ) { var checkbox = $( checkboxElement ); var input = $( inputElement ); if ( checkbox && input ) { var checkIfNotEmpty = function( ) { checkbox.checked = ( input.value.strip?input.value.strip( ):input.value )?true:false; } input.observe( 'change', checkIfNotEmpty ); input.observe( 'blur', checkIfNotEmpty ); } }, /** * @param sectionId the ID of an element that restricts the scope of elements. Cannot be null. * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name in the scope of the specified parent element. */ _getInputElementsByNameInSection: function( sectionId, elName ) { var result = []; if ( sectionId ) { var section = document.getElementById( sectionId ); if ( section ) { for ( var i = 0; i < this._inputTypes.length; ++i ) { var elements = section.getElementsByTagName( this._inputTypes[ i ] ); for ( var j = 0; j < elements.length; ++j ) { if ( elements[ j ].name == elName ) { result.push( elements[ j ] ); } } } } } return result; }, /** * @param elName name of the form input element (the request parameter name). Cannot be null. * @return an array of zero or more elements with the specified name. */ _getInputElementsByName: function( elName ) { var result = []; var elArray = document.getElementsByName( elName ); var formName = null; for ( var i = 0; i < elArray.length; ++i ) { if ( elArray[ i ].tagName.match( /^(input|select|textarea|button)$/i ) ) { if ( elArray[ i ].form !== null ) { if ( !formName ) { formName = elArray[ i ].form.name; } else if ( formName != elArray[ i ] .form.name ) { // Ignore elements that don't belong to the same form as the first one found. continue; } result.push( elArray[ i ] ); } } } return result; } }; /************************************************************ * Object formCheckList. Use this object to hold form objects * to be validated and perform form validation ************************************************************/ var addElement, removeElement, removeAllElements, getElement, checkForm, CheckGroup; var formCheckList = new formCheckList(); var dblSubmit = false; var skipValidation=false; function formCheckList() { this.checkList = []; this.addElement = addElement; this.removeElement = removeElement; this.removeAllElements = removeAllElements; this.getElement = getElement; this.check = checkForm; } function addElement(element) { if ( typeof element.group != 'undefined' ) { for ( var i=0; i < this.checkList.length;i++ ) { if ( this.checkList[i].name == element.group ) { this.checkList[i].addElement(element); return; } } var grp = new CheckGroup(element); grp.addElement(element); this.checkList[this.checkList.length] = grp; return; } this.checkList[this.checkList.length] = element; } function removeElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { this.checkList.splice(i, 1); } } } function getElement(name) { for (var i = 0; i < this.checkList.length; ++i) { if ( this.checkList[i].fieldName == name ) { return this.checkList[i]; } } } function removeAllElements() { var valSize = this.checkList.length; this.checkList.splice(0, valSize); } function checkForm() { if ( typeof(window.invalidAnswersTmp)!='undefined' ) { window.invalidAnswersTmp=[]; } var valid =true; for ( var i=0;i<this.checkList.length;i++ ) { if ( this.checkList[i].canValidate && !this.checkList[i].canValidate() ) { // cannot validate the input so skip it and continue onto the next input continue; } if ( !this.checkList[i].check() ) { if ( this.checkList[i].answerChk ) { valid=false; } else { return false; } } } return valid; } ///////////////////End of object formCheckList//////////////// /************************************************************ * Object: inputText. Use this object to validate text input in * your form (for input type == text|password|textarea|BUT NOT FILE!!! (FILE IS READ-ONLY)) ************************************************************/ function inputText(h) { if (h.id) { this.element = bbDomUtil.getElementById( h.id ); } else { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; } this.shouldFocus = h.shouldFocus; if ( h.shouldFocus === undefined ) { this.shouldFocus = true; } if ( this.shouldFocus ) { this.formatElement = 'bbDomUtil.getInputElementByName("'+h.display_format+'")'; this.focusElement = h.focus_element; // override element for focus in case of error } this.fieldName = h.name; this.disable_script = h.disable_script; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.minlength = h.minlength; this.maxlength = h.maxlength; this.trim = h.trim; this.regex = h.regex; this.regex_msg = h.regex_msg; this.regex_match = h.regex_match; this.verify = h.verify; this.check = inputTextCheck; this.valid_number = h.valid_number; this.min_value = h.min_value; this.max_value = h.max_value; this.nonnegative = h.nonnegative; this.valid_float = h.valid_float; this.allow_negative_float = h.allow_negative_float; this.valid_percent = h.valid_percent; this.allow_negative_percent = h.allow_negative_percent; this.valid_efloat = h.valid_efloat; // float with optional exponent this.valid_email = h.valid_email; this.valid_url = h.valid_url; this.required_url = h.required_url; this.invalid_chars = h.invalid_chars; // eg: /[%&#<>=+,]/g this.cmp_element = 'bbDomUtil.getInputElementByName("'+h.cmp_field+'")'; this.cmp_ref_label = h.cmp_ref_label; this.xor = h.xor; this.cmp_required = h.cmp_required; this.activeX = h.activeX; // synch activeX to hidden field before submission this.isHtmlDoc = h.isHtmlDoc; // is portfolio with body and html this.img_check = h.img_check; this.empty_value_warn = h.empty_value_warn; this.valid_system_role_id = h.valid_system_role_id; this.required = h.required; this.canValidate = h.canValidate; // callback function to determine whether the inputtext should be validated if (h.ref_and_regex === undefined) { this.ref_and_regex = true; } else { this.ref_and_regex = h.ref_and_regex; } if ( document.all && document.getElementById(h.name+'_ax') ) { this.axobj = document.getElementById(h.name+'_ax'); } // Add here anything you need to validate } function isAnEmptyVtbe(val) { // Different browsers populate an 'empty' VTBE with a different blank line - look for any of the known combinations and ignore them. // NOTE: Changes to this method need to be reflected in AssessmentDisplayControl.isAnEmptyVtbe return ( !val || !val.replace(/<p><\/p>/gi,'').trim() || !val.replace(/<br \/>/gi,'').trim() || !val.replace(/&nbsp;/gi,'').trim()); } // Do actual check here function inputTextCheck() { if ( this.shouldFocus === undefined ) { this.shouldFocus = true; } var element = eval(this.element); var cmp_element = eval(this.cmp_element); if ( element ) { // don't validate disabled elements if (element.disabled) { return true; } var focusElement = element; if ( this.axobj ) { focusElement = this.axobj; } this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.custom_alert_cmp = (typeof this.custom_alert_cmp != 'undefined') ? this.custom_alert_cmp : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( isAnEmptyVtbe(val) ) { val=''; } var trimmedVal, numVal, isValidNum, re; if ( this.activeX && isEmptyWysiwyg(element) ) { element.value = ''; val = ''; } if ( typeof eval(this.formatElement) != "undefined" && eval(this.formatElement) !== null ) { //Check if it is a mathml where; if ( /<APPLET ID="(\d+)" NAME="(\w+)"/.test(element.value) ) { if ( getRadioValue(eval(this.formatElement)) == 'P' ) { if ( !confirm(JS_RESOURCES.getString('validation.plain_text.confirm')) ) { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } } if ( this.trim ) { val = val.trim(); element.value = val; } //Remove leading & trailing spaces if needed if ( typeof cmp_element != 'undefined' ) { if ( this.xor ) { if ( val.trim()=='' ^ cmp_element.value.trim()=='' ) { if ( val.trim()=='' ) { alert( this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } } else { alert(this.custom_alert_cmp ? this.custom_alert_cmp : JS_RESOURCES.getFormattedString('validation.cmp_field.required', [this.cmp_ref_label, this.ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } } return false; } } } if ( this.disable_script ) { if ( typeof eval(this.formatElement) == "undefined" || getRadioValue(eval(this.formatElement)) != 'P' ) { re = /<\s*script/ig; var re1 = /<\s*\/\s*script\s*>/ig; val = val.replace(re,'<disabled-script'); val = val.replace(re1,'</disabled-script>'); var re2 = /href\s*=\s*(['"]*)\s*javascript\s*:/ig; val = val.replace(re2,"href=$1disabled-javascript:"); element.value = val; } } if ( this.valid_number ) { trimmedVal = val.trim(); //added this check bcoz for numeric fields which are not required, this function was not working if ( trimmedVal!="" ) { var numLocalizer = new NumberLocalizer(); if ( numLocalizer === undefined ) { numVal = parseInt(trimmedVal, 10); } else { numVal = numLocalizer.parseNumber( trimmedVal ); } isValidNum = !isNaN(numVal); if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if (this.nonnegative && numVal<0) { alert(JS_RESOURCES.getFormattedString('validation.negative', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } if ( ( (this.min_value || this.min_value === 0) && numVal < this.min_value ) || ( this.max_value && ( numVal > this.max_value ) ) ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_value', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_float ) { trimmedVal = val.trim(); var numFormat; if ( this.allow_negative_float ) { numFormat = LOCALE_SETTINGS.getString('float.allow.negative.format'); } else { numFormat = LOCALE_SETTINGS.getString('float.format'); } if ( numFormat ) { //hand parse for l10n re = new RegExp( numFormat ); isValidNum = trimmedVal.search( re ) === 0; } else { //try to use platform native (non-localized) numVal = parseFloat(trimmedVal); isValidNum = !isNaN(numVal); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test(trimmedVal.substring(numVal.toString().length)); } } if ( !isValidNum ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_percent ) { if ( this.allow_negative_percent ) { if ( !isValidNegativePercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.allow_negtive.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { if ( !isPercent(val) ) { alert(JS_RESOURCES.getFormattedString('validation.percent', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.valid_efloat ) { if ( !isNumeric(val) ) { alert(JS_RESOURCES.getFormattedString('validation.number', [this.ref_label])); if ( this.shouldFocus ) { focusElement = (this.focusElement ? this.focusElement : this.element); if ( focusElement.focus ) { safeFocus( focusElement ); } } return false; } } if ( this.valid_email ) { if ( val.trim() == '' ) { if ( confirm(JS_RESOURCES.getString('warning.email')) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } else { re = /^(['`a-zA-Z0-9_+\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/; if ( !re.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.email', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } // confirms via javascript pop-up if input field is empty; // user can click Ok to proceed or cancel to go back with the element focused // the message that pops up is the message passed in with ref_label if ( this.empty_value_warn ) { if ( val.trim() == '' ) { if ( confirm(this.ref_label) ) { return true; } else { if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } var extra = 0; if (navigator.appName=="Netscape" && parseInt(navigator.appVersion, 10 )>=5) { var index = val.indexOf('\n'); while(index != -1) { extra += 1; index = val.indexOf('\n',index+1); } } if ( this.maxlength < val.length + extra ) { var newlength = val.length + extra; if ( (newlength - this.maxlength) > 1 ) { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.plural', [this.ref_label,this.maxlength,(newlength-this.maxlength)])); } else { alert(JS_RESOURCES.getFormattedString('validation.maximum_length.singular', [this.ref_label,this.maxlength])); } if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } // required_url, unlike valid_url, flags empty strings as invalid URLs. if ( this.required_url ) { if ( val.trim() == '' ) { alert(JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } if ( !isValidUrl(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( this.valid_url ) { if ( val.trim()=='' ) { return true; } var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; if ( !oRegExp.test(val) ) { alert(JS_RESOURCES.getFormattedString('validation.url', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } } if ( typeof(this.regex) == 'string' ) { this.regex=eval(this.regex); } if ( (typeof(this.regex) == 'object' || typeof(this.regex) == 'function') && val.trim() != '' ) { re =this.regex; if ( this.regex_match && val.search(re) == -1 ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } if ( !this.regex_match && re.test(val) ) { alert(this.regex_msg + (this.ref_and_regex?(this.ref_label + '.'):'')); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.invalid_chars ) { // if string was passed, convert to regular expression object if( Object.isString( this.invalid_chars ) ) { var stringToParse = this.invalid_chars; var firstSlashPos = stringToParse.indexOf("/"); var lastSlashPos = stringToParse.lastIndexOf("/"); var pattern = stringToParse.substring( ++firstSlashPos, lastSlashPos ); var modifier = stringToParse.substring( ++lastSlashPos, stringToParse.length ); this.invalid_chars = new RegExp( pattern, modifier ); } var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); if ( this.shouldFocus ) { shiftFocus(focusElement, this.activeX); } return false; } } if ( this.verify ) { var chk_field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'_chk')); var field = bbDomUtil.getInputElementByName(element.name.replace(/_inp$/,'')); if ( chk_field.value != val ) { alert(JS_RESOURCES.getFormattedString('validation.mismatch', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( chk_field ); } return false; } // Encode password if ( element.type == 'password' ) { element.value = element.value.trim(); if ( element.value != '' ) { element.value = field.value = chk_field.value = calcMD5(element.value); } else { alert(JS_RESOURCES.getString('validation.password')); element.value = field.value =''; if ( this.shouldFocus ) { safeFocus( element ); } return false; } } } if ( this.cmp_required && element.value.trim()!='' ) { if ( !cmp_element.value.trim().length ) { alert(JS_RESOURCES.getFormattedString('validation.cmp_field.rejected', [this.ref_label, this.cmp_ref_label])); if ( this.shouldFocus ) { safeFocus( cmp_element ); } return false; } } if ( this.img_check ) { return image_check(element); } //AS-102122, if a image tag without ALT properties <img src="1.jpg">, add a null ALT for it. <img src="1.jpg" alt=""> imgTag_check(element,0); // System role ids cannot begin with "BB" as of 7.2; such ids are reserved for solely for Blackboard use // Checks field to see if string begins with "BB" case-insensitive and if so, alert the user if ( this.valid_system_role_id ) { if ( element.value.indexOf('BB') === 0 || element.value.indexOf('bb') === 0 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.system_role.reserve', [this.ref_label])); if ( this.shouldFocus ) { safeFocus( element ); } return false; } else { return true; } } } return true; } ///////////////////End of object inputText/////////////////// //check ALT propertity for <img tag, if there isn't ALT propertiry, add ALT="" for this tag function imgTag_check(element , start){ var imgStart = element.value.indexOf("<img",start); // img: <img src=... > if (imgStart > -1 ){ var end = element.value.indexOf(">",imgStart); if (end == -1 ){ return; } var imgData = element.value.substring(imgStart, end+1); // <img src=... > if(imgData.indexOf("alt") == -1){ imgData = "<img alt=\"\" " + imgData.substring(4); element.value = element.value.substring(0,imgStart) + imgData + element.value.substring(end+1); } imgTag_check(element, end); } } function image_check(element) { var ext = element.value.match(/.*\.(.*)/); ext = ext ? ext[1] :''; var re = /gif|jpeg|png|tif|bmp|jpg/i; if ( ! re.test(ext) && element.value ) { if ( ! confirm(JS_RESOURCES.getFormattedString('validation.image_type', [ext])) ) { element.focus(); return false; } } return true; } /************************************************************ * Object: inputDate. Use this object to validate that the * associated date fields are not empty ************************************************************/ var inputDateCheck; function inputDate(h) { this.element_mm = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mm")'; this.element_dd = 'bbDomUtil.getInputElementByName("'+h.name+'_0_dd")'; this.element_yyyy = 'bbDomUtil.getInputElementByName("'+h.name+'_0_yyyy")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputDateCheck; // Add here anything you need to validate } // Do actual check here function inputDateCheck() { var element_mm = eval(this.element_mm); var element_dd = eval(this.element_dd); var element_yyyy = eval(this.element_yyyy); if ( typeof element_mm != 'undefined' && element_dd !='undefined' && element_yyyy !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = ( this.ref_label ) ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_mm.name]); if ( element_mm.selectedIndex == -1 || element_dd.selectedIndex == -1 || element_yyyy == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.date.required', [this.ref_label])); if ( element_mm.selectedIndex == -1 ) { element_mm.focus(); } else if ( element_dd.selectedIndex == -1 ) { element_dd.focus(); } else { element_yyyy.focus(); } return false; } } return true; } ///////////////////End of object inputDate/////////////////// /************************************************************ * Object: inputTime. Use this object to validate that the * associated time fields are not empty ************************************************************/ var inputTimeCheck; function inputTime(h) { this.element_hh = 'bbDomUtil.getInputElementByName("'+h.name+'_0_hh")'; this.element_mi = 'bbDomUtil.getInputElementByName("'+h.name+'_0_mi")'; this.element_am = 'bbDomUtil.getInputElementByName("'+h.name+'_0_am")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputTimeCheck; // Add here anything you need to validate } // Do actual check here function inputTimeCheck() { var element_hh = eval(this.element_hh); var element_mi = eval(this.element_mi); var element_am = eval(this.element_am); if ( typeof element_hh != 'undefined' && element_mi !='undefined' && element_am !='undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element_hh.name]); if ( element_hh.selectedIndex == -1 || element_mi.selectedIndex == -1 || element_am == -1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.time.required', [this.ref_label])); if ( element_hh.selectedIndex == -1 ) { element_hh.focus(); } else if ( element_mi.selectedIndex == -1 ) { element_mi.focus(); } else { element_am.focus(); } return false; } } return true; } ///////////////////End of object inputTime/////////////////// /************************************************************ * Object: inputSelect. Use this object to validate that the * associated select field is not empty ************************************************************/ var inputSelectCheck; function inputSelect(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.minSelected = h.minSelected; this.maxSelected = h.maxSelected; this.title = h.title; this.isMultiSelect = h.isMultiSelect; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.check = inputSelectCheck; // Add here anything you need to validate } // Do actual check here function inputSelectCheck() { var element = eval(this.element); var checked = 0; if ( typeof element != 'undefined' ) { if ( this.isMultiSelect) { if( this.minSelected ) { //check that at least minSelected number of options is selected //bsomala checked = element.options.length; if(checked < this.minSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.minItems', [this.minSelected])); element.focus(); return false; } } checked = 0; if ( this.maxSelected ) { checked = element.options.length; if(checked > this.maxSelected) { alert(this.title+' -- '+JS_RESOURCES.getFormattedString('validation.multiSelect.maxItems', [this.maxSelected])); element.focus(); return false; } } } else { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); if ( (element.selectedIndex == -1) || (element.options[element.selectedIndex].value == "") ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); element.focus(); return false; } } } return true; } ///////////////////End of object inputSelect/////////////////// /************************************************************ * Object: inputFile. Use this object to validate that the file upload is not empty. IMPORTANT: file type is READ ONLY ************************************************************/ var inputFileCheck; function inputFile(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.invalid_chars = h.invalid_chars; this.minlength = h.minlength; this.img_check = h.img_check; this.check = inputFileCheck; // Add here anything you need to validate } // Do actual check here function inputFileCheck() { var element = eval(this.element); if ( typeof element != 'undefined' ) { this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [element.name]); var val = element.value; if ( this.invalid_chars ) { var arr = val.invalidChars(this.invalid_chars); if ( arr && arr.length ) { alert(JS_RESOURCES.getFormattedString('validation.invalid_chars', [this.ref_label, arr.join(', ')])); shiftFocus( element, false); return false; } } if ( val.length < this.minlength ) { if ( this.minlength == 1 ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); } else { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.minimum_length', [this.minlength, this.ref_label])); } return false; } if ( this.img_check ) { return image_check(element); } } return true; } ///////////////////End of object inputFile/////////////////// /************************************************************ * Object: Check_EventTime. Use this object to make sure * that the end time is not before the start time, confirm pastdue time, * check duration of the event. *************************************************************/ var Check_EventTime_check; function Check_EventTime(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check; } function Check_EventTime_check() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( (document.forms[0].restrict_start && document.forms[0].restrict_end)|| (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end) ) { if ( (document.forms[0].restrict_start && document.forms[0].restrict_end && document.forms[0].restrict_start.checked && document.forms[0].restrict_end.checked) || (document.forms.length > 1 && document.forms[1].restrict_start && document.forms[1].restrict_end && document.forms[1].restrict_start.checked && document.forms[1].restrict_end.checked) ) { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } } else { if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end && end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /* * SCR 17696 * This validation check should be used in the date widgets instead of the earlier one * as that has the chackboxes names hardcoded in them. The existing date wodgets * use it, but going ahead this should be the used. It helps specially when there are * multiple date widgets on the same page. */ var Check_EventTime_check_multiple; function Check_EventTime_multiple(obj) { this.start = "bbDomUtil.getInputElementByName('"+obj.name+"')"; this.end = "bbDomUtil.getInputElementByName('"+obj.cmp_field+"')"; //restrict flags fields this.restrict = "bbDomUtil.getInputElementByName('"+obj.restrict_flag+"')"; this.cmp_restrict="bbDomUtil.getInputElementByName('"+obj.cmp_restrict_flag+"')"; this.ref_lbl = obj.ref_label; this.cmp_ref_lbl= obj.cmp_ref_label; this.notEqual = obj.duration; this.pastDue = obj.past_due; this.show_end_time = obj.show_end_time; // define method this.check = Check_EventTime_check_multiple; } function Check_EventTime_check_multiple() { var start, end, restr, cmp_restr; start = eval(this.start); // first datetime field end = eval(this.end); // second datetime field to be compared with first restr = eval(this.restrict); // Restrict checkbox field cmp_restr = eval(this.cmp_restrict); // Restrict checkbox field to compare to restr = (typeof(restr) != 'undefined') ? restr.checked : true; // True if restrict checkbox cmp_restr = (typeof(cmp_restr) != 'undefined') ? cmp_restr.checked : true; // is checked or not defined // Update time in hidden field // Set time to empty string if it is not restricted if ( !restr ) { start.value = ''; } if ( !cmp_restr || (this.show_end_time && !restr) ) { end.value = ''; } // Second field has to be set also start = start.value; if ( typeof end != 'undefined' ) { end = end.value; } // Do not compare fields if at least one checkbox is unchecked if ( !restr || !cmp_restr ) { this.notEqual = 0; } // Do not test for past due if restiction is not applied if ( !restr ) { this.pastDue = 0; } if ( this.pastDue ) { var confirm; var start_ms = Date.parse(start.replace(/-/g,'/')); if ( start_ms < Date.parse(new Date())-this.pastDue*1000*60 ) { if ( !window.confirm(JS_RESOURCES.getFormattedString('validation.date_past.confirm', [this.ref_lbl])) ) { return false; } } } if ( restr && cmp_restr ) { //This block has been aded due to SCR 17696. //Reason : if this method is directly called from a JSP page which is not a part of // the existing date widgets, and the parameters of stsrt date, end date, start checkbox and // end checkbox are passed, and additionally the page has another if ( start > end && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_past', [this.cmp_ref_lbl, this.ref_lbl])); return false; } else if ( end == start && this.notEqual ) { alert(JS_RESOURCES.getFormattedString('validation.date_equal', [this.cmp_ref_lbl, this.ref_lbl])); return false; } } return true; } /*We always need time in our favorite format */ function sql_datetime(dat) { var year = dat.getFullYear(); var mon = dat.getMonth(); mon++; mon = (mon<10)?'0'+mon:mon; var day = dat.getDate(); day = (day<10)?'0'+day:day; var hh = dat.getHours(); hh = (hh<10)?'0'+hh:hh; var mi = dat.getMinutes(); mi = (mi<10)?'0'+mi:mi; var ss = dat.getSeconds(); ss = (ss<10)?'0'+ss:ss; return year+'-'+mon+'-'+day+' '+hh+':'+mi+':'+ss; } ///////////////////End of object Check_EventTime///////////// /******************************************************************************** * Object DoubleSubmit(): * Use this object to prevent multiple times form submission * Second argument is wait image source; first argument is image name (string) or * instance of ImageSwapper object created for submit button (if it has rollovers) *********************************************************************************/ var checkDoubleSubmit; // Prevent multiple form submission function DoubleSubmit() { this.submitted = 0; this.check = checkDoubleSubmit; } function checkDoubleSubmit() { if ( this.submitted > 0 ) { alert (JS_RESOURCES.getString('notification.submit')); return false; } else { this.submitted++; } return true; } ///////////////////End of Object DoubleSubmit()////////////////// /******************************************************************************** * Object RadioCheckBox(): * Use this object to make sure that at least one item is selected from the group of * radio/checkbox groups. Just attach this code to checkbox/radio group (refered below as 'element'): * formCheckList.addElement(new RadioCheckBox({name:'element or subgroup name',group:'group name',ref_label:"group label in alerts"})); *********************************************************************************/ var groupAddElement, checkGroupChecked, groupIsChecked; // Constructor function function RadioCheckBox(h) { return h; } function CheckGroup(h) { this.name = h.group; this.ref_label = h.ref_label; this.elements = []; this.addElement = groupAddElement; this.check = checkGroupChecked; } function groupAddElement(h) { this.elements[this.elements.length] = h.name; } function checkGroupChecked() { var list = this.elements; var chk = false; for ( var i = 0; i < list.length; i++ ) { if ( groupIsChecked(list[i]) ) { return true; } } var msg = null; var group = bbDomUtil.getInputElementByName(list[0]); group = (typeof group[0] != 'undefined') ? group[0]:group; if ( group.type == "radio" ) { msg = JS_RESOURCES.getFormattedString('validation.radio.required', [this.ref_label]); } else { msg = JS_RESOURCES.getFormattedString('validation.option.required', [this.ref_label]); } alert(msg); group.focus(); return false; } function groupIsChecked(groupName) { var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var checked = false; if ( typeof group != 'undefined' ) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( group[i].checked ) { checked = true; return checked; } } } else { if ( group.checked ) { checked = true; return checked; } } } return checked; } ///////////////////End of Object CheckGroup()//////////////////// /******************************************************************************** * Object selector(): * Use this object to make sure that at least one item is available in the Selector element (see PickerElement.java) * For use when Selector is marked Required: * formCheckList.addElement(new CheckSelector({name:'element or subgroup name',ref_label:"group label in alerts"})); *********************************************************************************/ var selectorCheck, selectorElementAvailable; // Constructor function function selector(h) { this.element = 'bbDomUtil.getInputElementByName("'+h.name+'")'; this.fieldName = h.name; this.ref_label = h.ref_label; this.custom_alert = h.custom_alert; this.custom_alert_cmp = h.custom_alert_cmp; this.required = h.required; this.check = selectorCheck; // Add here anything you need to validate } // Do actual check here function selectorCheck() { if(this.required) { var isAvailable = selectorElementAvailable(this.fieldName); this.custom_alert = (typeof this.custom_alert != 'undefined') ? this.custom_alert : ''; this.ref_label = (typeof this.ref_label != 'undefined') ? this.ref_label : JS_RESOURCES.getFormattedString('field_name.substitute', [this.element.name]); if ( !isAvailable ) { alert(this.custom_alert ? this.custom_alert : JS_RESOURCES.getFormattedString('validation.required', [this.ref_label])); return false; } } return true; } function selectorElementAvailable(groupName) { // we need at least one "Remove" checkbox to be present and unchecked (one element is added but not removed) var group = eval('bbDomUtil.getInputElementByName("'+groupName+'")'); var available = false; if ( typeof group != 'undefined' && group !== null) { if ( group.length > 1 ) { for ( var i=0;i< group.length; i++ ) { if ( !group[i].checked ) { available = true; return available; } } } else { if ( !group.checked ) { available = true; return available; } } } return available; } ///////////////////End of Object CheckSelector()//////////////////// //////////////// Start some useful generic functions //////////// /* Function ltrim(): Remove leading spaces in strings: Usage:trimmedString = originalString.ltrim(); */ function ltrim() { return this.replace( /^\s+/g,''); } String.prototype.ltrim = ltrim; /* Function rtrim(): Remove trailing spaces in strings: Usage:trimmedString = originalString.rtrim(); */ function rtrim() { return this.replace( /\s+$/g,''); } String.prototype.rtrim = rtrim; /* Function trim(): Remove leading and trailing spaces in strings: Usage:trimmedString = originalString.trim(); */ function trim() { return this.rtrim().ltrim(); } String.prototype.trim = trim; /* Function invalidChars(): Returns an array of illegal chars Usage: var listOfChars = myStringToSearch.invalidChars(regularExpression); regularExpression = /[illegal chars]/g; Sample re = /[! &^$#]/g */ function invalidChars (re) { var chrs = this.match(re); if ( chrs ) { for ( var j=0;j<chrs.length;j++ ) { if ( chrs[j]===' ' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.space'); } else if ( chrs[j]==',' ) { chrs[j]=JS_RESOURCES.getString('invalid_char.comma'); } else if ( chrs[j]=='\\' ) { chrs[j]='\\\\'; } } } return chrs; } String.prototype.invalidChars = invalidChars; /** Function getRadioValue(): Returns selected value for group of radio buttons * Usage: var selectedValue = getRadioValue(radio); radio - reference to radio group */ function getRadioValue(radio) { for ( var i=0;i< radio.length;i++ ) { if ( radio[i].checked ) { return radio[i].value; } } } /** Function isEmptyWysiwyg(): Checks WYSIWYG control for value */ function isEmptyWysiwyg(field) { // first remove any HTML tags from the value, then check if it's empty (all spaces or &nbsp;s) // explicitly adding the unicode non-breaking space and line feed/break since IE and safari // don't seem to include them in \s var EMPTY_REGEXP = /^(\s|\u00A0|\u2028|\u2029|&nbsp;)*$/i; // Input is not empty if it contains one of the following tags: img/object/embed var SPECIALTAGS = /(<\s*(img)|(object)|(embed)|(hr)|(input)|(applet))/i; if ( field && typeof(field.value) == 'string' && field.value ) { var notags = field.value.replace(/<.*?>/g,''); var result = EMPTY_REGEXP.test(notags); return ( result && !SPECIALTAGS.test(field.value) ); } return true; } /** Function isValidUrl(): Checks if given string is in the general URL format */ var VALID_URL_REGEXP = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/; function isValidUrl(string) { return( VALID_URL_REGEXP.test(string) ); } /** Numeric */ var EFLOAT_REGEXP = LOCALE_SETTINGS.getString('efloat.format'); var THOUSANDS_SEP = LOCALE_SETTINGS.getString('thousand.sep.format'); /*rejectThousandSep: if true then the presence of the thousands-separator is an error (non-numeric) * e.g. we don't accept it for point, since point/score is rarely in thousands range. */ function isNumeric(string, rejectThousandSep ) { string = string.trim(); if ( rejectThousandSep !== null && rejectThousandSep ) { var hasThousands = ( string.search( new RegExp( THOUSANDS_SEP ) ) !== -1 ) ; if (hasThousands) { return false; } } string = string.replace(new RegExp(THOUSANDS_SEP, 'g'), ''); if ( string.search( new RegExp(EFLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return !isNaN(floatValue); } return false; } /** Float between 0 and 100 */ var FLOAT_REGEXP = LOCALE_SETTINGS.getString('float.format'); function isPercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= 0 && floatValue <= 100 ); } return false; } /** Float between -100 and 100 */ var FLOAT_ALLOW_NEGATIVE_REGEXP = LOCALE_SETTINGS.getString('float.allow.negative.format'); function isValidNegativePercent(string) { string = string.trim(); if ( string.search( new RegExp(FLOAT_ALLOW_NEGATIVE_REGEXP) ) === 0 ) { var floatValue = parseFloat(string); return( !isNaN(floatValue) && floatValue >= -100 && floatValue <= 100 ); } return false; } /*Function submitForm() Call this function to validate and submit form @param form the name of the form or the DOM object representing the form. If null or undefined, submits first form on page. */ function submitForm(form) { if ( validateForm() ) { if (form) { if ( typeof( form ) == "string" ) { document.forms[ form ].submit(); } else { form.submit(); } } else { document.forms[0].submit(); } } } /* Sort numerical array in ascending order */ function numericalArraySortAscending(a, b) { return (a-b); } /*Function validateForm() * Call this function onSubmit inside <form> tag */ function validateForm() { // Set textarea value to VTBE contents if ( typeof(finalizeEditors) == "function" ) { finalizeEditors(); } var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if ( skipValidation ) { return true; } /* Validate form */ var valid = formCheckList.check(); var i; /*Check for invalid answers if any present */ var invalidAnswersArray = []; var invAns = window.invalidAnswers; if ( typeof( invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } invAns = window.invalidAnswersTmp; if ( typeof(invAns) == 'object' && invAns.length > 0 ) { for ( i = 0; i < invAns.length; ++i ) { invalidAnswersArray.push( invAns[i] ); } } var stringArg = ''; if ( invalidAnswersArray.length > 0 ) { invalidAnswersArray.sort(numericalArraySortAscending); var lastIndex = invalidAnswersArray.length - 1; for ( var x = 0; x < invalidAnswersArray.length; x++ ) { stringArg += invalidAnswersArray[x]; if ( x < lastIndex ) { if ( ( (x+1) % 10 ) === 0 ) { stringArg += ",\n"; } else { stringArg += ","; } } } } if ( stringArg !== '' && valid ) { var msgKey; if ( !assessment.backtrackProhibited ) { msgKey = 'assessment.incomplete.confirm'; } else { msgKey = 'assessment.incomplete.confirm.backtrackProhibited'; } if (assessment.isSurvey) { msgKey = msgKey + ".survey"; } if ( !confirm( JS_RESOURCES.getFormattedString( msgKey, [stringArg] ) ) ) { valid = false; // User decided not to submit } else { assessment.userReallyWantsToSubmit = true; } window.invalidAnswersTmp = []; // Clearing up } /* Go back to placeholders if validation failed (valid == false) */ if ( ismath && !valid ) { api.setMathmlBoxes(); } /* If everything is OK and ready to go,check that the form was not already submitted */ if ( valid && dblSubmit ) { valid = dblSubmit.check(); } return valid; } /*Function boxSelector() * Use this function to select, unselect or invert selection for specified checkbox groups * Call: boxSelector(['name1','name2',...,'namen'],action), here action is 'select', or 'unselect', or 'invert' */ function boxSelector(list,action) { action = (action == 'select') ? true : (action == 'unselect') ? false : action; for ( var i=0;i<list.length;i++ ) { var group = 'bbDomUtil.getInputElementByName("'+list[i]+'")'; if ( typeof (group = eval(group)) != 'undefined' ) { var j; if ( action == 'invert' ) { for ( j=0;j<group.length;j++ ) { group[j].checked = !group[j].checked; } } else { for ( j=0;j<group.length;j++ ) { group[j].checked = action; } } } } } function setHidden (from,to) { var hide = eval(to); hide.value = from.value; } ////////////////////////////////////////////////////////////////// /** * Check_Answer object was added by request specified in mscr 524 * to provide validation to student answers * Variable invalidAnswers has to be added to the page where assessment is submitted * It should contain the list of unfinished questions excluding question(s) on current page * Check_Answer object will perform final validation and display all unfinished questions in confirm box */ var invalidAnswers = []; // the java code will populate this array on final QbyQ page /** Object constructor for answers walidation * */ var Check_Answer_check; function Check_Answer (vobj) { if ( typeof(window.invalidAnswersTmp)=='undefined' ) { window.invalidAnswersTmp=[]; } this.form = 'document.forms[0]'; this.element = 'bbDomUtil.getInputElementByName("'+vobj.name+'")'; this.name = vobj.name; this.answerChk = true; //Check_Answer is special check, it makes a list of unfinished questions and always return true this.ref_label = vobj.ref_label; this.check = Check_Answer_check; } //Test if at least one member of radio or checkbox group is selected function isChecked(grp) { if (typeof(grp.length) != 'undefined') { for ( var i=0;i< grp.length;i++ ) { if ( grp[i].checked ) { return true; } } return false; } else { return grp.checked; } } function Check_Answer_check() { //create form element object var el = eval(this.element); //Extract question type information from element name var qtype = /^(\w+)-/.exec(this.name); if ( !qtype ) { qtype = /^([^_]+)_/.exec(this.name); } qtype = qtype[1]; if ( qtype == 'ma' ) { qtype = /-\d+$/.test(this.name) ? 'mat' : 'ma'; } // Perform actual check-up if ( qtype == 'tf' || qtype == 'mc' || qtype == 'ma' || qtype == 'eo' ) { if ( !isChecked(el) ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]=this.ref_label; } } else if ( qtype == 'ord' || qtype == 'mat' ) { if ( el.selectedIndex === 0 && this.ref_label != window.invalidAnswersTmp[window.invalidAnswersTmp.length-1] ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'fitb' || qtype == 'essay' || qtype == 'num' || qtype == 'calc' || qtype == 'hs' || qtype == 'jumbled_sentence' || qtype == 'fib_plus' || qtype == 'quiz_bowl' ) { //remove isEmptyWysiwyg for these question types, since they should allow some chars as < > var val = el.value; if ( isAnEmptyVtbe(val) ) { val=''; } if ( val.trim().length < 1 ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } else if ( qtype == 'file' ) { var haveFile = false; var hiddenField = eval(this.form + '.elements["' + this.name + '-override"]'); if ( hiddenField && hiddenField.value == "true" ) { haveFile = true; } el = eval(this.form + '.elements["' + this.name + '_attachmentType"]'); if ( !haveFile && el && el.value !== "" ) { haveFile = true; } if ( !haveFile ) { window.invalidAnswersTmp[window.invalidAnswersTmp.length]= this.ref_label; } } // eliminate duplicates // TODO: think of a better way to do this if ( window.invalidAnswersTmp.length > 0 ) { var tmpArray = []; var tmpObject = {}; for ( var i = 0; i < window.invalidAnswersTmp.length; ++i ) { if ( !tmpObject[window.invalidAnswersTmp[i]] ) { tmpObject[window.invalidAnswersTmp[i]] = true; tmpArray[tmpArray.length] = window.invalidAnswersTmp[i]; } } window.invalidAnswersTmp = tmpArray; } return true; //Always true, we can make decision later through confirm } // wrapper function for focus() calls function shiftFocus(el, isVTBE) { if ( el ) { if ( isVTBE && editors && editors[el.name] && typeof(editors[el.name].focusEditor) == 'function' ) { editors[el.name].focusEditor(); } else if ( !el.disabled && !el.readOnly && el.type != "hidden" ) { safeFocus( el ); } } return; } function safeFocus( e ) { try { if ( e && e.focus ) { e.focus(); } } catch (er) { //Ignore, element is hidden in IE and can't be focused. } } /** * A validator that checks to see that a certain radio button in a group is * selected. This is intended to be used for conditional validation -- * validators that only apply when a certain radio button selection is made. * Note that if there are no selected values, this validator will return false * when checked. * - name - radio button group to check * - value - the radio button value to check for selection */ var RadioButtonValueValidator_check; function RadioButtonValueValidator( name, value ) { this.element = bbDomUtil.getInputElementByName(name); this.value = value; this.check = RadioButtonValueValidator_check; } function RadioButtonValueValidator_check() { for ( var i = 0; i < this.element.length; i++ ) { if ( this.element[i].value == this.value ) { return this.element[i].checked; } } return false; } /** * A validator that performs a logical, short-circuit OR on its two arguments. */ var OrValidator_check; function OrValidator( first, second ) { this.first = first; this.second = second; this.check = OrValidator_check; } function OrValidator_check() { return this.first.check() || this.second.check(); } /* This is a sample code that has to be added to every corresponding form element in take assessment page, where you perform question validation for completness; ref_lablel value is used to refer to element, name is field full name: <script type="text/javascript"> formCheckList.addElement(new Check_Answer({ref_label:"Question 3",name:"tf-ans-_190_1"})); </script> */ var nonceUtil = {}; /** * Finds the form element holding the nonceId * @param formId is the id of the form the nonce element exists within */ nonceUtil.getNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce') }; nonceUtil.getAjaxNonceId = function(formId) { return nonceUtil.getNonceIdEx(formId, 'blackboard.platform.security.NonceUtil.nonce.ajax') }; nonceUtil.getNonceIdEx = function(formId, elName) { var nonceId = null; if(formId && $s(formId) ) { nonceId= $s(formId).elements[elName]; } if( !nonceId ) { // take a cheap shot at retreiving the first nonceId on the page nonceId = document.getElementsByName( elName )[0]; // Note : nonceId can be null if the form does not have a nonce element declared. This should be a sign of a xsrf loophole } return nonceId; }; /** * Finds the form element holding the nonceId * @param formElementId is the id of a form element on the page. It is expected that the nonceId corresponds * to the same form. */ nonceUtil.getNonceIdByFormElementId = function(formElementId) { var nonceId = null; if( formElementId && $s(formElementId) ) { var elementFormId = bbDomUtil.getEnclosingForm(formElementId); nonceId = $s(elementFormId).elements['blackboard.platform.security.NonceUtil.nonce']; } return nonceId; }; nonceUtil.getNonceIdValue = function(formId) { var nonceId = nonceUtil.getNonceId(formId); return nonceId ? nonceId.value : ""; }; /** * Copies the nonceid from one form on the page to another form. Useful when using flyout forms. */ nonceUtil.copyNonceId = function( sourceFormId, targetFormId ) { var nonceId = nonceUtil.getNonceIdValue( sourceFormId ); var targetElem = new Element( 'input', { type: 'hidden', name: 'blackboard.platform.security.NonceUtil.nonce', value: nonceId } ); $( targetFormId ).appendChild( targetElem ); }; /** * Updates the form's nonceId based on the JSON response from an AjaxSecureForm */ nonceUtil.updateFromAjaxRequest = function( headerJSON ) { if ( headerJSON ) { var nonceId = nonceUtil.getNonceId(); if( nonceId ) { nonceId.value = headerJSON.nonceId; } } }; var NumberLocalizer = Class.create(); NumberLocalizer.prototype = { initialize : function() { var thousandsSeparator = LOCALE_SETTINGS[ 'number_format.thousands_sep' ]; var decimalSeparator = LOCALE_SETTINGS[ 'number_format.decimal_point' ]; this.thousandsSeparator = ( thousandsSeparator === null ) ? ',' : thousandsSeparator; this.needToConvertThousands = ( this.thousandsSeparator !== ',' ) ? true : false; this.decimalSeparator = ( decimalSeparator === null ) ? '.' : decimalSeparator; this.needToConvertDecimal = ( this.decimalSeparator !== '.' ) ? true : false; }, // Takes a number that is unlocalized and converts it to // the current locale format. formatNumber : function( f ) { var result; result = f.toString(); // Replace and thousands delimiter with a token so we can // replace it with the final symbol after we replace the decimal symbol. if ( this.needToConvertThousands ) { result = result.replace( ',', '[comma]' ); } if ( this.needToConvertDecimal ) { result = result.replace( '.', this.decimalSeparator ); } if ( this.needToConvertThousands ) { result = result.replace( '[comma]', this.thousandsSeparator ); } return result; }, // Takes a number that is in the current locale format and // converts it back to an unlocalized number. parseNumber : function( num ) { var result; result = num.toString(); // Parsing string to return as a float, so we don't need the thousands // separator anymore. result = result.replace( this.thousandsSeparator, '' ); if ( this.needToConvertDecimal ) { result = result.replace( this.decimalSeparator, '.' ); } return parseFloat( result ); } };var AccessibleSelect = {}; /** * Wire up the accessible event listeners to any <select>s on the page that have an onchange listener already */ AccessibleSelect.initializePage = function() { var selects = document.getElementsByTagName("select"); for ( var i = 0; i < selects.length; i++ ) { var currentSelect = selects[i]; if ( currentSelect.onchange ) { currentSelect.changed = false; currentSelect.onfocus = AccessibleSelect.onfocus; currentSelect.onkeydown = AccessibleSelect.onkeydown; currentSelect.onclick = AccessibleSelect.onclick; currentSelect.onchange = AccessibleSelect.createOnchange( currentSelect.onchange ); } } }; /** * Functor that creates an onchange function which if the <select> has actually been changed, will call the * specified callback (i.e. the original onchange function ) */ AccessibleSelect.createOnchange = function( callback ) { return function( theElement ) { var theSelect; if ( theElement && theElement.value ) { theSelect = theElement; } else { theSelect = this; } if (theSelect.changed) { // bind "theSelect" as the "this" for the callback. callback.apply(theSelect); return true; } else { return false; } }; }; /** * Event listener called when the <select> is clicked */ AccessibleSelect.onclick = function() { this.changed = true; // If the select size is greater than 0, then the onchange event occurs before the onclick event // and the "changed" attribute is false when the onchange event listener method runs and the select // element's onchange method does not get called. Therefore, we are going to call it here. if( this.size > 0 ) { this.onchange(this); } }; /** * Event listener called when the <select> gains focus */ AccessibleSelect.onfocus = function() { this.initValue = this.value; return true; }; /** * Event listener called when a key is pressed in the <select>. */ AccessibleSelect.onkeydown = function(e) { var theEvent; var keyCodeTab = "9"; var keyCodeEnter = "13"; var keyCodeEsc = "27"; if (e) { theEvent = e; } else { theEvent = event; } var largeSize = (this.size > 0); if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && ( largeSize || this.value != this.initValue) ) { this.initValue = this.value; this.changed = true; this.onchange(this); // returning true logically denotes that the change has been made, but more importantly it will make sure the default // behavior (what would have happened without the onkeydown event) is honored. For example, user pressing 'tab' key will // move the focus to the next element on the page return true; } else if (theEvent.keyCode == keyCodeEsc) { this.value = this.initValue; return false; } else { this.changed = false; } return true; }; // This script does not work for Safari. See AS-110404, AS-110426 if (!/webkit|khtml/i.test(navigator.userAgent)) { //When the page is loaded, initialize the select boxes if ( window.addEventListener) { window.addEventListener('load', AccessibleSelect.initializePage, false); } else if ( window.attachEvent ) { window.attachEvent('onload', AccessibleSelect.initializePage); } }var popup = { /** * Launches a new popup window. This method is used for an random popup that * might be necessary (preview window for example). If you are launching a * "picker" window you should use launchPicker() instead. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). This is required. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param resizable whether the new window should be resizable. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @param showStatus whether the new window should be show the status bar. If * not provided a default value will be used. Do not provide unless * your specific requirements dictate it. * @param scrolling whether the new window should allow scrolling. If not * provided a default value will be used. Do not provide unless your * specific requirements dictate it. * @return a reference to the popup window generated */ launch: function( url, name, width, height, resizable, showStatus, scrolling ) { if ( typeof( width ) == 'undefined' ) { // for RTL, the width needs to be wider, to prevent vertical line overlapping in the popup if ( page.util.isRTL() ) { width = 890; } else { width = 825; // wide enough to prevent a horizontal scrollbar in most cases } } if ( typeof( height ) == 'undefined' ) { height = 500; } if ( typeof( resizable ) == 'undefined' ) { resizable = 'yes'; } if ( typeof( showStatus ) == 'undefined' ) { showStatus = 'yes'; } if ( typeof( scrolling ) == 'undefined' ) { scrolling = 'yes'; } // figure out placement of the new window we will open. If the desired size // of the new window is bigger than the screen size then make the window // smaller and put it far left. Otherwise, center the window on screen. var screenX = 0; if ( screen.width <= width ) { width = screen.width; // new window should not be wider than the screen } else { screenX = ( screen.width - width ) / 2; // center on the screen } var popup = window.open( url, name, 'width=' + width + ',height=' + height + ',resizable=' + resizable + ',scrollbars=' + scrolling + ',status=' + showStatus + ',top=20' + ',screenY=20' + ',screenX=' + screenX + ',left=' + screenX ); if ( popup ) { popup.focus(); if ( !popup.opener ) { popup.opener = self; } window.top.name = 'bbWin'; } return popup; }, /** * Launches a new "picker" window. * <p> * At the moment the only difference between this method and launch (besides * the inability to specify some advanced and rarely used options) is that * this method will default the {@code name} value if not provided. However, * you should still use this method if you are launching a "picker" type * window as additional differences may be introduced in the future. * * @param url the url to open the new window using. This is the first value * passed to window.open(). This is required. * @param name the name of the new window. This is the second value passed * to window.open(). If not provided a default value will be used. * @param width the width of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @param height the height of the window to launch. If not provided a default * value will be used. Do not provide unless your specific requirements * dictate it. * @return a reference to the picker window generated */ launchPicker: function( url, name, width, height ) { if ( typeof( name ) == 'undefined' ) { name = 'picker'; } return popup.launch( url, name, width, height ); }, /** * Launches a new Content System folder "picker" window. * * @param element a reference to the form element into which the value chosen * in the picker should be set. If not provided, the value will not be * set. * @return a reference to the picker window generated */ launchCsDirectoryPicker: function( element ) { var picker = popup.launchPicker( "/webapps/cmsmain/folderpicker" ); if ( picker !== null ) { if ( ( typeof( element ) != 'undefined' ) && ( element !== null ) ) { picker.opener.inputEntryURLToSet = document.getElementById( element ); } picker.opener.returnFullURL = false; } return picker; } }; var BrowserSpecific = { registerListeners: function() { if( Prototype.Browser.IE ) { var inputs = $A(document.getElementsByTagName('input')); //Enter key submit handling added only for IE browser. if( inputs ) { inputs.each( function( input ) { if(input.type === 'text' && !page.util.hasClassName(input,'noFormSubmitIE')) { Event.observe( input, "keypress", this.checkEnterKeyToSubmit.bindAsEventListener( this, input ) ); } }.bind( this ) ); } } }, checkEnterKeyToSubmit: function(event, input) { //if generated character code is equal to ascii 13 (if enter key) if(event.keyCode == 13 && input.form) { var submitButtons = $(input.form).getInputs('submit'); if(submitButtons && submitButtons.size() > 0) { submitButtons.first().click(); } Event.stop(event); } else { return true; } }, // Fix FireFox bug which converts absolute links pasted into a VTBE into relative ones which // start with a variable number of "../". // https://bugzilla.mozilla.org/show_bug.cgi?id=613517 handleFirefoxPastedLinksBug: function( baseUrl, vtbeText ) { if ( !baseUrl || !vtbeText ) { return vtbeText; } if ( Prototype.Browser.Gecko ) { if( !$( baseUrl.empty() ) && !$( vtbeText.empty() ) ) { //e.g. extract out "http://localhost:80" from "http://localhost:80/webapps/Bb-wiki-BBLEARN/" // port is optional var absoluteUrlPrefix = baseUrl.match(/https?:[\d]*\/\/[^\/]+/); // e.g."../../../bbcswebdav/xid-2202_1" into "http://localhost:80/bbcswebdav/xid-2202_1" vtbeText = vtbeText.replace(/(\.\.\/)+(sessions|bbcswebdav|courses|@@)/g, absoluteUrlPrefix + "/" + "$2"); } } return vtbeText; }, disableEnterKeyInTextBoxes: function (document) { var inputs = $A(document.getElementsByTagName('input')); if( inputs ) { inputs.each ( function( input ) { //must add special className for IE textboxes if( Prototype.Browser.IE ) { input.addClassName( 'noFormSubmitIE' ); } Event.observe( input, 'keypress', this.disableEnterKey ); }.bind( this ) ); } }, disableEnterKey: function( event ) { if( event.keyCode != Event.KEY_RETURN ) { return; } Event.stop( event ); return; } };

/** * Inserts the given HTML content into the extra content cell of the standard * title bar. * * @param content The HTML content to place */ function insertTitlebarContent(content) { var contentCell = document.getElementById("_titlebarExtraContent"); contentCell.innerHTML = content; }

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Declare an object to which we can add real functions. */ if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; /** * Set an alternative error handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setErrorHandler = function(handler) { dwr.engine._errorHandler = handler; }; /** * Set an alternative warning handler from the default alert box. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setWarningHandler = function(handler) { dwr.engine._warningHandler = handler; }; /** * Setter for the text/html handler - what happens if a DWR request gets an HTML * reply rather than the expected Javascript. Often due to login timeout */ dwr.engine.setTextHtmlHandler = function(handler) { dwr.engine._textHtmlHandler = handler; }; /** * Set a default timeout value for all calls. 0 (the default) turns timeouts off. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.setTimeout = function(timeout) { dwr.engine._timeout = timeout; }; /** * The Pre-Hook is called before any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPreHook = function(handler) { dwr.engine._preHook = handler; }; /** * The Post-Hook is called after any DWR remoting is done. * @see getahead.org/dwr/browser/engine/hooks */ dwr.engine.setPostHook = function(handler) { dwr.engine._postHook = handler; }; /** * Custom headers for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setHeaders = function(headers) { dwr.engine._headers = headers; }; /** * Custom parameters for all DWR calls * @see getahead.org/dwr/???? */ dwr.engine.setParameters = function(parameters) { dwr.engine._parameters = parameters; }; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.XMLHttpRequest = 1; /** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */ dwr.engine.IFrame = 2; /** XHR remoting type constant. See dwr.engine.setRpcType() */ dwr.engine.ScriptTag = 3; /** * Set the preferred remoting type. * @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setRpcType = function(newType) { if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) { dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" }); return; } dwr.engine._rpcType = newType; }; /** * Which HTTP method do we use to send results? Must be one of "GET" or "POST". * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setHttpMethod = function(httpMethod) { if (httpMethod != "GET" && httpMethod != "POST") { dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" }); return; } dwr.engine._httpMethod = httpMethod; }; /** * Ensure that remote calls happen in the order in which they were sent? (Default: false) * @see getahead.org/dwr/browser/engine/ordering */ dwr.engine.setOrdered = function(ordered) { dwr.engine._ordered = ordered; }; /** * Do we ask the XHR object to be asynchronous? (Default: true) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setAsync = function(async) { dwr.engine._async = async; }; /** * Does DWR poll the server for updates? (Default: false) * @see getahead.org/dwr/browser/engine/options */ dwr.engine.setActiveReverseAjax = function(activeReverseAjax) { if (activeReverseAjax) { // Bail if we are already started if (dwr.engine._activeReverseAjax) return; dwr.engine._activeReverseAjax = true; dwr.engine._poll(); } else { // Can we cancel an existing request? if (dwr.engine._activeReverseAjax && dwr.engine._pollReq) dwr.engine._pollReq.abort(); dwr.engine._activeReverseAjax = false; } // TODO: in iframe mode, if we start, stop, start then the second start may // well kick off a second iframe while the first is still about to return // we should cope with this but we don't }; /** * The default message handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultErrorHandler = function(message, ex) { dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true); if (message == null || message == "") alert("A server error has occured."); // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message); else alert(message); }; /** * The default warning handler. * @see getahead.org/dwr/browser/engine/errors */ dwr.engine.defaultWarningHandler = function(message, ex) { dwr.engine._debug(message); }; /** * For reduced latency you can group several remote calls together using a batch. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.beginBatch = function() { if (dwr.engine._batch) { dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" }); return; } dwr.engine._batch = dwr.engine._createBatch(); }; /** * Finished grouping a set of remote calls together. Go and execute them all. * @see getahead.org/dwr/browser/engine/batch */ dwr.engine.endBatch = function(options) { var batch = dwr.engine._batch; if (batch == null) { dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" }); return; } dwr.engine._batch = null; if (batch.map.callCount == 0) return; // The hooks need to be merged carefully to preserve ordering if (options) dwr.engine._mergeBatch(batch, options); // In ordered mode, we don't send unless the list of sent items is empty if (dwr.engine._ordered && dwr.engine._batchesLength != 0) { dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch; } else { dwr.engine._sendData(batch); } }; /** @deprecated */ dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); }; dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); }; dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); }; dwr.engine.setPollType = function() { dwr.engine._debug("Manually setting the Poll Type is not supported"); }; //============================================================================== // Only private stuff below here //============================================================================== /** The original page id sent from the server */ dwr.engine._origScriptSessionId = "C06F8BF3EF9ED112A11775B9D4CF937A"; /** The session cookie name */ dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID /** Is GET enabled for the benefit of Safari? */ dwr.engine._allowGetForSafariButMakeForgeryEasier = "false"; /** The script prefix to strip in the case of scriptTagProtection. */ dwr.engine._scriptTagProtection = "throw 'allowScriptTagRemoting is false.';"; /** The default path to the DWR servlet */ dwr.engine._defaultPath = "/webapps/assessment/dwr_open"; /** Do we use XHR for reverse ajax because we are not streaming? */ dwr.engine._pollWithXhr = "false"; /** The read page id that we calculate */ dwr.engine._scriptSessionId = null; /** The function that we use to fetch/calculate a session id */ dwr.engine._getScriptSessionId = function() { if (dwr.engine._scriptSessionId == null) { dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000); } return dwr.engine._scriptSessionId; }; /** A function to call if something fails. */ dwr.engine._errorHandler = dwr.engine.defaultErrorHandler; /** For debugging when something unexplained happens. */ dwr.engine._warningHandler = dwr.engine.defaultWarningHandler; /** A function to be called before requests are marshalled. Can be null. */ dwr.engine._preHook = null; /** A function to be called after replies are received. Can be null. */ dwr.engine._postHook = null; /** An map of the batches that we have sent and are awaiting a reply on. */ dwr.engine._batches = {}; /** A count of the number of outstanding batches. Should be == to _batches.length unless prototype has messed things up */ dwr.engine._batchesLength = 0; /** In ordered mode, the array of batches waiting to be sent */ dwr.engine._batchQueue = []; /** What is the default rpc type */ dwr.engine._rpcType = dwr.engine.XMLHttpRequest; /** What is the default remoting method (ie GET or POST) */ dwr.engine._httpMethod = "POST"; /** Do we attempt to ensure that calls happen in the order in which they were sent? */ dwr.engine._ordered = false; /** Do we make the calls async? */ dwr.engine._async = true; /** The current batch (if we are in batch mode) */ dwr.engine._batch = null; /** The global timeout */ dwr.engine._timeout = 0; /** ActiveX objects to use when we want to convert an xml string into a DOM object. */ dwr.engine._DOMDocument = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"]; /** The ActiveX objects to use when we want to do an XMLHttpRequest call. */ dwr.engine._XMLHTTP = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; /** Are we doing comet or polling? */ dwr.engine._activeReverseAjax = false; /** The iframe that we are using to poll */ dwr.engine._outstandingIFrames = []; /** The xhr object that we are using to poll */ dwr.engine._pollReq = null; /** How many milliseconds between internal comet polls */ dwr.engine._pollCometInterval = 200; /** How many times have we re-tried to poll? */ dwr.engine._pollRetries = 0; dwr.engine._maxPollRetries = 0; /** Do we do a document.reload if we get a text/html reply? */ dwr.engine._textHtmlHandler = null; /** If you wish to send custom headers with every request */ dwr.engine._headers = null; /** If you wish to send extra custom request parameters with each request */ dwr.engine._parameters = null; /** Undocumented interceptors - do not use */ dwr.engine._postSeperator = "\n"; dwr.engine._defaultInterceptor = function(data) { return data; }; dwr.engine._urlRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._contentRewriteHandler = dwr.engine._defaultInterceptor; dwr.engine._replyRewriteHandler = dwr.engine._defaultInterceptor; /** Batch ids allow us to know which batch the server is answering */ dwr.engine._nextBatchId = 0; /** A list of the properties that need merging from calls to a batch */ dwr.engine._propnames = [ "rpcType", "httpMethod", "async", "timeout", "errorHandler", "warningHandler", "textHtmlHandler" ]; /** Do we stream, or can be hacked to do so? */ dwr.engine._partialResponseNo = 0; dwr.engine._partialResponseYes = 1; dwr.engine._partialResponseFlush = 2; /** Is this page in the process of unloading? */ dwr.engine._unloading = false; /** * @private Send a request. Called by the Javascript interface stub * @param path part of URL after the host and before the exec bit without leading or trailing /s * @param scriptName The class to execute * @param methodName The method on said class to execute * @param func The callback function to which any returned data should be passed * if this is null, any returned data will be ignored * @param vararg_params The parameters to pass to the above class */ dwr.engine._execute = function(path, scriptName, methodName, vararg_params) { var singleShot = false; if (dwr.engine._batch == null) { dwr.engine.beginBatch(); singleShot = true; } var batch = dwr.engine._batch; // To make them easy to manipulate we copy the arguments into an args array var args = []; for (var i = 0; i < arguments.length - 3; i++) { args[i] = arguments[i + 3]; } // All the paths MUST be to the same servlet if (batch.path == null) { batch.path = path; } else { if (batch.path != path) { dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." }); return; } } // From the other params, work out which is the function (or object with // call meta-data) and which is the call parameters var callData; var lastArg = args[args.length - 1]; if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() }; else callData = args.pop(); // Merge from the callData into the batch dwr.engine._mergeBatch(batch, callData); batch.handlers[batch.map.callCount] = { exceptionHandler:callData.exceptionHandler, callback:callData.callback }; // Copy to the map the things that need serializing var prefix = "c" + batch.map.callCount + "-"; batch.map[prefix + "scriptName"] = scriptName; batch.map[prefix + "methodName"] = methodName; batch.map[prefix + "id"] = batch.map.callCount; for (i = 0; i < args.length; i++) { dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i); } // Now we have finished remembering the call, we incr the call count batch.map.callCount++; if (singleShot) dwr.engine.endBatch(); }; /** @private Poll the server to see if there is any data waiting */ dwr.engine._poll = function() { if (!dwr.engine._activeReverseAjax) return; var batch = dwr.engine._createBatch(); batch.map.id = 0; // TODO: Do we need this?? batch.map.callCount = 1; batch.isPoll = true; if (dwr.engine._pollWithXhr == "true") { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } else { if (navigator.userAgent.indexOf("Gecko/") != -1) { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseYes; } else { batch.rpcType = dwr.engine.XMLHttpRequest; batch.map.partialResponse = dwr.engine._partialResponseNo; } } batch.httpMethod = "POST"; batch.async = true; batch.timeout = 0; batch.path = dwr.engine._defaultPath; batch.preHooks = []; batch.postHooks = []; batch.errorHandler = dwr.engine._pollErrorHandler; batch.warningHandler = dwr.engine._pollErrorHandler; batch.handlers[0] = { callback:function(pause) { dwr.engine._pollRetries = 0; setTimeout(dwr.engine._poll, pause); } }; // Send the data dwr.engine._sendData(batch); if (batch.rpcType == dwr.engine.XMLHttpRequest && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._checkCometPoll(); } }; /** Try to recover from polling errors */ dwr.engine._pollErrorHandler = function(msg, ex) { // if anything goes wrong then just silently try again (up to 3x) after 10s dwr.engine._pollRetries++; dwr.engine._debug("Reverse Ajax poll failed (pollRetries=" + dwr.engine._pollRetries + "): " + ex.name + " : " + ex.message); if (dwr.engine._pollRetries < dwr.engine._maxPollRetries) { setTimeout(dwr.engine._poll, 10000); } else { dwr.engine._activeReverseAjax = false; dwr.engine._debug("Giving up."); } }; /** @private Generate a new standard batch */ dwr.engine._createBatch = function() { var batch = { map:{ callCount:0, page:window.location.pathname + window.location.search, httpSessionId:dwr.engine._getJSessionId(), scriptSessionId:dwr.engine._getScriptSessionId() }, charsProcessed:0, paramCount:0, parameters:{}, headers:{}, isPoll:false, handlers:{}, preHooks:[], postHooks:[], rpcType:dwr.engine._rpcType, httpMethod:dwr.engine._httpMethod, async:dwr.engine._async, timeout:dwr.engine._timeout, errorHandler:dwr.engine._errorHandler, warningHandler:dwr.engine._warningHandler, textHtmlHandler:dwr.engine._textHtmlHandler }; if (dwr.engine._preHook) batch.preHooks.push(dwr.engine._preHook); if (dwr.engine._postHook) batch.postHooks.push(dwr.engine._postHook); var propname, data; if (dwr.engine._headers) { for (propname in dwr.engine._headers) { data = dwr.engine._headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (dwr.engine._parameters) { for (propname in dwr.engine._parameters) { data = dwr.engine._parameters[propname]; if (typeof data != "function") batch.parameters[propname] = data; } } return batch; }; /** @private Take further options and merge them into */ dwr.engine._mergeBatch = function(batch, overrides) { var propname, data; for (var i = 0; i < dwr.engine._propnames.length; i++) { propname = dwr.engine._propnames[i]; if (overrides[propname] != null) batch[propname] = overrides[propname]; } if (overrides.preHook != null) batch.preHooks.unshift(overrides.preHook); if (overrides.postHook != null) batch.postHooks.push(overrides.postHook); if (overrides.headers) { for (propname in overrides.headers) { data = overrides.headers[propname]; if (typeof data != "function") batch.headers[propname] = data; } } if (overrides.parameters) { for (propname in overrides.parameters) { data = overrides.parameters[propname]; if (typeof data != "function") batch.map["p-" + propname] = "" + data; } } }; /** @private What is our session id? */ dwr.engine._getJSessionId = function() { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length); if (cookie.indexOf(dwr.engine._sessionCookieName + "=") == 0) { return cookie.substring(dwr.engine._sessionCookieName.length + 1, cookie.length); } } return ""; }; /** @private Check for reverse Ajax activity */ dwr.engine._checkCometPoll = function() { for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { var text = ""; var iframe = dwr.engine._outstandingIFrames[i]; try { text = dwr.engine._getTextFromCometIFrame(iframe); } catch (ex) { dwr.engine._handleWarning(iframe.batch, ex); } if (text != "") dwr.engine._processCometResponse(text, iframe.batch); } if (dwr.engine._pollReq) { var req = dwr.engine._pollReq; var text = req.responseText; if (text != null) dwr.engine._processCometResponse(text, req.batch); } // If the poll resources are still there, come back again if (dwr.engine._outstandingIFrames.length > 0 || dwr.engine._pollReq) { setTimeout(dwr.engine._checkCometPoll, dwr.engine._pollCometInterval); } }; /** @private Extract the whole (executed an all) text from the current iframe */ dwr.engine._getTextFromCometIFrame = function(frameEle) { var body = frameEle.contentWindow.document.body; if (body == null) return ""; var text = body.innerHTML; // We need to prevent IE from stripping line feeds if (text.indexOf("<PRE>") == 0 || text.indexOf("<pre>") == 0) { text = text.substring(5, text.length - 7); } return text; }; /** @private Some more text might have come in, test and execute the new stuff */ dwr.engine._processCometResponse = function(response, batch) { if (batch.charsProcessed == response.length) return; if (response.length == 0) { batch.charsProcessed = 0; return; } var firstStartTag = response.indexOf("//#DWR-START#", batch.charsProcessed); if (firstStartTag == -1) { // dwr.engine._debug("No start tag (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed) + "'"); batch.charsProcessed = response.length; return; } // if (firstStartTag > 0) { // dwr.engine._debug("Start tag not at start (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed, firstStartTag) + "'"); // } var lastEndTag = response.lastIndexOf("//#DWR-END#"); if (lastEndTag == -1) { // dwr.engine._debug("No end tag. unchanged charsProcessed=" + batch.charsProcessed); return; } // Skip the end tag too for next time, remembering CR and LF if (response.charCodeAt(lastEndTag + 11) == 13 && response.charCodeAt(lastEndTag + 12) == 10) { batch.charsProcessed = lastEndTag + 13; } else { batch.charsProcessed = lastEndTag + 11; } var exec = response.substring(firstStartTag + 13, lastEndTag); dwr.engine._receivedBatch = batch; dwr.engine._eval(exec); dwr.engine._receivedBatch = null; }; /** @private Actually send the block of data in the batch object. */ dwr.engine._sendData = function(batch) { batch.map.batchId = dwr.engine._nextBatchId; dwr.engine._nextBatchId++; dwr.engine._batches[batch.map.batchId] = batch; dwr.engine._batchesLength++; batch.completed = false; for (var i = 0; i < batch.preHooks.length; i++) { batch.preHooks[i](); } batch.preHooks = null; // Set a timeout if (batch.timeout && batch.timeout != 0) { batch.timeoutId = setTimeout(function() { dwr.engine._abortRequest(batch); }, batch.timeout); } // Get setup for XMLHttpRequest if possible if (batch.rpcType == dwr.engine.XMLHttpRequest) { if (window.XMLHttpRequest) { batch.req = new XMLHttpRequest(); } // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) { batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP); } } var prop, request; if (batch.req) { // Proceed using XMLHttpRequest if (batch.async) { batch.req.onreadystatechange = function() { if (typeof dwr != 'undefined') dwr.engine._stateChange(batch); }; } // If we're polling, record this for monitoring if (batch.isPoll) { dwr.engine._pollReq = batch.req; // In IE XHR is an ActiveX control so you can't augment it like this if (!(document.all && !window.opera)) batch.req.batch = batch; } // Workaround for Safari 1.x POST bug var indexSafari = navigator.userAgent.indexOf("Safari/"); if (indexSafari >= 0) { var version = navigator.userAgent.substring(indexSafari + 7); if (parseInt(version, 10) < 400) { if (dwr.engine._allowGetForSafariButMakeForgeryEasier == "true") batch.httpMethod = "GET"; else dwr.engine._handleWarning(batch, { name:"dwr.engine.oldSafari", message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier." }); } } batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); try { batch.req.open(batch.httpMethod, request.url, batch.async); try { for (prop in batch.headers) { var value = batch.headers[prop]; if (typeof value == "string") batch.req.setRequestHeader(prop, value); } if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain"); } catch (ex) { dwr.engine._handleWarning(batch, ex); } batch.req.send(request.body); if (!batch.async) dwr.engine._stateChange(batch); } catch (ex) { dwr.engine._handleError(batch, ex); } } else if (batch.rpcType != dwr.engine.ScriptTag) { var idname = batch.isPoll ? "dwr-if-poll-" + batch.map.batchId : "dwr-if-" + batch.map.batchId; // Removed htmlfile implementation. Don't expect it to return before v3 batch.div = document.createElement("div"); // Add the div to the document first, otherwise IE 6 will ignore onload handler. document.body.appendChild(batch.div); batch.div.innerHTML = "<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='" + idname + "' name='" + idname + "' onload='dwr.engine._iframeLoadingComplete (" + batch.map.batchId + ");'></iframe>"; batch.document = document; batch.iframe = batch.document.getElementById(idname); batch.iframe.batch = batch; batch.mode = batch.isPoll ? dwr.engine._ModeHtmlPoll : dwr.engine._ModeHtmlCall; if (batch.isPoll) dwr.engine._outstandingIFrames.push(batch.iframe); request = dwr.engine._constructRequest(batch); if (batch.httpMethod == "GET") { batch.iframe.setAttribute("src", request.url); } else { batch.form = batch.document.createElement("form"); batch.form.setAttribute("id", "dwr-form"); batch.form.setAttribute("action", request.url); batch.form.setAttribute("style", "display:none;"); batch.form.setAttribute("target", idname); batch.form.target = idname; batch.form.setAttribute("method", batch.httpMethod); for (prop in batch.map) { var value = batch.map[prop]; if (typeof value != "function") { var formInput = batch.document.createElement("input"); formInput.setAttribute("type", "hidden"); formInput.setAttribute("name", prop); formInput.setAttribute("value", value); batch.form.appendChild(formInput); } } batch.document.body.appendChild(batch.form); batch.form.submit(); } } else { batch.httpMethod = "GET"; // There's no such thing as ScriptTag using POST batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall; request = dwr.engine._constructRequest(batch); batch.script = document.createElement("script"); batch.script.id = "dwr-st-" + batch.map["c0-id"]; batch.script.src = request.url; document.body.appendChild(batch.script); } }; dwr.engine._ModePlainCall = "/call/plaincall/"; dwr.engine._ModeHtmlCall = "/call/htmlcall/"; dwr.engine._ModePlainPoll = "/call/plainpoll/"; dwr.engine._ModeHtmlPoll = "/call/htmlpoll/"; /** @private Work out what the URL should look like */ dwr.engine._constructRequest = function(batch) { // A quick string to help people that use web log analysers var request = { url:batch.path + batch.mode, body:null }; if (batch.isPoll == true) { request.url += "ReverseAjax.dwr"; } else if (batch.map.callCount == 1) { request.url += batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr"; } else { request.url += "Multiple." + batch.map.callCount + ".dwr"; } // Play nice with url re-writing var sessionMatch = location.href.match(/jsessionid=([^?]+)/); if (sessionMatch != null) { request.url += ";jsessionid=" + sessionMatch[1]; } var prop; if (batch.httpMethod == "GET") { // Some browsers (Opera/Safari2) seem to fail to convert the callCount value // to a string in the loop below so we do it manually here. batch.map.callCount = "" + batch.map.callCount; request.url += "?"; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.url += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&"; } } request.url = request.url.substring(0, request.url.length - 1); } else { // PERFORMANCE: for iframe mode this is thrown away. request.body = ""; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = []; for (prop in batch.map) { if (typeof batch.map[prop] != "function") { buf.push(prop + "=" + batch.map[prop] + dwr.engine._postSeperator); } } request.body = buf.join(""); } else { // Use string concat on other browsers (fastest) for (prop in batch.map) { if (typeof batch.map[prop] != "function") { request.body += prop + "=" + batch.map[prop] + dwr.engine._postSeperator; } } } request.body = dwr.engine._contentRewriteHandler(request.body); } request.url = dwr.engine._urlRewriteHandler(request.url); return request; }; /** @private Called by XMLHttpRequest to indicate that something has happened */ dwr.engine._stateChange = function(batch) { var toEval; if (batch.completed) { dwr.engine._debug("Error: _stateChange() with batch.completed"); return; } var req = batch.req; try { if (req.readyState != 4) return; } catch (ex) { dwr.engine._handleWarning(batch, ex); // It's broken - clear up and forget this call dwr.engine._clearUp(batch); return; } if (dwr.engine._unloading) { dwr.engine._debug("Ignoring reply from server as page is unloading."); return; } try { var reply = req.responseText; reply = dwr.engine._replyRewriteHandler(reply); var status = req.status; // causes Mozilla to except on page moves if (reply == null || reply == "") { dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data received from server" }); } else if (status != 200) { dwr.engine._handleError(batch, { name:"dwr.engine.http." + status, message:req.statusText }); } else { var contentType = req.getResponseHeader("Content-Type"); if (!contentType.match(/^text\/plain/) && !contentType.match(/^text\/javascript/)) { if (contentType.match(/^text\/html/) && typeof batch.textHtmlHandler == "function") { batch.textHtmlHandler({ status:status, responseText:reply, contentType:contentType }); } else { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidMimeType", message:"Invalid content type: '" + contentType + "'" }); } } else { // Comet replies might have already partially executed if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) { dwr.engine._processCometResponse(reply, batch); } else { if (reply.search("//#DWR") == -1) { dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" }); } else { toEval = reply; } } } } } catch (ex) { dwr.engine._handleWarning(batch, ex); } dwr.engine._callPostHooks(batch); // Outside of the try/catch so errors propogate normally: dwr.engine._receivedBatch = batch; if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, ""); dwr.engine._eval(toEval); dwr.engine._receivedBatch = null; dwr.engine._validateBatch(batch); if (!batch.completed) dwr.engine._clearUp(batch); }; /** * @private This function is invoked when a batch reply is received. * It checks that there is a response for every call in the batch. Otherwise, * an error will be signaled (a call without a response indicates that the * server failed to send complete batch response). */ dwr.engine._validateBatch = function(batch) { // If some call left unreplied, report an error. if (!batch.completed) { for (var i = 0; i < batch.map.callCount; i++) { if (batch.handlers[i] != null) { dwr.engine._handleWarning(batch, { name:"dwr.engine.incompleteReply", message:"Incomplete reply from server" }); break; } } } } /** @private Called from iframe onload, check batch using batch-id */ dwr.engine._iframeLoadingComplete = function(batchId) { // dwr.engine._checkCometPoll(); var batch = dwr.engine._batches[batchId]; if (batch) dwr.engine._validateBatch(batch); } /** @private Called by the server: Execute a callback */ dwr.engine._remoteHandleCallback = function(batchId, callId, reply) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true); return; } // Error handlers inside here indicate an error that is nothing to do // with DWR so we handle them differently. try { var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (!handlers) { dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true); } else if (typeof handlers.callback == "function") handlers.callback(reply); } catch (ex) { dwr.engine._handleError(batch, ex); } }; /** @private Called by the server: Handle an exception for a call */ dwr.engine._remoteHandleException = function(batchId, callId, ex) { var batch = dwr.engine._batches[batchId]; if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; } var handlers = batch.handlers[callId]; batch.handlers[callId] = null; if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; } if (ex.message == undefined) ex.message = ""; if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex); else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); }; /** @private Called by the server: The whole batch is broken */ dwr.engine._remoteHandleBatchException = function(ex, batchId) { var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: Reverse ajax should not be used */ dwr.engine._remotePollCometDisabled = function(ex, batchId) { dwr.engine.setActiveReverseAjax(false); var searchBatch = (dwr.engine._receivedBatch == null && batchId != null); if (searchBatch) { dwr.engine._receivedBatch = dwr.engine._batches[batchId]; } if (ex.message == undefined) ex.message = ""; dwr.engine._handleError(dwr.engine._receivedBatch, ex); if (searchBatch) { dwr.engine._receivedBatch = null; dwr.engine._clearUp(dwr.engine._batches[batchId]); } }; /** @private Called by the server: An IFrame reply is about to start */ dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) { if (iframe != null) dwr.engine._receivedBatch = iframe.batch; dwr.engine._callPostHooks(dwr.engine._receivedBatch); }; /** @private Called by the server: An IFrame reply is just completing */ dwr.engine._remoteEndIFrameResponse = function(batchId) { dwr.engine._clearUp(dwr.engine._receivedBatch); dwr.engine._receivedBatch = null; }; /** @private This is a hack to make the context be this window */ dwr.engine._eval = function(script) { if (script == null) return null; if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; } // dwr.engine._debug("Exec: [" + script + "]", true); return eval(script); }; /** @private Called as a result of a request timeout */ dwr.engine._abortRequest = function(batch) { if (batch && !batch.completed) { dwr.engine._clearUp(batch); if (batch.req) batch.req.abort(); dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" }); } }; /** @private call all the post hooks for a batch */ dwr.engine._callPostHooks = function(batch) { if (batch.postHooks) { for (var i = 0; i < batch.postHooks.length; i++) { batch.postHooks[i](); } batch.postHooks = null; } }; /** @private A call has finished by whatever means and we need to shut it all down. */ dwr.engine._clearUp = function(batch) { if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; } if (batch.completed) { dwr.engine._debug("Warning: Double complete", true); return; } // IFrame tidyup if (batch.div) batch.div.parentNode.removeChild(batch.div); if (batch.iframe) { // If this is a poll frame then stop comet polling for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) { if (dwr.engine._outstandingIFrames[i] == batch.iframe) { dwr.engine._outstandingIFrames.splice(i, 1); } } batch.iframe.parentNode.removeChild(batch.iframe); } if (batch.form) batch.form.parentNode.removeChild(batch.form); // XHR tidyup: avoid IE handles increase if (batch.req) { // If this is a poll frame then stop comet polling if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null; delete batch.req; } // Timeout tidyup if (batch.timeoutId) { clearTimeout(batch.timeoutId); delete batch.timeoutId; } if (batch.map && (batch.map.batchId || batch.map.batchId == 0)) { delete dwr.engine._batches[batch.map.batchId]; dwr.engine._batchesLength--; } batch.completed = true; // If there is anything on the queue waiting to go out, then send it. // We don't need to check for ordered mode, here because when ordered mode // gets turned off, we still process *waiting* batches in an ordered way. if (dwr.engine._batchQueue.length != 0) { var sendbatch = dwr.engine._batchQueue.shift(); dwr.engine._sendData(sendbatch); } }; /** @private Abort any XHRs in progress at page unload (solves zombie socket problems in IE). */ dwr.engine._unloader = function() { dwr.engine._unloading = true; // Empty queue of waiting ordered requests dwr.engine._batchQueue.length = 0; // Abort any ongoing XHRs and clear their batches for (var batchId in dwr.engine._batches) { var batch = dwr.engine._batches[batchId]; // Only process objects that look like batches (avoid prototype additions!) if (batch && batch.map) { if (batch.req) { batch.req.abort(); } dwr.engine._clearUp(batch); } } }; // Now register the unload handler if (window.addEventListener) window.addEventListener('unload', dwr.engine._unloader, false); else if (window.attachEvent) window.attachEvent('onunload', dwr.engine._unloader); /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleError = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex); else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** @private Generic error handling routing to save having null checks everywhere */ dwr.engine._handleWarning = function(batch, ex) { if (typeof ex == "string") ex = { name:"unknown", message:ex }; if (ex.message == null) ex.message = ""; if (ex.name == null) ex.name = "unknown"; if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex); else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex); if (batch) dwr.engine._clearUp(batch); }; /** * @private Marshall a data item * @param batch A map of variables to how they have been marshalled * @param referto An array of already marshalled variables to prevent recurrsion * @param data The data to be marshalled * @param name The name of the data being marshalled */ dwr.engine._serializeAll = function(batch, referto, data, name) { if (data == null) { batch.map[name] = "null:null"; return; } switch (typeof data) { case "boolean": batch.map[name] = "boolean:" + data; break; case "number": batch.map[name] = "number:" + data; break; case "string": batch.map[name] = "string:" + encodeURIComponent(data); break; case "object": if (data instanceof String) batch.map[name] = "String:" + encodeURIComponent(data); else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data; else if (data instanceof Number) batch.map[name] = "Number:" + data; else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime(); else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name); else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name); break; case "function": // We just ignore functions. break; default: dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." }); batch.map[name] = "default:" + data; break; } }; /** @private Have we already converted this object? */ dwr.engine._lookup = function(referto, data, name) { var lookup; // Can't use a map: getahead.org/ajax/javascript-gotchas for (var i = 0; i < referto.length; i++) { if (referto[i].data == data) { lookup = referto[i]; break; } } if (lookup) return "reference:" + lookup.name; referto.push({ data:data, name:name }); return null; }; /** @private Marshall an object */ dwr.engine._serializeObject = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; // This check for an HTML is not complete, but is there a better way? // Maybe we should add: data.hasChildNodes typeof "function" == true if (data.nodeName && data.nodeType) { return dwr.engine._serializeXml(batch, referto, data, name); } // treat objects as an associative arrays var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{"; var element; for (element in data) { if (typeof data[element] != "function") { batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[element], childName); reply += encodeURIComponent(element) + ":reference:" + childName + ", "; } } if (reply.substring(reply.length - 2) == ", ") { reply = reply.substring(0, reply.length - 2); } reply += "}"; return reply; }; /** @private Returns the classname of supplied argument obj */ dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError }; dwr.engine._getObjectClassName = function(obj) { // Try to find the classname by stringifying the object's constructor // and extract <class> from "function <class>". if (obj && obj.constructor && obj.constructor.toString) { var str = obj.constructor.toString(); var regexpmatch = str.match(/function\s+(\w+)/); if (regexpmatch && regexpmatch.length == 2) { return regexpmatch[1]; } } // Now manually test against the core Error classes, as these in some // browsers successfully match to the wrong class in the // Object.toString() test we will do later if (obj && obj.constructor) { for (var errorname in dwr.engine._errorClasses) { if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname; } } // Try to find the classname by calling Object.toString() on the object // and extracting <class> from "[object <class>]" if (obj) { var str = Object.prototype.toString.call(obj); var regexpmatch = str.match(/\[object\s+(\w+)/); if (regexpmatch && regexpmatch.length==2) { return regexpmatch[1]; } } // Supplied argument was probably not an object, but what is better? return "Object"; }; /** @private Marshall an object */ dwr.engine._serializeXml = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; var output; if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data); else if (data.toXml) output = data.toXml; else output = data.innerHTML; return "XML:" + encodeURIComponent(output); }; /** @private Marshall an array */ dwr.engine._serializeArray = function(batch, referto, data, name) { var ref = dwr.engine._lookup(referto, data, name); if (ref) return ref; if (document.all && !window.opera) { // Use array joining on IE (fastest) var buf = ["Array:["]; for (var i = 0; i < data.length; i++) { if (i != 0) buf.push(","); batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); buf.push("reference:"); buf.push(childName); } buf.push("]"); reply = buf.join(""); } else { // Use string concat on other browsers (fastest) var reply = "Array:["; for (var i = 0; i < data.length; i++) { if (i != 0) reply += ","; batch.paramCount++; var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount; dwr.engine._serializeAll(batch, referto, data[i], childName); reply += "reference:"; reply += childName; } reply += "]"; } return reply; }; /** @private Convert an XML string into a DOM object. */ dwr.engine._unserializeDocument = function(xml) { var dom; if (window.DOMParser) { var parser = new DOMParser(); dom = parser.parseFromString(xml, "text/xml"); if (!dom.documentElement || dom.documentElement.tagName == "parsererror") { var message = dom.documentElement.firstChild.data; message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data; throw message; } return dom; } else if (window.ActiveXObject) { dom = dwr.engine._newActiveXObject(dwr.engine._DOMDocument); dom.loadXML(xml); // What happens on parse fail with IE? return dom; } else { var div = document.createElement("div"); div.innerHTML = xml; return div; } }; /** @param axarray An array of strings to attempt to create ActiveX objects from */ dwr.engine._newActiveXObject = function(axarray) { var returnValue; for (var i = 0; i < axarray.length; i++) { try { returnValue = new ActiveXObject(axarray[i]); break; } catch (ex) { /* ignore */ } } return returnValue; }; /** @private Used internally when some message needs to get to the programmer */ dwr.engine._debug = function(message, stacktrace) { var written = false; try { if (window.console) { if (stacktrace && window.console.trace) window.console.trace(); window.console.log(message); written = true; } else if (window.opera && window.opera.postError) { window.opera.postError(message); written = true; } } catch (ex) { /* ignore */ } if (!written) { var debug = document.getElementById("dwr-debug"); if (debug) { var contents = message + "<br/>" + debug.innerHTML; if (contents.length > 2048) contents = contents.substring(0, 2048); debug.innerHTML = contents; } } };

// Provide a default path to dwr.engine if (dwr == null) var dwr = {}; if (dwr.engine == null) dwr.engine = {}; if (DWREngine == null) var DWREngine = dwr.engine; if (UserDataDWRFacade == null) var UserDataDWRFacade = {}; UserDataDWRFacade._path = '/webapps/assessment/dwr_open'; UserDataDWRFacade.getStringTempScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringTempScope', p0, callback); } UserDataDWRFacade.setStringTempScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringTempScope', p0, p1, callback); } UserDataDWRFacade.getStringPermScope = function(p0, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'getStringPermScope', p0, callback); } UserDataDWRFacade.setStringPermScope = function(p0, p1, callback) { dwr.engine._execute(UserDataDWRFacade._path, 'UserDataDWRFacade', 'setStringPermScope', p0, p1, callback); }

var assessment = {}; assessment.submitDrawerUrl=""; assessment.questionVisibility = true; assessment.blockToLeaveVisible = 'null'; assessment.savingRightNow = false; // aka - might rename to (if not remove eventually): assessment.nonceHasBeenUsed assessment.submittingRightNow = false; // set to true when we're submitting the assessment as a whole - used to block other submits assessment.gotNewNonceIdFlag = false; assessment.userReallyWantsToSubmit = false; assessment.isInUse = false; assessment.safetyNetDelay = 60; // Number of seconds to wait before telling the user that it is taking too long. assessment.alreadySavedSafetyNetId = null; assessment.saveSequence = 0; // TODO: Set from the server based on time when page is loaded assessment.isOneByOne = false; /************************** methods related to pool and test canvas per question add/edit/ copy/ remove********************/ function findAssessmentForm() { var assessmentForm = null; var documentForms = document.getElementsByTagName('form'); assessmentForm = $A( documentForms ).find( function( documentForm ) { var theAction = $( documentForm ).readAttribute( "action" ); return theAction.indexOf( "webapps/assessment/" ) != -1; }); return assessmentForm; } function submit(method, theForm) { if (!validateForm()) { return false; } if ( !theForm ) { // no form specified so try to find it theForm = findAssessmentForm(); } if(method == "createNew") { theForm.elements.assessmentId.value = null; } theForm.elements.method.value = method; theForm.submit(); return false; } function getFormByInputElement( elementName ) { var element = document.getElementsByName( elementName )[0]; return element.form; } // TODO: Rewrite this file to put all these methods into a namespace like assessment.XXX function modifyAssessment() { submit('modifyAssessment'); } function setQuestionId(questionId) { getFormByInputElement("questionId").questionId.value = questionId; } function modifyContentSettings( val ) { // properties|feedback|presentation|metadata submit( val ); } function addQuestionBefore(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated var theForm = getFormByInputElement("relativeId"); assessment.checkTheCheckBox (qId); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionBefore', theForm); } function addQuestionAfter(sectionId, qId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (qId); var theForm = getFormByInputElement("relativeId"); theForm.sectionId.value = sectionId; theForm.relativeId.value = qId; submit('addQuestionAfter', theForm); } function addNGQuestion(sectionId, qtype, position) { var theForm = getFormByInputElement("questionType"); theForm.questionType.value = qtype; theForm.sectionId.value = sectionId; theForm.position.value = position; submit('addQuestion', theForm); } function modifyAssessmentInfo() { submit('modifyAssessmentInfo'); } function modifyHelper(questionId, method) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); setQuestionId(questionId); submit(method, theForm); } function modifyQuestion(questionId) { modifyHelper(questionId, 'modifyQuestion'); } function modifyRandomBlock(questionId) { modifyHelper(questionId, 'modifyRandomBlock'); } function modifyLinkQuestion(questionId) { getFormByInputElement("isLinkedQuestion").isLinkedQuestion.value = 'true'; modifyQuestion(questionId); } function copyQuestion(sectionId, questionId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("sectionId"); theForm.sectionId.value = sectionId; setQuestionId(questionId); submit('copyQuestion', theForm); } function copyLinkQuestion(sectionId, questionId, qbId) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (questionId); var theForm = getFormByInputElement("questionId"); theForm.sectionId.value = sectionId; theForm.questionBlockId.value = qbId; setQuestionId(questionId); submit('copyLinkQuestion', theForm); } function remove(id, type ) { if ( assessment.isInUse ) { var suffix = ( assessment.type == 'Survey'?'.survey':''); if ( !type ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_question.regrade" + suffix ) ); } else if ( type == 'question_link' ) { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.remove_question_link.regrade" + suffix ) ); } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString( "confirm.delete_item.regrade" + suffix ) ); } } else { assessment.removeEntity(id, ASSESSMENT_RESOURCES.getString("confirm.delete_item")); } } assessment.removeEntity= function(id, message) { if (window.confirm(message)) { // automatically check the checkbox, when the context menu action is intiated assessment.checkTheCheckBox (id); var theForm = getFormByInputElement("questionId"); setQuestionId(id); submit('remove', theForm); } }; function reposition(id, position) { setQuestionId(id); var theForm = getFormByInputElement("questionId"); theForm.position.value = position; submit('reposition', theForm); } assessment.submitModifyQuestion = function() { submit('modifyQuestion'); }; assessment.cancelWarning = function() { var theForm = getFormByInputElement("methodEx"); theForm.elements.methodEx.value = 'modifyAssessment'; theForm.submit(); return false; }; function isCheckbox(element) { return (element && element.type && element.type == "checkbox"); } /******************* methods related to bulk update logic on the test/pool canvas*********************/ assessment.removeAll= function(container,showCount) { var count = 0; var inputs = list.checkboxes.get(container); for(var i=0; i<inputs.length; i++){ if(isCheckbox(inputs[i]) && inputs[i].checked ) { count ++; } } if (showCount?window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count",[count])):window.confirm(ASSESSMENT_RESOURCES.getString("confirm.delete_items")) ) { submit('removeBulk'); } }; assessment.removeAllPublished= function(message) { if (window.confirm(message)) { submit('removeBulk'); } }; assessment.updatePointsForAll = function(){ var element = document.getElementsByName("points_bulk"); if ( assessment.validatePoints(element) && ( !assessment.isInUse || confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) ) { submit('updatePointsBulk'); } return false; }; assessment.updatePointsInput = function(event) { var elements = document.getElementsByName("points_bulk"); var element = Event.findElement(event); var pointsValue = element.value; if (pointsValue ) { if (elements) { elements[0].value = pointsValue; elements[1].value = pointsValue; } } }; /*************************** common js methods for assessments**********************************************/ /** validate Input Field value **/ assessment.validateMiniFlyoutInputValue = function(element){ var value = null; if($(element) ) { value = $(element).value; } if ( !value ) { return ASSESSMENT_RESOURCES.getString("update.input.value"); } if ( !isNumeric( value, true ) ) { return ASSESSMENT_RESOURCES.getString("update.input.valid.value"); } return ""; }; assessment.validatePoints = function(element){ if (element) { var pointsTextBox = element[0] || element[1]; var pointsValue = pointsTextBox.value; return assessment.validateNumericInput(pointsTextBox, pointsValue, ASSESSMENT_RESOURCES.getString("update.points.value"), ASSESSMENT_RESOURCES.getString("update.points.valid.value"),true); } return true; }; assessment.validateCount = function(element) { if (element) { var countValue = element.value; return assessment.validateNumericInput(element, countValue, ASSESSMENT_RESOURCES.getString("update.count.value"), ASSESSMENT_RESOURCES.getString("update.count.valid.value")); } return true; }; assessment.validateNumericInput = function(textBox, value, blankMsg, badMsg,isFloat) { var checkForFloats = false; var numFormat = LOCALE_SETTINGS.getString('float.format'); var isValidNum = false; var re, trimmedVal; trimmedVal = value.trim(); if(isFloat != 'null') { checkForFloats = true; } if ( !value ) { alert(blankMsg); textBox.focus(); return false; } var numVal = null; if (!checkForFloats) { numVal = parseInt( value, 10); isValidNum = (!isNaN(numVal) && numVal >= 0); } else if ( typeof ( numFormat ) != 'undefined' ) { // hand parse for l10n re = new RegExp( numFormat ); isValidNum = ( trimmedVal.search( re ) === 0 ); } else { // try to use platform native (non-localized) numVal = parseFloat( trimmedVal ); isValidNum = !isNaN( numVal ); if ( isValidNum && numVal.toString().length != trimmedVal.length ) { /* Allow strings with trailing zeros to pass */ re = /^[\.0]+$/; isValidNum = re.test( trimmedVal.substring( numVal.toString().length ) ); } } if (!isValidNum) { alert(badMsg); textBox.value=""; textBox.focus(); return false; } return true; }; function back() { submit('back'); } function persistDisplayPreference(element, value){ UserDataDWRFacade.setStringTempScope( element, value ); } assessment.refreshParent = function( url ) { if ( window.opener ) { window.opener.location.href = url; if ( window.opener.progressWindow ) { window.opener.progressWindow.close(); } window.close(); } else { // We expected to be in a new window, but aren't. Perhaps this was a link from an announcement? window.location = url; } }; assessment.checkTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = true; } }; assessment.unCheckTheCheckBox = function(elementId) { if ($s('content_listContainer_questionIds' +elementId)) { $s('content_listContainer_questionIds' +elementId).checked = false; } }; var startX; //set x offset of bar in pixels var startY; var padding = 53; var verticalpos="fromtop"; //enter "fromtop" or "frombottom" function setPadding(pad) { padding = pad; } function iecompattest(){ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body; } function resetInstructionHeight() { startY = document.getElementById("instructionBlock").offsetTop +document.getElementById("instructionBlock").clientHeight + padding; startX = document.getElementById("instructionBlock").offsetLeft; document.getElementById("dataCollectionContainer").style.position = "relative"; var tbh = document.getElementById("topbar").clientHeight; document.getElementById("containerdiv").style.paddingBottom = (32 + tbh) + "px"; if (document.getElementById("topbar").offsetTop !== 0) { document.getElementById("dataCollectionContainer").style.top=tbh+"px"; } } function staticbar(){ var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera; var d = document; function ml(id){ var el=d.getElementById(id); el.style.visibility="visible"; if(d.layers) { el.style=el; } el.sP=function(x,y,r) { this.style.left=x+"px"; this.style.top=y+6+"px"; if(r>-1) {this.style.right=r+"px";}; }; el.x = startX; el.y = startY; return el; } window.stayTopLeft = function() { var right = -1; var pY = ns ? window.pageYOffset : iecompattest().scrollTop; if (pY < startY) { window.ftlObj.y = startY - pY; document.getElementById("dataCollectionContainer").style.top=document.getElementById("topbar").clientHeight+4+"px"; } else { window.ftlObj.y = 0; } window.ftlObj.x = document.getElementById("instructionBlock").offsetLeft; if(page.util.isRTL()) { right = document.documentElement.clientWidth - (ftlObj.x + document.getElementById("instructionBlock").offsetWidth); } window.ftlObj.sP( window.ftlObj.x, window.ftlObj.y, right); setTimeout("stayTopLeft()", 20); }; resetInstructionHeight(); window.ftlObj = ml("topbar"); window.stayTopLeft(); } var AIM = { frame : function(c) { var n = 'f' + Math.floor(Math.random() * 99999); var d = document.createElement('DIV'); d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>'; document.body.appendChild(d); var i = document.getElementById(n); if (c && typeof(c.onComplete) == 'function') { i.onComplete = c.onComplete; } return n; }, form : function(f, name) { f.setAttribute('target', name); }, submit : function(f, c) { AIM.form(f, AIM.frame(c)); if (c && typeof(c.onStart) == 'function') { return c.onStart(); } else { return true; } }, loaded : function(id) { var i = document.getElementById(id); var d; if (i.contentDocument) { d = i.contentDocument; } else if (i.contentWindow) { d = i.contentWindow.document; } else { d = window.frames[id].document; } if (d.location.href == "about:blank") { return; } if (typeof(i.onComplete) == 'function') { i.onComplete(d.body.innerHTML); } } }; function resetContaindivHeight() { // adjust containdiv height // TODO: I don't see a reason for any of this code anymore... //if (document.getElementById('statusBlock').style.display=="" || document.getElementById('statusBlock').style.display=="inline") { // var statusHeight = document.getElementById('topbar').offsetHeight-22; // 22 is padding - be better to dynamically determine this value. //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight+statusHeight; //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} } function hideElement(element) { var msgspan=element; var msgimg=element+"img"; // TODO: I don't see a reason for any of this code anymore... //if (msgspan=="statusBlock") { // var statusHeight = document.getElementById('topbar').offsetHeight; //var containerHeight = document.getElementById('containerdiv').offsetHeight; //var newHeight = containerHeight-statusHeight-22; // 22 is padding - be better to dynamically determine this value. //document.getElementById('containerdiv').style.minHeight=newHeight+'px'; //} document.getElementById(msgspan).style.display="none"; document.images[msgimg].src="/images/ci/ng/more_options_dark.gif"; var alt = page.bundle.getString('expandCollapse.expand.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; } function showElement(element) { var msgspan=element; var msgimg=element+"img"; document.getElementById(msgspan).style.display="inline"; document.images[msgimg].src="/images/ci/ng/less_options.gif"; var alt = page.bundle.getString('expandCollapse.collapse.section.nocolon'); document.images[msgimg].title=alt; document.images[msgimg].alt=alt; if (msgspan=="statusBlock") { resetContaindivHeight(); } } function toggleElement(element){ var curStyle = document.getElementById(element).style.display; if(curStyle=="" || curStyle=="inline") { hideElement(element); persistDisplayPreference(element,'none'); } else { showElement(element); persistDisplayPreference(element,'inline'); } resetInstructionHeight(); } /********************************************* methods related to lightbox preview in pool/test canvas********************/ assessment.previewLightbox = null; assessment.copyLinkLightbox = null; assessment.showLightBox = function (event,baseContainer,numparents,previewUrl) { var e = event || window.event; // IE does not capture the event if( e && e.type == 'click') { Event.stop(e); } if ( !assessment.previewLightbox ) { assessment.previewLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 500 ,h : 375}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 125, horizontalBorder: 125 }); } assessment.previewLightbox.cfg.ajax={url:previewUrl, loadExternalScripts:true}; assessment.previewLightbox.cfg.content=null; assessment.previewLightbox.open(); }; assessment.showCopyLinkLightBox = function ( url) { var params = url.toQueryParams(); if ( !assessment.copyLinkLightbox ) { assessment.copyLinkLightbox = new lightbox.Lightbox({ contents: '', defaultDimensions: { w: 150 ,h : 200}, useDefaultDimensionsAsMinimumSize : true, verticalBorder: 50, horizontalBorder: 50 }); } assessment.copyLinkLightbox.cfg.ajax={url:'/webapps/assessment/do/authoring/questionSearch?method=copyLink&discoverUrl=' + encodeURIComponent(url) + '&course_id=' + params.course_id }; assessment.copyLinkLightbox.cfg.content=null; assessment.copyLinkLightbox.cfg.closeOnBodyClick=false; assessment.copyLinkLightbox.open(); }; assessment.showDiscover = function(url,title,width,height) { assessment.submitDrawerUrl = url; var screenX=Math.floor((screen.width)/2)-Math.floor(width/2); var screenY=Math.floor((screen.height)/2)-Math.floor(height/2)-20; var top=screenY; var left=screenX; var features="'"+'toolbar=no,scrollbars=yes,status=yes,resizable=yes,top='+ top+',left='+ left+',screenX='+ screenX+',screenY='+ screenY+',width='+ width+',height='+ height+"'"; var discover = window.open(url,title,features); if (window.focus) { if (discover) { discover.focus(); } else { alert(ASSESSMENT_RESOURCES.getString("pop.up.blocker.enabled")); } } }; assessment.discoverOptions = function(url,title,width,height,hideCopyLink){ if(!hideCopyLink) { //check if the UserPreference is set in session UserDataDWRFacade.getStringPermScope( "AssessmentUtils.DISCOVER_MODE_IS_LINKING", function( copyLinkSet ) { if (copyLinkSet == '') { assessment.showCopyLinkLightBox(url); } else{ assessment.showDiscover(url,title,width,height); } }); } else{ assessment.showDiscover(url,title,width,height); } }; assessment.onCloseCopyLinkLightbox = function ( url ) { var copyLinkId = $('copylink_link'); var copyCopyId = $('copylink_copy'); var copyLinkValueSet = false; if(copyLinkId && copyCopyId ) { copyLinkValueSet = copyLinkId.checked || copyCopyId.checked; } if ( !copyLinkValueSet ) { if (window.confirm(ASSESSMENT_RESOURCES.getString("confirm.set_copy_link"))) { assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } } else{ assessment.copyLinkLightbox.cfg.onClose = null; assessment.copyLinkLightbox.close(); assessment.discoverOptions(url, 'discover', '900', '675', true); } }; /**************************** methods related to question block on the test canvas*************************************/ assessment.createQuestionBlock = function() { }; function addQuestionToBlock(questionId, assessmentType, assessmentId, courseId ) { var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=addQuestionsToQuestionBlock" + "&questionId=" +questionId + "&assessmentType=" +assessmentType + "&assessmentId=" +assessmentId + "&course_id=" +courseId; assessment.discoverOptions(url,'discover','900','675',true); } /********************** methods related to inline pool points flyout***************************/ assessment.poolFlyout = null; assessment.initPoolFlyout = function(title) { if ( !assessment.poolFlyout ) { assessment.poolFlyout = new miniFlyout.MiniFlyout({ title: title, miniFlyoutTemplate: "<label class='hideoff' for='#{inputFieldName}_id'>#{title}</label> <input id='#{inputFieldName}_id'type='text' style='width: 2em;' size='3' value='0' name='#{inputFieldName}'/> <a href='#' title='#{closeButtonName}' bb_flyout_title='Cancel' class='genericButtonImg button-3-img'><img alt='#{closeButtonName}' src='/images/ci/ng/remove_li.png'/></a> <a href='#' title='#{submitButtonName}' bb_flyout_title='Submit' class='genericButtonImg button-3-img'><img alt='#{submitButtonName}' src='/images/ci/ng/checkmark_li.png'/></a>", inputFieldName: "inline_points", errorMessage: page.bundle.getString("points.failure"), miniFlyoutDivClass: "liveArea liveArea-slim", onSubmitValidate : "return assessment.validateMiniFlyoutInputValue('inline_points_id')" }); } miniFlyout.closeCurrentMiniFlyout(); }; assessment.showPoolFlyout = function (event,title,assessmentId,id, courseId) { var e = event || window.event; // IE does not capture the event var aLink = Event.element(e); if( e && e.type == 'click') { Event.stop(e); } assessment.initPoolFlyout(title); assessment.poolFlyout.cfg.openLink = aLink ; assessment.poolFlyout.cfg.containerId = aLink.parentNode.parentNode; assessment.poolFlyout.cfg.inputFieldDefaultSource = "ipoints_" + id; assessment.poolFlyout.cfg.inputFieldName= "inline_points"; assessment.poolFlyout.cfg.onSubmit = "return assessment.saveQuestionPoints('" + assessmentId + "','" + id + "','" + courseId + "',false, false, assessment.poolFlyout.cfg.containerId);"; assessment.poolFlyout.open(); }; /*************************************************** methods related to test canvas selection by type*******************/ assessment.selectByType = function(container) { var selected = document.getElementsByName('selectbyQuestionType')[0];// either use 0 or 1, since both are updated to the same var checkboxes = list.checkboxes.get(container); for ( var i=0; i < checkboxes.length; ++i ) { checkboxes[ i ].checked = false; } var className = selected.options[selected.selectedIndex].value; checkboxes.each( function(e){ if(e.className.trim() ==className.trim()) { e.checked=true; } } ); $('selectbyQuestionType_idTop').options[selected.selectedIndex].selected=true; $('selectbyQuestionType_idBot').options[selected.selectedIndex].selected=true; }; assessment.toggleQuestionBlockDiv = function(rawId){ var ul = $('questionBlockDiv'+rawId); var a = $('questionBlockDivLink'+rawId).getElementsByTagName('a')[0]; Effect.toggle(ul, 'blind', { duration: 0.3 }); if(ul.style.display=="none"){ a.className="itemHead itemHeadOpen"; } else if(ul.style.display=="block" || ul.style.display==""){ a.className="itemHead"; } return false; }; /************************** methods related to discover drawer functionality********************************************/ assessment.inBasicDiscoverMode = function () { if (document.copyQuestionsForm.method.value == 'save') { return true; } return false; }; assessment.cancelDrawer = function() { var myDrawer = drawer.model.getCurrentInstance(); myDrawer.discard(); document.copyQuestionsForm.elements.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener ) { //close question discovery popup window.close(); } return false; }; assessment.cancelRandomBlock = function () { document.copyQuestionsForm.methodEx.value = 'cancel'; document.copyQuestionsForm.submit(); if ( window.opener !== null) { //close question discovery popup window.close(); } return false; }; function findAndDisableInputElements(el) { if (el === null) { return; } var elems = el.getElementsByTagName('input'); for ( var i = 0; i < elems.length; i++ ) { el.addClassName('disabled'); el.disabled = true; } } /****************** Ajax method related to Test/pool canvas***************************************************/ function postAndUpdateCanvas(form) { var method = form.method.value; var assessmentId = form.assessmentId.value; var courseId = form.course_id.value; var nonceId = nonceUtil.getNonceId('bb-question-discover'); var questionId = ""; if (form.questionId ) { questionId = form.questionId.value; } var url = "/webapps/assessment/do/authoring/copyQuestions?method=" +method + "&assessmentId="+assessmentId + "&course_id=" + courseId + "&sectionId=" + form.sectionId.value + "&assessmentType=" +form.assessmentType.value + "&itemIds=" +form.itemIds.value + "&overridePoints=" +form.overridePoints.value + "&questionId=" +questionId + "&ajaxMode=true" + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (form.searchCriterion !== null) { url = url + "&searchCriterion=" + encodeURIComponent(form.searchCriterion.value); } findAndDisableInputElements( $('cartSubmit') ); var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { window.opener.location="/webapps/assessment/do/authoring/modifyAssessment?method=modifyAssessment&assessmentId="+assessmentId+"&course_id="+courseId; if (json !== null) { // capture any error message and display if (json.errorMessage ) { // exception message looks ugly for the end-user, hence use a more user-friendly message to indicate the ajax refresh failed new page.InlineConfirmation("error", json.errorMessage, false ); } else if (json.successMessage ) { // WIP // var startingEl = window.parent.document.getElementById('blockstart_' + questionId); // new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false ); } } setTimeout('window.close()', 1500); }, onFailure: function(transport, json) { new page.InlineConfirmation("error", "Failure post discover pop-up", false ); } }); } assessment.submitRandomBlock = function () { if ($('listContainer_datatable')) { var searchCriterion = activeFilter.getSearchCriteriaInstance(false).getSearchCriteriaAsXml(); document.copyQuestionsForm.searchCriterion.value = searchCriterion; if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } } else { alert(ASSESSMENT_RESOURCES.getString("cannot.submit.with.no.matching.questions")); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.submitDrawer = function () { var myDrawer = drawer.model.getCurrentInstance(); var selectedItems = myDrawer.getItems(true); var i; var allIds = ""; for (i=0;i<selectedItems.length;i++) { var qId = selectedItems[i].itemId; var mode = selectedItems[i].mode; allIds += qId + ":" + mode + ","; } document.copyQuestionsForm.itemIds.value = allIds; myDrawer.discard(); if ( window.opener ) { postAndUpdateCanvas(document.copyQuestionsForm); } else { document.copyQuestionsForm.submit(); } return false; }; /****************** Ajax method related to Test/pool canvas***************************************************/ assessment.OnCompleteUpdateCanvas = function(questionId, req, showNestedReceipt) { var json = req.responseText.evalJSON( true ); var pointsEl = $s('ipoints_' + questionId); var totalQuestionsCountEl = $s('totalNoQuestions' + questionId); var currentQuestionCountEl = $s('questionCount' + questionId); var totalBlockPointsEl = $s('totalPoints_' + questionId); var totalTestPointsEl =$s('totalTestPoints'); var totalQuestionsEl = $s('totalQuestions'); var startingEl = $s('blockstart_' + questionId); if( !json.errorMessage && pointsEl && json.points ) { // update per question points pointsEl.childNodes[0].nodeValue = json.points; } if( !json.errorMessage && totalQuestionsCountEl && json.totalQuestionsCount ) { // update per question points totalQuestionsCountEl.childNodes[0].nodeValue = json.totalQuestionsCount; } if( !json.errorMessage && currentQuestionCountEl && json.currentQuestionsCount ) { // update per question points currentQuestionCountEl.childNodes[0].nodeValue = json.currentQuestionsCount; } if( !json.errorMessage && totalBlockPointsEl && json.totalBlockPoints ) { // update the total points totalBlockPointsEl.childNodes[0].nodeValue = json.totalBlockPoints; } if( !json.errorMessage && totalQuestionsEl && json.totalQuestions ) { // update the total questions totalQuestionsEl.innerHTML = json.totalQuestions; } if( !json.errorMessage && totalTestPointsEl && json.totalTestPoints ) { // update total Test points, not for survey or pool totalTestPointsEl.innerHTML = json.totalTestPoints; } if (showNestedReceipt) { if (json.securityErrorMsg ) { new page.NestedInlineConfirmation("error", json.securityErrorMsg, true, startingEl, true); } else if (json.successMessage ) { if (json.successMessage.indexOf('regrading_queued_status')> 0) { // If we are displaying a confirmation including regrading status then DO NOT fade it away - let it stay and get updated. new page.NestedInlineConfirmation("success", json.successMessage, false, startingEl, true); } else { new page.NestedInlineFadeAwayConfirmation("success", json.successMessage, false, startingEl, false); } } } assessment.result = json.errorMessage; assessment.setQuestionNumbers(); }; assessment.removeQuestionsFromBlock= function(listId, questionBlockId, courseId,assessmentId) { var allcheckBoxes = list.checkboxes.get(listId); var checkedCount = 0; var ids = ""; for (var i = 0; i < allcheckBoxes.length; i++) { var separator = (i == (allcheckBoxes.length - 1)) ? " " : ','; if (allcheckBoxes[i].checked ) { checkedCount ++; ids = ids + allcheckBoxes[i].value + separator; } } if (window.confirm(ASSESSMENT_RESOURCES.getFormattedString("confirm.delete_items_count", [checkedCount]))) { // ajax request var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + questionBlockId); var url = "/webapps/assessment/do/authoring/modifyQuestionBlock?method=removeQuestionsFromQuestionBlock" + "&block_id=" + questionBlockId + "&course_id=" + courseId + "&assessment_id=" + assessmentId + "&questionIds=" + ids + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; var params = url.toQueryParams(); url = url.split("?")[0]; new Ajax.Request(url, { method: 'post', parameters: params, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; nonceId.value = json.nonceId; inventoryList.ajaxPostOnClick(null, listId); if(json.errorMessage ) { new page.NestedInlineConfirmation("error", json.errorMessage, false, startingEl, false); } }, onSuccess: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); }, onFailure: function(req){ assessment.OnCompleteUpdateCanvas(questionBlockId, req, true); } }); } }; assessment.result = ""; assessment.saveQuestionCount = function(assessmentId, blockId, courseId, forRandomBlock ) { var countEl = document.getElementsByName('question_count')[0]; var originalCountEl = document.getElementById('questionCount' + blockId); var originalCount = originalCountEl.childNodes[0].nodeValue; var newCount = countEl.value; if (newCount == originalCount) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); var startingEl = document.getElementById('blockstart_' + blockId); var url = "/webapps/assessment/do/authoring/modify"+(forRandomBlock?"Random":"Question")+"Block?method=saveQuestionCount" + "&block_id="+blockId + "&course_id=" + courseId + "&new_count=" + newCount + "&assessment_id=" + assessmentId + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(req) { var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); }, onFailure: function(req) { assessment.OnCompleteUpdateCanvas(blockId,req,true); } }); return assessment.result; }; assessment.updateExtraCredit = function (newExtraCreditValue, questionId) { var extraCreditDiv = $('extra_credit_' + questionId); if (extraCreditDiv) { if (newExtraCreditValue) { extraCreditDiv.removeClassName('hidden'); extraCreditDiv.addClassName('extraCredit'); } else { extraCreditDiv.addClassName('hidden'); extraCreditDiv.removeClassName('extraCredit'); } } }; assessment.updateFullCredit = function (newFullCredit, questionId) { document.getElementById('original_fullCredit_value_' + questionId).value = newFullCredit.toString(); if (newFullCredit) { document.getElementById('full_credit_' + questionId).show(); } else { document.getElementById('full_credit_' + questionId).hide(); } }; // copied or linked question assessment.saveQuestionPoints = function(assessmentId, questionId, courseId, isBlock, isInUse, containerId ) { var pointsToSave = document.getElementsByName('inline_points'); var extraCredit =$s('inline_points_extra_credit_id'); var newExtraCreditValue = false; if(extraCredit) { newExtraCreditValue = extraCredit.checked; } var newPoints = pointsToSave[0].value; var originalPointsEl = document.getElementById('ipoints_' + questionId); var originalExtraCreditValue = false; var originalExtraCreditEl = $('extra_credit_' + questionId); if(originalExtraCreditEl) { originalExtraCreditValue = !originalExtraCreditEl.hasClassName('hidden'); } var originalPoints; if( originalPointsEl.childNodes ) { originalPoints = originalPointsEl.childNodes[0].nodeValue; } var originalFullCredit; var newFullCredit; var fullCreditCheckbox = document.getElementById('inline_points_full_credit_' + questionId); if (fullCreditCheckbox !== null) { newFullCredit = fullCreditCheckbox.checked; originalFullCredit = document.getElementById('original_fullCredit_value_' + questionId).value; } if ( (newPoints == originalPoints ) && ( originalExtraCreditValue == newExtraCreditValue ) && (!fullCreditCheckbox || (originalFullCredit == newFullCredit.toString())) ) { return ""; } if ( isInUse && !confirm( ASSESSMENT_RESOURCES.getString( "confirm.points_change.regrade_warning" ) ) ) { return ""; } var nonceId = nonceUtil.getNonceId('bb-assessment-canvas'); if( !extraCredit ) { newExtraCreditValue = ""; } if( !isBlock) { isBlock = false; } else { isBlock = true; } var url = "/webapps/assessment/do/authoring/modifyAssessment?method=updateQuestionPoints" + "&question_id=" + questionId + "&course_id=" + courseId + "&points_value=" + newPoints + "&extra_credit=" + newExtraCreditValue + "&assessment_id=" + assessmentId + "&is_Block=" + isBlock + "&blackboard.platform.security.NonceUtil.nonce=" + nonceId.value; if (fullCreditCheckbox) { url = url + "&full_credit=" + newFullCredit; } new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ var json = req.responseText.evalJSON( true ); document.body.style.cursor = 'default'; // set the new nonceId back nonceId.value = json.nonceId; }, onSuccess: function(req){ var json = req.responseText.evalJSON( true ); var showNestedReceipt = false; if( !containerId ) { showNestedReceipt = true; } assessment.OnCompleteUpdateCanvas(questionId,req,showNestedReceipt); if(extraCredit) { assessment.updateExtraCredit(newExtraCreditValue,questionId); } if (fullCreditCheckbox) { assessment.updateFullCredit(newFullCredit,questionId); } if (!showNestedReceipt) { // show receipt in pool , table cell var status_msg = null; if (json.successMessage != "") { status_msg = $('status_msg_succ'); } var link = containerId.down(1); link.hide(); containerId.appendChild(status_msg); (status_msg).show(); setTimeout( function(){ (status_msg).fade({ duration: 0.5 }); },500); setTimeout( function(){ link.appear({duration:0.5}); },1000); link.focus(); } }, onFailure: function(req){ new page.InlineConfirmation("error", page.bundle.getString("updatePointsFailed"), false); } }); return assessment.result; }; assessment.setDefaultLinkingMode = function(isLinkingMode, courseIdStr) { var courseId = courseIdStr || document.copyQuestionsForm.course_id.value; var url = "/webapps/assessment/do/authoring/questionSearch?method=saveLinkingMode" + "&linkingMode="+isLinkingMode+ "&course_id=" +courseId ; new Ajax.Request(url, { method: 'post', onCreate: function() { document.body.style.cursor = 'progress'; }, onComplete: function(transport,json) { document.body.style.cursor = 'default'; }, onSuccess: function(transport, json) { }, onFailure: function(transport, json) { } }); }; assessment.setDisplayFullText = function(displayFull, listId) { var extras = []; // Note - Constants.DISPLAY_FULL_TEXT = "displayFullText" extras.displayFullText=displayFull; inventoryList.ajaxPostOnClick(null, listId, extras, true); }; assessment.rewriteSectionForScreenReader = function(elementName) { var element = document.getElementById(elementName); element.setAttribute("aria-live", "assertive"); element.setAttribute("aria-relevant", "all"); element.setAttribute("aria-atomic", "true"); element.setAttribute("aria-busy", "true"); var myContents = element.innerHTML; element.innerHTML = myContents; element.setAttribute("aria-busy", "false"); return false; }; assessment.clearQuestionModifiedStatuses = function() { // Called on page load to make sure we don't have any stranded questions-to-monitor kicking around. assessment.questions_to_monitor = []; assessment.questions_to_monitor_index = 0; }; assessment.QMonitor = Class.create(); assessment.QMonitor.prototype = { initialize: function( entity, index) { this.index = index; Event.observe(entity, 'change', this.onChange.bindAsEventListener(this)); }, onChange: function( event) { assessment.questions_to_monitor[this.index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[this.index].qnum); } }; assessment.getSaveButton = function(questionNum) { var myButton = document.getElementById("saveButton_" + questionNum); if (!myButton) { if (assessment.isOneByOne) { if (questionNum == document.forms.saveAttemptForm.current_question.value) { myButton = document.getElementById("saveAnswerSubmitId"); // for one-at-a-time tests } } } return myButton; }; assessment.setModifiedIcon = function(questionNum) { var saveAnswerLabel = page.bundle.getString('takeSaveAnswer'); var myButton = assessment.getSaveButton(questionNum); if (myButton) { myButton.value = saveAnswerLabel; Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); } // TODO - Either rip this out or put in appropriate image, style, and text // NOTE - can't actually enable this until on-the-fly onchange support in the VTBE is done // (as opposed to the current on-unload check for change) // Also - would need to deal with leaving this image on-page in this scenario: // Save Q1 // Modify Q1 // Save Q2 // -- at this point, we update the status icons and lose the modified icon for Q1 /* var mySpan =document.getElementById("span_"+questionNum); var myImg = document.getElementById("img_"+questionNum); mySpan.className = "qIncomplete"; myImg.src = "/images/ci/icons/needs_grading.gif"; // better icon myImg.alt = "TODO: Incomplete"; myImg.height= "10"; myImg.width= "10"; */ }; assessment.addQuestionToMonitor = function(qid,qnum, isFileUploadQuestion) { var questionBlock = $(qid); assessment.questions_to_monitor[assessment.questions_to_monitor_index] = {}; // TODO - is there a more efficient way to do this? $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, assessment.questions_to_monitor_index); }); assessment.questions_to_monitor[assessment.questions_to_monitor_index].qid = qid; assessment.questions_to_monitor[assessment.questions_to_monitor_index].qnum = qnum; // Status: 0 == not changed, 1 = changed, 2 = attempted to be auto-saved since last change assessment.questions_to_monitor[assessment.questions_to_monitor_index].status = 0; assessment.questions_to_monitor[assessment.questions_to_monitor_index].isFileUploadQuestion = isFileUploadQuestion; assessment.questions_to_monitor_index++; }; assessment.remonitorFileUpload = function(qid, qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { if (assessment.questions_to_monitor[i].isFileUploadQuestion) { var questionBlock = $(qid); $A(questionBlock.getElementsByTagName('*'))._each(function(entity) { new assessment.QMonitor(entity, i); }); } else { return; } } } } }; assessment.questionBeingSaved = -1; assessment.markQuestionAsSaved = function (qnum) { if (assessment.questions_to_monitor_index > 0) { var i = 0; for(i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].qnum == qnum) { assessment.questions_to_monitor[i].status = 0; } } } }; assessment.hasUnsavedAnswers = function() { if (assessment.questions_to_monitor_index > 0) { var i = 0; if (typeof(finalizeEditorsAnyChange) == "function") { finalizeEditorsAnyChange(assessment.vtbeChanged); } for(i=0;i<assessment.questions_to_monitor_index;i++) { //alert("Question " + assessment.questions_to_monitor[i].qid + " number " + assessment.questions_to_monitor[i].qnum + " status " + assessment.questions_to_monitor[i].status); if (assessment.questions_to_monitor[i].status >= 1) { return true; } else if (assessment.questions_to_monitor[i].isFileUploadQuestion) { // In IE, the assessment.QMonitor onchange handle disappears after the first file selection and I can't seem to add it back. // This at least gets the saving to work so it doesn't appear totally broken. The button doesn't change to 'save answer' immediately // after you attach a file a second time though, but we have to live with that for now. var actionDivName = 'file_upload_ans_' + assessment.questions_to_monitor[i].qid + '_selectedFileActions'; var actionDiv = $(actionDivName); if (actionDiv && actionDiv.visible()) { assessment.questions_to_monitor[i].status = 1; return true; } } } } return false; }; assessment.registerVTBEChange = function() { if (typeof(registerOnChangeCallback) == "function") { registerOnChangeCallback(assessment.vtbeChangedCallback, assessment.getVtbeQuestionIndex); } }; assessment.autoSaveExecutor = ''; assessment.autoSaveInterval = 10; // seconds assessment.startAutoSave = function(interval) { assessment.autoSaveInterval = interval; assessment.autoSaveExecutor = new PeriodicalExecuter(assessment.doAutoSave, assessment.autoSaveInterval); }; assessment.stopAutoSave = function() { if (assessment.autoSaveExecutor != '') { assessment.autoSaveExecutor.stop(); } }; assessment.toggleAutoSave = function(interval) { assessment.stopAutoSave(); if ($s('autoSaveCheckbox').checked) { assessment.startAutoSave(interval); } }; assessment.doAutoSave = function(pe) { if (assessment.submittingRightNow) { // Ignore if submitting right now return; } if (assessment.savingRightNow) { // If we are already saving, do nothing right now. return; } var doneOne = false; if (assessment.hasUnsavedAnswers()) { for(var i=0;i<assessment.questions_to_monitor_index;i++) { if (assessment.questions_to_monitor[i].status == 1) // explicitly only check for status 1, skipping status==2 { if (doneOne) { // We can only submit one question per pass because otherwise the nonce fails. Switch // to a higher frequency to save all the outstanding questions faster. pe.stop(); pe.frequency = 1; pe.registerCallback(); return; } assessment.questions_to_monitor[i].status = 2; // flag to indicate we've already tied to auto-save this // Will be reset to 0 after a successful save or 1 if the user modifies their answer again. saveOneItem( assessment.questions_to_monitor[i].qid, assessment.questions_to_monitor[i].qnum, true, false ); doneOne = true; } } } if (!doneOne) { if (pe.frequency != assessment.autoSaveInterval) { pe.stop(); pe.frequency = assessment.autoSaveInterval; pe.registerCallback(); } } }; assessment.vtbeChanged = function(ifr) { var index = assessment.getVtbeQuestionIndex( ifr ); assessment.vtbeChangedCallback(ifr,index); }; assessment.vtbeChangedCallback = function(ifr,index) { if (index != -1) { assessment.questions_to_monitor[index].status = 1; assessment.setModifiedIcon(assessment.questions_to_monitor[index].qnum); } }; assessment.getVtbeQuestionIndex = function(ifr) { var parents = ifr.ancestors(); var num = parents.length; for ( var i = 0; i < num; i++ ) { var parent = parents[i]; if ( page.util.hasClassName(parent, 'takeQuestionDiv') ) { var divid = parent.id; for ( var j = 0; j < assessment.questions_to_monitor_index; j++ ) { if ( assessment.questions_to_monitor[j].qid == divid ) { return j; } } return -1; } } return -1; }; assessment.warnBeforeLeavingIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var prefix = "test"; if (isSurvey) { prefix = "survey"; } var timermsg = ''; if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } if (isForced) { return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.forced.beforeunload.warning"); } return ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.beforeunload.warning") + timermsg; }; assessment.queueUpWarning = function(msg, oneByOneAndForceUnload) { var url = assessment.getNextActionUrl() + '&method=queueUpWarning'; var params = Object.extend({ 'msg' : msg, 'oneByOneAndForceUnload' : oneByOneAndForceUnload, 'course_assessment_id' : document.forms.saveAttemptForm.course_assessment_id.value } ); var myAjax = new Ajax.Request( url, { method: 'post', parameters: params, asynchronous: false }); }; assessment.warnOnLeaveIfUnsavedOrUnsubmitted = function(isQbyQ, isForced, isSurvey) { if ((isQbyQ && window.document.assessmentInternalNavigation) || window.document.assessmentActuallySubmitted) { // don't warn if navigating inside a one at a time test as we will be saving automatically // or if the assessment is actually submitted in which case we hope they've saved all answers return; } var timermsg = ''; var prefix = "test"; if (isSurvey) { prefix = "survey"; } if (assessment.hasUnsavedAnswers()) { // Since we are always auto-saving anyways, we might as well just always save unsaved answers here. saveAllQuestions(false); } if (isForced) { assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.forced.warning", assessment.currentTestName), true ); } else { if (typeof counter != 'undefined' && counter.timerRunning) { timermsg = ASSESSMENT_RESOURCES.getString(prefix+".not.submitted.timer.running"); } assessment.queueUpWarning(page.bundle.getString(prefix+".not.submitted.warning", assessment.currentTestName )+timermsg, false); } }; assessment.setDefaultQuestionDisplay = function(blockToLeaveVisible) { assessment.blockToLeaveVisible = blockToLeaveVisible; UserDataDWRFacade.getStringPermScope( "assessment.questionsExpanded", function( questionsExpanded ) { if (questionsExpanded == 'false') { assessment.toggleQuestionDisplay(); } assessment.blockToLeaveVisible = 'null'; }); }; assessment.toggleQuestionDisplay = function() { var newVis = !assessment.questionVisibility; if (newVis) { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", true ); } else { UserDataDWRFacade.setStringPermScope( "assessment.questionsExpanded", false ); } // Note -most of the time this will be "contentListItem:null" - that's OK var idToIgnore = "contentListItem:" + assessment.blockToLeaveVisible; $A(document.getElementsByTagName('li'))._each(function(entity) { // hide|show the given entity if it is one we care about var id = entity.id; if (id.startsWith("contentListItem:") && id != idToIgnore) { $A(entity.getElementsByTagName('div'))._each(function(adiv) { if (page.util.hasClassName(adiv,'details')) { if (newVis) { $(adiv).show(); } else { $(adiv).hide(); } } }); if (newVis) { entity.removeClassName('hideQuestionDetails'); } else { entity.addClassName('hideQuestionDetails'); } } }); var buttonText = page.bundle.getString( newVis ? "hide.question.details" : "show.question.details" ); $('content_listContainer_hideshowQuestions_top').down('a').update( buttonText ); $('content_listContainer_hideshowQuestions_bottom').down('a').update( buttonText ); assessment.questionVisibility = newVis; }; assessment.setDisableFlag = function(questionId, flag) { modifyHelper(questionId, 'setDisableFlag' + flag); }; assessment.questionLabelMap = {}; assessment.dndHooksAdded = false; assessment.setQuestionNumbers = function() { var index = 1; // loop through line items in list of questions var questions = $('content_listContainer'); if (questions) { $A(questions.childElements()).each( function( li ) { var h3 = li.down('h3'); var span = h3.down('span.questionNumber'); if ( !span ) // create & add span for questionNumber if none exists { span = new Element('span',{'class':'questionNumber autoQuestionNumber'}); h3.insert({top:span}); } var id = h3.up('div').id; var qSetSize = $('questionCount'+id); var qNumStr = ''+index; if ( qSetSize ) // show number range for question sets { var s = parseInt(qSetSize.innerHTML, 10); index += s - 1; if ( s > 1 ) { qNumStr += ' - '+index; } else if ( s === 0 ) { qNumStr = ''; } } qNumStr = qNumStr + '.'; index++; span.update(qNumStr); assessment.questionLabelMap[id] = h3.innerHTML.stripTags(); // save numbered label in map for loading accessible reorder select }); } if ( !assessment.dndHooksAdded ) { var dndCtrl = dragdrop.getControllerObjById( 'pageListReorderControls' ); if (dndCtrl) { // Set question numbers in the accessible reorder select before opening it's popup. // Setting the question numbers needs to be defered until the popup is added to the DOM, which // happens just before the popup is opened dndCtrl.extPreOpenCallback = assessment.setAccessibleReorderQuestionNumbers; // call this function to set question numbers after a dnd or accessible reorder happens dndCtrl.extPostOrderCallback = assessment.setQuestionNumbers; assessment.dndHooksAdded = true; } } }; assessment.setAccessibleReorderQuestionNumbers = function() { $A($('pageListReorderControlSelect').options).each( function( option ) { option.text = assessment.questionLabelMap[option.value]; }); }; assessment.viewReferencingCanvases = function(courseId, assessmentId) { var url = "/webapps/assessment/do/authoring/modifyAssessment?course_id=" + courseId + "&method=getReferringCanvases&assessmentId=" + assessmentId; new Ajax.Request(url, { method: 'post', asynchronous : false, onCreate: function(){ document.body.style.cursor = 'progress'; }, onComplete: function(req){ document.body.style.cursor = 'default'; }, onSuccess: function(req){ $('referencingCanvasesPlaceholder').update(req.responseText); }, onFailure: function(req){ $('referencingCanvasesPlaceholder').update(ASSESSMENT_RESOURCES.getString("error.loading.referrers")); } }); }; assessment.normalizedWidth = 0; assessment.setNormalizedButtonWidth = function(myButton) { if (assessment.normalizedWidth === 0) { myButton.value = page.bundle.getString('takeSaveAnswer'); Element.removeClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); assessment.normalizedWidth = myButton.clientWidth; myButton.value = page.bundle.getString('takeSaveAnswerAgain'); Element.addClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } myButton.value = page.bundle.getString('savingAnswer'); Element.addClassName(myButton,'answerSavingButton'); Element.removeClassName(myButton,'answerSavedButton'); if (myButton.clientWidth > assessment.normalizedWidth) { assessment.normalizedWidth = myButton.clientWidth; } } //myButton.style.width = assessment.normalizedWidth + 'px'; return; }; assessment.resetFields = function() { window.document.assessmentSubmitted = false; window.document.assessmentActuallySubmitted = true; }; assessment.getNextActionUrl = function() { var url = document.forms.saveAttemptForm.action; url = url + '?saveSequence=' + (assessment.saveSequence++); return url; }; assessment.submitAttemptForm = function() { var myForm = document.forms.saveAttemptForm; var origUrl = myForm.action; myForm.action = assessment.getNextActionUrl(); try { myForm.submit(); } catch (err) { // Make sure we get to the next line and reset the url just in case. } myForm.action = origUrl; }; // This is the final save-and-submit request for the test/survey assessment.doConfirmSubmit = function(msg) { document.forms.saveAttemptForm.save_and_submit.value='true'; try { if (confirmSubmit(msg)) { assessment.resetFields(); assessment.submitAttemptForm(); } } catch (err) { // If we had an error, continue to clear the saveandsubmit value } document.forms.saveAttemptForm.save_and_submit.value=''; return false; }; assessment.alertSaveStatus = function (status) { if (status == 'COMPLETED' ) { alert(page.bundle.getString("confirm_saveall_success")); } else if (status == 'PARTIAL' ) { alert(page.bundle.getString("confirm_save_partial")); } else if (status == 'UNANSWERED' ) { alert(page.bundle.getString("confirm_save_empty")); } else { alert(page.bundle.getString("confirm_save_error")); } }; assessment.removeFileUploadAnswer = function (fieldName, divName, questionId, questionNumber, remAnsSuffix, takeDupeSaveMsg) { document.getElementById(divName).style.display = "none"; document.forms.saveAttemptForm.elements.method.value = "fileremove"; document.forms.saveAttemptForm.elements[fieldName + '-override'].value = "false"; document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = "true"; try { if (checkAlreadySaved(takeDupeSaveMsg)) { saveOneItem( questionId, questionNumber, true, false); } } catch (err) { // Ignore - just want to make sure we do the next statement } document.forms.saveAttemptForm.elements[fieldName + remAnsSuffix].value = ""; return false; }; assessment.updateQuestionStatusResponse = function(originalRequest ) { var qnums = originalRequest.responseText; var lines = qnums.split("\n"); var qnum=lines[0].split(","); for (var i=0; i<qnum.length; i++) { var num = qnum[i]; if (num > 0) { setSavedIcon(num); } else { setNotSavedIcon(-num); } } for (var j=1;j<lines.length;j++) { var fileUpload = lines[j].split(":"); if (fileUpload.length == 2) { var divName = "file_upload_div_" + fileUpload[0]; var divElement = document.getElementById(divName); if (fileUpload[1] == "HIDE") { if(divElement !== null) { divElement.style.display = "none"; } } else { var spanName = "file_upload_span_" + fileUpload[0]; var cancelFileButton = "file_upload_ans_" + fileUpload[0] + "_cancelFileButton"; var cancelElement = document.getElementById(cancelFileButton); var overrideName = "file_upload_ans_" + fileUpload[0] + "-override"; var overrideElement = document.forms.saveAttemptForm.elements[overrideName]; var spanElement = document.getElementById(spanName); if(divElement !== null) //we must check if item exists for one question at a time format { divElement.style.display = "block"; } if(spanElement !== null) { spanElement.innerHTML = fileUpload[1]; } if(cancelElement !== null) { cancelElement.click(); } if (typeof overrideElement !== 'undefined' && overrideElement !== null) { overrideElement.value = "true"; } } } } }; assessment.prepareForSubmit = function(doValidation) { // MUST VALIDATE FORM TO PERSIST WYSIWYG // Set textarea value to VTBE contents: if (typeof(finalizeEditors) == "function") { finalizeEditors(); } /* Transform equations place holders into html before validation*/ var ismath = window.api ? true : false; // True if webeq is there /* Transform equations place holders into html before validation */ if ( ismath ) { api.setHtml(); } if (doValidation) { /* Validate form TODO: Why not call validateForm()*/ var valid = formCheckList.check(); return valid; } return true; };

var widget = {}; widget.colorPickers = {}; widget.ColorPicker = Class.create(); widget.ColorPicker.prototype = { /** * Constructor * * @param name - id of the color picker * @param initialColor - initial color hex string ("#000000") * @param alertMsg - localized error msg string ("Error: A valid color value must be specified") * @param previewIdStr - optional id string of the color preview DIV container user can specify * @param allowTransparent - optional boolean whether to render an option to select transparent. Default is false. */ initialize : function( name, initialColor, alertMsg, previewIdStr, previewBackgroundIdStr, allowTransparent ) { this.theColorPickerName = name; this.allowTransparent = ( !allowTransparent ) ? false : true; this.theMenu = $( name ); this.alertMsg = alertMsg; this.userPreviewContainer = $( previewIdStr ); // may be undefined this.userPreviewBackgroundContainer = $( previewBackgroundIdStr ); // may be undefined if ( typeof this.userPreviewContainer == "undefined" ) { this.userPreviewContainer = null; } if ( typeof this.userPreviewBackgroundContainer == "undefined" ) { this.userPreviewBackgroundContainer = null; } this.colorListParent = $( name + '_colorlist_parent' ); widget.ColorPicker.registerColorPicker( this ); this.ie = document.all && navigator.userAgent.indexOf( "Opera" ) == -1; this.color_hidden_input = $( name + "_title_color_input" ); this.color_hidden_input.value = initialColor; this.color_hidden_input._defaultValue = initialColor; this.anch_link = $( name + "_link" ); this.color_link = $( name + "_img" ); this.color_name_label = $( name + "_color_name_label" ); this.title_color_input = $( name + "_title_color" ); this.setDisplay( initialColor, this.getDisplayColorInfo( initialColor, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( initialColor, true ); var backgroundStyle = initialColor; if( initialColor === "transparent" ) { backgroundStyle = 'url(/images/swatches/transparent.gif)'; } this.color_link.setStyle( { background : backgroundStyle } ); this.updateUserPreviewContainerColor( initialColor ); if ( this.anch_link ) { Event.observe( this.anch_link, "click", this.onOpen.bindAsEventListener( this ) ); } Event.observe( document.body, "click", this.closeColorPickers.bindAsEventListener( this ) ); Event.observe( this.theMenu, 'keydown', this.onKeyPress.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_previewColorLink', 'click', this.previewListener .bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_cancelButton', 'click', this.onClose.bindAsEventListener( this ) ); Event.observe( this.theColorPickerName + '_submitButton', 'click', this.onApply.bindAsEventListener( this ) ); this.skip_link = $( name + "_skip_link" ); if ( this.skip_link ) { Event.observe( this.skip_link, "click", this.onSkipLinkClick.bindAsEventListener( this ) ); } // relocate color picker popup div to the bottom of the doc b/c of css display issues Element.remove( this.theMenu ); document.body.appendChild( this.theMenu ); widget.colorPickers[ this.theColorPickerName ] = this; }, onSkipLinkClick : function( event ) { $( this.theColorPickerName + '_submitButton' ).focus(); }, onKeyPress : function( event ) { var key = event.keyCode || event.which; if ( key == Event.KEY_ESC ) { this.onClose( event ); } }, closeColorPickers : function( event ) { var element = Event.element( event ); widget.ColorPicker.colorPickers.each( function( cp ) { if ( cp != this && !element.descendantOf( cp.theMenu ) ) { cp.close(); } }.bind( this ) ); }, setOnChangeHandler : function( handler ) { this.onChangeHandler = handler; }, setDefaultColor : function( colorValue ) { this.color_hidden_input.value = colorValue; this.color_hidden_input._defaultValue = colorValue; if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); }, setColor : function( colorValue ) { widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, colorValue ); if ( colorValue === "transparent" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); } else { this.color_link.setStyle( { background : colorValue } ); } this.setDisplay( colorValue, this.getDisplayColorInfo( colorValue, false ) ); this.color_name_label.innerHTML = this.getDisplayColorInfo( colorValue, true ); this.updateUserPreviewContainerColor( colorValue ); if ( this.onChangeHandler ) { this.onChangeHandler(); } }, getPaletteInstance : function() { if ( !this.paletteInstance ) { this.paletteInstance = Element.clone( widget.ColorPicker.colorPalette, true ); } return this.paletteInstance; }, deletePaletteInstance : function() { if ( this.paletteInstance ) { Event.stopObserving( this.paletteInstance, 'click' ); this.paletteInstance.remove(); delete this.paletteInstance; } }, onOpen : function( event ) { this.closeColorPickers( event ); this.colorListParent.appendChild( this.getPaletteInstance() ); this.initializeTransparent(); Event.observe( this.getPaletteInstance(), 'click', this.setColorFromSwatch.bindAsEventListener( this ) ); var offset = Position.cumulativeOffset( this.anch_link ); this.theMenu.setStyle( { display : "block", position : "absolute" } ); var width = this.theMenu.getWidth(); var bodyWidth = $( document.body ).getWidth(); var menuDims = this.theMenu.getDimensionsEx(); var anchorDims = this.anch_link.getDimensionsEx(); var menuHeight = menuDims.height; var viewportDimensions = document.viewport.getDimensions(); var scrollOffsets = document.viewport.getScrollOffsets(); // Use viewport relative offsets to figure out placement within the view var offsetTop = offset[ 1 ] - scrollOffsets.top; var offsetLeft = offset[ 0 ] - scrollOffsets.left; var xpos = offsetLeft; if ( page.util.isRTL() ) { xpos = xpos + this.anch_link.getWidth() - width; } if ( xpos + width > viewportDimensions.width ) { // First try to position it on the left of the link instead of the right xpos = offsetLeft - width + anchorDims.width; if ( xpos < 0 ) { // If we go off the page though, just try our best xpos = viewportDimensions.width - width; } } if ( xpos < 0 ) { xpos = 0; } var ypos = offsetTop + anchorDims.height; if ( ( ypos + menuHeight ) > viewportDimensions.height ) { // Try to position above the color picker first ypos = offsetTop - menuHeight; if ( ypos < 0 ) { // but if it goes off the top of the page just do a best-effort. ypos = ypos - ( ypos + menuHeight - viewportDimensions.height ); if ( ypos < 0 ) { ypos = 0; } } } // The color swatch is positioned absolutely, so adjust offsets to include the scrollofset ypos = ypos + scrollOffsets.top; xpos = xpos + scrollOffsets.left; this.theMenu.setStyle( { left : xpos + "px", top : ypos + "px" } ); this.title_color_input.focus(); ( function() { if ( !this.shim ) { this.shim = new page.popupShim( this.theMenu ); } this.shim.open(); }.bind( this ).defer() ); Event.stop( event ); }, /** * Removes the transparent choice from the palette if the picker is not supposed to support transparency. */ initializeTransparent : function() { if ( !this.allowTransparent ) { var transparentLi = this.colorListParent.down( 'li#colorlist_transparent' ); if ( transparentLi ) { Element.remove( transparentLi ); } } }, /** * Hides the color picker. */ onClose : function() { this.close(); this.anch_link.focus(); }, close : function() { this.deletePaletteInstance(); this.theMenu.setStyle( { display : "none" } ); if ( this.shim ) { this.shim.close(); } }, /** * Sets the preview color and text to the color selected by the user in the palette */ setColorFromSwatch : function( event ) { var element = Event.element( event ); if ( element.hasClassName( 'transparent' ) ) { this.setDisplay( "transparent", page.bundle.getString( "colorpicker.color.transparent" ) ); } else { var text = element.childNodes[ 0 ].nodeValue; if ( text ) { this.setDisplay( text.substring( 0, 7 ), this.getDisplayColorInfo( text.substring( 0, 7 ), false ) ); } } Event.stop( event ); }, getDisplayColorInfo : function( hexValue, onlyColorName ) { var transparent = false; var localizedName; var safeColorCode; if ( hexValue === "transparent" ) { transparent = true; localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ hexValue ]; } else { safeColorCode = this.getSafeColorCode( hexValue ).toUpperCase(); //The keys in ColorPickerMap are all 6 digit safe color codes, that's we need to make sure that we're using the correct key to lookup the color. localizedName = widget.ColorPicker.colorPickerPaletteMap[ "default" ][ safeColorCode ]; } if ( !localizedName ) { localizedName = ''; } var colorName; colorName = localizedName + ' (' + hexValue + ')'; if ( onlyColorName || transparent ) { colorName = localizedName; } return colorName; }, /** * Returns a Six digit Hexadecimal Color Code. */ getSafeColorCode : function( hexValue ) { return hexValue.replace( /#([\d0-9A-Fa-f])([\d0-9A-Fa-f])([\d0-9A-Fa-f])$/,'#$1$1$2$2$3$3'); }, /** * Handles the Preview functionality on the swatch. If an inappropriate color is choosen, a msg is displayed to the * user. Else updates the color preview with the manually entered color. */ previewListener : function( event ) { if ( !this.isValidColor( this.title_color_input.value ) ) { alert( this.alertMsg ); return; } if ( this.title_color_input.value.length != 6 ) { return; } var prevCol; if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { prevCol = "transparent"; this.setDisplay( prevCol, page.bundle.getString( 'colorpicker.color.transparent' ) ); } else { prevCol = '#' + this.title_color_input.value; this.setDisplay( prevCol, this.getDisplayColorInfo( prevCol, false ) ); } Event.stop( event ); }, /** * Updates the color preview panel in the picker pop up */ setDisplay : function( col, text ) { if ( col === "transparent" ) { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : 'url(/images/swatches/transparent_lrg.gif)' } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : '#ffffff' } ); this.title_color_input.value = 'XXXXXX'; } else { $( this.theColorPickerName + '_swatchpreview' ).setStyle( { background : col } ); $( this.theColorPickerName + '_color_text' ).setStyle( { color : col } ); this.title_color_input.value = ( col.startsWith( '#' ) ) ? col.substr( 1 ) : col; } $( this.theColorPickerName + '_title_color_name' ).innerHTML = text; }, /** * Checks for a valid color value. */ isValidColor : function( color_value ) { var isValid = false; isValid = ( /^[0-9A-Fa-f]{6}/ ).test( color_value ); if ( !isValid && this.allowTransparent ) { isValid = color_value.toLowerCase() === "xxxxxx"; } return isValid; }, /** * Manages the functionality for the Apply button the swatch. */ onApply : function( event ) { var color = this.title_color_input.value; if ( !this.isValidColor( color ) ) { return; } if ( this.title_color_input.value.toLowerCase() === "xxxxxx" ) { this.color_link.setStyle( { background : 'url(/images/swatches/transparent.gif)' } ); color = "transparent"; this.color_name_label.innerHTML = page.bundle.getString( "colorpicker.color.transparent" ); } else { color = '#' + color; this.color_link.setStyle( { background : color } ); this.color_name_label.innerHTML = this.getDisplayColorInfo( color, true ); } widget.ShowUnsavedChanges.changeHiddenValue( this.color_hidden_input, color ); this.updateUserPreviewContainerColor( color ); this.onClose(); if ( this.onChangeHandler ) { this.onChangeHandler(); } Event.stop( event ); }, /** * If the user specified preview container element exists, update its color style to the color given. * * @param color - color hex string */ updateUserPreviewContainerColor : function( color ) { if ( this.userPreviewContainer ) { this.userPreviewContainer.style.color = color; } else if ( this.userPreviewBackgroundContainer ) { this.userPreviewBackgroundContainer.style.background = color; } } }; // end widget.ColorPicker.prototype widget.ColorPicker.colorPickers = []; widget.ColorPicker.colorPickerMap = {}; widget.ColorPicker.colorPickerPaletteMap = {}; widget.ColorPicker.registerColorPicker = function( cp ) { widget.ColorPicker.colorPickers.push( cp ); widget.ColorPicker.colorPickerMap[ cp.theColorPickerName ] = cp; // grab the color definition and remove it from the DOM for the time being if ( !widget.ColorPicker.colorPalette ) { var colorPalette = $( 'picker_colorlist' ); // Store the colors and their localized names so we can look them up later. widget.ColorPicker.colorPickerPaletteMap[ "default" ] = {}; var arrColors = Element.getElementsBySelector( colorPalette, "a" ); for ( var i = 0; i < arrColors.length; i++ ) { if ( !arrColors[ i ].hasClassName( "transparent" ) ) { widget.ColorPicker.colorPickerPaletteMap[ "default" ][ arrColors[ i ].innerHTML.substring( 0, 7 ).toUpperCase() ] = arrColors[ i ].innerHTML .substring( 8 ); } } widget.ColorPicker.colorPickerPaletteMap[ "default" ].transparent = page.bundle .getString( "colorpicker.color.transparent" ); widget.ColorPicker.colorPalette = colorPalette; // deferring so that the name lookup for colors can succeed during init ( function() { Element.remove( colorPalette ); }.defer() ); } }; widget.ColorPicker.closeAllColorPickers = function() { widget.ColorPicker.colorPickers.each( function( cp ) { cp.close(); } ); }; widget.MultiSelect = Class.create(); widget.MultiSelect.multiselectBoxes = []; // ---------------- "static" methods widget.MultiSelect.registerMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.push( ms ); }; widget.MultiSelect.unRegisterMultiSelect = function( ms ) { widget.MultiSelect.multiselectBoxes.remove( ms ); }; widget.MultiSelect.prototype = { initialize : function( multiSelectDiv, formName ) { this.multiSelectDiv = $( multiSelectDiv ); this.formName = formName; if ( this.multiSelectDiv ) { this.leftClickListeners = []; this.rightClickListeners = []; var divs = this.multiSelectDiv.getElementsByTagName( 'div' ); var leftDiv = $( divs[ 0 ] ); var buttonDiv = $( divs[ 1 ] ); var rightDiv = $( divs[ 2 ] ); var inputs = this.multiSelectDiv.getElementsByTagName( 'input' ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); var leftSelects = leftDiv.getElementsByTagName( 'select' ); var rightSelects = rightDiv.getElementsByTagName( 'select' ); this.leftSelectBox = $( leftSelects[ 0 ] ); this.rightSelectBox = $( rightSelects[ 0 ] ); var buttons = buttonDiv.getElementsByTagName( 'button' ); var moveRightButton = $( buttons[ 0 ] ); var moveLeftButton = $( buttons[ 1 ] ); var leftInputs = leftDiv.getElementsByTagName( 'input' ); var leftInvertSelectionButton = $( leftInputs[ 0 ] ); var leftSelectAllButton = $( leftInputs[ 1 ] ); var rightInputs = rightDiv.getElementsByTagName( 'input' ); var rightInvertSelectionButton = $( rightInputs[ 0 ] ); var rightSelectAllButton = $( rightInputs[ 1 ] ); widget.MultiSelect.registerMultiSelect( this ); Event.observe( moveLeftButton, "click", this.onMoveLeftClick.bindAsEventListener( this ) ); Event.observe( moveRightButton, "click", this.onMoveRightClick.bindAsEventListener( this ) ); Event.observe( leftInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, true ) ); Event.observe( rightInvertSelectionButton, "click", this.onInvertSelection.bindAsEventListener( this, false ) ); Event.observe( leftSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, true ) ); Event.observe( rightSelectAllButton, "click", this.onSelectAllClick.bindAsEventListener( this, false ) ); // This for the MultiSelectAction Bean. // If actionBean list is less than 1, button is displayed and not the dropdown if ( leftSelects.length > 1 ) { this.actionBeanLeftSelect = $( leftSelects[ 1 ] ); this.actionBeanRightSelect = $( rightSelects[ 1 ] ); var actionBeanLeftGoBox = $( leftInputs[ 2 ] ); var actionBeanRightGoBox = $( leftInputs[ 2 ] ); Event.observe( actionBeanLeftGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, true ) ); Event.observe( actionBeanRightGoBox, "click", this.actionBeanFunc.bindAsEventListener( this, false ) ); } } }, actionBeanFunc : function( event, leftSelect ) { var destination = this.actionBeanLeftSelect; var selectedBox = this.leftSelectBox; if ( !leftSelect ) { destination = this.actionBeanRightSelect; selectedBox = this.rightSelectBox; } var myindex = destination.selectedIndex; if ( myindex == -1 || myindex > destination.length - 1 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return false; } var sFunctionName = destination.options[ myindex ].value; var oFunc = window[ sFunctionName ]; oFunc( selectedBox.name, this.formName ); this.setHiddenValues(); }, /* * listener registration for leftmove and rightmove clicks */ addToLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.push( listenerFunc ); } }, addToRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.push( listenerFunc ); } }, removeFromLeftClickListener : function( listenerFunc ) { if ( this.leftClickListeners ) { this.leftClickListeners.remove( listenerFunc ); } }, removeFromRightClickListener : function( listenerFunc ) { if ( this.rightClickListeners ) { this.rightClickListeners.remove( listenerFunc ); } }, removeAllLeftClickListeners : function() { this.leftClickListeners = []; }, removeAllRightClickListeners : function() { this.rightClickListeners = []; }, removeFromLeft : function( id ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var toRemoveElement = leftItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToLeft : function( id, value, sortString ) { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); var returnItem = leftItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { this.rawAddToLeft( id, value, sortString ); this.setHiddenValues(); } } }, rawAddToLeft : function( id, value, sortString ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.leftSelectBox.appendChild( item ); }, removeFromRight : function( id ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var toRemoveElement = rightItems.find( function( item ) { return !item.selected && item.value == id; } ); if ( toRemoveElement ) { Element.remove( toRemoveElement ); this.setHiddenValues(); } } }, addToRight : function( id, value, sortString ) { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); var returnItem = rightItems.find( function( item ) { return item.value == id; } ); var exists = returnItem ? true : false; if ( !exists ) { var item = document.createElement( "option" ); item.value = id; item.innerHTML = value; item.setAttribute( 'sortString', sortString ); this.rightSelectBox.appendChild( item ); this.setHiddenValues(); } } }, resetRightBox : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); rightItems.invoke( "remove" ); this.setHiddenValues(); } }, resetLeftBox : function() { if ( this.leftSelectBox ) { var leftItems = this.leftSelectBox.immediateDescendants(); leftItems.invoke( "remove" ); this.setHiddenValues(); } }, getAllLeftAvailableElements : function() { if ( this.leftSelectBox ) { return this.leftSelectBox.immediateDescendants(); } else { return []; } }, getAllRightElements : function() { if ( this.rightSelectBox ) { var rightItems = this.rightSelectBox.immediateDescendants(); return rightItems; } else { return []; } }, onMoveLeftClick : function( event ) { var rightItems = this.rightSelectBox.immediateDescendants(); var selectedItems = rightItems.findAll( function( item ) { return item.selected; } ); var leftItems = this.leftSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { leftItems.push( item ); } ); leftItems = leftItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); leftItems.each( function( item ) { this.leftSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.leftClickListeners ) { this.leftClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, onMoveRightClick : function( event ) { var leftItems = this.leftSelectBox.immediateDescendants(); var selectedItems = leftItems.findAll( function( item ) { return item.selected; } ); var rightItems = this.rightSelectBox.immediateDescendants(); if ( !selectedItems || selectedItems.length === 0 ) { alert( page.bundle.getString( "admin.manageuserlists.selectionwarning" ) ); return; } selectedItems.invoke( "remove" ); selectedItems.each( function( item ) { rightItems.push( item ); } ); rightItems = rightItems.sortBy( function( option ) { return option.getAttribute( "sortString" ); } ); rightItems.each( function( item ) { this.rightSelectBox.appendChild( item ); }.bind( this ) ); this.setHiddenValues(); if ( this.rightClickListeners ) { this.rightClickListeners.each( function( listenerFunc ) { listenerFunc.apply( this, selectedItems ); }.bind( this ) ); } }, setHiddenValues : function() { var leftString; var rightString; var temp = ""; // Populate select box values comma separated into leftString,rightString. if ( this.leftSelectBox ) { this.leftSelectBox.immediateDescendants().each( function( option ) { leftString = option.value; temp += leftString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.leftValues.value = temp; temp = ""; } if ( this.rightSelectBox ) { this.rightSelectBox.immediateDescendants().each( function( option ) { rightString = option.value; temp += rightString + ","; } ); temp = temp.substring( 0, temp.length - 1 ); temp = temp.replace( /^\s*|\s*$/g, "" ); this.rightValues.value = temp; temp = ""; } }, onSelectAllClick : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = true; } ); } Event.stop( event ); }, onInvertSelection : function( event, isLeft ) { if ( isLeft ) { this.leftSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } else { this.rightSelectBox.immediateDescendants().each( function( option ) { option.selected = !option.selected; } ); } } }; /** * A dynamic picker list */ widget.PickerList = Class.create(); widget.PickerList.prototype = { /** * Creates a new picker list * * @param id id of the picker list table * @param cellGenerators an array of functions to be called to generate the HTML for the cells for a new row in the * table. * @param columnAlignments an array of the alignments of the columns * @param columnStyles optional styles to applied to columns * @param reorderable whether the table is to be reorderable * @param reorderingUrl url that reordering changes will be persisted to (can be null) * @param contextParameters parameters that are passed along with the reordering action. */ initialize : function( id, cellGenerators, columnAlignments, columnStyles, reorderable, reorderingUrl, contextParameters ) { this.table = $( id ); this.reorderable = reorderable; if ( this.table ) { this.tableBody = $( this.table.getElementsByTagName( 'tbody' )[ 0 ] ); if ( reorderable ) { this.dragDrop = new dragdrop.ListReordering( this.tableBody, this.table.id + '_reorderControls', false, 'tr', 'dndHandle', 'span', reorderingUrl, contextParameters, new Date().getTime(), null ); } } this.cellGenerators = cellGenerators; this.columnAlignments = columnAlignments; this.columnStyles = columnStyles; }, /** * This function takes any number of arguments. They will be passed directly to the generator functions. If this * list is reorderable, the first two arguments must be: - id of the item added. - name of the item added. */ addRow : function() { var generatorArgs = arguments; var row = $( document.createElement( "tr" ) ); if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var id = arguments[ 0 ]; var name = arguments[ 1 ]; // Set the row id so that the drag and drop code can identify the row row.id = this.table.id + '_row:' + id; // Add the reordering handle. var cell = document.createElement( "td" ); cell.className = 'smallCell dndHandle'; cell.valign = 'top'; cell.innerHTML = '<span class="reorder"><span><img src="/images/ci/icons/generic_updown.gif" alt="" /></span></span>'; row.appendChild( cell ); // Add the item to the accessible controls. var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); accessibleSelect.options[ accessibleSelect.length ] = new Option( name, id ); dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } this.cellGenerators.each( function( generator, index ) { var alignment = this.columnAlignments[ index ]; var cell = $( document.createElement( "td" ) ); cell.setAttribute( "align", alignment ); var columnStyle = this.columnStyles[ index ]; if ( '' != columnStyle ) { cell.addClassName( columnStyle ); } cell.innerHTML = generator.apply( window, generatorArgs ); row.appendChild( cell ); }.bind( this ) ); if ( generatorArgs[ 0 ] && generatorArgs[ 0 ].incompatibleFile ) { return; } else { this.tableBody.appendChild( row ); } if ( this.reorderable ) { // Toggle drag and drop so that it picks up the new item. this.dragDrop.disableDragAndDrop(); this.dragDrop.enableDragAndDrop(); this.dragDrop.calculateItemOrder(); } return row; }, /** * Removes the row with the specified id or index * * @param idOrIndex - if the argument is a string - it is taken as the id of one of the rows in the table - if the * argument is a number - the row at the specified index will be removed. */ removeRow : function( idOrIndex ) { var rowToRemove = null; if ( Object.isString( idOrIndex ) ) { rowToRemove = $( this.table.id + "_row:" + idOrIndex ); } else { rowToRemove = this.tableBody.childElements()[ idOrIndex ]; } if ( rowToRemove ) { // Remove the row from the accessible repositioning controls if applicable if ( this.reorderable ) { dragdrop.ListReordering.addDivs(); // Temporarily add the accessible controls to the dom var idToCheck = rowToRemove.id.split( ':' )[ 1 ]; var accessibleSelect = $( this.table.id + "_reorderControlsSelect" ); var options = accessibleSelect.childElements(); for ( var i = 0; i < options.length; i++ ) { if ( options[ i ].value == idToCheck ) { Element.remove( options[ i ] ); break; } } dragdrop.ListReordering.removeDivs(); // Remove the accessible controls from the dom again. } Element.remove( rowToRemove ); if ( this.reorderable ) { this.dragDrop.calculateItemOrder(); } } } }; widget.PickerList.noopGenerator = function() { return '&nbsp;'; }; /** * File picker */ widget.FilePicker = Class.create(); widget.FilePicker.prototype = { /** * Creates a new file picker * * @param pickerList the javascript object representing the picker list (of currently attached files) * @param baseElementName the base name for the file picker elements * @param required whether a file is required to be chosen * @param overrideLocalBehavior whether the CS options to override local behavior should be shown * @param csPickerUrl url to the CS file picker * @param showAddMetadata whether the "submit and add metadata" content system functionality should be enabled. * @param onAttachFile Optional callback function triggered when a new file is attached */ initialize : function( pickerList, baseElementName, required, overrideLocalBehavior, csPickerUrl, showAddMetadata, showSpecialAction, allowMultipleFiles, onAttachFile ) { this.pickerList = pickerList; this.baseElementName = baseElementName; this.required = required; this.overrideLocalBehavior = overrideLocalBehavior; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.allowMultipleFiles = allowMultipleFiles; this.onAttachFile = onAttachFile; this.pickCSButton = $( this.baseElementName + '_csBrowse' ); this.pickLocalButton = $( this.baseElementName + '_localBrowse' ); this.localFilePicker = $( this.baseElementName + '_chooseLocalFile' ); this.pickURLButton = $( this.baseElementName + '_urlBrowse' ); this.selectedCSFile = $( this.baseElementName + '_selectedCSFile' ); this.selectedCSFileName = $( this.baseElementName + '_selectedCSFileName' ); this.selectedCSFilePath = $( this.baseElementName + '_selectedCSFilePath' ); this.selectedCSFileSize = $( this.baseElementName + '_selectedCSFileSize' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_selectedCSFileMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_selectedCSFileMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_selectedCSFileMetadataFormat' ); } // single file selected area this.selectedFileActionsArea = $( this.baseElementName + '_selectedFileActions' ); this.selectedFileName = $( this.baseElementName + '_selectedFileName' ); this.selectedFileSource = $( this.baseElementName + '_selectedFileSource' ); this.selectedFileLinkTitle = $( this.baseElementName + '_selectedFileLinkTitle' ); this.selectedFileSpecialAction = $( this.baseElementName + '_selectedFileSpecialAction' ); this.attachFileButton = $( this.baseElementName + '_attachFileButton' ); this.cancelFileButton = $( this.baseElementName + '_cancelFileButton' ); this.allowCS = this.pickCSButton ? true : false; this.allowLocal = this.pickLocalButton ? true : false; this.allowURL = this.pickURLButton ? true : false; // Wire up events if ( this.overrideLocalBehavior ) { this.pickTargetButton = $( this.baseElementName + '_CSTargetButton' ); this.targetCSLocation = $( this.baseElementName + '_CSTarget' ); Event.observe( this.pickTargetButton, "click", this.onPickTargetClick.bindAsEventListener( this ) ); } this.pickMDButton = $( this.baseElementName + '_CSTargetMetaButton' ); if ( this.pickMDButton ) { window.CSMetadataPickerCallBack = this.afterPickMD.bind( this ); Event.observe( this.pickMDButton, "click", this.onPickMDClick.bindAsEventListener( this ) ); } if ( $( this.baseElementName + '_permissionPickerButton0' ) ) { Event.observe( $( this.baseElementName + '_permissionPickerButton0' ), "click", widget.FilePicker.openPermPicker .bindAsEventListener( this, this.csPickerUrl, this.baseElementName + "_permissions0_manual", "", this.selectedCSFilePath, widget.FilePicker.permPickerCallback .curry( this.baseElementName, this.baseElementName + '_csPermFileList0', 0 ) ) ); } if ( this.allowCS ) { Event.observe( this.pickCSButton, "click", this.onCSBrowse.bindAsEventListener( this ) ); Event.observe( this.selectedCSFile, "change", this.onCSPick.bindAsEventListener( this ) ); } if ( this.allowLocal ) { this.localFileContainer = this.localFilePicker.up(); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } if ( this.allowURL ) { this.linkId = $( this.baseElementName + "_urlBrowse" ); this.formDivId = $( this.baseElementName + "_addUrlForm" ); this.formContainerId = $( this.baseElementName + "_urlContainerDiv" ); var flyout = new flyoutform.FlyoutForm( { linkId : this.linkId, formDivId : this.formDivId, inlineFormContainerId : this.formContainerId, customCallbackObject : this, customOnSubmitHandler : this.onURLPick } ); this.flyout = flyout; } if ( this.cancelFileButton ) { Event.observe( this.cancelFileButton, "click", this.onCancelClick.bindAsEventListener( this ) ); } Event.observe( this.allowLocal ? this.pickLocalButton.form : this.pickCSButton.form, "submit", this.onSubmit .bindAsEventListener( this ) ); this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv && this.pickerList && this.pickerList.tableBody && ( this.pickerList.tableBody .getElementsBySelector( 'input[type="hidden"]' ).length > 0 || this.pickerList.tableBody .getElementsBySelector( 'input[type="file"]' ).length > 0 ) ) { this.listHtmlDiv.show(); } if ( !this.allowMultipleFiles && this.selectedFileSource.value != '' ) { // A file is already attached, so show the selected files area and // turn off the file choosing button (and metadata button if any). this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } } widget.FilePicker.registerFilePicker( this ); }, /** * For the override local behavior: show the picker to pick the location */ onPickTargetClick : function( event ) { var remote = popop.launchPicker( '/webapps/cmsmain/folderpicker/', 'picker_browse' ); if ( remote ) { remote.opener.inputEntryURLToSet = this.targetCSLocation; remote.opener.returnFullURL = false; remote.methodCall = this.onPickMDClick.bind( this ); } }, /** * For the override local behavior: show the picker to pick the metadata */ onPickMDClick : function( event ) { var location = this.targetCSLocation; var file = this.localFilePicker; if ( file.value == '' ) { return; } var url = '/webapps/cmsmain/execute/metadatapicker/manage?action=pick&file=' + file.value; if ( location && location.value != '' ) { url += 'location=' + location.value; } popup.launchPicker( url, 'picker_browse' ); }, /** * For the override local behavior: callback from the metadata picker */ afterPickMD : function( metadata, selection, synchronised, format ) { $( this.baseElementName + '_CSTargetmetadata' ).value = metadata; $( this.baseElementName + '_CSTargetselection' ).value = selection; $( this.baseElementName + '_CSTargetSynchronised' ).value = synchronised; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = format; }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.inputEntryURLToSet = this.selectedCSFile; this.csBrowseWindow.opener.inputFileSizeToSet = this.selectedCSFileSize; this.csBrowseWindow.opener.linkName = this.selectedCSFileName; if ( this.selectedCSFilePath ) { this.csBrowseWindow.opener.filePath = this.selectedCSFilePath; } this.csBrowseWindow.opener.customHandler = this.onCSPick.bind( this ); if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, /** * Called after file has been chosen from CS file picker with metadata added. */ afterMD : function( metadata, synced, format, fileId ) { var metadataString = metadata.join( "#" ); if ( fileId ) { if ( $( this.baseElementName + '_CSMetadata_' + fileId ) ) { $( this.baseElementName + '_CSMetadata_' + fileId ).value = metadataString; } if ( $( this.baseElementName + '_CSMetadataSync_' + fileId ) ) { $( this.baseElementName + '_CSMetadataSync_' + fileId ).value = synced; } if ( $( this.baseElementName + '_CSMetadataFormat_' + fileId ) ) { $( this.baseElementName + '_CSMetadataFormat_' + fileId ).value = format; } } else { if ( this.selectedCSFileMetadata ) { this.selectedCSFileMetadata.value = metadataString; } if ( this.selectedCSFileMetadataSync ) { this.selectedCSFileMetadataSync.value = synced; } if ( this.selectedCSFileMetadataFormat ) { this.selectedCSFileMetadataFormat.value = format; } } }, /** * Callback called after a file has been chosen from the CS file picker in single file mode - updating selected * files section */ onCSPick : function( fileList ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { // picker was opened in multiple mode but one of the legacy page was hit // see how legacy pages with radio buttons submit its selection - pickmultiple.jspf // create object cell generator is expecting using hidden input if ( typeof ( fileList ) == 'string' ) { var filePath = this.selectedCSFilePath ? this.selectedCSFilePath.value : ""; var csFile = { fileName : this.selectedCSFile.value, fullUrlToFile : this.selectedCSFile.value, linkTitle : this.selectedCSFileName.value, filePath : filePath, size : this.selectedCSFileSize.value }; this.onCSPickAllowMultiple( [ csFile ] ); } else { this.onCSPickAllowMultiple( fileList ); } } else { this.csBrowseWindow = null; this.selectedFileSource.value = 'C'; this.selectedFileName.innerHTML = this.selectedCSFileName.value; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = this.selectedCSFileName.value; } this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.hide(); } if ( $( this.baseElementName + '_csPermissionsLi' ) ) { var fileName = this.selectedCSFileName.value; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. if ( ( /html|htm/i ).test( ext ) ) { $( this.baseElementName + "_permissionOptionsIndex" ).value = 0; $( this.baseElementName + '_csPermissionsLi' ).show(); } } if ( this.onAttachFile ) { this.onAttachFile( this, false ); } } }, /** * Called after a file is chosen from the local file picker in single file mode - updating selected files section */ onLocalPick : function( event ) { if ( this.localFilePicker.value != '' ) { if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } if ( this.allowMultipleFiles ) { this.onLocalPickAllowMultiple( event ); } else { var localFileName = this.getFileName( this.localFilePicker.value ); this.selectedFileName.innerHTML = localFileName; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = localFileName; } this.selectedFileSource.value = 'L'; this.selectedFileActionsArea.show(); this.togglePickerButtons( false ); if ( this.pickMDButton ) { this.pickMDButton.show(); } if ( this.onAttachFile ) { this.onAttachFile( this, true ); } } } }, /** * Callback called after files have been chosen from the CS file picker in multiple files mode - updating table */ onCSPickAllowMultiple : function( fileList ) { this.csBrowseWindow = null; fileList.each( function( selectedFile ) { selectedFile.baseElementName = this.baseElementName; selectedFile.showAddMetadata = this.showAddMetadata; selectedFile.csPickerUrl = this.csPickerUrl; this.pickerList.addRow( selectedFile, false ); // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); if ( this.onAttachFile ) { this.onAttachFile( this, false ); } }.bind( this ) ); }, /** * Called after a file is chosen from the local file picker in multiple files mode - updating table */ onLocalPickAllowMultiple : function( event ) { var row = this.pickerList.addRow( this, true ); if ( row === null ) { return; } // Wire a listener that will show the embed options when the embed action is chosen (if configured to) this.registerEmbedOptionsListener( widget.FilePicker.cellGenerators.fileActionEmbedOptions_index - 1 ); var cell = $( row.getElementsByTagName( 'td' )[ 0 ] ); var title = this.localFilePicker.title; Element.remove( this.localFilePicker ); this.localFilePicker.removeClassName( "hiddenInput" ); this.localFilePicker.setStyle( { position : "absolute", top : '-10000px' } ); this.localFilePicker.disabled = false; cell.appendChild( this.localFilePicker ); // Set up the names of the local file fields this.pickerList.tableBody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = this.baseElementName + '_LocalFile' + index; }.bind( this ) ); // Create and insert a new local file picker for more local file attaching this.localFilePicker = new Element( 'input', { title : title, type : 'file' } ); this.localFilePicker.addClassName( 'hiddenInput' ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); if ( this.onAttachFile ) { this.onAttachFile( this, true ); } }, /** * If a) Special Actions are enabled, and b) the embed options are configure to show up: - Wires up an on change * even on the special action select box that shows the embed options when the embed action is chosen. */ registerEmbedOptionsListener : function( index ) { if ( this.showSpecialAction ) { var specialAction = $( this.baseElementName + '_specialAction' + index ); var embedOptions = $( this.baseElementName + '_embedOptions' + index ); if ( embedOptions ) { specialAction.observe( 'change', function( event ) { if ( "EMBED" == specialAction.options[ specialAction.selectedIndex ].value ) { embedOptions.show(); } else { embedOptions.hide(); } } ); } } }, /** * Called after a url is chosen from the local file picker in multiple files mode - updating table */ onURLPick : function( widget ) { var selectedURL = document.getElementById( widget.baseElementName + '_newUrlName' ); if (selectedURL.value.blank()) // TODO: More exhaustive URL validation? { alert(page.bundle.getString('filePicker.validate.invalid.url')); return false; } if ( widget.listHtmlDiv ) { widget.listHtmlDiv.show(); } if ( widget.allowMultipleFiles ) { var urlFile = { fileName : selectedURL.value, fullUrlToFile : selectedURL.value, linkTitle : selectedURL.value }; widget.onCSPickAllowMultiple( [ urlFile ] ); } else { widget.selectedFileSource.value = 'C'; widget.selectedFileName.innerHTML = selectedURL.value; if ( widget.selectedFileLinkTitle ) { widget.selectedFileLinkTitle.value = selectedURL.value; } widget.selectedFileActionsArea.show(); widget.togglePickerButtons( false ); if ( widget.pickMDButton ) { widget.pickMDButton.hide(); } if ( widget.onAttachFile ) { widget.onAttachFile( widget, false ); } } // Purge entry widget.flyout.close(); selectedURL.value = ''; return true; }, /** * Called when the "Do not attach file" button is clicked */ onCancelClick : function( event ) { this.selectedFileActionsArea.hide(); this.clearSelectedFileInfo(); this.togglePickerButtons( true ); if ( event ) { Event.stop( event ); } }, /** * Toggles the enabled state of the Local/CS picker buttons to the specified state */ togglePickerButtons : function( enabled ) { if ( this.allowLocal ) { this.pickLocalButton.disabled = !enabled; if ( enabled ) { this.pickLocalButton.className = 'browse visibleInput'; this.localFilePicker.position = 'relative'; this.localFilePicker.style.top = ''; } else { this.pickLocalButton.className = 'disabled'; this.localFilePicker.position = 'absolute'; this.localFilePicker.style.top = '-10000px'; } if ( this.allowMultiple ) { this.localFilePicker.disabled = !enabled; } } if ( this.allowCS ) { this.pickCSButton.disabled = !enabled; if ( enabled ) { this.pickCSButton.className = 'browse visibleInput'; } else { this.pickCSButton.className = 'disabled'; } } if ( this.allowURL ) { this.pickURLButton.disabled = !enabled; if ( enabled ) { this.pickURLButton.className = 'browse visibleInput'; } else { this.pickURLButton.className = 'disabled'; } } }, /** * Clears the info associated to the current attached file (if the user cancelled, or chose to attach another file ) */ clearSelectedFileInfo : function() { var isLocal = this.selectedFileSource.value == 'L'; this.selectedFileName.innerHTML = ""; this.selectedFileSource.value = ""; if ( this.selectedFileLinkTitle ) { this.selectedFileLinkTitle.value = ""; } if ( this.pickMDButton ) { $( this.baseElementName + '_CSTargetmetadata' ).value = ""; $( this.baseElementName + '_CSTargetselection' ).value = ""; $( this.baseElementName + '_CSTargetSynchronised' ).value = ""; $( this.baseElementName + '_CSTargetDisplayFormat' ).value = ""; } if ( $( this.baseElementName + "_permissionOptionsIndex" ) ) { $( this.baseElementName + '_permissionOptionsIndex' ).value = -1; $( this.baseElementName + '_permissions0_all' ).checked = true; } if ( this.selectedFileSpecialAction ) { this.selectedFileSpecialAction.selectedIndex = 0; } if ( isLocal ) { var title = ""; if ( !this.allowMultipleFiles ) { title = this.localFilePicker.title; Element.remove( this.localFilePicker ); } this.localFilePicker = $( document.createElement( "input" ) ); if ( !this.allowMultipleFiles ) { this.localFilePicker.name = this.baseElementName + '_LocalFile0'; } this.localFilePicker.title = title; this.localFilePicker.type = "file"; this.localFilePicker.addClassName( "hiddenInput" ); this.localFileContainer.insertBefore( this.localFilePicker, this.localFileContainer.firstChild ); Event.observe( this.localFilePicker, "change", this.onLocalPick.bindAsEventListener( this ) ); } else { this.selectedCSFile.value = ""; this.selectedCSFileName.value = ""; if ( this.selectedFilePath ) { this.selectedFilePath = ""; } this.selectedCSFileSize.value = ""; if ( this.showAddMetadata ) { this.selectedCSFileMetadata.value = ""; this.selectedCSFileMetadataSync.value = ""; this.selectedCSFileMetadataFormat.value = ""; } } }, /** * Gets the file name based on the full file path. */ getFileName : function( fullPath ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return result; }, setRequired : function( required ) { this.required = required; }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.allowMultipleFiles ) { if ( this.pickerList.tableBody.immediateDescendants().length === 0 ) { alert( page.bundle.getString( "filePicker.validate.atLeastOne" ) ); if ( event ) { Event.stop( event ); } return false; } } else { if ( ( this.selectedCSFile && this.selectedCSFile.value == '' ) && ( this.localFilePicker && this.localFilePicker.value == '' ) ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); if ( event ) { Event.stop( event ); } return false; } } } return true; } }; // Creates hidden input items for selected files/folders if giving access to additional files/folder // when attaching an HTML file widget.FilePicker.permPickerCallback = function( baseElementName, permFileList, index, itemList ) { if ( itemList && itemList.length > 0 ) { var i; var permFileListElem = $( permFileList ); var hiddenInputs = ""; if ( !permFileListElem ) { return; } hiddenInputs += '<input type="hidden" name="' + baseElementName + '_permittedFiles' + index + '" value="' + itemList[ 0 ].fileName; for ( i = 1; i < itemList.length; i++ ) { hiddenInputs += ':' + itemList[ i ].fileName; } hiddenInputs += '">'; permFileListElem.innerHTML = hiddenInputs; } }; /** * Toggles the "mark for removal" status of an item in the currently attached files table. Should be called from an * onclick attribute on the toggle link in the table. */ widget.FilePicker.toggleForRemove = function( event, removeLink ) { var e = event || window.event; removeLink = $( removeLink ); var tableRow = removeLink.up( "tr" ); var hiddenField = removeLink.up( "td" ).down( 'input[type="hidden"]' ); tableRow.toggleClassName( "removeCell" ); if ( hiddenField.disabled ) { hiddenField.disabled = false; removeLink.innerHTML = page.bundle.getString( "filePicker.unmarkForRemove" ); } else { hiddenField.disabled = true; removeLink.innerHTML = page.bundle.getString( "filePicker.markForRemove" ); } Event.stop( e ); }; widget.FilePicker.togglePickerButton = function( pickerButton, enabled ) { if ( enabled ) { $( pickerButton ).setAttribute( "href", "#" ); $( pickerButton ).removeClassName( "disabled" ); } else { $( pickerButton ).removeAttribute( "href" ); $( pickerButton ).addClassName( "disabled" ); } }; /** * Removes the specified pending attachment. Should be called from an onclick handler on a link in the currently * attached files table */ widget.FilePicker.removePendingAttachment = function( event, removeLink, baseElementName ) { var e = event || window.event; if ( confirm( page.bundle.getString( "filePicker.doNotAttach.confirm" ) ) ) { removeLink = $( removeLink ); var row = removeLink.up( "tr" ); var tbody = row.up( "tbody" ); // Remove the pending row Element.remove( row ); // Re-index the local file inputs. tbody.getElementsBySelector( 'input[type="file"]' ).each( function( item, index ) { item.name = baseElementName + '_LocalFile' + index; } ); // Hide the whole attached files table if there are no more attached files. var rowTotal = tbody.getElementsByTagName( 'tr' ).length; if ( rowTotal === 0 ) { var listHtmlDiv = $( baseElementName + "_listHtmlDiv" ); if ( listHtmlDiv ) { listHtmlDiv.hide(); } } } Event.stop( e ); }; widget.FilePicker.getPermPickerUrl = function( csPickerUrl, path, pathElement ) { // reuse current file picker's url as fall back plan var baseUrl = csPickerUrl.split( "?" )[ 0 ]; var queryParams = csPickerUrl.toQueryParams(); if ( !queryParams.multipicker ) { queryParams.multipicker = 'true'; } if ( !path && pathElement ) { path = pathElement.value; } // if we have path, construct proper full url from scratch using the provided path & extracted principalId if ( path ) { var principalId = baseUrl.match( /\/webapps\/cmsmain\/.*picker\/([^\/]*)\/?/ ); baseUrl = "/webapps/cmsmain/picker"; if ( principalId ) { baseUrl += "/" + principalId[ 1 ]; } if ( baseUrl.charAt( baseUrl.length - 1 ) === '/' ) { baseUrl = baseUrl.slice( 0, baseUrl.length - 1 ); } baseUrl += path; } return baseUrl + "?" + $H( queryParams ).toQueryString(); }; widget.FilePicker.openPermPicker = function( event, csPickerUrl, pid, path, pathElement, callback ) { if ( !( pid && $( pid ) && $( pid ).type == 'radio' && $( pid ).checked ) ) { return false; } var permPickerUrl = widget.FilePicker.getPermPickerUrl( csPickerUrl, path, pathElement ); var remote = popup.launchPicker( permPickerUrl ); if ( remote ) { if ( callback ) { remote.opener.customHandler = callback; } else { remote.opener.customHandler = null; } } var e = event || window.event; if ( e ) { var eventElement = Event.element( e ); Event.stop( e ); } return false; }; /** * A registry of defined file pickers and methods to access this registry */ widget.FilePicker.filePickers = {}; widget.FilePicker.registerFilePicker = function( filePicker ) { widget.FilePicker.filePickers[ filePicker.baseElementName ] = filePicker; }; widget.FilePicker.unRegisterFilePicker = function( filePicker ) { delete widget.FilePicker.filePickers[ filePicker.baseElementName ]; }; widget.FilePicker.getFilePicker = function( baseElementName ) { return widget.FilePicker.filePickers[ baseElementName ]; }; /** * Cell generators for the current attached files table */ widget.FilePicker.cellGenerators = { fileName : function( filePicker, isLocal ) { var result = '<input type="hidden" name="' + filePicker.baseElementName + '_attachmentType" value="' + ( isLocal ? 'L' : 'C' ) + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_fileId" value="new">'; if ( isLocal ) { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.getFileName( filePicker.localFilePicker.value ) + '</span>'; } else { result += '<span class="fileName"><img src="/images/ci/ng/cal_year_event.gif" alt="' + page.bundle .getString( 'common.file' ) + '"> ' + filePicker.linkTitle + '</span>'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFile" value="' + filePicker.fileName + '">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSFileUrl" value="' + filePicker.fullUrlToFile + '">'; if ( filePicker.showAddMetadata ) { result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadata" id="' + filePicker.baseElementName + '_CSMetadata_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataSync" id="' + filePicker.baseElementName + '_CSMetadataSync_' + filePicker.xythosId + '" value="">'; result += '<input type="hidden" name="' + filePicker.baseElementName + '_CSMetadataFormat" id="' + filePicker.baseElementName + '_CSMetadataFormat_' + filePicker.xythosId + '" value="">'; } } return result; }, fileType : function( filePicker, isLocal ) { var result = null; if ( isLocal ) { result = page.bundle.getString( "filePicker.fileType.attachment" ); } else { result = page.bundle.getString( "filePicker.fileType.content" ); } return result; }, linkTitle : function( filePicker, isLocal ) { var linkTitle = ""; if ( isLocal ) { linkTitle = filePicker.getFileName( filePicker.localFilePicker.value ); } else { if ( filePicker.linkTitle ) { linkTitle = filePicker.linkTitle; } } return '<input type="text" name="' + filePicker.baseElementName + '_linkTitle" value="' + linkTitle + '" title="' + page.bundle .getString( "filePicker.nameOfLink" ) + " " + linkTitle + '">'; }, size : function( filePicker, isLocal ) { if ( !isLocal && filePicker.size ) { return '<input type="hidden" name="' + filePicker.baseElementName + '_size" value="' + filePicker.size + '"> ' + filePicker.size; } else { return ""; } }, fileAction : function( filePicker, isLocal ) { return widget.FilePicker.cellGenerators.fileActionEmbedOptions( filePicker, isLocal, true ); }, fileActionEmbedOptions_index : 0, // used to uniquely identify embed options form elements on the page. fileActionEmbedOptions : function( filePicker, isLocal, suppressOptions ) { var index = widget.FilePicker.cellGenerators.fileActionEmbedOptions_index++; var baseName = filePicker.baseElementName; var fileName = isLocal ? filePicker.getFileName( filePicker.localFilePicker.value ) : filePicker.linkTitle; var ext = fileName.match( /.*\.(.*)/ ); ext = ext ? ext[ 1 ] : ''; // Determine the type of the attached file. var isType = { image : ( /gif|jpeg|png|tif|bmp|jpg/i ).test( ext ), videoQt : ( /qt|mov|moov|movie/i ).test( ext ), videoOther : ( /avi|mpg|mpeg|wmv|asf|wma|mpe/i ).test( ext ), real : ( /ra|ram|rm/i ).test( ext ), flash : ( /swa|swf/i ).test( ext ), audio : ( /aif|aiff|au|mp3|wav/i ).test( ext ), html : ( /html|htm/i ).test( ext ) }; var isMedia = isType.image || isType.videoQt || isType.videoOther || isType.flash || isType.audio; var result = ''; if ( isMedia ) { result += '<select id="' + baseName + '_specialAction' + index + '" name="' + baseName + '_specialAction"'; result += ' title="' + page.bundle.getString( "filePicker.specialAction.for" ) + " " + fileName + '">'; result += '<option value="LINK">' + page.bundle.getString( "filePicker.specialAction.link" ) + '</option>'; result += '<option value="EMBED">' + page.bundle.getString( "filePicker.specialAction.embed" ) + '</option>'; result += '</select>'; // Render the embed options (if not suppressed) if ( !suppressOptions ) { result += '<ul style="display: none;" class="nestedList smallControls liveArea liveArea-slim" id="' + baseName + '_embedOptions' + index + '">'; // Alignment var fid = baseName + 'align' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.alignment' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_l" name="' + fid + '" value="Left" checked> <label for="' + fid + '_l">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.left' ) + '</label>' + '<input type="radio" id="' + fid + '_c" name="' + fid + '" value="Center"> <label for="' + fid + '_c">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.center' ) + '</label>' + '<input type="radio" id="' + fid + '_r" name="' + fid + '" value="Right"> <label for="' + fid + '_r">' + page.bundle .getString( 'wysiwyg.insert_picture.alignment.right' ) + '</label></fieldset></div></li>'; // Placement fid = baseName + 'placement' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.placement' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.placement' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_a" name="' + fid + '" value="Above"> <label for="' + fid + '_a">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.above' ) + '</label>' + '<input type="radio" id="' + fid + '_b" name="' + fid + '" value="Below" checked> <label for="' + fid + '_b">' + page.bundle .getString( 'wysiwyg.insert_picture.placement.below' ) + '</label></fieldset></div></li>'; // Dimensions if ( !isType.audio ) { fid = baseName + 'width' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.width' ) + '</label></div><div class="field"><input class="width" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; fid = baseName + 'height' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.height' ) + '</label></div><div class="field"><input class="height" type="text" name="' + fid + '" id="' + fid + '" size="4" value=""></div></li>'; } // Autoplay if ( !isType.image ) { fid = baseName + 'autostart' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.autostart' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.autostart' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Loop if ( !isType.image && !isType.real ) { fid = baseName + 'loop' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.loop' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.loop' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true"> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + baseName + 'loop' + index + '_n" name="' + fid + '" value="false" checked> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Control (radio) if ( isType.videoQt || isType.real ) { fid = baseName + 'controls' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.controls' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="Full" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="None"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label></fieldset></div></li>'; } // Controls (drop down) if ( isType.videoOther || isType.audio ) { fid = baseName + 'controls' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.controls' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="controls">' + '<option value="None">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_none' ) + '</option>' + '<option value="Mini">' + page.bundle .getString( 'wysiwyg.insert_picture.controls_mini' ) + '</option>' + '<option value="Full" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.controls_full' ) + '</option>' + '</select></div></li>'; } // Quality if ( isType.flash ) { fid = baseName + 'quality' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.set_quality' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="quality">' + '<option value="Low">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_low' ) + '</option>' + '<option value="Medium">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_med' ) + '</option>' + '<option value="High">' + page.bundle .getString( 'wysiwyg.insert_picture.quality_high' ) + '</option>' + '<option value="Best" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.quality_best' ) + '</option>' + '</select></div></li>'; } if ( isType.image ) { // URL fid = baseName + 'url' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.url' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25">' + '</div></li>'; // New Window fid = baseName + 'newwin' + index; result += '<li><div class="label">' + page.bundle.getString( 'wysiwyg.insert_picture.new_window' ) + '</div><div class="field" style="white-space:nowrap;">' + '<fieldset role="radiogroup"><legend><span class="hideoff">' + page.bundle .getString( 'wysiwyg.insert_picture.new_window' ) + '</span></legend>' + '<input type="radio" id="' + fid + '_y" name="' + fid + '" value="true" checked> <label for="' + fid + '_y">' + page.bundle .getString( 'wysiwyg.insert_picture.yes' ) + '</label>' + '<input type="radio" id="' + fid + '_n" name="' + fid + '" value="false"> <label for="' + fid + '_n">' + page.bundle .getString( 'wysiwyg.insert_picture.no' ) + '</label>' + '</fieldset></div></li>'; // Border fid = baseName + 'border' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.border' ) + '</label></div><div class="field"><select id="' + fid + '" name="' + fid + '" class="border">' + '<option value="0" selected>' + page.bundle .getString( 'wysiwyg.insert_picture.none' ) + '</option>' + '<option value="1>1</option><option value="2">2</option><option value="3">3</option>' + '<option value="4">4</option></select></div></li>'; } // Alt text fid = baseName + 'alttext' + index; result += '<li><div class="label"><label for="' + fid + '">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text' ) + '</label></div><div class="field"><input type="text" name="' + fid + '" id="' + fid + '" size="25" value=""></div><span class="fieldHelp clearfloats">' + page.bundle .getString( 'wysiwyg.insert_picture.alt_text.instructions' ) + '</span></li>'; result += '</ul>'; } } else { result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialAction" value="LINK">'; result += page.bundle.getString( "filePicker.specialAction.link" ); } // The index is used to find the correct request parameters on the backend. result += '<input type="hidden" name="' + filePicker.baseElementName + '_specialActionIndex" value="' + ( isMedia && !suppressOptions ? index : -1 ) + '">'; if ( filePicker.shouldManagePermission && !isLocal ) { // permission management options var permissionCsPickerUrl = filePicker.csPickerUrl; if ( permissionCsPickerUrl.indexOf( 'multipicker=true' ) != -1 ) { var xythosId = filePicker.fileName.sub( '/xid-', '' ).strip(); if ( xythosId ) { permissionCsPickerUrl = permissionCsPickerUrl + '&preselectedItemId=' + xythosId; } } result += '<ul id="' + filePicker.baseElementName + '_imgSpecOptions" class="nestedList smallControls liveArea liveArea-slim">'; result += '<li>'; var pid = baseName + "_permissions" + index; var pickerButtonId = baseName + "_permissionPickerButton" + index; var permFileListName = baseName + '_csPermFileList' + index; result += '<input type="radio" name="' + pid + '" value="A" id="' + pid + '_all" checked="checked" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.all" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="O" id="' + pid + '_this" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', false)" />' + page.bundle .getString( "fm.permission.grant.this" ) + '<br/>'; result += '<input type="radio" name="' + pid + '" value="S" id="' + pid + '_manual" onChange="widget.FilePicker.togglePickerButton(\'' + pickerButtonId + '\', true)" />' + page.bundle .getString( "fm.permission.grant.manual" ); result += '<a id="' + pickerButtonId + '" class="button-4 disabled" style="margin:0 3px" onclick="widget.FilePicker.openPermPicker( event, \'' + permissionCsPickerUrl + '\', \'' + pid + '_manual\',\'' + filePicker.filePath + '\', null, widget.FilePicker.permPickerCallback.curry( \'' + baseName + '\', \'' + permFileListName + '\', ' + index + ' ) );">' + page.bundle .getString( "filePicker.browse" ) + '</a>'; result += '</li>'; result += '</ul>'; result += '<div id="' + permFileListName + '" style="display: none;"></div>'; } result += '<input type="hidden" name="' + baseName + '_permissionOptionsIndex" value="' + ( isType.html && !isLocal ? index : -1 ) + '">'; return result; }, remove : function( filePicker, isLocal ) { var result = '<a href="#" onclick="widget.FilePicker.removePendingAttachment(event, this, '; result += "'" + filePicker.baseElementName + "'"; result += ');">' + page.bundle.getString( "filePicker.doNotAttach" ) + '</a>'; return result; }, // attach CS file alignment to course item align : function(filePicker, isLocal) { var alignOptionsName = "csAlignedResources"; var html = '<label for="csAlignedResources" style="white-space:nowrap">' + '<input type="checkbox" id="' + alignOptionsName + '"' + ' name="' + alignOptionsName + '"' + ' value="' + filePicker.filePath + '"' + '/>' + ' ' + page.bundle.getString('wysiwyg.insert_picture.csalign') + '</label>'; return html; } }; widget.InlineSingleCSFilePicker = Class.create(); widget.InlineSingleCSFilePicker.prototype = { initialize : function( baseElementName, csPickerUrl, showAddMetadata, showSpecialAction ) { this.baseElementName = baseElementName; this.csPickerUrl = csPickerUrl; this.showAddMetadata = showAddMetadata; this.showSpecialAction = showSpecialAction; this.browseButton = $( baseElementName + '_csBrowse' ); this.fileEntry = $( baseElementName + '_CSFile' ); this.fileId = $( baseElementName + '_fileId' ); if ( this.showAddMetadata ) { this.selectedCSFileMetadata = $( this.baseElementName + '_CSMetadata' ); this.selectedCSFileMetadataSync = $( this.baseElementName + '_CSMetadataSync' ); this.selectedCSFileMetadataFormat = $( this.baseElementName + '_CSFileMetadataFormat' ); } Event.observe( this.browseButton, 'click', this.onCSBrowse.bindAsEventListener( this ) ); }, /** * Show the CS file chooser */ onCSBrowse : function( event ) { this.csBrowseWindow = null; var windowId = "picker" + new Date().getTime(); this.csBrowseWindow = popup.launchPicker( this.csPickerUrl, windowId ); if ( this.csBrowseWindow ) { this.csBrowseWindow.opener.inputEntryURLToSet = this.fileEntry; this.csBrowseWindow.opener.returnFullURL = false; this.csBrowseWindow.opener.linkName = this.fileId; if ( this.showAddMetadata ) { this.csBrowseWindow.opener.displayMetadataPicker = true; window.CSMetadataCallBack = this.afterMD.bind( this ); } } Event.stop( event ); }, afterMD : function( metadata, synced, format ) { var metadataString = metadata.join( "#" ); this.selectedCSFileMetadata.value = metadataString; this.selectedCSFileMetadataSync.value = synced; this.selectedCSFileMetadataFormat.value = format; } }; /** * Inline single local file picker - $baseElementName_attachmentType - 'AL' or 'L' or '' - $baseElementName_localBrowse - * $baseElementName_fileId */ widget.InlineSingleLocalFilePicker = Class.create(); widget.InlineSingleLocalFilePicker.prototype = { initialize : function( baseElementName, currentAttachedFile, required, showSpecialAction ) { this.baseElementName = baseElementName; this.fileInput = $( baseElementName + '_chooseLocalFile' ); this.fileInputWrapper = $( this.fileInput.parentNode ); this.attachmentType = $( baseElementName + '_attachmentType' ); this.fullFileName = $( baseElementName + '_fileId' ); this.attachmentNameSpan = $( baseElementName + '_attachmentName' ); this.removeLink = $( baseElementName + '_removeLink' ); this.inputArea = $( baseElementName + '_inputArea' ); this.attachedFileArea = $( baseElementName + '_attachedFileArea' ); this.required = required; this.showSpecialAction = showSpecialAction; // Wire up events Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); Event.observe( this.removeLink, "click", this.onRemoveClick.bindAsEventListener( this ) ); Event.observe( this.fileInput.form, "submit", this.onSubmit.bindAsEventListener( this ) ); // Set up initial values if ( currentAttachedFile ) { this.setDefaultCurrentAttachedFile( currentAttachedFile ); } widget.InlineSingleLocalFilePicker.pickerMap[ baseElementName ] = this; }, setCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, file ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, setDefaultCurrentAttachedFile : function( file ) { this.clearFileInput(); if ( file ) { this.attachmentType.value = 'AL'; this.attachmentType._defaultValue = 'AL'; this.attachmentNameSpan.innerHTML = '<a href="' + file + '" target="_blank">' + this.getFileName( file ) + '</a>'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } this.fullFileName.value = file; this.fullFileName._defaultValue = file; this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); } else { this.attachmentNameSpan.innerHTML = ''; this.attachmentType.value = ''; this.fullFileName.value = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); } }, onAfterChooseFile : function( event ) { this.attachmentNameSpan.innerHTML = this.getFileName( this.fileInput.value, true ); this.attachmentType.value = 'L'; if ( this.removeHiddenField ) { Element.remove( this.removeHiddenField ); this.removeHiddenField = null; } widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fileInput.value ); this.inputArea.setStyle( { position : "absolute", top : '-10000px' } ); this.attachedFileArea.setStyle( { position : "static", top : '' } ); Event.stop( event ); }, onRemoveClick : function( event ) { this.clearFileInput(); if ( this.attachmentType.value == 'AL' ) { this.removeHiddenField = document.createElement( 'input' ); this.removeHiddenField.type = 'hidden'; this.removeHiddenField.name = this.baseElementName + '_remove'; this.removeHiddenField.id = this.baseElementName + '_remove'; this.removeHiddenField.value = this.fullFileName.value; this.attachedFileArea.insertBefore( this.removeHiddenField, this.attachedFileArea.firstChild ); widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, this.fullFileName.value ); } else { this.attachmentType.value = ''; widget.ShowUnsavedChanges.changeHiddenValue( this.fullFileName, '' ); } this.attachmentNameSpan.innerHTML = ''; this.inputArea.setStyle( { position : "static", top : '' } ); this.attachedFileArea.setStyle( { position : "absolute", top : '-10000px' } ); Event.stop( event ); }, clearFileInput : function() { var title = this.fileInput.title; Element.remove( this.fileInput ); this.fileInput = $( document.createElement( "input" ) ); this.fileInput.title = title; this.fileInput.type = "file"; this.fileInput.addClassName( "hiddenInput" ); this.fileInput.name = this.baseElementName + '_LocalFile0'; this.fileInput._defaultValue = ''; this.fileInputWrapper.insertBefore( this.fileInput, this.fileInputWrapper.firstChild ); Event.observe( this.fileInput, "change", this.onAfterChooseFile.bindAsEventListener( this ) ); }, /** * Gets the file name based on the full file path. * * @param fullPath Fully-qualified path of file * @param isDecodedName (optional) Indicates that the filename has already been URL decoded */ getFileName : function( fullPath, isDecodedName ) { var result = fullPath; var lastIndexOfBackslash = fullPath.lastIndexOf( '\\' ); var lastIndexOfSlash = fullPath.lastIndexOf( '/' ); if ( lastIndexOfBackslash > lastIndexOfSlash ) { result = fullPath.substring( lastIndexOfBackslash + 1, fullPath.length ); } else if ( lastIndexOfSlash > lastIndexOfBackslash ) { result = fullPath.substring( lastIndexOfSlash + 1, fullPath.length ); } return isDecodedName ? result : decodeURI( result ); }, /** * Validates the form when it is submitted. */ onSubmit : function( event ) { // Validate the form if necessary if ( this.required ) { if ( this.fullFileName.value == '' ) { alert( page.bundle.getString( "filePicker.validate.one" ) ); Event.stop( event ); return; } } } }; widget.InlineSingleLocalFilePicker.pickerMap = {}; /** * Read Only File picker */ widget.ReadOnlyFilePicker = Class.create(); widget.ReadOnlyFilePicker.prototype = { /** * Creates a new file picker * * @param baseElementName the base name for the file picker elements */ initialize : function( baseElementName ) { this.baseElementName = baseElementName; this.listHtmlDiv = $( this.baseElementName + "_listHtmlDiv" ); if ( this.listHtmlDiv ) { this.listHtmlDiv.show(); } widget.ReadOnlyFilePicker.pickerMap[ baseElementName ] = this; } }; widget.ReadOnlyFilePicker.pickerMap = {}; widget.UserRoleSelect = Class.create(); widget.UserRoleSelect.prototype = { initialize : function( userSelectRoleDivStr, moveMsgJS, noRoleMsgJs ) { this.sourceValueName = "_left_values"; this.secondaryValueName = "_right_values"; this.primaryValueName = "_primary_value"; this.userSelectRoleDiv = $( userSelectRoleDivStr ); if ( this.userSelectRoleDiv ) { var selects = this.userSelectRoleDiv.getElementsByTagName( 'select' ); var inputs = this.userSelectRoleDiv.getElementsByTagName( 'input' ); var links = this.userSelectRoleDiv.getElementsByTagName( 'a' ); this.source = $( selects[ 0 ] ); this.primary = $( inputs[ 3 ] ); this.secondary = $( selects[ 1 ] ); this.leftValues = $( inputs[ 0 ] ); this.rightValues = $( inputs[ 1 ] ); this.primaryValue = $( inputs[ 2 ] ); this.toPrimaryMove = $( links[ 0 ] ); this.toSecondaryMove = $( links[ 1 ] ); this.toSourceMove = $( links[ 2 ] ); Event.observe( this.toSourceMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, false, moveMsgJS, noRoleMsgJs ) ); Event.observe( this.toPrimaryMove, "click", this.switchPrimary.bindAsEventListener( this, moveMsgJS ) ); Event.observe( this.toSecondaryMove, "click", this.switchUserRoleColumns.bindAsEventListener( this, true, moveMsgJS, noRoleMsgJs ) ); } }, switchPrimary : function( event, msg ) { var indx; indx = 0; var sourceArray = this.source; if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } if ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.getFromPrimary(); this.primaryValue.value = sourceArray.options[ indx ].value; this.primary.value = sourceArray.options[ indx ].text; sourceArray.options[ indx ].selected = false; sourceArray.options[ indx ] = null; sourceArray.options[ sourceArray.length ] = tmpOpt; } this.writeToSelectBoxValues( this.source, this.leftValues ); return false; }, getFromPrimary : function() { var primaryRoleField = this.primaryValue; var primaryField = this.primary; return new Option( primaryField.value, primaryRoleField.value ); }, writeToSelectBoxValues : function( selectBox, hiddenName ) { var i = 0; var values = ""; while ( i < selectBox.length ) { if ( i > 0 ) { values += ","; } values += selectBox.options[ i ].value; i++; } hiddenName.value = values; return true; }, switchUserRoleColumns : function( event, isSourceDest, msg, noRoleMsg ) { var indx; indx = 0; var sourceArray = this.source; var targetArray = this.secondary; if ( !isSourceDest ) // If we are moving from Dest to Source { var temp = sourceArray; sourceArray = targetArray; targetArray = temp; } if ( sourceArray.length <= 0 ) { alert( noRoleMsg ); return false; } if ( sourceArray.selectedIndex == -1 || sourceArray.selectedIndex > sourceArray.length - 1 ) { alert( msg ); return false; } var rightIndex = 0; var targetLength = targetArray.length; while ( sourceArray.selectedIndex >= 0 ) { indx = sourceArray.selectedIndex; if ( indx == -1 || indx > sourceArray.length - 1 ) { alert( msg ); return false; } var tmpOpt = this.cloneMultipleRows( sourceArray.options[ indx ] ); if ( targetLength > 0 ) { var i = targetLength; while ( i > 0 ) { var tmpOpt1 = this.cloneMultipleRows( targetArray.options[ i + rightIndex - 1 ] ); targetArray.options[ i + rightIndex ] = tmpOpt1; i--; } } sourceArray.options[ indx ].selected = false; targetArray.options[ rightIndex ] = tmpOpt; // targetArray.options[rigthIndex].selected=true; rightIndex = rightIndex + 1; sourceArray.options[ indx ] = null; } // end of while this.writeToSelectBoxValues( this.source, this.leftValues ); this.writeToSelectBoxValues( this.secondary, this.rightValues ); return false; }, cloneMultipleRows : function( opt ) { return new Option( opt.text, opt.value, opt.defaultSelected, opt.selected ); } }; widget.StepGroup = {}; widget.StepGroup.toggleStepGroup = function( e, activeTabStr ) { var event = e || window.event; var target = Event.findElement( event, 'li' ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); $( 'activeTabSpanId_' + tab.id ).innerHTML = activeTabStr; } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); $( 'activeTabSpanId_' + tab.id ).innerHTML = ""; } } ); Event.stop( event ); }; /** * Show a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.showStepGroup = function( number ) { var target = $( 'stepGroupTab_' + number ); var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { tab = $( tab ); if ( tab.id == target.id ) { tab.addClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).show(); } else { tab.removeClassName( "active" ); $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; /** * Get the content block element to a specific step group * * @param number - the number of the group in order of the tabs at the top (e.g. 1 is the leftmost tab, then 2, 3, etc.) */ widget.StepGroup.getStepGroupContentBlock = function( number ) { var targetTab = $( 'stepGroupTab_' + number ); return $( targetTab.getAttribute( "bb:groupId" ) ); }; widget.StepGroup.showAllStepGroupsForSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } ); }; widget.StepGroup.revertAllStepGroupsAfterSubmit = function() { var tabs = $A( $( 'dataCollectionContainer' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' ) ); tabs.each( function( tab ) { if ( page.util.hasClassName( tab, 'active' ) ) { $( tab.getAttribute( "bb:groupId" ) ).show(); } else { $( tab.getAttribute( "bb:groupId" ) ).hide(); } } ); }; widget.ShowUnsavedChanges = Class.create(); widget.ShowUnsavedChanges.prototype = { initialize : function( dataCollectionContainer, skipTextArea ) { widget.ShowUnsavedChanges.enabled = true; widget.ShowUnsavedChanges.registerOnValueChangeCallback( widget.ShowUnsavedChanges.showIconsForUnsavedChanges ); var container = $( dataCollectionContainer ); var inputs = $A( container.getElementsByTagName( 'input' ) ); var selects = $A( container.getElementsByTagName( 'select' ) ); var textareas = $A( container.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { input = $( input ); var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { input._defaultValue = input.checked; } else if ( type == 'hidden' || type == 'text' ) { input._defaultValue = input.value; } else { input._defaultValue = ''; } if ( type != 'hidden' && type != 'button' && type != 'submit' ) { input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); } }.bind( this ) ); selects.each( function( input ) // TODO: multiselect? { input = $( input ); input._defaultValue = input.selectedIndex; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); if ( !skipTextArea || !skipTextArea ) { textareas.each( function( input ) { input = $( input ); input._defaultValue = input.value; input.observe( 'change', widget.ShowUnsavedChanges.onValueChange.bindAsEventListener() ); }.bind( this ) ); } } }; widget.ShowUnsavedChanges.onValueChangeCallback = function() { }; // do nothing widget.ShowUnsavedChanges.registerOnValueChangeCallback = function( callbackFunction ) { widget.ShowUnsavedChanges.onValueChangeCallback = callbackFunction; }; widget.ShowUnsavedChanges.dataElementsByStepGroup = {}; widget.ShowUnsavedChanges.onValueChange = function( event, elem ) { if ( widget.ShowUnsavedChanges.enabled ) { var dataElement = null; if ( event ) { dataElement = Event.findElement( event, 'li' ); } else { dataElement = elem.parentNode; while ( dataElement && dataElement.tagName.toLowerCase() != 'li' ) { dataElement = dataElement.parentNode; if ( dataElement.tagName.toLowerCase() == 'body' ) { dataElement = null; } } if ( dataElement ) { dataElement = $( dataElement ); } } if ( !dataElement ) { return; } var isDefault = true; var inputs = $A( dataElement.getElementsByTagName( 'input' ) ); var selects = $A( dataElement.getElementsByTagName( 'select' ) ); var textareas = $A( dataElement.getElementsByTagName( 'textarea' ) ); inputs.each( function( input ) { var type = input.type.toLowerCase(); if ( type == 'checkbox' || type == 'radio' ) { isDefault &= ( input.checked == input._defaultValue ); } else if ( type == 'hidden' || type == 'text' ) { isDefault &= ( input.value == input._defaultValue ); } } ); selects.each( function( input ) // TODO: multiselect? { isDefault &= ( input.selectedIndex == input._defaultValue ); } ); textareas.each( function( input ) { isDefault &= ( input.value == input._defaultValue ); } ); // trigger call back function widget.ShowUnsavedChanges.onValueChangeCallback( isDefault, dataElement ); } }; widget.ShowUnsavedChanges.showIconsForUnsavedChanges = function( isDefault, dataElement ) { var imgs = dataElement.getElementsByTagName( 'img' ); var unsavedImg = null; for ( var i = 0; i < imgs.length; i++ ) { if ( imgs[ i ].className.indexOf( 'unsavedChangeImg' ) >= 0 ) { unsavedImg = $( imgs[ i ] ); break; } } if ( unsavedImg ) { if ( isDefault ) { dataElement.removeClassName( 'dirty' ); unsavedImg.hide(); } else { dataElement.addClassName( 'dirty' ); unsavedImg.show(); } widget.ShowUnsavedChanges.updateStepGroupIndicator(); } }; widget.ShowUnsavedChanges.updateStepGroupIndicator = function() { if ( widget.ShowUnsavedChanges.enabled ) { // Loop through each step group tab, and determine if an icon that indicates // unsaved changes should be displayed in the tab itself $$( '#dataCollectionContainer ul li.stepGroupTab' ).each( function( tab ) { var stepGroup = $( tab.getAttribute( "bb:groupId" ) ); var img = $( tab.getElementsByTagName( 'img' )[ 0 ] ); var link = $( tab.getElementsByTagName( 'a' )[ 0 ] ); var dataElements = widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ]; if ( !dataElements ) { dataElements = stepGroup.getElementsByTagName( 'li' ); widget.ShowUnsavedChanges.dataElementsByStepGroup[ stepGroup.id ] = dataElements; } var dirtyCount = 0; for ( var i = 0; i < dataElements.length; i++ ) { //If the data element is hidden, we do not want to include it in the count of dirty //data elements. Doing so could result in the dirty image on the step group displaying //with no child data elements that display as dirty. if ( dataElements[ i ].hasClassName( "dirty" ) && dataElements[ i ].getStyle( "display" ) !== "none" ) { dirtyCount++; } } if ( dirtyCount > 0 && !tab.isDirty ) { img.show(); link.setStyle( { 'paddingLeft' : '20px' } ); tab.isDirty = true; } else if ( dirtyCount === 0 && tab.isDirty ) { img.hide(); link.setStyle( { 'paddingLeft' : '' } ); tab.isDirty = false; } } ); } }; // Call this when the value of a hidden data element changes that you want to // show an indicator for. Otherwise changing the value of the hidden element directly will // not cause an indicator to show. widget.ShowUnsavedChanges.changeHiddenValue = function( hiddenElem, value ) { hiddenElem.value = value; if ( widget.ShowUnsavedChanges.enabled ) { widget.ShowUnsavedChanges.onValueChange( null, hiddenElem ); } }; widget.ShowUnsavedChanges.enabled = false; /** * Supports a counter widget attached to a textbox -- it keeps track of the number of characters in the text box, and * updates a counter whenever that number changes. The counter turns red, and begins counting backwards, when the max * number of charters is exceeded. */ widget.TextBoxCounter = Class.create(); widget.TextBoxCounter.prototype = { /** * Contructor * * @param textBoxId The id of the textbox we're counting from * @param counterId The id of the element that countains the count * @param maxCharCount The max number of characters supported by this textbox * @param charactersRemainingLabel The label for the character count element * @param charactersOverLimitLabel The alternate label for the character element, for when the max # of characters * has been exceeded. */ initialize : function( textBoxId, counterId, maxCharCount, charactersRemainingLabel, charactersOverLimitLabel ) { this.textBoxElement = $( textBoxId ); this.counterElement = $( counterId ); this.maxCharCount = maxCharCount; this.countLabelElement = this.counterElement.up().childNodes[ 0 ]; this.charactersRemainingLabel = charactersRemainingLabel; this.charactersOverLimitLabel = charactersOverLimitLabel; // watch all keystrokes in the text area, and update the counter accordingly this.textBoxElement.observe( 'keyup', this.updateCount.bindAsEventListener( this ) ); // update the initial count this.updateCount(); this.registerCounter( textBoxId ); }, /** * Registers the current counter with the document, so that it can be accessed from anywhere on the page. * * @param id The id with which this counter can be accessed */ registerCounter : function( id ) { if ( !widget.TextBoxCounter.counters ) { widget.TextBoxCounter.counters = []; } widget.TextBoxCounter.counters[ id ] = this; }, /** * Update the counter. * * @param event The event that prompted this update, if any. */ updateCount : function( event ) { var chars = this.textBoxElement.value.length; // max character count exceeded if ( chars > this.maxCharCount ) { this.counterElement.update( chars - this.maxCharCount ).addClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersOverLimitLabel; } // max character count not exceeded else if ( chars <= this.maxCharCount ) { this.counterElement.update( this.maxCharCount - chars ).removeClassName( 'bad' ); this.countLabelElement.nodeValue = this.charactersRemainingLabel; } } }; widget.ColorPalettePicker = Class.create(); widget.ColorPalettePicker.prototype = { initialize : function( onChange, themeChangeElementId ) { widget.ColorPalettePicker.picker = this; this.onChange = onChange; var palettes = []; $A( $( 'paletteLibraryPanel' ).getElementsByTagName( 'li' ) ).each( function( li ) { if ( page.util.hasClassName( li, 'palette' ) ) { palettes.push( $( li ) ); } } ); this.palettes = palettes; this.libraryOpen = false; this.paletteLibraryPanel = $( 'paletteLibraryPanel' ); this.paletteLibraryButton = $( 'paletteLibraryButton' ); var updateHandler = this.updateCurrentSelection.bindAsEventListener( this ); // this.paletteLibraryPanel.toggleLibrary(); if ( this.palettes ) { this.palettes.each( function( palette ) { Event.observe( palette, "click", updateHandler ); } ); } if ( this.paletteLibraryButton ) { Event.observe( 'paletteLibraryButtonLink', "click", this.toggleLibrary.bindAsEventListener( this ) ); } if ( themeChangeElementId !== "" ) { Event.observe( themeChangeElementId, "change", this.changePaletteThemeTypeStyles.bindAsEventListener( this ) ); } }, changePaletteThemeTypeStyles : function( event ) { var dropdown = event.currentTarget; var themeExtRef = $F( dropdown ); var extRefToThemeTypeJson = $F( "themeExtRefToThemeTypeJson" ); var extRefToThemeTypeMap = this.convertJsonToObject( decodeURIComponent( extRefToThemeTypeJson ) ); var themeType = extRefToThemeTypeMap[themeExtRef]; var mapKey = null; this.palettes.each( function( palette ) { if( palette.id === "currentsystemthemecolorpalette" ) { mapKey = "theme_type_" + themeExtRef; } else { if( themeType !== null ) { mapKey = "theme_type_" + themeType; } else { mapKey = "theme_type_"; } } var styleJson = $F( palette.down('input[type=hidden]') ); var styleMap = this.convertJsonToObject( decodeURIComponent( styleJson ) ); var schemePreviewStyle = styleMap[mapKey]['schemePreview']; var schemePreviewHeadStyle = styleMap[mapKey]['schemePreviewHead']; var schemePreviewBodyStyle = styleMap[mapKey]['schemePreviewBody']; var modulePreviewStyle = styleMap[mapKey]['moduleBorder']; var modulePreviewHeadStyle = styleMap[mapKey]['moduleTitle']; var modulePreviewBodyStyle = styleMap[mapKey]['moduleBody']; palette.down('.schemePreview').writeAttribute("style", schemePreviewStyle); palette.down('.schemePreviewHead').writeAttribute("style", schemePreviewHeadStyle); palette.down('.schemePreviewBody').writeAttribute("style", schemePreviewBodyStyle); palette.down('.modulePreview').writeAttribute("style", modulePreviewStyle); palette.down('.modulePreviewHead').writeAttribute("style", modulePreviewHeadStyle); palette.down('.modulePreviewBody').writeAttribute("style", modulePreviewBodyStyle); }, this ); }, convertJsonToObject : function( json ) { if ( typeof ( JSON ) === 'object' && typeof ( JSON.parse ) === 'function' ) { return JSON.parse( json ); } else { return eval( '(' + json + ')' ); } }, toggleLibrary : function( event ) { var img = this.paletteLibraryButton.getElementsByTagName( 'img' )[ 0 ]; if ( this.libraryOpen ) { // Collapse the library. img.src = "/images/db/p.gif"; img.alt = page.bundle.getString( "dynamictree.expand" ); this.paletteLibraryPanel.hide(); this.libraryOpen = false; } else { // Expand the library. img.src = "/images/db/m.gif"; img.alt = page.bundle.getString( "dynamictree.collapse" ); this.paletteLibraryPanel.show(); this.libraryOpen = true; } // stop the event if exists; there will not be an event if called on page onLoad if ( event ) { Event.stop( event ); } }, selectColorPaletteByExtRef : function( extRef ) { var eventElement = $( extRef ); this.selectColorPaletteByElement( eventElement ); }, selectColorPaletteByElement : function( eventElement ) { this.palettes.each( function( p ) { if ( p.hasClassName( "selected" ) ) { p.removeClassName( 'selected' ); } } ); var selPal = eventElement; while ( selPal && selPal.tagName != 'LI' ) { selPal = selPal.parentNode; if ( selPal.tagName == 'BODY' ) { selPal = null; } } selPal.addClassName( 'selected' ); widget.ShowUnsavedChanges.changeHiddenValue( $( 'currentPaletteExtRef' ), selPal.id == 'currentsystemthemecolorpalette' ? '' : selPal.id ); eval( this.onChange ); $( 'currentPaletteLabel' ).update( $( selPal.id + '_label' ).innerHTML ); this.copyStyles( selPal.down( '.schemePreview' ), $( 'currentPalettePreview' ) ); this.copyStyles( selPal.down( '.schemePreviewHead' ), $( 'currentPalettePreviewHead' ) ); this.copyStyles( selPal.down( '.schemePreviewBody' ), $( 'currentPalettePreviewBody' ) ); this.copyStyles( selPal.down( '.modulePreview' ), $( 'currentModulePalettePreview' ) ); this.copyStyles( selPal.down( '.modulePreviewHead' ), $( 'currentModulePalettePreviewHead' ) ); this.copyStyles( selPal.down( '.modulePreviewBody' ), $( 'currentModulePalettePreviewBody' ) ); $( 'selectedPalette' ).show(); }, updateCurrentSelection : function( event ) { var eventElement = Event.element( event ); this.selectColorPaletteByElement( eventElement ); Event.stop( event ); }, copyStyles : function( s, d ) { d.style.cssText = s.style.cssText; } }; widget.ColorPalettePicker.picker = null; /** * node picker */ widget.MINodePicker = Class.create(); /** Constants used for the picker */ widget.MINodePicker.Constants = { EXISTING_NODE_SUFFIX : "", EXISTING_NODE_DELETE_SUFFIX : "", NEW_NODE_SUFFIX : "" }; widget.MINodePicker.prototype = { initConstants : function() { widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeSuffix" ); widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX = page.bundle .getString( "nodePicker.const.existingNodeDeleteSuffix" ); widget.MINodePicker.Constants.NEW_NODE_SUFFIX = page.bundle.getString( "nodePicker.const.newNodeSuffix" ); }, /** * Creates a new node picker * * @param baseElementName the base name for the node picker elements * @param pickerList the javascript object representing the picker list (of currently attached files) * @param allowMultipleSelect boolean indicating whether the picker should allow single or multiple select * @param entitlements comma delimited list of entitlement UIDs in which to check on node search * @param popupInstructions key value pair of bundle name and bundle key for instructions to be displayed in the pop * up * @param addPrimaryEntitlement Entitlement required to display primary radio button. * @param removeNodeEntitlement Entitlement required to display remove node link. */ initialize : function( baseElementName, pickerList, allowMultipleSelect, entitlements, popupInstructions, addPrimaryEntitlement, removeNodeEntitlement ) { this.initConstants(); this.baseElementName = baseElementName; this.allowMultipleSelect = allowMultipleSelect; this.entitlements = entitlements; this.nodePickerPopupButton = $( this.baseElementName + '_nodeBrowseButton' ); this.nodePickerUrl = "/webapps/blackboard/execute/institutionalHierarchy/nodePicker?cmd=openPicker&allowMultipleSelect=" + this.allowMultipleSelect + "&instructionKey=" + popupInstructions + "&entitlements=" + this.entitlements + "&addPrimaryEntitlement=" + addPrimaryEntitlement + "&removeNodeEntitlement=" + removeNodeEntitlement; Event.observe( this.nodePickerPopupButton, "click", this.onNodeBrowse.bindAsEventListener( this ) ); this.pickerList = pickerList; this.selectedNodesListContainer = $( this.baseElementName + '_listHtml' ); // make sure that all removedNodes are hidden var removedNodes = this.selectedNodesListContainer .getElementsBySelector( 'input[name=' + this.baseElementName + widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX + ']' ); removedNodes.each( function( node ) { node.up( 'tr' ).hide(); } ); var showList; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { showList = this.selectedNodesListContainer && this.pickerList && this.pickerList.tableBody && !this.pickerList.tableBody .empty(); } // For single node picker, the attached node is contained within a span element else { showList = this.selectedNodesListContainer && this.selectedNodesListContainer.select( "input.selectedNodeData" ) && this.pickerList; } if ( this.pickerList && this.pickerList.tableBody ) { // If no visible row then hide the table label and headers. if ( !this.pickerList.tableBody.select( "tr" ).any( function( row ) { return row.visible(); } ) ) { showList = false; } } this.showHideSelectedNodesList( showList ); widget.MINodePicker.registerNodePicker( this ); }, /** * Pop up the node search window from which to pick nodes */ onNodeBrowse : function( event ) { this.nodePickerWindow = null; var windowId = new Date().getTime(); if ( $( 'primaryNodeIdStr' ) ) { this.nodePickerUrl += '&primaryNodeIdStr=' + $F( 'primaryNodeIdStr' ); } if ( $( 'objectType' ) ) { this.nodePickerUrl += '&objectType=' + $F( 'objectType' ); } this.nodePickerWindow = popup.launchPicker( this.nodePickerUrl, windowId ); if ( this.nodePickerWindow ) { this.nodePickerWindow.opener.customHandler = this.onNodePick.bind( this ); } Event.stop( event ); }, /** * Callback called after node(s) have been selected from the node picker pop up. This method updates the UI list of * currently select nodes. * * @param selectedNodesObjArr The array of currently selected nodes from the picker */ onNodePick : function( selectedNodesObjArr ) { this.showHideSelectedNodesList( true ); var existingNodes; if ( this.allowMultipleSelect ) { // Array of existing selected nodes in the node picker list existingNodes = this.selectedNodesListContainer.down( "tbody" ).select( "input.selectedNodeData" ); } else { // Existing selected node in the node picker list for single node picker existingNodes = this.selectedNodesListContainer.select( "input.selectedNodeData" ); } // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. if ( selectedNodesObjArr && selectedNodesObjArr.length !== 0 ) { // Switch the radio button selection to Create hierarchy under the specified entity (for single node pickers) if ( $( "selectedRoot" ) ) { $( "selectedRoot" ).checked = true; } } /* * For each selected node, add the node to the list if it is a newly selected node, otherwise unhide the node if * it is an existing selection that has been marked for delete. Specifically: - If node is an existing selected * node and marked for delete and hidden, then unmark and show - If node is an existing selected node and not * marked for delete and showing, then do nothing - If node is a newly selected node and is not already there, add * the row - If node is a newly selected node and is already there, then do nothing */ selectedNodesObjArr.each( function( node ) { // See if the picked node is already in the list of nodes var existingNode; existingNodes.each( function( inputEle ) { if ( node.nodeIdStr === inputEle.value ) { existingNode = inputEle; if ( existingNode.disabled && existingNode.checked ) { // If its a disabled primary node then restore the value of it in hidden param. $( this.baseElementName + '_disabledPrimaryNode' ).value = node.nodeIdStr; } throw $break; } } ); // If not, then add this newly picked node to list if ( !existingNode ) { var primaryRadioChecked; var existingPrimaryNodeRadios = this.selectedNodesListContainer .select( 'input[name=' + this.baseElementName + '_PrimaryNode]' ); if ( existingPrimaryNodeRadios.all( function( radio ) { return !radio.checked; } ) ) { primaryRadioChecked = true; } // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( this.allowMultipleSelect ) { // This calls the cell generator methods for each column in the "currently selected nodes" list this.pickerList.addRow( this.baseElementName, node, this.nodePickerWindow, primaryRadioChecked ); } // For single node picker, the attached node is contained within a span element else { this.selectedNodesListContainer.innerHTML = ""; this.pickerList.cellGenerators.each( function( generator, index ) { var args = []; args.push( this.baseElementName, node, this.nodePickerWindow ); this.selectedNodesListContainer.innerHTML += generator.apply( window, args ); }.bind( this ) ); } } else { /* * If picked node is already in the list AND is an existing selected node that is marked for delete and * hidden, then unmark node and show in list. */ if ( existingNode.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ) ) { existingNode.name = existingNode.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ); if ( this.allowMultipleSelect ) { existingNode.up( "tr" ).show(); } } } }.bind( this ) ); }, /** * Shows or hides the selected nodes list * * @param show boolean to indicate show or hide */ showHideSelectedNodesList : function( show ) { if ( this.selectedNodesListContainer ) { return show ? this.selectedNodesListContainer.show() : this.selectedNodesListContainer.hide(); } } }; /** * Removes the specified node selection from the list. Should be called from an onclick handler on a link in the * currently selected nodes table. */ widget.MINodePicker.removeSelectedNode = function( event, removeLink, baseElementName ) { var e = event || window.event; // Have user confirm removal of selected node if ( confirm( page.bundle.getString( "nodePicker.nodeRemoveConfirmMsg" ) ) ) { var visibleRows = []; var picker = widget.MINodePicker.getNodePicker( baseElementName ); var hiddenNodeDataEle; // For multiple node picker, DOM contains a table structure for displaying the attached nodes if ( picker.allowMultipleSelect ) { // Get references to DOM elements in the list removeLink = $( removeLink ); var rowToHideRemove = removeLink.up( "tr" ); var tbodyEle = rowToHideRemove.up( "tbody" ); hiddenNodeDataEle = rowToHideRemove.down( "input.selectedNodeData" ); var primaryNodeRadioSelector = 'input[name=' + baseElementName + '_PrimaryNode]'; var primaryNodeRadioInCurrentRow = rowToHideRemove.down( primaryNodeRadioSelector ); if ( primaryNodeRadioInCurrentRow ) { // Check if removed node is selected as a primary node if ( primaryNodeRadioInCurrentRow.checked ) { if ( primaryNodeRadioInCurrentRow.disabled ) { // A disabled primary node is removed from UI then nullify the value of hidden param storing its value. $( baseElementName + '_disabledPrimaryNode' ).value = ''; } else { // Get the next node which is not checked as primary and is enabled. var nextNode = picker.selectedNodesListContainer.select( primaryNodeRadioSelector ).find( function( radio ) { return ( !radio.checked && !radio.disabled && radio.up( 'tr' ).visible() ); } ); if ( nextNode ) { nextNode.checked = true; } else { // In case there's no next node with primary node radio button, then uncheck current primary manually primaryNodeRadioInCurrentRow.checked = false; } } } } // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); // hide rowToHideRemove.hide(); } // If is a newly selected node else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { // remove the row from the DOM Element.remove( rowToHideRemove ); } tbodyEle.select( "tr" ).each( function( row ) { if ( row.visible() ) { visibleRows.push( row ); } } ); } // For single node picker, the attached node is contained within a span element else { hiddenNodeDataEle = picker.selectedNodesListContainer.down( "input.selectedNodeData" ); // Hide or remove the row // If this is an existing selected node if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX ) ) { // "mark" for deletion hiddenNodeDataEle.name = hiddenNodeDataEle.name.sub( widget.MINodePicker.Constants.EXISTING_NODE_SUFFIX, widget.MINodePicker.Constants.EXISTING_NODE_DELETE_SUFFIX ); } // If is a newly selected node, clear the span content else if ( hiddenNodeDataEle.name.endsWith( widget.MINodePicker.Constants.NEW_NODE_SUFFIX ) ) { picker.selectedNodesListContainer.innerHTML = ""; } } // If there are no more selected nodes, hide some UI elements if ( visibleRows.length === 0 ) { // Hide the whole selected nodes table picker.showHideSelectedNodesList( false ); // TODO: This block of code is specific to data integration page and should be taken out where it actually // belongs. // Perhaps, defining an event in the picker and have data integration page register for that event and have this // logic implemented would be the right thing to do. // Switch the radio button selection to Create hierarchy under the top level (for single node pickers) if ( $( "topLevelRoot" ) ) { $( "topLevelRoot" ).checked = true; } } } Event.stop( e ); }; /** * A registry of defined node pickers and methods to access this registry */ widget.MINodePicker.nodePickers = {}; widget.MINodePicker.registerNodePicker = function( nodePicker ) { widget.MINodePicker.nodePickers[ nodePicker.baseElementName ] = nodePicker; }; widget.MINodePicker.unRegisterNodePicker = function( nodePicker ) { delete widget.MINodePicker.nodePickers[ nodePicker.baseElementName ]; }; widget.MINodePicker.getNodePicker = function( baseElementName ) { return widget.MINodePicker.nodePickers[ baseElementName ]; }; /** * Cell generators for the currently selected nodes table. Mostly copies what is in multiInstNodePickerListElement.vm. */ widget.MINodePicker.cellGenerators = { /** * Dynamic rendering of a cell in the node "Name" column */ nodeName : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { var result = '<input type="hidden" name="' + pickerNameStr + widget.MINodePicker.Constants.NEW_NODE_SUFFIX + '" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData">'; result += '<img src="/images/ci/ng/entity_small.png" alt="">'; result += selectedNodeObj.nodeName; return result; }, /** * Dynamic rendering of a cell in the node "Primary Node" column */ nodePrimary : function( pickerNameStr, selectedNodeObj, nodePickerWindow, primaryRadioChecked ) { var result = '<input type="radio" id="' + selectedNodeObj.nodeIdStr + '_Primary' + '" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" class="selectedNodeData"'; if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' ) { result += ' disabled'; } if ( primaryRadioChecked ) { result += ' checked'; } result += ' >'; // Since values of disabled radio element doesn't go through the request, adding hidden param here to store its // value. if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_disableRadio' ).value == 'true' && primaryRadioChecked ) { result += '<input type="hidden" id="' + pickerNameStr + '_disabledPrimaryNode" name="' + pickerNameStr + '_PrimaryNode" value="' + selectedNodeObj.nodeIdStr + '" />'; } return result; }, /** * Dynamic rendering of a cell in the remove node column */ nodeRemove : function( pickerNameStr, selectedNodeObj, nodePickerWindow ) { if ( nodePickerWindow.document.getElementById( selectedNodeObj.nodeIdStr + '_canRemoveObject' ).value == 'true' ) { var result = '<img src="/images/ci/icons/x_ia.gif" alt="">'; result += '<a href="#" onclick="widget.MINodePicker.removeSelectedNode(event, this, '; result += "'" + pickerNameStr + "');"; result += '">' + page.bundle.getString( "nodePicker.nodeRemoveLabel" ); result += '</a>'; return result; } else { return ''; } } };